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