From: Patrick McHardy Date: Tue, 31 Mar 2009 02:07:25 +0000 (+0200) Subject: netlink: add helper function for socket callback modification X-Git-Tag: v0.099~190 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5b8b54cf41ca5bf47242d516e6f94623fc6132b;p=thirdparty%2Fnftables.git netlink: add helper function for socket callback modification Signed-off-by: Patrick McHardy --- diff --git a/src/netlink.c b/src/netlink.c index 4700cd7e..734b07e5 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -40,6 +40,11 @@ static void __exit netlink_close_sock(void) nl_socket_free(nf_sock); } +static void netlink_set_callback(nl_recvmsg_msg_cb_t func, void *arg) +{ + nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, func, arg); +} + void netlink_dump_object(struct nl_object *obj) { struct nl_dump_params params = { @@ -213,8 +218,7 @@ int netlink_get_rule(struct netlink_ctx *ctx, const struct handle *h) nlr = alloc_nft_rule(h); nfnl_nft_rule_query(nf_sock, nlr, 0); - nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, - netlink_get_rule_cb, ctx); + netlink_set_callback(netlink_get_rule_cb, ctx); err = nl_recvmsgs_default(nf_sock); nfnl_nft_rule_put(nlr); @@ -347,8 +351,7 @@ int netlink_get_chain(struct netlink_ctx *ctx, const struct handle *h) nlc = alloc_nft_chain(h); nfnl_nft_chain_query(nf_sock, nlc, 0); - nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, - netlink_get_chain_cb, ctx); + netlink_set_callback(netlink_get_chain_cb, ctx); err = nl_recvmsgs_default(nf_sock); nfnl_nft_chain_put(nlc); @@ -452,8 +455,7 @@ int netlink_get_table(struct netlink_ctx *ctx, const struct handle *h) nlt = alloc_nft_table(h); nfnl_nft_table_query(nf_sock, nlt, 0); - nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, - netlink_get_table_cb, ctx); + netlink_set_callback(netlink_get_table_cb, ctx); err = nl_recvmsgs_default(nf_sock); nfnl_nft_table_put(nlt);