1 #ifndef _NF_TABLES_IPV4_H_
2 #define _NF_TABLES_IPV4_H_
4 #include <net/netfilter/nf_tables.h>
8 nft_set_pktinfo_ipv4(struct nft_pktinfo
*pkt
,
10 const struct nf_hook_state
*state
)
14 nft_set_pktinfo(pkt
, skb
, state
);
16 ip
= ip_hdr(pkt
->skb
);
17 pkt
->tprot_set
= true;
18 pkt
->tprot
= ip
->protocol
;
19 pkt
->xt
.thoff
= ip_hdrlen(pkt
->skb
);
20 pkt
->xt
.fragoff
= ntohs(ip
->frag_off
) & IP_OFFSET
;
24 __nft_set_pktinfo_ipv4_validate(struct nft_pktinfo
*pkt
,
26 const struct nf_hook_state
*state
)
28 struct iphdr
*iph
, _iph
;
31 iph
= skb_header_pointer(skb
, skb_network_offset(skb
), sizeof(*iph
),
36 if (iph
->ihl
< 5 || iph
->version
!= 4)
39 len
= ntohs(iph
->tot_len
);
46 pkt
->tprot_set
= true;
47 pkt
->tprot
= iph
->protocol
;
48 pkt
->xt
.thoff
= thoff
;
49 pkt
->xt
.fragoff
= ntohs(iph
->frag_off
) & IP_OFFSET
;
55 nft_set_pktinfo_ipv4_validate(struct nft_pktinfo
*pkt
,
57 const struct nf_hook_state
*state
)
59 nft_set_pktinfo(pkt
, skb
, state
);
60 if (__nft_set_pktinfo_ipv4_validate(pkt
, skb
, state
) < 0)
61 nft_set_pktinfo_proto_unspec(pkt
, skb
);
64 extern struct nft_af_info nft_af_ipv4
;
This page took 0.03331 seconds and 5 git commands to generate.