diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-06-15 13:55:20 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-07-23 23:52:42 +0900 |
commit | 2c08455eedbedbd62fc712e239f76f34e7ac0de1 (patch) | |
tree | 491b1ddf3097998cbc57fd384e6b33c646659ec1 /src/libsystemd/sd-netlink | |
parent | 64f090a61ab0886e70384c9c486ea9162b58c1a5 (diff) | |
download | systemd-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.c | 18 | ||||
-rw-r--r-- | src/libsystemd/sd-netlink/netlink-message.c | 23 |
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; |