source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/netinet/ip6.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 3.6 KB
Line 
1/* Copyright (C) 1991-1997, 2001 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3
4   The GNU C Library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8
9   The GNU C Library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with the GNU C Library; if not, write to the Free
16   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17   02111-1307 USA.  */
18
19#ifndef _NETINET_IP6_H
20#define _NETINET_IP6_H 1
21
22#include <inttypes.h>
23#include <netinet/in.h>
24
25struct ip6_hdr
26  {
27    union
28      {
29        struct ip6_hdrctl
30          {
31            uint32_t ip6_un1_flow;   /* 4 bits version, 8 bits TC,
32                                        20 bits flow-ID */
33            uint16_t ip6_un1_plen;   /* payload length */
34            uint8_t  ip6_un1_nxt;    /* next header */
35            uint8_t  ip6_un1_hlim;   /* hop limit */
36          } ip6_un1;
37        uint8_t ip6_un2_vfc;       /* 4 bits version, top 4 bits tclass */
38      } ip6_ctlun;
39    struct in6_addr ip6_src;      /* source address */
40    struct in6_addr ip6_dst;      /* destination address */
41  };
42
43#define ip6_vfc   ip6_ctlun.ip6_un2_vfc
44#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow
45#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen
46#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt
47#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim
48#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim
49
50/* Hop-by-Hop options header.  */
51struct ip6_hbh
52  {
53    uint8_t  ip6h_nxt;        /* next hesder.  */
54    uint8_t  ip6h_len;        /* length in units of 8 octets.  */
55    /* followed by options */
56  };
57
58/* Destination options header */
59struct ip6_dest
60  {
61    uint8_t  ip6d_nxt;        /* next header */
62    uint8_t  ip6d_len;        /* length in units of 8 octets */
63    /* followed by options */
64  };
65
66/* Routing header */
67struct ip6_rthdr
68  {
69    uint8_t  ip6r_nxt;        /* next header */
70    uint8_t  ip6r_len;        /* length in units of 8 octets */
71    uint8_t  ip6r_type;       /* routing type */
72    uint8_t  ip6r_segleft;    /* segments left */
73    /* followed by routing type specific data */
74  };
75
76/* Type 0 Routing header */
77struct ip6_rthdr0
78  {
79    uint8_t  ip6r0_nxt;       /* next header */
80    uint8_t  ip6r0_len;       /* length in units of 8 octets */
81    uint8_t  ip6r0_type;      /* always zero */
82    uint8_t  ip6r0_segleft;   /* segments left */
83    uint8_t  ip6r0_reserved;  /* reserved field */
84    uint8_t  ip6r0_slmap[3];  /* strict/loose bit map */
85    struct in6_addr  ip6r0_addr[1];  /* up to 23 addresses */
86  };
87
88/* Fragment header */
89struct ip6_frag
90  {
91    uint8_t   ip6f_nxt;       /* next header */
92    uint8_t   ip6f_reserved;  /* reserved field */
93    uint16_t  ip6f_offlg;     /* offset, reserved, and flag */
94    uint32_t  ip6f_ident;     /* identification */
95  };
96
97#if     BYTE_ORDER == BIG_ENDIAN
98#define IP6F_OFF_MASK       0xfff8  /* mask out offset from _offlg */
99#define IP6F_RESERVED_MASK  0x0006  /* reserved bits in ip6f_offlg */
100#define IP6F_MORE_FRAG      0x0001  /* more-fragments flag */
101#else   /* BYTE_ORDER == LITTLE_ENDIAN */
102#define IP6F_OFF_MASK       0xf8ff  /* mask out offset from _offlg */
103#define IP6F_RESERVED_MASK  0x0600  /* reserved bits in ip6f_offlg */
104#define IP6F_MORE_FRAG      0x0100  /* more-fragments flag */
105#endif
106
107#endif /* netinet/ip6.h */
Note: See TracBrowser for help on using the repository browser.