root/include/uapi/linux/icmpv6.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2 #ifndef _UAPI_LINUX_ICMPV6_H
   3 #define _UAPI_LINUX_ICMPV6_H
   4 
   5 #include <linux/types.h>
   6 #include <asm/byteorder.h>
   7 
   8 struct icmp6hdr {
   9 
  10         __u8            icmp6_type;
  11         __u8            icmp6_code;
  12         __sum16         icmp6_cksum;
  13 
  14 
  15         union {
  16                 __be32                  un_data32[1];
  17                 __be16                  un_data16[2];
  18                 __u8                    un_data8[4];
  19 
  20                 struct icmpv6_echo {
  21                         __be16          identifier;
  22                         __be16          sequence;
  23                 } u_echo;
  24 
  25                 struct icmpv6_nd_advt {
  26 #if defined(__LITTLE_ENDIAN_BITFIELD)
  27                         __u32           reserved:5,
  28                                         override:1,
  29                                         solicited:1,
  30                                         router:1,
  31                                         reserved2:24;
  32 #elif defined(__BIG_ENDIAN_BITFIELD)
  33                         __u32           router:1,
  34                                         solicited:1,
  35                                         override:1,
  36                                         reserved:29;
  37 #else
  38 #error  "Please fix <asm/byteorder.h>"
  39 #endif                                          
  40                 } u_nd_advt;
  41 
  42                 struct icmpv6_nd_ra {
  43                         __u8            hop_limit;
  44 #if defined(__LITTLE_ENDIAN_BITFIELD)
  45                         __u8            reserved:3,
  46                                         router_pref:2,
  47                                         home_agent:1,
  48                                         other:1,
  49                                         managed:1;
  50 
  51 #elif defined(__BIG_ENDIAN_BITFIELD)
  52                         __u8            managed:1,
  53                                         other:1,
  54                                         home_agent:1,
  55                                         router_pref:2,
  56                                         reserved:3;
  57 #else
  58 #error  "Please fix <asm/byteorder.h>"
  59 #endif
  60                         __be16          rt_lifetime;
  61                 } u_nd_ra;
  62 
  63         } icmp6_dataun;
  64 
  65 #define icmp6_identifier        icmp6_dataun.u_echo.identifier
  66 #define icmp6_sequence          icmp6_dataun.u_echo.sequence
  67 #define icmp6_pointer           icmp6_dataun.un_data32[0]
  68 #define icmp6_mtu               icmp6_dataun.un_data32[0]
  69 #define icmp6_unused            icmp6_dataun.un_data32[0]
  70 #define icmp6_maxdelay          icmp6_dataun.un_data16[0]
  71 #define icmp6_router            icmp6_dataun.u_nd_advt.router
  72 #define icmp6_solicited         icmp6_dataun.u_nd_advt.solicited
  73 #define icmp6_override          icmp6_dataun.u_nd_advt.override
  74 #define icmp6_ndiscreserved     icmp6_dataun.u_nd_advt.reserved
  75 #define icmp6_hop_limit         icmp6_dataun.u_nd_ra.hop_limit
  76 #define icmp6_addrconf_managed  icmp6_dataun.u_nd_ra.managed
  77 #define icmp6_addrconf_other    icmp6_dataun.u_nd_ra.other
  78 #define icmp6_rt_lifetime       icmp6_dataun.u_nd_ra.rt_lifetime
  79 #define icmp6_router_pref       icmp6_dataun.u_nd_ra.router_pref
  80 };
  81 
  82 
  83 #define ICMPV6_ROUTER_PREF_LOW          0x3
  84 #define ICMPV6_ROUTER_PREF_MEDIUM       0x0
  85 #define ICMPV6_ROUTER_PREF_HIGH         0x1
  86 #define ICMPV6_ROUTER_PREF_INVALID      0x2
  87 
  88 #define ICMPV6_DEST_UNREACH             1
  89 #define ICMPV6_PKT_TOOBIG               2
  90 #define ICMPV6_TIME_EXCEED              3
  91 #define ICMPV6_PARAMPROB                4
  92 
  93 #define ICMPV6_ERRMSG_MAX       127
  94 
  95 #define ICMPV6_INFOMSG_MASK             0x80
  96 
  97 #define ICMPV6_ECHO_REQUEST             128
  98 #define ICMPV6_ECHO_REPLY               129
  99 #define ICMPV6_MGM_QUERY                130
 100 #define ICMPV6_MGM_REPORT               131
 101 #define ICMPV6_MGM_REDUCTION            132
 102 
 103 #define ICMPV6_NI_QUERY                 139
 104 #define ICMPV6_NI_REPLY                 140
 105 
 106 #define ICMPV6_MLD2_REPORT              143
 107 
 108 #define ICMPV6_DHAAD_REQUEST            144
 109 #define ICMPV6_DHAAD_REPLY              145
 110 #define ICMPV6_MOBILE_PREFIX_SOL        146
 111 #define ICMPV6_MOBILE_PREFIX_ADV        147
 112 
 113 #define ICMPV6_MRDISC_ADV               151
 114 
 115 #define ICMPV6_MSG_MAX          255
 116 
 117 /*
 118  *      Codes for Destination Unreachable
 119  */
 120 #define ICMPV6_NOROUTE                  0
 121 #define ICMPV6_ADM_PROHIBITED           1
 122 #define ICMPV6_NOT_NEIGHBOUR            2
 123 #define ICMPV6_ADDR_UNREACH             3
 124 #define ICMPV6_PORT_UNREACH             4
 125 #define ICMPV6_POLICY_FAIL              5
 126 #define ICMPV6_REJECT_ROUTE             6
 127 
 128 /*
 129  *      Codes for Time Exceeded
 130  */
 131 #define ICMPV6_EXC_HOPLIMIT             0
 132 #define ICMPV6_EXC_FRAGTIME             1
 133 
 134 /*
 135  *      Codes for Parameter Problem
 136  */
 137 #define ICMPV6_HDR_FIELD                0
 138 #define ICMPV6_UNK_NEXTHDR              1
 139 #define ICMPV6_UNK_OPTION               2
 140 
 141 /*
 142  *      constants for (set|get)sockopt
 143  */
 144 
 145 #define ICMPV6_FILTER                   1
 146 
 147 /*
 148  *      ICMPV6 filter
 149  */
 150 
 151 #define ICMPV6_FILTER_BLOCK             1
 152 #define ICMPV6_FILTER_PASS              2
 153 #define ICMPV6_FILTER_BLOCKOTHERS       3
 154 #define ICMPV6_FILTER_PASSONLY          4
 155 
 156 struct icmp6_filter {
 157         __u32           data[8];
 158 };
 159 
 160 /*
 161  *      Definitions for MLDv2
 162  */
 163 #define MLD2_MODE_IS_INCLUDE    1
 164 #define MLD2_MODE_IS_EXCLUDE    2
 165 #define MLD2_CHANGE_TO_INCLUDE  3
 166 #define MLD2_CHANGE_TO_EXCLUDE  4
 167 #define MLD2_ALLOW_NEW_SOURCES  5
 168 #define MLD2_BLOCK_OLD_SOURCES  6
 169 
 170 #define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
 171 
 172 
 173 #endif /* _UAPI_LINUX_ICMPV6_H */

/* [<][>][^][v][top][bottom][index][help] */