netfilter_ipv6.h 1.4 KB

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