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

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

first commit

  • Property svn:executable set to *
File size: 4.9 KB
Line 
1/*
2 *      Types and definitions for AF_INET6
3 *      Linux INET6 implementation
4 *
5 *      Authors:
6 *      Pedro Roque             <roque@di.fc.ul.pt>     
7 *
8 *      Sources:
9 *      IPv6 Program Interfaces for BSD Systems
10 *      <draft-ietf-ipngwg-bsd-api-05.txt>
11 *
12 *      Advanced Sockets API for IPv6
13 *      <draft-stevens-advanced-api-00.txt>
14 *
15 *      This program is free software; you can redistribute it and/or
16 *      modify it under the terms of the GNU General Public License
17 *      as published by the Free Software Foundation; either version
18 *      2 of the License, or (at your option) any later version.
19 */
20
21#ifndef _LINUX_IN6_H
22#define _LINUX_IN6_H
23
24#include <linux/types.h>
25
26#ifndef _NETINET_IN_H
27
28/*
29 *      IPv6 address structure
30 */
31
32struct in6_addr
33{
34        union 
35        {
36                __u8            u6_addr8[16];
37                __u16           u6_addr16[8];
38                __u32           u6_addr32[4];
39        } in6_u;
40#define s6_addr                 in6_u.u6_addr8
41#define s6_addr16               in6_u.u6_addr16
42#define s6_addr32               in6_u.u6_addr32
43};
44
45#endif
46
47/* IPv6 Wildcard Address (::) and Loopback Address (::1) defined in RFC2553
48 * NOTE: Be aware the IN6ADDR_* constants and in6addr_* externals are defined
49 * in network byte order, not in host byte order as are the IPv4 equivalents
50 */
51#if 0
52extern const struct in6_addr in6addr_any;
53#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
54#endif
55extern const struct in6_addr in6addr_loopback;
56#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
57
58#ifndef _NETINET_IN_H
59
60struct sockaddr_in6 {
61        unsigned short int      sin6_family;    /* AF_INET6 */
62        __u16                   sin6_port;      /* Transport layer port # */
63        __u32                   sin6_flowinfo;  /* IPv6 flow information */
64        struct in6_addr         sin6_addr;      /* IPv6 address */
65        __u32                   sin6_scope_id;  /* scope id (new in RFC2553) */
66};
67
68struct ipv6_mreq {
69        /* IPv6 multicast address of group */
70        struct in6_addr ipv6mr_multiaddr;
71
72        /* local IPv6 address of interface */
73        int             ipv6mr_ifindex;
74};
75
76#endif
77
78#define ipv6mr_acaddr   ipv6mr_multiaddr
79
80struct in6_flowlabel_req
81{
82        struct in6_addr flr_dst;
83        __u32   flr_label;
84        __u8    flr_action;
85        __u8    flr_share;
86        __u16   flr_flags;
87        __u16   flr_expires;
88        __u16   flr_linger;
89        __u32   __flr_pad;
90        /* Options in format of IPV6_PKTOPTIONS */
91};
92
93#define IPV6_FL_A_GET   0
94#define IPV6_FL_A_PUT   1
95#define IPV6_FL_A_RENEW 2
96
97#define IPV6_FL_F_CREATE        1
98#define IPV6_FL_F_EXCL          2
99
100#define IPV6_FL_S_NONE          0
101#define IPV6_FL_S_EXCL          1
102#define IPV6_FL_S_PROCESS       2
103#define IPV6_FL_S_USER          3
104#define IPV6_FL_S_ANY           255
105
106
107/*
108 *      Bitmask constant declarations to help applications select out the
109 *      flow label and priority fields.
110 *
111 *      Note that this are in host byte order while the flowinfo field of
112 *      sockaddr_in6 is in network byte order.
113 */
114
115#define IPV6_FLOWINFO_FLOWLABEL         0x000fffff
116#define IPV6_FLOWINFO_PRIORITY          0x0ff00000
117
118/* These defintions are obsolete */
119#define IPV6_PRIORITY_UNCHARACTERIZED   0x0000
120#define IPV6_PRIORITY_FILLER            0x0100
121#define IPV6_PRIORITY_UNATTENDED        0x0200
122#define IPV6_PRIORITY_RESERVED1         0x0300
123#define IPV6_PRIORITY_BULK              0x0400
124#define IPV6_PRIORITY_RESERVED2         0x0500
125#define IPV6_PRIORITY_INTERACTIVE       0x0600
126#define IPV6_PRIORITY_CONTROL           0x0700
127#define IPV6_PRIORITY_8                 0x0800
128#define IPV6_PRIORITY_9                 0x0900
129#define IPV6_PRIORITY_10                0x0a00
130#define IPV6_PRIORITY_11                0x0b00
131#define IPV6_PRIORITY_12                0x0c00
132#define IPV6_PRIORITY_13                0x0d00
133#define IPV6_PRIORITY_14                0x0e00
134#define IPV6_PRIORITY_15                0x0f00
135
136/*
137 *      IPV6 extension headers
138 */
139#define IPPROTO_HOPOPTS         0       /* IPv6 hop-by-hop options      */
140#define IPPROTO_ROUTING         43      /* IPv6 routing header          */
141#define IPPROTO_FRAGMENT        44      /* IPv6 fragmentation header    */
142#define IPPROTO_ICMPV6          58      /* ICMPv6                       */
143#define IPPROTO_NONE            59      /* IPv6 no next header          */
144#define IPPROTO_DSTOPTS         60      /* IPv6 destination options     */
145
146/*
147 *      IPv6 TLV options.
148 */
149#define IPV6_TLV_PAD0           0
150#define IPV6_TLV_PADN           1
151#define IPV6_TLV_ROUTERALERT    5
152#define IPV6_TLV_JUMBO          194
153
154/*
155 *      IPV6 socket options
156 */
157
158#define IPV6_ADDRFORM           1
159#define IPV6_PKTINFO            2
160#define IPV6_HOPOPTS            3
161#define IPV6_DSTOPTS            4
162#define IPV6_RTHDR              5
163#define IPV6_PKTOPTIONS         6
164#define IPV6_CHECKSUM           7
165#define IPV6_HOPLIMIT           8
166#define IPV6_NEXTHOP            9
167#define IPV6_AUTHHDR            10
168#define IPV6_FLOWINFO           11
169
170#define IPV6_UNICAST_HOPS       16
171#define IPV6_MULTICAST_IF       17
172#define IPV6_MULTICAST_HOPS     18
173#define IPV6_MULTICAST_LOOP     19
174#define IPV6_ADD_MEMBERSHIP     20
175#define IPV6_DROP_MEMBERSHIP    21
176#define IPV6_ROUTER_ALERT       22
177#define IPV6_MTU_DISCOVER       23
178#define IPV6_MTU                24
179#define IPV6_RECVERR            25
180#define IPV6_V6ONLY             26
181#define IPV6_JOIN_ANYCAST       27
182#define IPV6_LEAVE_ANYCAST      28
183
184/* IPV6_MTU_DISCOVER values */
185#define IPV6_PMTUDISC_DONT              0
186#define IPV6_PMTUDISC_WANT              1
187#define IPV6_PMTUDISC_DO                2
188
189/* Flowlabel */
190#define IPV6_FLOWLABEL_MGR      32
191#define IPV6_FLOWINFO_SEND      33
192
193#define IPV6_IPSEC_POLICY       34
194#define IPV6_XFRM_POLICY        35
195
196/*
197 * Multicast:
198 * Following socket options are shared between IPv4 and IPv6.
199 *
200 * MCAST_JOIN_GROUP             42
201 * MCAST_BLOCK_SOURCE           43
202 * MCAST_UNBLOCK_SOURCE         44
203 * MCAST_LEAVE_GROUP            45
204 * MCAST_JOIN_SOURCE_GROUP      46
205 * MCAST_LEAVE_SOURCE_GROUP     47
206 * MCAST_MSFILTER               48
207 */
208
209#endif
Note: See TracBrowser for help on using the repository browser.