SOEM
oshw
win32
wpcap
Include
ip6_misc.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1993, 1994, 1997
3
* The Regents of the University of California. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that: (1) source code distributions
7
* retain the above copyright notice and this paragraph in its entirety, (2)
8
* distributions including binary code include the above copyright notice and
9
* this paragraph in its entirety in the documentation or other materials
10
* provided with the distribution, and (3) all advertising materials mentioning
11
* features or use of this software display the following acknowledgement:
12
* ``This product includes software developed by the University of California,
13
* Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
14
* the University nor the names of its contributors may be used to endorse
15
* or promote products derived from this software without specific prior
16
* written permission.
17
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20
*
21
* @(#) $Header: /tcpdump/master/libpcap/Win32/Include/ip6_misc.h,v 1.5 2006-01-22 18:02:18 gianluca Exp $ (LBL)
22
*/
23
24
/*
25
* This file contains a collage of declarations for IPv6 from FreeBSD not present in Windows
26
*/
27
28
#include <winsock2.h>
29
30
#include <ws2tcpip.h>
31
32
#ifndef __MINGW32__
33
#define IN_MULTICAST(a) IN_CLASSD(a)
34
#endif
35
36
#define IN_EXPERIMENTAL(a) ((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000)
37
38
#define IN_LOOPBACKNET 127
39
40
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
41
/* IPv6 address */
42
struct
in6_addr
43
{
44
union
45
{
46
u_int8_t u6_addr8[16];
47
u_int16_t u6_addr16[8];
48
u_int32_t u6_addr32[4];
49
} in6_u;
50
#define s6_addr in6_u.u6_addr8
51
#define s6_addr16 in6_u.u6_addr16
52
#define s6_addr32 in6_u.u6_addr32
53
#define s6_addr64 in6_u.u6_addr64
54
};
55
56
#define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
57
#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
58
#endif
/* __MINGW32__ */
59
60
61
#if (defined _MSC_VER) || (defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF))
62
typedef
unsigned
short
sa_family_t;
63
#endif
64
65
66
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
67
68
#define __SOCKADDR_COMMON(sa_prefix) \
69
sa_family_t sa_prefix##family
70
71
/* Ditto, for IPv6. */
72
struct
sockaddr_in6
73
{
74
__SOCKADDR_COMMON (sin6_);
75
u_int16_t sin6_port;
/* Transport layer port # */
76
u_int32_t sin6_flowinfo;
/* IPv6 flow information */
77
struct
in6_addr sin6_addr;
/* IPv6 address */
78
};
79
80
#define IN6_IS_ADDR_V4MAPPED(a) \
81
((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
82
(((u_int32_t *) (a))[2] == htonl (0xffff)))
83
84
#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)
85
86
#define IN6_IS_ADDR_LINKLOCAL(a) \
87
((((u_int32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))
88
89
#define IN6_IS_ADDR_LOOPBACK(a) \
90
(((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \
91
((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1))
92
#endif
/* __MINGW32__ */
93
94
#define ip6_vfc ip6_ctlun.ip6_un2_vfc
95
#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
96
#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
97
#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
98
#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
99
#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
100
101
#define nd_rd_type nd_rd_hdr.icmp6_type
102
#define nd_rd_code nd_rd_hdr.icmp6_code
103
#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
104
#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
105
106
/*
107
* IPV6 extension headers
108
*/
109
#define IPPROTO_HOPOPTS 0
/* IPv6 hop-by-hop options */
110
#define IPPROTO_IPV6 41
/* IPv6 header. */
111
#define IPPROTO_ROUTING 43
/* IPv6 routing header */
112
#define IPPROTO_FRAGMENT 44
/* IPv6 fragmentation header */
113
#define IPPROTO_ESP 50
/* encapsulating security payload */
114
#define IPPROTO_AH 51
/* authentication header */
115
#define IPPROTO_ICMPV6 58
/* ICMPv6 */
116
#define IPPROTO_NONE 59
/* IPv6 no next header */
117
#define IPPROTO_DSTOPTS 60
/* IPv6 destination options */
118
#define IPPROTO_PIM 103
/* Protocol Independent Multicast. */
119
120
#define IPV6_RTHDR_TYPE_0 0
121
122
/* Option types and related macros */
123
#define IP6OPT_PAD1 0x00
/* 00 0 00000 */
124
#define IP6OPT_PADN 0x01
/* 00 0 00001 */
125
#define IP6OPT_JUMBO 0xC2
/* 11 0 00010 = 194 */
126
#define IP6OPT_JUMBO_LEN 6
127
#define IP6OPT_ROUTER_ALERT 0x05
/* 00 0 00101 */
128
129
#define IP6OPT_RTALERT_LEN 4
130
#define IP6OPT_RTALERT_MLD 0
/* Datagram contains an MLD message */
131
#define IP6OPT_RTALERT_RSVP 1
/* Datagram contains an RSVP message */
132
#define IP6OPT_RTALERT_ACTNET 2
/* contains an Active Networks msg */
133
#define IP6OPT_MINLEN 2
134
135
#define IP6OPT_BINDING_UPDATE 0xc6
/* 11 0 00110 */
136
#define IP6OPT_BINDING_ACK 0x07
/* 00 0 00111 */
137
#define IP6OPT_BINDING_REQ 0x08
/* 00 0 01000 */
138
#define IP6OPT_HOME_ADDRESS 0xc9
/* 11 0 01001 */
139
#define IP6OPT_EID 0x8a
/* 10 0 01010 */
140
141
#define IP6OPT_TYPE(o) ((o) & 0xC0)
142
#define IP6OPT_TYPE_SKIP 0x00
143
#define IP6OPT_TYPE_DISCARD 0x40
144
#define IP6OPT_TYPE_FORCEICMP 0x80
145
#define IP6OPT_TYPE_ICMP 0xC0
146
147
#define IP6OPT_MUTABLE 0x20
148
149
150
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
151
#ifndef EAI_ADDRFAMILY
152
struct
addrinfo {
153
int
ai_flags;
/* AI_PASSIVE, AI_CANONNAME */
154
int
ai_family;
/* PF_xxx */
155
int
ai_socktype;
/* SOCK_xxx */
156
int
ai_protocol;
/* 0 or IPPROTO_xxx for IPv4 and IPv6 */
157
size_t
ai_addrlen;
/* length of ai_addr */
158
char
*ai_canonname;
/* canonical name for hostname */
159
struct
sockaddr *ai_addr;
/* binary address */
160
struct
addrinfo *ai_next;
/* next structure in linked list */
161
};
162
#endif
163
#endif
/* __MINGW32__ */
soem
Author(s): Arthur Ketels and M.J.G. van den Molengraft
autogenerated on Mon Feb 28 2022 23:46:57