Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ****************************************************************************
     11  ****************************************************************************/
     12 #ifndef _IPV6_H
     13 #define _IPV6_H
     14 
     15 #include <linux/types.h>
     16 #include <linux/in6.h>
     17 #include <asm/byteorder.h>
     18 
     19 #define IPV6_MIN_MTU 1280
     20 
     21 struct in6_pktinfo {
     22  struct in6_addr ipi6_addr;
     23  int ipi6_ifindex;
     24 };
     25 
     26 struct ip6_mtuinfo {
     27  struct sockaddr_in6 ip6m_addr;
     28  __u32 ip6m_mtu;
     29 };
     30 
     31 struct in6_ifreq {
     32  struct in6_addr ifr6_addr;
     33  __u32 ifr6_prefixlen;
     34  int ifr6_ifindex;
     35 };
     36 
     37 #define IPV6_SRCRT_STRICT 0x01
     38 #define IPV6_SRCRT_TYPE_0 0
     39 #define IPV6_SRCRT_TYPE_2 2
     40 
     41 struct ipv6_rt_hdr {
     42  __u8 nexthdr;
     43  __u8 hdrlen;
     44  __u8 type;
     45  __u8 segments_left;
     46 
     47 };
     48 
     49 struct ipv6_opt_hdr {
     50  __u8 nexthdr;
     51  __u8 hdrlen;
     52 
     53 } __attribute__((packed));
     54 
     55 #define ipv6_destopt_hdr ipv6_opt_hdr
     56 #define ipv6_hopopt_hdr ipv6_opt_hdr
     57 
     58 struct rt0_hdr {
     59  struct ipv6_rt_hdr rt_hdr;
     60  __u32 reserved;
     61  struct in6_addr addr[0];
     62 
     63 #define rt0_type rt_hdr.type
     64 };
     65 
     66 struct rt2_hdr {
     67  struct ipv6_rt_hdr rt_hdr;
     68  __u32 reserved;
     69  struct in6_addr addr;
     70 
     71 #define rt2_type rt_hdr.type
     72 };
     73 
     74 struct ipv6_destopt_hao {
     75  __u8 type;
     76  __u8 length;
     77  struct in6_addr addr;
     78 } __attribute__((packed));
     79 
     80 struct ipv6hdr {
     81 #ifdef __LITTLE_ENDIAN_BITFIELD
     82  __u8 priority:4,
     83  version:4;
     84 #elif defined(__BIG_ENDIAN_BITFIELD)
     85  __u8 version:4,
     86  priority:4;
     87 #else
     88 #error "Please fix <asm/byteorder.h>"
     89 #endif
     90  __u8 flow_lbl[3];
     91 
     92  __be16 payload_len;
     93  __u8 nexthdr;
     94  __u8 hop_limit;
     95 
     96  struct in6_addr saddr;
     97  struct in6_addr daddr;
     98 };
     99 
    100 enum {
    101  DEVCONF_FORWARDING = 0,
    102  DEVCONF_HOPLIMIT,
    103  DEVCONF_MTU6,
    104  DEVCONF_ACCEPT_RA,
    105  DEVCONF_ACCEPT_REDIRECTS,
    106  DEVCONF_AUTOCONF,
    107  DEVCONF_DAD_TRANSMITS,
    108  DEVCONF_RTR_SOLICITS,
    109  DEVCONF_RTR_SOLICIT_INTERVAL,
    110  DEVCONF_RTR_SOLICIT_DELAY,
    111  DEVCONF_USE_TEMPADDR,
    112  DEVCONF_TEMP_VALID_LFT,
    113  DEVCONF_TEMP_PREFERED_LFT,
    114  DEVCONF_REGEN_MAX_RETRY,
    115  DEVCONF_MAX_DESYNC_FACTOR,
    116  DEVCONF_MAX_ADDRESSES,
    117  DEVCONF_FORCE_MLD_VERSION,
    118  DEVCONF_ACCEPT_RA_DEFRTR,
    119  DEVCONF_ACCEPT_RA_PINFO,
    120  DEVCONF_ACCEPT_RA_RTR_PREF,
    121  DEVCONF_RTR_PROBE_INTERVAL,
    122  DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
    123  DEVCONF_PROXY_NDP,
    124  DEVCONF_OPTIMISTIC_DAD,
    125  DEVCONF_ACCEPT_SOURCE_ROUTE,
    126  DEVCONF_MC_FORWARDING,
    127  DEVCONF_DISABLE_IPV6,
    128  DEVCONF_ACCEPT_DAD,
    129  DEVCONF_FORCE_TLLAO,
    130  DEVCONF_MAX
    131 };
    132 
    133 #endif
    134