Add devgroup support to let us match device group of a packets incoming or outgoing interface.
Unified · Split
| @@ -573,6 +573,8 @@ enum nft_exthdr_attributes { · 572 unmodified lines | |||
| 573 | * @NFT_META_BRI_OIFNAME: packet output bridge interface name | 573 | * @NFT_META_BRI_OIFNAME: packet output bridge interface name |
| 574 | * @NFT_META_PKTTYPE: packet type (skb->pkt_type), special handling for loopback | 574 | * @NFT_META_PKTTYPE: packet type (skb->pkt_type), special handling for loopback |
| 575 | * @NFT_META_CPU: cpu id through smp_processor_id() | 575 | * @NFT_META_CPU: cpu id through smp_processor_id() |
| 576 | * @NFT_META_IIFGROUP: packet input interface group | ||
| 577 | * @NFT_META_OIFGROUP: packet output interface group | ||
| 576 | */ | 578 | */ |
| 577 | enum nft_meta_keys { | 579 | enum nft_meta_keys { |
| 578 | NFT_META_LEN, | 580 | NFT_META_LEN, |
| @@ -596,6 +598,8 @@ enum nft_meta_keys { · 17 unmodified lines | |||
| 596 | NFT_META_BRI_OIFNAME, | 598 | NFT_META_BRI_OIFNAME, |
| 597 | NFT_META_PKTTYPE, | 599 | NFT_META_PKTTYPE, |
| 598 | NFT_META_CPU, | 600 | NFT_META_CPU, |
| 601 | NFT_META_IIFGROUP, | ||
| 602 | NFT_META_OIFGROUP, | ||
| 599 | }; | 603 | }; |
| 600 | 604 | ||
| 601 | /** | 605 | /** |
| @@ -155,6 +155,16 @@ void nft_meta_get_eval(const struct nft_expr *expr, · 154 unmodified lines | |||
| 155 | case NFT_META_CPU: | 155 | case NFT_META_CPU: |
| 156 | dest->data[0] = smp_processor_id(); | 156 | dest->data[0] = smp_processor_id(); |
| 157 | break; | 157 | break; |
| 158 | case NFT_META_IIFGROUP: | ||
| 159 | if (in == NULL) | ||
| 160 | goto err; | ||
| 161 | dest->data[0] = in->group; | ||
| 162 | break; | ||
| 163 | case NFT_META_OIFGROUP: | ||
| 164 | if (out == NULL) | ||
| 165 | goto err; | ||
| 166 | dest->data[0] = out->group; | ||
| 167 | break; | ||
| 158 | default: | 168 | default: |
| 159 | WARN_ON(1); | 169 | WARN_ON(1); |
| 160 | goto err; | 170 | goto err; |
| @@ -228,6 +238,8 @@ int nft_meta_get_init(const struct nft_ctx *ctx, · 67 unmodified lines | |||
| 228 | #endif | 238 | #endif |
| 229 | case NFT_META_PKTTYPE: | 239 | case NFT_META_PKTTYPE: |
| 230 | case NFT_META_CPU: | 240 | case NFT_META_CPU: |
| 241 | case NFT_META_IIFGROUP: | ||
| 242 | case NFT_META_OIFGROUP: | ||
| 231 | break; | 243 | break; |
| 232 | default: | 244 | default: |
| 233 | return -EOPNOTSUPP; | 245 | return -EOPNOTSUPP; |