linux/include/linux/icmpv6.h
<<
>>
Prefs
   1#ifndef _LINUX_ICMPV6_H
   2#define _LINUX_ICMPV6_H
   3
   4#include <linux/skbuff.h>
   5#include <uapi/linux/icmpv6.h>
   6
   7static inline struct icmp6hdr *icmp6_hdr(const struct sk_buff *skb)
   8{
   9        return (struct icmp6hdr *)skb_transport_header(skb);
  10}
  11
  12#include <linux/netdevice.h>
  13
  14#if IS_ENABLED(CONFIG_IPV6)
  15extern void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info);
  16
  17typedef void ip6_icmp_send_t(struct sk_buff *skb, u8 type, u8 code, __u32 info);
  18extern int inet6_register_icmp_sender(ip6_icmp_send_t *fn);
  19extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn);
  20
  21#else
  22
  23static inline void icmpv6_send(struct sk_buff *skb,
  24                               u8 type, u8 code, __u32 info)
  25{
  26
  27}
  28#endif
  29
  30extern int                              icmpv6_init(void);
  31extern int                              icmpv6_err_convert(u8 type, u8 code,
  32                                                           int *err);
  33extern void                             icmpv6_cleanup(void);
  34extern void                             icmpv6_param_prob(struct sk_buff *skb,
  35                                                          u8 code, int pos);
  36
  37struct flowi6;
  38struct in6_addr;
  39extern void                             icmpv6_flow_init(struct sock *sk,
  40                                                         struct flowi6 *fl6,
  41                                                         u8 type,
  42                                                         const struct in6_addr *saddr,
  43                                                         const struct in6_addr *daddr,
  44                                                         int oif);
  45#endif
  46