| 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 | */ |
| 7 | #ifndef __LINUX_IP6_NETFILTER_H |
| 8 | #define __LINUX_IP6_NETFILTER_H |
| 9 | |
| 10 | #include <uapi/linux/netfilter_ipv6.h> |
| 11 | |
| 12 | /* |
| 13 | * Hook functions for ipv6 to allow xt_* modules to be built-in even |
| 14 | * if IPv6 is a module. |
| 15 | */ |
| 16 | struct nf_ipv6_ops { |
| 17 | int (*chk_addr)(struct net *net, const struct in6_addr *addr, |
| 18 | const struct net_device *dev, int strict); |
| 19 | void (*route_input)(struct sk_buff *skb); |
| 20 | int (*fragment)(struct net *net, struct sock *sk, struct sk_buff *skb, |
| 21 | int (*output)(struct net *, struct sock *, struct sk_buff *)); |
| 22 | }; |
| 23 | |
| 24 | #ifdef CONFIG_NETFILTER |
| 25 | int ip6_route_me_harder(struct net *net, struct sk_buff *skb); |
| 26 | __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, |
| 27 | unsigned int dataoff, u_int8_t protocol); |
| 28 | |
| 29 | int ipv6_netfilter_init(void); |
| 30 | void ipv6_netfilter_fini(void); |
| 31 | |
| 32 | extern const struct nf_ipv6_ops __rcu *nf_ipv6_ops; |
| 33 | static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) |
| 34 | { |
| 35 | return rcu_dereference(nf_ipv6_ops); |
| 36 | } |
| 37 | |
| 38 | #else /* CONFIG_NETFILTER */ |
| 39 | static inline int ipv6_netfilter_init(void) { return 0; } |
| 40 | static inline void ipv6_netfilter_fini(void) { return; } |
| 41 | static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) { return NULL; } |
| 42 | #endif /* CONFIG_NETFILTER */ |
| 43 | |
| 44 | #endif /*__LINUX_IP6_NETFILTER_H*/ |