11da177e4SLinus Torvalds #ifndef _LINUX_ICMPV6_H 21da177e4SLinus Torvalds #define _LINUX_ICMPV6_H 31da177e4SLinus Torvalds 4cc70ab26SArnaldo Carvalho de Melo #include <linux/skbuff.h> 5*607ca46eSDavid Howells #include <uapi/linux/icmpv6.h> 6cc70ab26SArnaldo Carvalho de Melo 7cc70ab26SArnaldo Carvalho de Melo static inline struct icmp6hdr *icmp6_hdr(const struct sk_buff *skb) 8cc70ab26SArnaldo Carvalho de Melo { 99c70220bSArnaldo Carvalho de Melo return (struct icmp6hdr *)skb_transport_header(skb); 10cc70ab26SArnaldo Carvalho de Melo } 111da177e4SLinus Torvalds 121da177e4SLinus Torvalds #include <linux/netdevice.h> 131da177e4SLinus Torvalds 141da177e4SLinus Torvalds extern void icmpv6_send(struct sk_buff *skb, 15d5fdd6baSBrian Haley u8 type, u8 code, 163ffe533cSAlexey Dobriyan __u32 info); 171da177e4SLinus Torvalds 189b0f976fSDenis V. Lunev extern int icmpv6_init(void); 19d5fdd6baSBrian Haley extern int icmpv6_err_convert(u8 type, u8 code, 201da177e4SLinus Torvalds int *err); 211da177e4SLinus Torvalds extern void icmpv6_cleanup(void); 221da177e4SLinus Torvalds extern void icmpv6_param_prob(struct sk_buff *skb, 23d5fdd6baSBrian Haley u8 code, int pos); 2495e41e93SYOSHIFUJI Hideaki 254c9483b2SDavid S. Miller struct flowi6; 26f59d4389SDavid S. Miller struct in6_addr; 2795e41e93SYOSHIFUJI Hideaki extern void icmpv6_flow_init(struct sock *sk, 284c9483b2SDavid S. Miller struct flowi6 *fl6, 2995e41e93SYOSHIFUJI Hideaki u8 type, 3095e41e93SYOSHIFUJI Hideaki const struct in6_addr *saddr, 3195e41e93SYOSHIFUJI Hideaki const struct in6_addr *daddr, 3295e41e93SYOSHIFUJI Hideaki int oif); 331da177e4SLinus Torvalds #endif 34