Add and use nfnl_msg_type() function to replace opencoded nfnetlink message type. I suggested this change, Arushi Singhal made an initial patch to address this but was missing several spots.
Unified · Split
| @@ -41,6 +41,11 @@ int nfnetlink_set_err(struct net *net, u32 portid, u32 group, int error); · 40 unmodified lines | ||
| 41 | 41 | int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid, |
| 42 | 42 | int flags); |
| 43 | 43 | |
| 44 | +static inline u16 nfnl_msg_type(u8 subsys, u8 msg_type) | |
| 45 | +{ | |
| 46 | + return subsys << 8 | msg_type; | |
| 47 | +} | |
| 48 | + | |
| 44 | 49 | void nfnl_lock(__u8 subsys_id); |
| 45 | 50 | void nfnl_unlock(__u8 subsys_id); |
| 46 | 51 | #ifdef CONFIG_PROVE_LOCKING |
| @@ -769,7 +769,7 @@ start_msg(struct sk_buff *skb, u32 portid, u32 seq, unsigned int flags, · 768 unmodified lines | ||
| 769 | 769 | struct nlmsghdr *nlh; |
| 770 | 770 | struct nfgenmsg *nfmsg; |
| 771 | 771 | |
| 772 | − nlh = nlmsg_put(skb, portid, seq, cmd | (NFNL_SUBSYS_IPSET << 8), | |
| 772 | + nlh = nlmsg_put(skb, portid, seq, nfnl_msg_type(NFNL_SUBSYS_IPSET, cmd), | |
| 773 | 773 | sizeof(*nfmsg), flags); |
| 774 | 774 | if (!nlh) |
| 775 | 775 | return NULL; |
| @@ -467,7 +467,7 @@ ctnetlink_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 466 unmodified lines | ||
| 467 | 467 | struct nlattr *nest_parms; |
| 468 | 468 | unsigned int flags = portid ? NLM_F_MULTI : 0, event; |
| 469 | 469 | |
| 470 | − event = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW); | |
| 470 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK, IPCTNL_MSG_CT_NEW); | |
| 471 | 471 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 472 | 472 | if (nlh == NULL) |
| 473 | 473 | goto nlmsg_failure; |
| @@ -652,7 +652,7 @@ ctnetlink_conntrack_event(unsigned int events, struct nf_ct_event *item) · 178 unmodified lines | ||
| 652 | 652 | if (skb == NULL) |
| 653 | 653 | goto errout; |
| 654 | 654 | |
| 655 | − type |= NFNL_SUBSYS_CTNETLINK << 8; | |
| 655 | + type = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK, type); | |
| 656 | 656 | nlh = nlmsg_put(skb, item->portid, 0, type, sizeof(*nfmsg), flags); |
| 657 | 657 | if (nlh == NULL) |
| 658 | 658 | goto nlmsg_failure; |
| @@ -1983,7 +1983,8 @@ ctnetlink_ct_stat_cpu_fill_info(struct sk_buff *skb, u32 portid, u32 seq, · 1324 unmodified lines | ||
| 1983 | 1983 | struct nfgenmsg *nfmsg; |
| 1984 | 1984 | unsigned int flags = portid ? NLM_F_MULTI : 0, event; |
| 1985 | 1985 | |
| 1986 | − event = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET_STATS_CPU); | |
| 1986 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK, | |
| 1987 | + IPCTNL_MSG_CT_GET_STATS_CPU); | |
| 1987 | 1988 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 1988 | 1989 | if (nlh == NULL) |
| 1989 | 1990 | goto nlmsg_failure; |
| @@ -2066,7 +2067,7 @@ ctnetlink_stat_ct_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 76 unmodified lines | ||
| 2066 | 2067 | unsigned int flags = portid ? NLM_F_MULTI : 0, event; |
| 2067 | 2068 | unsigned int nr_conntracks = atomic_read(&net->ct.count); |
| 2068 | 2069 | |
| 2069 | − event = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET_STATS); | |
| 2070 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK, IPCTNL_MSG_CT_GET_STATS); | |
| 2070 | 2071 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 2071 | 2072 | if (nlh == NULL) |
| 2072 | 2073 | goto nlmsg_failure; |
| @@ -2576,7 +2577,7 @@ ctnetlink_exp_fill_info(struct sk_buff *skb, u32 portid, u32 seq, · 503 unmodified lines | ||
| 2576 | 2577 | struct nfgenmsg *nfmsg; |
| 2577 | 2578 | unsigned int flags = portid ? NLM_F_MULTI : 0; |
| 2578 | 2579 | |
| 2579 | − event |= NFNL_SUBSYS_CTNETLINK_EXP << 8; | |
| 2580 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK_EXP, event); | |
| 2580 | 2581 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 2581 | 2582 | if (nlh == NULL) |
| 2582 | 2583 | goto nlmsg_failure; |
| @@ -2627,7 +2628,7 @@ ctnetlink_expect_event(unsigned int events, struct nf_exp_event *item) · 44 unmodified lines | ||
| 2627 | 2628 | if (skb == NULL) |
| 2628 | 2629 | goto errout; |
| 2629 | 2630 | |
| 2630 | − type |= NFNL_SUBSYS_CTNETLINK_EXP << 8; | |
| 2631 | + type = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK_EXP, type); | |
| 2631 | 2632 | nlh = nlmsg_put(skb, item->portid, 0, type, sizeof(*nfmsg), flags); |
| 2632 | 2633 | if (nlh == NULL) |
| 2633 | 2634 | goto nlmsg_failure; |
| @@ -3212,7 +3213,8 @@ ctnetlink_exp_stat_fill_info(struct sk_buff *skb, u32 portid, u32 seq, int cpu, · 578 unmodified lines | ||
| 3212 | 3213 | struct nfgenmsg *nfmsg; |
| 3213 | 3214 | unsigned int flags = portid ? NLM_F_MULTI : 0, event; |
| 3214 | 3215 | |
| 3215 | − event = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_EXP_GET_STATS_CPU); | |
| 3216 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK, | |
| 3217 | + IPCTNL_MSG_EXP_GET_STATS_CPU); | |
| 3216 | 3218 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 3217 | 3219 | if (nlh == NULL) |
| 3218 | 3220 | goto nlmsg_failure; |
| @@ -438,7 +438,7 @@ static int nf_tables_fill_table_info(struct sk_buff *skb, struct net *net, · 437 unmodified lines | ||
| 438 | 438 | struct nlmsghdr *nlh; |
| 439 | 439 | struct nfgenmsg *nfmsg; |
| 440 | 440 | |
| 441 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 441 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 442 | 442 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), flags); |
| 443 | 443 | if (nlh == NULL) |
| 444 | 444 | goto nla_put_failure; |
| @@ -989,7 +989,7 @@ static int nf_tables_fill_chain_info(struct sk_buff *skb, struct net *net, · 544 unmodified lines | ||
| 989 | 989 | struct nlmsghdr *nlh; |
| 990 | 990 | struct nfgenmsg *nfmsg; |
| 991 | 991 | |
| 992 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 992 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 993 | 993 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), flags); |
| 994 | 994 | if (nlh == NULL) |
| 995 | 995 | goto nla_put_failure; |
| @@ -1885,10 +1885,9 @@ static int nf_tables_fill_rule_info(struct sk_buff *skb, struct net *net, · 889 unmodified lines | ||
| 1885 | 1885 | const struct nft_expr *expr, *next; |
| 1886 | 1886 | struct nlattr *list; |
| 1887 | 1887 | const struct nft_rule *prule; |
| 1888 | − int type = event | NFNL_SUBSYS_NFTABLES << 8; | |
| 1888 | + u16 type = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 1889 | 1889 | |
| 1890 | − nlh = nlmsg_put(skb, portid, seq, type, sizeof(struct nfgenmsg), | |
| 1891 | − flags); | |
| 1890 | + nlh = nlmsg_put(skb, portid, seq, type, sizeof(struct nfgenmsg), flags); | |
| 1892 | 1891 | if (nlh == NULL) |
| 1893 | 1892 | goto nla_put_failure; |
| 1894 | 1893 | |
| @@ -2645,7 +2644,7 @@ static int nf_tables_fill_set(struct sk_buff *skb, const struct nft_ctx *ctx, · 750 unmodified lines | ||
| 2645 | 2644 | u32 portid = ctx->portid; |
| 2646 | 2645 | u32 seq = ctx->seq; |
| 2647 | 2646 | |
| 2648 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 2647 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 2649 | 2648 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), |
| 2650 | 2649 | flags); |
| 2651 | 2650 | if (nlh == NULL) |
| @@ -3395,8 +3394,7 @@ static int nf_tables_dump_set(struct sk_buff *skb, struct netlink_callback *cb) · 743 unmodified lines | ||
| 3395 | 3394 | if (IS_ERR(set)) |
| 3396 | 3395 | return PTR_ERR(set); |
| 3397 | 3396 | |
| 3398 | − event = NFT_MSG_NEWSETELEM; | |
| 3399 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 3397 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, NFT_MSG_NEWSETELEM); | |
| 3400 | 3398 | portid = NETLINK_CB(cb->skb).portid; |
| 3401 | 3399 | seq = cb->nlh->nlmsg_seq; |
| 3402 | 3400 | |
| @@ -3481,7 +3479,7 @@ static int nf_tables_fill_setelem_info(struct sk_buff *skb, · 78 unmodified lines | ||
| 3481 | 3479 | struct nlattr *nest; |
| 3482 | 3480 | int err; |
| 3483 | 3481 | |
| 3484 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 3482 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 3485 | 3483 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), |
| 3486 | 3484 | flags); |
| 3487 | 3485 | if (nlh == NULL) |
| @@ -4253,7 +4251,7 @@ static int nf_tables_fill_obj_info(struct sk_buff *skb, struct net *net, · 765 unmodified lines | ||
| 4253 | 4251 | struct nfgenmsg *nfmsg; |
| 4254 | 4252 | struct nlmsghdr *nlh; |
| 4255 | 4253 | |
| 4256 | − event |= NFNL_SUBSYS_NFTABLES << 8; | |
| 4254 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event); | |
| 4257 | 4255 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), flags); |
| 4258 | 4256 | if (nlh == NULL) |
| 4259 | 4257 | goto nla_put_failure; |
| @@ -4526,7 +4524,7 @@ static int nf_tables_fill_gen_info(struct sk_buff *skb, struct net *net, · 266 unmodified lines | ||
| 4526 | 4524 | { |
| 4527 | 4525 | struct nlmsghdr *nlh; |
| 4528 | 4526 | struct nfgenmsg *nfmsg; |
| 4529 | − int event = (NFNL_SUBSYS_NFTABLES << 8) | NFT_MSG_NEWGEN; | |
| 4527 | + int event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, NFT_MSG_NEWGEN); | |
| 4530 | 4528 | |
| 4531 | 4529 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(struct nfgenmsg), 0); |
| 4532 | 4530 | if (nlh == NULL) |
| @@ -169,7 +169,7 @@ void nft_trace_notify(struct nft_traceinfo *info) · 168 unmodified lines | ||
| 169 | 169 | struct nlmsghdr *nlh; |
| 170 | 170 | struct sk_buff *skb; |
| 171 | 171 | unsigned int size; |
| 172 | − int event = (NFNL_SUBSYS_NFTABLES << 8) | NFT_MSG_TRACE; | |
| 172 | + u16 event; | |
| 173 | 173 | |
| 174 | 174 | if (!nfnetlink_has_listeners(nft_net(pkt), NFNLGRP_NFTRACE)) |
| 175 | 175 | return; |
| @@ -198,6 +198,7 @@ void nft_trace_notify(struct nft_traceinfo *info) · 22 unmodified lines | ||
| 198 | 198 | if (!skb) |
| 199 | 199 | return; |
| 200 | 200 | |
| 201 | + event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, NFT_MSG_TRACE); | |
| 201 | 202 | nlh = nlmsg_put(skb, 0, 0, event, sizeof(struct nfgenmsg), 0); |
| 202 | 203 | if (!nlh) |
| 203 | 204 | goto nla_put_failure; |
| @@ -139,7 +139,7 @@ nfnl_acct_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 138 unmodified lines | ||
| 139 | 139 | u64 pkts, bytes; |
| 140 | 140 | u32 old_flags; |
| 141 | 141 | |
| 142 | − event |= NFNL_SUBSYS_ACCT << 8; | |
| 142 | + event = nfnl_msg_type(NFNL_SUBSYS_ACCT, event); | |
| 143 | 143 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 144 | 144 | if (nlh == NULL) |
| 145 | 145 | goto nlmsg_failure; |
| @@ -507,7 +507,7 @@ nfnl_cthelper_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 506 unmodified lines | ||
| 507 | 507 | unsigned int flags = portid ? NLM_F_MULTI : 0; |
| 508 | 508 | int status; |
| 509 | 509 | |
| 510 | − event |= NFNL_SUBSYS_CTHELPER << 8; | |
| 510 | + event = nfnl_msg_type(NFNL_SUBSYS_CTHELPER, event); | |
| 511 | 511 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 512 | 512 | if (nlh == NULL) |
| 513 | 513 | goto nlmsg_failure; |
| @@ -158,7 +158,7 @@ ctnl_timeout_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 157 unmodified lines | ||
| 158 | 158 | unsigned int flags = portid ? NLM_F_MULTI : 0; |
| 159 | 159 | struct nf_conntrack_l4proto *l4proto = timeout->l4proto; |
| 160 | 160 | |
| 161 | − event |= NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8; | |
| 161 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK_TIMEOUT, event); | |
| 162 | 162 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 163 | 163 | if (nlh == NULL) |
| 164 | 164 | goto nlmsg_failure; |
| @@ -431,7 +431,7 @@ cttimeout_default_fill_info(struct net *net, struct sk_buff *skb, u32 portid, · 266 unmodified lines | ||
| 431 | 431 | struct nfgenmsg *nfmsg; |
| 432 | 432 | unsigned int flags = portid ? NLM_F_MULTI : 0; |
| 433 | 433 | |
| 434 | − event |= NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8; | |
| 434 | + event = nfnl_msg_type(NFNL_SUBSYS_CTNETLINK_TIMEOUT, event); | |
| 435 | 435 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 436 | 436 | if (nlh == NULL) |
| 437 | 437 | goto nlmsg_failure; |
| @@ -411,7 +411,7 @@ __build_packet_message(struct nfnl_log_net *log, · 410 unmodified lines | ||
| 411 | 411 | const unsigned char *hwhdrp; |
| 412 | 412 | |
| 413 | 413 | nlh = nlmsg_put(inst->skb, 0, 0, |
| 414 | − NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET, | |
| 414 | + nfnl_msg_type(NFNL_SUBSYS_ULOG, NFULNL_MSG_PACKET), | |
| 415 | 415 | sizeof(struct nfgenmsg), 0); |
| 416 | 416 | if (!nlh) |
| 417 | 417 | return -1; |
| @@ -447,7 +447,7 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue, · 446 unmodified lines | ||
| 447 | 447 | } |
| 448 | 448 | |
| 449 | 449 | nlh = nlmsg_put(skb, 0, 0, |
| 450 | − NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET, | |
| 450 | + nfnl_msg_type(NFNL_SUBSYS_QUEUE, NFQNL_MSG_PACKET), | |
| 451 | 451 | sizeof(struct nfgenmsg), 0); |
| 452 | 452 | if (!nlh) { |
| 453 | 453 | skb_tx_error(entskb); |
| @@ -504,7 +504,7 @@ nfnl_compat_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type, · 503 unmodified lines | ||
| 504 | 504 | struct nfgenmsg *nfmsg; |
| 505 | 505 | unsigned int flags = portid ? NLM_F_MULTI : 0; |
| 506 | 506 | |
| 507 | − event |= NFNL_SUBSYS_NFT_COMPAT << 8; | |
| 507 | + event = nfnl_msg_type(NFNL_SUBSYS_NFT_COMPAT, event); | |
| 508 | 508 | nlh = nlmsg_put(skb, portid, seq, event, sizeof(*nfmsg), flags); |
| 509 | 509 | if (nlh == NULL) |
| 510 | 510 | goto nlmsg_failure; |