summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-netlink
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-06-15 13:55:20 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-07-23 23:52:42 +0900
commit2c08455eedbedbd62fc712e239f76f34e7ac0de1 (patch)
tree491b1ddf3097998cbc57fd384e6b33c646659ec1 /src/libsystemd/sd-netlink
parent64f090a61ab0886e70384c9c486ea9162b58c1a5 (diff)
downloadsystemd-2c08455eedbedbd62fc712e239f76f34e7ac0de1.tar.gz
sd-netlink: introduce sd_netlink_message_append_container_data()
Diffstat (limited to 'src/libsystemd/sd-netlink')
-rw-r--r--src/libsystemd/sd-netlink/netlink-message-nfnl.c18
-rw-r--r--src/libsystemd/sd-netlink/netlink-message.c23
2 files changed, 25 insertions, 16 deletions
diff --git a/src/libsystemd/sd-netlink/netlink-message-nfnl.c b/src/libsystemd/sd-netlink/netlink-message-nfnl.c
index e70cf52631..ed83a61804 100644
--- a/src/libsystemd/sd-netlink/netlink-message-nfnl.c
+++ b/src/libsystemd/sd-netlink/netlink-message-nfnl.c
@@ -290,20 +290,6 @@ int sd_nfnl_nft_message_del_setelems_begin(
return r;
}
-static int add_data(sd_netlink_message *m, uint16_t attr, const void *data, uint32_t dlen) {
- int r;
-
- r = sd_netlink_message_open_container(m, attr);
- if (r < 0)
- return r;
-
- r = sd_netlink_message_append_data(m, NFTA_DATA_VALUE, data, dlen);
- if (r < 0)
- return r;
-
- return sd_netlink_message_close_container(m); /* attr */
-}
-
int sd_nfnl_nft_message_add_setelem(
sd_netlink_message *m,
uint32_t index,
@@ -318,12 +304,12 @@ int sd_nfnl_nft_message_add_setelem(
if (r < 0)
return r;
- r = add_data(m, NFTA_SET_ELEM_KEY, key, key_len);
+ r = sd_netlink_message_append_container_data(m, NFTA_SET_ELEM_KEY, NFTA_DATA_VALUE, key, key_len);
if (r < 0)
goto cancel;
if (data) {
- r = add_data(m, NFTA_SET_ELEM_DATA, data, data_len);
+ r = sd_netlink_message_append_container_data(m, NFTA_SET_ELEM_DATA, NFTA_DATA_VALUE, data, data_len);
if (r < 0)
goto cancel;
}
diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c
index 34b4c23bd5..192feac47d 100644
--- a/src/libsystemd/sd-netlink/netlink-message.c
+++ b/src/libsystemd/sd-netlink/netlink-message.c
@@ -452,6 +452,29 @@ _public_ int sd_netlink_message_append_data(sd_netlink_message *m, unsigned shor
return 0;
}
+_public_ int sd_netlink_message_append_container_data(
+ sd_netlink_message *m,
+ unsigned short container_type,
+ unsigned short type,
+ const void *data,
+ size_t len) {
+
+ int r;
+
+ assert_return(m, -EINVAL);
+ assert_return(!m->sealed, -EPERM);
+
+ r = sd_netlink_message_open_container(m, container_type);
+ if (r < 0)
+ return r;
+
+ r = sd_netlink_message_append_data(m, type, data, len);
+ if (r < 0)
+ return r;
+
+ return sd_netlink_message_close_container(m);
+}
+
int netlink_message_append_in_addr_union(sd_netlink_message *m, unsigned short type, int family, const union in_addr_union *data) {
int r;