xref: /linux-6.15/include/linux/netfilter_ipv4.h (revision 66dfdff0)
1 /* IPv4-specific defines for netfilter.
2  * (C)1998 Rusty Russell -- This code is GPL.
3  */
4 #ifndef __LINUX_IP_NETFILTER_H
5 #define __LINUX_IP_NETFILTER_H
6 
7 #include <uapi/linux/netfilter_ipv4.h>
8 
9 /* Extra routing may needed on local out, as the QUEUE target never returns
10  * control to the table.
11  */
12 struct ip_rt_info {
13 	__be32 daddr;
14 	__be32 saddr;
15 	u_int8_t tos;
16 	u_int32_t mark;
17 };
18 
19 int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned addr_type);
20 
21 struct nf_queue_entry;
22 
23 #ifdef CONFIG_INET
24 __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
25 		       unsigned int dataoff, u_int8_t protocol);
26 __sum16 nf_ip_checksum_partial(struct sk_buff *skb, unsigned int hook,
27 			       unsigned int dataoff, unsigned int len,
28 			       u_int8_t protocol);
29 int nf_ip_route(struct net *net, struct dst_entry **dst, struct flowi *fl,
30 		bool strict);
31 int nf_ip_reroute(struct sk_buff *skb, const struct nf_queue_entry *entry);
32 #else
33 static inline __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
34 				     unsigned int dataoff, u_int8_t protocol)
35 {
36 	return 0;
37 }
38 static inline __sum16 nf_ip_checksum_partial(struct sk_buff *skb,
39 					     unsigned int hook,
40 					     unsigned int dataoff,
41 					     unsigned int len,
42 					     u_int8_t protocol)
43 {
44 	return 0;
45 }
46 static inline int nf_ip_route(struct net *net, struct dst_entry **dst,
47 			      struct flowi *fl, bool strict)
48 {
49 	return -EOPNOTSUPP;
50 }
51 static inline int nf_ip_reroute(struct sk_buff *skb,
52 				const struct nf_queue_entry *entry)
53 {
54 	return -EOPNOTSUPP;
55 }
56 #endif /* CONFIG_INET */
57 
58 #endif /*__LINUX_IP_NETFILTER_H*/
59