linux/include/uapi/linux/ipv6.h
<<
>>
Prefs
   1#ifndef _UAPI_IPV6_H
   2#define _UAPI_IPV6_H
   3
   4#include <linux/types.h>
   5#include <linux/in6.h>
   6#include <asm/byteorder.h>
   7
   8/* The latest drafts declared increase in minimal mtu up to 1280. */
   9
  10#define IPV6_MIN_MTU    1280
  11
  12/*
  13 *      Advanced API
  14 *      source interface/address selection, source routing, etc...
  15 *      *under construction*
  16 */
  17
  18
  19struct in6_pktinfo {
  20        struct in6_addr ipi6_addr;
  21        int             ipi6_ifindex;
  22};
  23
  24struct ip6_mtuinfo {
  25        struct sockaddr_in6     ip6m_addr;
  26        __u32                   ip6m_mtu;
  27};
  28
  29struct in6_ifreq {
  30        struct in6_addr ifr6_addr;
  31        __u32           ifr6_prefixlen;
  32        int             ifr6_ifindex; 
  33};
  34
  35#define IPV6_SRCRT_STRICT       0x01    /* Deprecated; will be removed */
  36#define IPV6_SRCRT_TYPE_0       0       /* Deprecated; will be removed */
  37#define IPV6_SRCRT_TYPE_2       2       /* IPv6 type 2 Routing Header   */
  38
  39/*
  40 *      routing header
  41 */
  42struct ipv6_rt_hdr {
  43        __u8            nexthdr;
  44        __u8            hdrlen;
  45        __u8            type;
  46        __u8            segments_left;
  47
  48        /*
  49         *      type specific data
  50         *      variable length field
  51         */
  52};
  53
  54
  55struct ipv6_opt_hdr {
  56        __u8            nexthdr;
  57        __u8            hdrlen;
  58        /* 
  59         * TLV encoded option data follows.
  60         */
  61} __attribute__((packed));      /* required for some archs */
  62
  63#define ipv6_destopt_hdr ipv6_opt_hdr
  64#define ipv6_hopopt_hdr  ipv6_opt_hdr
  65
  66/* Router Alert option values (RFC2711) */
  67#define IPV6_OPT_ROUTERALERT_MLD        0x0000  /* MLD(RFC2710) */
  68
  69/*
  70 *      routing header type 0 (used in cmsghdr struct)
  71 */
  72
  73struct rt0_hdr {
  74        struct ipv6_rt_hdr      rt_hdr;
  75        __u32                   reserved;
  76        struct in6_addr         addr[0];
  77
  78#define rt0_type                rt_hdr.type
  79};
  80
  81/*
  82 *      routing header type 2
  83 */
  84
  85struct rt2_hdr {
  86        struct ipv6_rt_hdr      rt_hdr;
  87        __u32                   reserved;
  88        struct in6_addr         addr;
  89
  90#define rt2_type                rt_hdr.type
  91};
  92
  93/*
  94 *      home address option in destination options header
  95 */
  96
  97struct ipv6_destopt_hao {
  98        __u8                    type;
  99        __u8                    length;
 100        struct in6_addr         addr;
 101} __attribute__((packed));
 102
 103/*
 104 *      IPv6 fixed header
 105 *
 106 *      BEWARE, it is incorrect. The first 4 bits of flow_lbl
 107 *      are glued to priority now, forming "class".
 108 */
 109
 110struct ipv6hdr {
 111#if defined(__LITTLE_ENDIAN_BITFIELD)
 112        __u8                    priority:4,
 113                                version:4;
 114#elif defined(__BIG_ENDIAN_BITFIELD)
 115        __u8                    version:4,
 116                                priority:4;
 117#else
 118#error  "Please fix <asm/byteorder.h>"
 119#endif
 120        __u8                    flow_lbl[3];
 121
 122        __be16                  payload_len;
 123        __u8                    nexthdr;
 124        __u8                    hop_limit;
 125
 126        struct  in6_addr        saddr;
 127        struct  in6_addr        daddr;
 128};
 129
 130
 131/* index values for the variables in ipv6_devconf */
 132enum {
 133        DEVCONF_FORWARDING = 0,
 134        DEVCONF_HOPLIMIT,
 135        DEVCONF_MTU6,
 136        DEVCONF_ACCEPT_RA,
 137        DEVCONF_ACCEPT_REDIRECTS,
 138        DEVCONF_AUTOCONF,
 139        DEVCONF_DAD_TRANSMITS,
 140        DEVCONF_RTR_SOLICITS,
 141        DEVCONF_RTR_SOLICIT_INTERVAL,
 142        DEVCONF_RTR_SOLICIT_DELAY,
 143        DEVCONF_USE_TEMPADDR,
 144        DEVCONF_TEMP_VALID_LFT,
 145        DEVCONF_TEMP_PREFERED_LFT,
 146        DEVCONF_REGEN_MAX_RETRY,
 147        DEVCONF_MAX_DESYNC_FACTOR,
 148        DEVCONF_MAX_ADDRESSES,
 149        DEVCONF_FORCE_MLD_VERSION,
 150        DEVCONF_ACCEPT_RA_DEFRTR,
 151        DEVCONF_ACCEPT_RA_PINFO,
 152        DEVCONF_ACCEPT_RA_RTR_PREF,
 153        DEVCONF_RTR_PROBE_INTERVAL,
 154        DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
 155        DEVCONF_PROXY_NDP,
 156        DEVCONF_OPTIMISTIC_DAD,
 157        DEVCONF_ACCEPT_SOURCE_ROUTE,
 158        DEVCONF_MC_FORWARDING,
 159        DEVCONF_DISABLE_IPV6,
 160        DEVCONF_ACCEPT_DAD,
 161        DEVCONF_FORCE_TLLAO,
 162        DEVCONF_NDISC_NOTIFY,
 163        DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
 164        DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
 165        DEVCONF_SUPPRESS_FRAG_NDISC,
 166        DEVCONF_ACCEPT_RA_FROM_LOCAL,
 167        DEVCONF_USE_OPTIMISTIC,
 168        DEVCONF_MAX
 169};
 170
 171
 172#endif /* _UAPI_IPV6_H */
 173