linux-headers (unknown)

(root)/
include/
linux/
icmpv6.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef _LINUX_ICMPV6_H
       3  #define _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_datagram_len	icmp6_dataun.un_data8[0]
      72  #define icmp6_router		icmp6_dataun.u_nd_advt.router
      73  #define icmp6_solicited		icmp6_dataun.u_nd_advt.solicited
      74  #define icmp6_override		icmp6_dataun.u_nd_advt.override
      75  #define icmp6_ndiscreserved	icmp6_dataun.u_nd_advt.reserved
      76  #define icmp6_hop_limit		icmp6_dataun.u_nd_ra.hop_limit
      77  #define icmp6_addrconf_managed	icmp6_dataun.u_nd_ra.managed
      78  #define icmp6_addrconf_other	icmp6_dataun.u_nd_ra.other
      79  #define icmp6_rt_lifetime	icmp6_dataun.u_nd_ra.rt_lifetime
      80  #define icmp6_router_pref	icmp6_dataun.u_nd_ra.router_pref
      81  };
      82  
      83  
      84  #define ICMPV6_ROUTER_PREF_LOW		0x3
      85  #define ICMPV6_ROUTER_PREF_MEDIUM	0x0
      86  #define ICMPV6_ROUTER_PREF_HIGH		0x1
      87  #define ICMPV6_ROUTER_PREF_INVALID	0x2
      88  
      89  #define ICMPV6_DEST_UNREACH		1
      90  #define ICMPV6_PKT_TOOBIG		2
      91  #define ICMPV6_TIME_EXCEED		3
      92  #define ICMPV6_PARAMPROB		4
      93  
      94  #define ICMPV6_ERRMSG_MAX       127
      95  
      96  #define ICMPV6_INFOMSG_MASK		0x80
      97  
      98  #define ICMPV6_ECHO_REQUEST		128
      99  #define ICMPV6_ECHO_REPLY		129
     100  #define ICMPV6_MGM_QUERY		130
     101  #define ICMPV6_MGM_REPORT       	131
     102  #define ICMPV6_MGM_REDUCTION    	132
     103  
     104  #define ICMPV6_NI_QUERY			139
     105  #define ICMPV6_NI_REPLY			140
     106  
     107  #define ICMPV6_MLD2_REPORT		143
     108  
     109  #define ICMPV6_DHAAD_REQUEST		144
     110  #define ICMPV6_DHAAD_REPLY		145
     111  #define ICMPV6_MOBILE_PREFIX_SOL	146
     112  #define ICMPV6_MOBILE_PREFIX_ADV	147
     113  
     114  #define ICMPV6_MRDISC_ADV		151
     115  
     116  #define ICMPV6_MSG_MAX          255
     117  
     118  /*
     119   *	Codes for Destination Unreachable
     120   */
     121  #define ICMPV6_NOROUTE			0
     122  #define ICMPV6_ADM_PROHIBITED		1
     123  #define ICMPV6_NOT_NEIGHBOUR		2
     124  #define ICMPV6_ADDR_UNREACH		3
     125  #define ICMPV6_PORT_UNREACH		4
     126  #define ICMPV6_POLICY_FAIL		5
     127  #define ICMPV6_REJECT_ROUTE		6
     128  
     129  /*
     130   *	Codes for Time Exceeded
     131   */
     132  #define ICMPV6_EXC_HOPLIMIT		0
     133  #define ICMPV6_EXC_FRAGTIME		1
     134  
     135  /*
     136   *	Codes for Parameter Problem
     137   */
     138  #define ICMPV6_HDR_FIELD		0
     139  #define ICMPV6_UNK_NEXTHDR		1
     140  #define ICMPV6_UNK_OPTION		2
     141  #define ICMPV6_HDR_INCOMP		3
     142  
     143  /* Codes for EXT_ECHO (PROBE) */
     144  #define ICMPV6_EXT_ECHO_REQUEST		160
     145  #define ICMPV6_EXT_ECHO_REPLY		161
     146  /*
     147   *	constants for (set|get)sockopt
     148   */
     149  
     150  #define ICMPV6_FILTER			1
     151  
     152  /*
     153   *	ICMPV6 filter
     154   */
     155  
     156  #define ICMPV6_FILTER_BLOCK		1
     157  #define ICMPV6_FILTER_PASS		2
     158  #define ICMPV6_FILTER_BLOCKOTHERS	3
     159  #define ICMPV6_FILTER_PASSONLY		4
     160  
     161  struct icmp6_filter {
     162  	__u32		data[8];
     163  };
     164  
     165  /*
     166   *	Definitions for MLDv2
     167   */
     168  #define MLD2_MODE_IS_INCLUDE	1
     169  #define MLD2_MODE_IS_EXCLUDE	2
     170  #define MLD2_CHANGE_TO_INCLUDE	3
     171  #define MLD2_CHANGE_TO_EXCLUDE	4
     172  #define MLD2_ALLOW_NEW_SOURCES	5
     173  #define MLD2_BLOCK_OLD_SOURCES	6
     174  
     175  #define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
     176  
     177  
     178  #endif /* _LINUX_ICMPV6_H */