blob: 1e0ffd5aea47eecdea750ab792b61887672c19c9 [file] [log] [blame]
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +02001#ifndef _NF_TABLES_IPV6_H_
2#define _NF_TABLES_IPV6_H_
3
4#include <linux/netfilter_ipv6/ip6_tables.h>
5#include <net/ipv6.h>
6
7static inline int
8nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt,
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +02009 struct sk_buff *skb,
David S. Miller073bfd52015-04-03 21:16:25 -040010 const struct nf_hook_state *state)
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020011{
12 int protohdr, thoff = 0;
13 unsigned short frag_off;
14
Eric W. Biederman6aa187f2015-09-18 14:32:57 -050015 nft_set_pktinfo(pkt, skb, state);
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020016
17 protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, NULL);
Pablo Neira Ayuso8df9e322016-09-09 12:42:50 +020018 if (protohdr < 0) {
19 nft_set_pktinfo_proto_unspec(pkt, skb);
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020020 return -1;
Pablo Neira Ayuso8df9e322016-09-09 12:42:50 +020021 }
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020022
Pablo Neira Ayusobeac5af2016-09-09 12:42:49 +020023 pkt->tprot_set = true;
Patrick McHardy4566bf22014-01-03 12:16:18 +000024 pkt->tprot = protohdr;
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020025 pkt->xt.thoff = thoff;
26 pkt->xt.fragoff = frag_off;
27
28 return 0;
29}
30
Patrick McHardy1d491442014-01-03 12:16:16 +000031extern struct nft_af_info nft_af_ipv6;
32
Pablo Neira Ayuso0ca743a2013-10-14 00:06:06 +020033#endif