netfilter: nft_meta: add cgroup support
This allows you to filter traffic by process control group (cgroup). Signed-off-by: Ana Rey <anarey@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
c5a589cc30
commit
ce674173e9
@ -579,6 +579,7 @@ enum nft_exthdr_attributes {
|
|||||||
* @NFT_META_CPU: cpu id through smp_processor_id()
|
* @NFT_META_CPU: cpu id through smp_processor_id()
|
||||||
* @NFT_META_IIFGROUP: packet input interface group
|
* @NFT_META_IIFGROUP: packet input interface group
|
||||||
* @NFT_META_OIFGROUP: packet output interface group
|
* @NFT_META_OIFGROUP: packet output interface group
|
||||||
|
* @NFT_META_CGROUP: socket control group (skb->sk->sk_classid)
|
||||||
*/
|
*/
|
||||||
enum nft_meta_keys {
|
enum nft_meta_keys {
|
||||||
NFT_META_LEN,
|
NFT_META_LEN,
|
||||||
@ -604,6 +605,7 @@ enum nft_meta_keys {
|
|||||||
NFT_META_CPU,
|
NFT_META_CPU,
|
||||||
NFT_META_IIFGROUP,
|
NFT_META_IIFGROUP,
|
||||||
NFT_META_OIFGROUP,
|
NFT_META_OIFGROUP,
|
||||||
|
NFT_META_CGROUP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,6 +165,12 @@ void nft_meta_get_eval(const struct nft_expr *expr,
|
|||||||
goto err;
|
goto err;
|
||||||
dest->data[0] = out->group;
|
dest->data[0] = out->group;
|
||||||
break;
|
break;
|
||||||
|
case NFT_META_CGROUP:
|
||||||
|
if (skb->sk == NULL)
|
||||||
|
break;
|
||||||
|
|
||||||
|
dest->data[0] = skb->sk->sk_classid;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
goto err;
|
goto err;
|
||||||
@ -240,6 +246,7 @@ int nft_meta_get_init(const struct nft_ctx *ctx,
|
|||||||
case NFT_META_CPU:
|
case NFT_META_CPU:
|
||||||
case NFT_META_IIFGROUP:
|
case NFT_META_IIFGROUP:
|
||||||
case NFT_META_OIFGROUP:
|
case NFT_META_OIFGROUP:
|
||||||
|
case NFT_META_CGROUP:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
Loading…
Reference in New Issue
Block a user