nfqueue: enable to set skb->priority
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Fri, 4 Feb 2022 10:21:43 +0000 (11:21 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 9 Feb 2022 11:04:03 +0000 (12:04 +0100)
This is a follow up of the previous patch that enables to get
skb->priority. It's now posssible to set it also.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Florian Westphal <fw@strlen.de>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nfnetlink_queue.c

index 48d7a59..8c15978 100644 (file)
@@ -1019,11 +1019,13 @@ static const struct nla_policy nfqa_verdict_policy[NFQA_MAX+1] = {
        [NFQA_CT]               = { .type = NLA_UNSPEC },
        [NFQA_EXP]              = { .type = NLA_UNSPEC },
        [NFQA_VLAN]             = { .type = NLA_NESTED },
+       [NFQA_PRIORITY]         = { .type = NLA_U32 },
 };
 
 static const struct nla_policy nfqa_verdict_batch_policy[NFQA_MAX+1] = {
        [NFQA_VERDICT_HDR]      = { .len = sizeof(struct nfqnl_msg_verdict_hdr) },
        [NFQA_MARK]             = { .type = NLA_U32 },
+       [NFQA_PRIORITY]         = { .type = NLA_U32 },
 };
 
 static struct nfqnl_instance *
@@ -1104,6 +1106,9 @@ static int nfqnl_recv_verdict_batch(struct sk_buff *skb,
                if (nfqa[NFQA_MARK])
                        entry->skb->mark = ntohl(nla_get_be32(nfqa[NFQA_MARK]));
 
+               if (nfqa[NFQA_PRIORITY])
+                       entry->skb->priority = ntohl(nla_get_be32(nfqa[NFQA_PRIORITY]));
+
                nfqnl_reinject(entry, verdict);
        }
        return 0;
@@ -1230,6 +1235,9 @@ static int nfqnl_recv_verdict(struct sk_buff *skb, const struct nfnl_info *info,
        if (nfqa[NFQA_MARK])
                entry->skb->mark = ntohl(nla_get_be32(nfqa[NFQA_MARK]));
 
+       if (nfqa[NFQA_PRIORITY])
+               entry->skb->priority = ntohl(nla_get_be32(nfqa[NFQA_PRIORITY]));
+
        nfqnl_reinject(entry, verdict);
        return 0;
 }