]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* IPv6-specific defines for netfilter. |
2 | * (C)1998 Rusty Russell -- This code is GPL. | |
3 | * (C)1999 David Jeffery | |
4 | * this header was blatantly ripped from netfilter_ipv4.h | |
5 | * it's amazing what adding a bunch of 6s can do =8^) | |
6 | */ | |
607ca46e DH |
7 | #ifndef __LINUX_IP6_NETFILTER_H |
8 | #define __LINUX_IP6_NETFILTER_H | |
1da177e4 | 9 | |
607ca46e | 10 | #include <uapi/linux/netfilter_ipv6.h> |
1da177e4 | 11 | |
7db9a51e PNA |
12 | /* Extra routing may needed on local out, as the QUEUE target never returns |
13 | * control to the table. | |
14 | */ | |
15 | struct ip6_rt_info { | |
16 | struct in6_addr daddr; | |
17 | struct in6_addr saddr; | |
18 | u_int32_t mark; | |
19 | }; | |
20 | ||
ce388f45 PNA |
21 | struct nf_queue_entry; |
22 | ||
2a7851bf FW |
23 | /* |
24 | * Hook functions for ipv6 to allow xt_* modules to be built-in even | |
25 | * if IPv6 is a module. | |
26 | */ | |
27 | struct nf_ipv6_ops { | |
28 | int (*chk_addr)(struct net *net, const struct in6_addr *addr, | |
29 | const struct net_device *dev, int strict); | |
72b31f72 | 30 | void (*route_input)(struct sk_buff *skb); |
7d8c6e39 EB |
31 | int (*fragment)(struct net *net, struct sock *sk, struct sk_buff *skb, |
32 | int (*output)(struct net *, struct sock *, struct sk_buff *)); | |
3f87c08c PNA |
33 | int (*route)(struct net *net, struct dst_entry **dst, struct flowi *fl, |
34 | bool strict); | |
ce388f45 | 35 | int (*reroute)(struct sk_buff *skb, const struct nf_queue_entry *entry); |
2a7851bf FW |
36 | }; |
37 | ||
2e4cfae2 | 38 | #ifdef CONFIG_NETFILTER |
5f5d74d7 | 39 | int ip6_route_me_harder(struct net *net, struct sk_buff *skb); |
2e4cfae2 JS |
40 | __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, |
41 | unsigned int dataoff, u_int8_t protocol); | |
42 | ||
43 | int ipv6_netfilter_init(void); | |
44 | void ipv6_netfilter_fini(void); | |
45 | ||
2a7851bf FW |
46 | extern const struct nf_ipv6_ops __rcu *nf_ipv6_ops; |
47 | static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) | |
48 | { | |
49 | return rcu_dereference(nf_ipv6_ops); | |
50 | } | |
51 | ||
bb94aa16 PM |
52 | #else /* CONFIG_NETFILTER */ |
53 | static inline int ipv6_netfilter_init(void) { return 0; } | |
54 | static inline void ipv6_netfilter_fini(void) { return; } | |
2e4cfae2 | 55 | static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) { return NULL; } |
bb94aa16 | 56 | #endif /* CONFIG_NETFILTER */ |
2cc7d573 | 57 | |
1da177e4 | 58 | #endif /*__LINUX_IP6_NETFILTER_H*/ |