ipv6.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _IPV6_H
  2. #define _IPV6_H
  3. #include <linux/in6.h>
  4. #include <asm/byteorder.h>
  5. /* The latest drafts declared increase in minimal mtu up to 1280. */
  6. #define IPV6_MIN_MTU 1280
  7. /*
  8.  * Advanced API
  9.  * source interface/address selection, source routing, etc...
  10.  * *under construction*
  11.  */
  12. struct in6_pktinfo {
  13. struct in6_addr ipi6_addr;
  14. int ipi6_ifindex;
  15. };
  16. struct in6_ifreq {
  17. struct in6_addr ifr6_addr;
  18. __u32 ifr6_prefixlen;
  19. int ifr6_ifindex; 
  20. };
  21. #define IPV6_SRCRT_STRICT 0x01 /* this hop must be a neighbor */
  22. #define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
  23. /*
  24.  * routing header
  25.  */
  26. struct ipv6_rt_hdr {
  27. __u8 nexthdr;
  28. __u8 hdrlen;
  29. __u8 type;
  30. __u8 segments_left;
  31. /*
  32.  * type specific data
  33.  * variable length field
  34.  */
  35. };
  36. struct ipv6_opt_hdr {
  37. __u8  nexthdr;
  38. __u8  hdrlen;
  39. /* 
  40.  * TLV encoded option data follows.
  41.  */
  42. };
  43. #define ipv6_destopt_hdr ipv6_opt_hdr
  44. #define ipv6_hopopt_hdr  ipv6_opt_hdr
  45. #ifdef __KERNEL__
  46. #define ipv6_optlen(p)  (((p)->hdrlen+1) << 3)
  47. #endif
  48. /*
  49.  * routing header type 0 (used in cmsghdr struct)
  50.  */
  51. struct rt0_hdr {
  52. struct ipv6_rt_hdr rt_hdr;
  53. __u32 bitmap; /* strict/loose bit map */
  54. struct in6_addr addr[0];
  55. #define rt0_type rt_hdr.type;
  56. };
  57. /*
  58.  * IPv6 fixed header
  59.  *
  60.  * BEWARE, it is incorrect. The first 4 bits of flow_lbl
  61.  * are glued to priority now, forming "class".
  62.  */
  63. struct ipv6hdr {
  64. #if defined(__LITTLE_ENDIAN_BITFIELD)
  65. __u8 priority:4,
  66. version:4;
  67. #elif defined(__BIG_ENDIAN_BITFIELD)
  68. __u8 version:4,
  69. priority:4;
  70. #else
  71. #error "Please fix <asm/byteorder.h>"
  72. #endif
  73. __u8 flow_lbl[3];
  74. __u16 payload_len;
  75. __u8 nexthdr;
  76. __u8 hop_limit;
  77. struct in6_addr saddr;
  78. struct in6_addr daddr;
  79. };
  80. #ifdef __KERNEL__
  81. /* 
  82.    This structure contains results of exthdrs parsing
  83.    as offsets from skb->nh.
  84.  */
  85. struct inet6_skb_parm
  86. {
  87. int iif;
  88. __u16 ra;
  89. __u16 hop;
  90. __u16 auth;
  91. __u16 dst0;
  92. __u16 srcrt;
  93. __u16 dst1;
  94. };
  95. #endif
  96. #endif