ReactOS  0.4.14-dev-337-gf981a68
netiodef.h
Go to the documentation of this file.
1 #ifndef _NETIODEF_
2 #define _NETIODEF_
3 
4 #pragma once
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 #include "ws2def.h"
11 #include "ws2ipdef.h"
12 #include "mswsockdef.h"
13 #include "mstcpip.h"
14 #include "nldef.h"
15 
16 #include "ifdef.h"
17 
18 #ifndef ASSERT
19 #define ASSERT(x) ((void)0)
20 #define NETIODEF_DEFINED_ASSERT
21 #endif
22 
23 #ifndef NETIO_INLINE
24 #if DBG
25 #define NETIO_INLINE __inline
26 #else
27 #define NETIO_INLINE __forceinline
28 #endif
29 #endif
30 
31 #define IS_POWER_OF_TWO(x) (((x) != 0) && (((x) & ((x) - 1)) == 0))
32 #define IS_VALID_IPV4_MASK(x) ((x.S_un.S_addr == (ULONG)-1) || IS_POWER_OF_TWO(~RtlUlongByteSwap(x.S_un.S_addr)+1))
33 
34 #ifndef BYTE_ORDER
35 
36 #define _LITTLE_ENDIAN 1234
37 #define _BIG_ENDIAN 4321
38 #define _PDP_ENDIAN 3412
39 
40 #if defined(i286) || defined(i386) || defined(_AMD64_) || defined(_IA64_)
41 #define BYTE_ORDER _LITTLE_ENDIAN
42 #endif
43 
44 #endif /* BYTE_ORDER */
45 
50 
51 #define MAKE_DD_DEVICE_NAME(x) (L"\\Device\\" x)
52 #define MAKE_WIN_DEVICE_NAME(x) (L"\\\\.\\" x)
53 
54 #define DL_ADDRESS_LENGTH_MAXIMUM IF_MAX_PHYS_ADDRESS_LENGTH
55 #define DL_HEADER_LENGTH_MAXIMUM 64
56 #define DL_ETHERNET_HEADER_LENGTH_MAXIMUM (sizeof(ETHERNET_HEADER) + sizeof(SNAP_HEADER))
57 #define DL_TUNNEL_HEADER_LENGTH_MAXIMUM max(sizeof(IPV4_HEADER), sizeof(IPV6_HEADER))
58 
59 #define EUI48_BROADCAST_INIT {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
60 
61 #define SNAP_DSAP 0xaa
62 #define SNAP_SSAP 0xaa
63 #define SNAP_CONTROL 0x03
64 #define SNAP_OUI 0x00
65 
66 #define SNAP_TYPE_ARP ETHERNET_TYPE_ARP
67 #define SNAP_TYPE_IPV4 ETHERNET_TYPE_IPV4
68 #define SNAP_TYPE_IPV6 ETHERNET_TYPE_IPV6
69 
70 #define ETH_LENGTH_OF_HEADER 14
71 #define ETH_LENGTH_OF_VLAN_HEADER 4
72 #define ETH_LENGTH_OF_SNAP_HEADER 8
73 
74 #define ETHERNET_TYPE_MINIMUM 0x0600
75 #define ETHERNET_TYPE_IPV4 0x0800
76 #define ETHERNET_TYPE_ARP 0x0806
77 #define ETHERNET_TYPE_IPV6 0x86dd
78 #define ETHERNET_TYPE_802_1Q 0x8100
79 
80 #define TOKENRING_ACCESSCONTROL 0x10
81 #define TOKENRING_FRAMECONTROL 0x40
82 
83 #define SOURCEROUTE_RD_MAXIMUM 8
84 #define SOURCEROUTE_SIZE_MAXIMUM (sizeof(SOURCEROUTE_HEADER) + 2 * SOURCEROUTE_RD_MAXIMUM)
85 
86 #define SOURCEROUTE_UNSPECIFIED_INIT {{sizeof(SOURCEROUTE_HEADER), TokenRingSpanningTreeExplorer}, {0}}
87 
88 #define TOKENRING_MTU_DEFAULT 1500
89 #define TOKENRING_SOURCEROUTE_INDICATOR 0x80
90 
91 #define FDDI_FRAMECODE 0x57
92 #define FDDI_MTU 4352
93 
94 #define ARCNET_BROADCAST_MASK 0xff
95 #define ARCNET_BROADCAST_VALUE 0x00
96 #define ARCNET_PROTOCOL_ARP 0xd5
97 #define ARCNET_PROTOCOL_IPV4 0xd4
98 #define ARCNET_PROTOCOL_IPV6 0xc4
99 
100 #define ip4_hdr _IPV4_HEADER
101 #define ip4_ver_hlen VersionAndHeaderLength
102 #define ip4_ver Version
103 #define ip4_hlen HeaderLength
104 #define ip4_tos TypeOfService
105 #define ip4_len TotalLength
106 #define ip4_id Identification
107 #define ip4_flags_offset FlagsAndOffset
108 #define ip4_flags Flags
109 #define ip4_offset FragmentOffset
110 #define ip4_ttl TimeToLive
111 #define ip4_protocol Protocol
112 #define ip4_xsum HeaderChecksum
113 #define ip4_src SourceAddress
114 #define ip4_dest DestinationAddress
115 
116 #define IP_VER_MASK 0xF0
117 #define IPV4_VERSION 4
118 #define IPV4_DEFAULT_VERHLEN ((IPV4_VERSION << 4) | (sizeof(IPV4_HEADER) / sizeof(UINT32)))
119 #define IPV4_TOS_MASK 0xFC
120 
121 #define MAX_IPV4_PACKET 65535
122 #define MAX_IPV4_PAYLOAD (MAX_IPV4_PACKET - sizeof(IPV4_HEADER))
123 
124 #define MAX_IPV4_HLEN 60
125 
126 #define IPV4_MINIMUM_MTU 576
127 #define IPV4_MINIMUM_ULMTU (IPV4_MINIMUM_MTU - sizeof(IPV4_HEADER))
128 
129 #define MAX_IP_OPTIONS_LENGTH ((0xF * sizeof(UINT32)) - sizeof(IPV4_HEADER))
130 #define SIZEOF_IP_OPT_ROUTING_HEADER 3
131 #define SIZEOF_IP_OPT_TIMESTAMP_HEADER 4
132 #define SIZEOF_IP_OPT_SECURITY 11
133 #define SIZEOF_IP_OPT_STREAMIDENTIFIER 4
134 #define SIZEOF_IP_OPT_ROUTERALERT 4
135 #define IP4_OFF_MASK 0xff1f
136 
137 #define icmp4_hdr _ICMPV4_MESSAGE
138 #define icmp4_type Header.Type
139 #define icmp4_code Header.Code
140 #define icmp4_cksum Header.Checksum
141 #define icmp4_un_data32 Data32
142 #define icmp4_un_data16 Data16
143 #define icmp4_un_data8 Data8
144 #define icmp4_dataun Data
145 #define icmp4_data32 icmp4_dataun.icmp4_un_data32
146 #define icmp4_data16 icmp4_dataun.icmp4_un_data16
147 #define icmp4_data8 icmp4_dataun.icmp4_un_data8
148 #define icmp4_pptr icmp4_data32[0]
149 #define icmp4_mtu icmp4_data32[0]
150 #define icmp4_id icmp4_data16[0]
151 #define icmp4_seq icmp4_data16[1]
152 #define icmp4_maxdelay icmp4_data16[0]
153 
154 #define RsType RsHeader.icmp4_type
155 #define RsCode RsHeader.icmp4_code
156 #define RsCksum RsHeader.icmp4_cksum
157 #define RsReserved RsHeader.icmp4_data32[0]
158 
159 #define RaType RaHeader.icmp4_type
160 #define RaCode RaHeader.icmp4_code
161 #define RaCksum RaHeader.icmp4_cksum
162 #define RaNumAddr RaHeader.icmp4_data8[0]
163 #define RaAddrEntrySize RaHeader.icmp4_data8[1]
164 #define RaAddrLifetime RaHeader.icmp4_data16[1]
165 
166 #define ICMPV4_INVALID_PREFERENCE_LEVEL 0x80000000
167 
168 #define icmp4_ts_type Header.icmp4_type
169 #define icmp4_ts_code Header.icmp4_code
170 #define icmp4_ts_cksum Header.icmp4_cksum
171 #define icmp4_ts_id Header.icmp4_id
172 #define icmp4_ts_seq Header.icmp4_seq
173 #define icmp4_ts_originate OriginateTimestamp
174 #define icmp4_ts_receive ReceiveTimestamp
175 #define icmp4_ts_transmit TransmitTimestamp
176 
177 #define IGMP_QUERY_TYPE 0x11
178 #define IGMP_VERSION1_REPORT_TYPE 0x12
179 #define IGMP_VERSION2_REPORT_TYPE 0x16
180 #define IGMP_LEAVE_GROUP_TYPE 0x17
181 #define IGMP_VERSION3_REPORT_TYPE 0x22
182 
183 #define ip6_hdr _IPV6_HEADER
184 #define ip6_flow VersionClassFlow
185 #define ip6_plen PayloadLength
186 #define ip6_nxt NextHeader
187 #define ip6_hops HopLimit
188 #define ip6_hlim HopLimit
189 #define ip6_src SourceAddress
190 #define ip6_dst DestinationAddress
191 
192 #define IP_VER_MASK 0xF0
193 #define IPV6_VERSION 0x60
194 
195 #define IPV6_TRAFFIC_CLASS_MASK 0x0000C00F
196 #define IPV6_ECN_MASK 0x00003000
197 #define IPV6_FLOW_LABEL_MASK 0xFFFF0F00
198 #define MAX_IPV6_PAYLOAD 65535
199 #define MAX_IPV6_PACKET (MAX_IPV6_PAYLOAD + sizeof(IPV6_HEADER))
200 
201 #define IPV6_ECN_SHIFT 12
202 
203 #define IPV6_MINIMUM_MTU 1280
204 #define IPV6_MINIMUM_ULMTU (IPV6_MINIMUM_MTU - sizeof(IPV6_HEADER))
205 
206 #define IPV6_TRAFFIC_CLASS(VersionClassFlow) \
207  ((UCHAR)((((VersionClassFlow) & IPV6_TRAFFIC_CLASS_MASK) >> 12) + \
208  (((VersionClassFlow) & IPV6_TRAFFIC_CLASS_MASK) << 4)))
209 
210 #define ip6_frag _IPV6_FRAGMENT_HEADER
211 #define ip6f_nxt NextHeader
212 #define ip6f_reserved Reserved
213 #define ip6f_offlg OffsetAndFlags
214 #define ip6f_ident Id
215 
216 #define IP6F_OFF_MASK 0xf8ff
217 #define IP6F_RESERVED_MASK 0x0600
218 #define IP6F_MORE_FRAG 0x0100
219 
220 #define EXT_LEN_UNIT 8
221 
222 #define IPV6_EXTENSION_HEADER_LENGTH(Blocks) ((Blocks + 1) * EXT_LEN_UNIT)
223 #define MAX_IPV6_EXTENSION_HEADER_LENGTH IPV6_EXTENSION_HEADER_LENGTH(0xFF)
224 #define IPV6_EXTENSION_HEADER_BLOCKS(Length) ((Length / EXT_LEN_UNIT) - 1)
225 #define IP_AUTHENTICATION_HEADER_LENGTH(Blocks) ((Blocks + 2) * 4)
226 #define IP_AUTHENTICATION_HEADER_BLOCKS(Length) (((Length + sizeof(AUTHENTICATION_HEADER)) / 4) - 2)
227 
228 #define IPV6_ROUTER_ALERT_LENGTH IPV6_EXTENSION_HEADER_LENGTH(0)
229 
230 #define ip6_hbh _IPV6_EXTENSION_HEADER
231 #define ip6h_nxt NextHeader
232 #define ip6h_len Length
233 #define ip6_dest _IPV6_EXTENSION_HEADER
234 #define ip6d_nxt NextHeader
235 #define ip6d_len Length
236 
237 #define IP6OPT_TYPE(Type) ((Type) & 0xc0)
238 #define IP6OPT_TYPE_SKIP 0x00
239 #define IP6OPT_TYPE_DISCARD 0x40
240 #define IP6OPT_TYPE_FORCEICMP 0x80
241 #define IP6OPT_TYPE_ICMP 0xc0
242 
243 #define IP6OPT_MUTABLE 0x20
244 #define IP6OPT_ISMUTABLE(Type) (((Type) & IP6OPT_MUTABLE) != 0)
245 
246 #define ip6_opt_jumbo _IPV6_OPTION_JUMBOGRAM
247 #define ip6oj_type Header.Type
248 #define ip6oj_len Header.DataLength
249 #define ip6oj_jumbo_len JumbogramLength
250 
251 #define ip6_opt_router _IPV6_OPTION_ROUTER_ALERT
252 #define ip6or_type Header.Type
253 #define ip6or_len Header.DataLength
254 #define ip6or_value Value
255 
256 #define SIZEOF_IPV6_ROUTERALERT IPV6_EXTENSION_HEADER_LENGTH(0)
257 
258 #define ip6_rthdr _IPV6_ROUTING_HEADER
259 #define ip6r_nxt NextHeader
260 #define ip6r_len Length
261 #define ip6r_type RoutingType
262 #define ip6r_segleft SegmentsLeft
263 
264 #define icmp6_hdr _ICMPV6_MESSAGE
265 #define icmp6_type Header.Type
266 #define icmp6_code Header.Code
267 #define icmp6_cksum Header.Checksum
268 #define icmp6_un_data32 Data32
269 #define icmp6_un_data16 Data16
270 #define icmp6_un_data8 Data8
271 #define icmp6_dataun Data
272 
273 #define icmp6_data32 icmp6_dataun.icmp6_un_data32
274 #define icmp6_data16 icmp6_dataun.icmp6_un_data16
275 #define icmp6_data8 icmp6_dataun.icmp6_un_data8
276 #define icmp6_pptr icmp6_data32[0]
277 #define icmp6_mtu icmp6_data32[0]
278 #define icmp6_id icmp6_data16[0]
279 #define icmp6_seq icmp6_data16[1]
280 #define icmp6_maxdelay icmp6_data16[0]
281 
282 #define ICMP6_INFOMSG_MASK 0x80
283 
284 #define ICMP6_DST_UNREACH_NOROUTE 0
285 #define ICMP6_DST_UNREACH_ADMIN 1
286 #define ICMP6_DST_UNREACH_BEYONDSCOPE 2
287 #define ICMP6_DST_UNREACH_ADDR 3
288 #define ICMP6_DST_UNREACH_NOPORT 4
289 
290 #define ICMP6_TIME_EXCEED_TRANSIT 0
291 #define ICMP6_TIME_EXCEED_REASSEMBLY 1
292 
293 #define ICMP6_PARAMPROB_HEADER 0
294 #define ICMP6_PARAMPROB_NEXTHEADER 1
295 #define ICMP6_PARAMPROB_OPTION 2
296 
297 #define ICMPV6_ECHO_REQUEST_FLAG_REVERSE 0x1
298 
299 #define nd_rs_type nd_rs_hdr.icmp6_type
300 #define nd_rs_code nd_rs_hdr.icmp6_code
301 #define nd_rs_cksum nd_rs_hdr.icmp6_cksum
302 #define nd_rs_reserved nd_rs_hdr.icmp6_data32[0]
303 
304 #define nd_ra_type nd_ra_hdr.icmp6_type
305 #define nd_ra_code nd_ra_hdr.icmp6_code
306 #define nd_ra_cksum nd_ra_hdr.icmp6_cksum
307 #define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0]
308 #define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1]
309 #define ND_RA_FLAG_MANAGED 0x80
310 #define ND_RA_FLAG_OTHER 0x40
311 #define ND_RA_FLAG_HOME_AGENT 0x20
312 #define ND_RA_FLAG_PREFERENCE 0x18
313 #define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1]
314 
315 #define nd_ns_type nd_ns_hdr.icmp6_type
316 #define nd_ns_code nd_ns_hdr.icmp6_code
317 #define nd_ns_cksum nd_ns_hdr.icmp6_cksum
318 #define nd_ns_reserved nd_ns_hdr.icmp6_data32[0]
319 
320 #define nd_na_type nd_na_hdr.icmp6_type
321 #define nd_na_code nd_na_hdr.icmp6_code
322 #define nd_na_cksum nd_na_hdr.icmp6_cksum
323 #define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0]
324 
325 #if (BYTE_ORDER == _BIG_ENDIAN)
326 #define ND_NA_FLAG_ROUTER 0x80000000
327 #define ND_NA_FLAG_SOLICITED 0x40000000
328 #define ND_NA_FLAG_OVERRIDE 0x20000000
329 #else
330 #define ND_NA_FLAG_ROUTER 0x00000080
331 #define ND_NA_FLAG_SOLICITED 0x00000040
332 #define ND_NA_FLAG_OVERRIDE 0x00000020
333 #endif /* (BYTE_ORDER == _BIG_ENDIAN) */
334 
335 #define nd_rd_type nd_rd_hdr.icmp6_type
336 #define nd_rd_code nd_rd_hdr.icmp6_code
337 #define nd_rd_cksum nd_rd_hdr.icmp6_cksum
338 #define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
339 
340 #define ND_OPT_PI_FLAG_ONLINK 0x80
341 #define ND_OPT_PI_FLAG_AUTO 0x40
342 #define ND_OPT_PI_FLAG_ROUTER_ADDR 0x20
343 #define ND_OPT_PI_FLAG_SITE_PREFIX 0x10
344 #define ND_OPT_PI_FLAG_ROUTE 0x01
345 
346 #define ND_OPT_RI_FLAG_PREFERENCE 0x18
347 
348 #define TH_MAX_LEN (0x0F << 2)
349 #define TH_FIN 0x01
350 #define TH_SYN 0x02
351 #define TH_RST 0x04
352 #define TH_PSH 0x08
353 #define TH_ACK 0x10
354 #define TH_URG 0x20
355 #define TH_ECE 0x40
356 #define TH_CWR 0x80
357 #define TH_ALL (TH_FIN | TH_SYN | TH_RST | TH_PSH | TH_ACK | TH_URG | TH_ECE | TH_CWR)
358 #define TH_SYN_ALL (TH_FIN | TH_SYN | TH_RST | TH_ACK)
359 
360 #define TH_OPT_EOL 0x00
361 #define TH_OPT_NOP 0x01
362 #define TH_OPT_MSS 0x02
363 #define TH_OPT_WS 0x03
364 #define TH_OPT_SACK_PERMITTED 0x04
365 #define TH_OPT_SACK 0x05
366 #define TH_OPT_TS 0x08
367 
368 #define DL_SIZEOF_TUNNEL_ADDRESS(AddressBytes) (FIELD_OFFSET(DL_TUNNEL_ADDRESS, IpAddress) + (AddressBytes))
369 #define DL_SIZEOF_IPV4_TUNNEL_ADDRESS DL_SIZEOF_TUNNEL_ADDRESS(sizeof(IN_ADDR))
370 #define DL_SIZEOF_IPV6_TUNNEL_ADDRESS DL_SIZEOF_TUNNEL_ADDRESS(sizeof(IN6_ADDR))
371 
372 #define FL_PACKET_TYPE_FLAGS (NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_PROMISCUOUS)
373 
374 #define mld_type IcmpHeader.Type
375 #define mld_checksum IcmpHeader.Checksum
376 
377 #ifndef _DEFINE_DL_ADDRESS_TYPE_
378 #define _DEFINE_DL_ADDRESS_TYPE_
379 typedef enum {
384 #endif
385 
386 union _DL_OUI {
388  struct {
391  };
392 };
393 typedef union _DL_OUI DL_OUI, *PDL_OUI;
394 
395 union _DL_EI48 {
397 };
398 typedef union _DL_EI48 DL_EI48, *PDL_EI48;
399 
400 union _DL_EUI48 {
402  struct {
405  };
406 };
407 
408 C_ASSERT(DL_ADDRESS_LENGTH_MAXIMUM >= sizeof(DL_EUI48));
409 
410 extern CONST DL_EUI48 eui48_broadcast;
411 
412 union _DL_EI64 {
414 };
415 typedef union _DL_EI64 DL_EI64, *PDL_EI64;
416 
417 union _DL_EUI64 {
420  struct {
422  union {
424  struct {
428  };
429  };
430  };
431 };
432 typedef union _DL_EUI64 DL_EUI64, *PDL_EUI64;
433 
434 typedef struct _SNAP_HEADER {
438  UINT8 Oui[3];
441 
442 typedef struct _ETHERNET_HEADER {
443  DL_EUI48 Destination;
444  DL_EUI48 Source;
445  union {
448  };
450 
453 
454 typedef struct _VLAN_TAG {
455  union {
457  struct {
461  };
462  };
464 } VLAN_TAG;
465 
467 
471  _In_reads_(sizeof(DL_EUI48)) CONST UCHAR *Address)
472 {
473  if (((PDL_EUI48) Address)->Oui.Group)
474  {
475  if (RtlEqualMemory(Address, &eui48_broadcast, sizeof(DL_EUI48)))
476  {
477  return DlBroadcast;
478  }
479  return DlMulticast;
480  }
481  else
482  {
483  return DlUnicast;
484  }
485 }
486 
487 typedef struct _TOKENRING_HEADER {
490  DL_EUI48 Destination;
491  DL_EUI48 Source;
493 
494 typedef struct _SOURCEROUTE_HEADER {
495  union {
496  struct {
499  };
501  };
502  union {
503  struct {
507  };
509  };
510  UINT16 Rd[0];
512 
513 typedef enum {
518 
520 
522 
523 __inline
524 BOOLEAN
526  _In_ CONST UNALIGNED DL_EUI48 *Source)
527 {
528  return ((Source->Byte[0] & TOKENRING_SOURCEROUTE_INDICATOR) != 0);
529 }
530 
531 __inline
532 VOID
534  _Out_ UNALIGNED DL_EUI48 *Source)
535 {
537 }
538 
539 __inline
540 VOID
542  _Out_ UNALIGNED DL_EUI48 *Source)
543 {
545 }
546 
551 {
552  if (TokenRingGetSourceRouteIndicator((PDL_EUI48) Address))
553  {
554  if (RtlEqualMemory(Address, &eui48_broadcast, sizeof(DL_EUI48)))
555  {
556  return DlBroadcast;
557  }
558  return DlMulticast;
559  }
560  else
561  {
562  return DlUnicast;
563  }
564 }
565 
566 typedef struct _FDDI_HEADER {
568  DL_EUI48 Destination;
569  DL_EUI48 Source;
571 
572 typedef struct _ARCNET_HEADER {
577 
578 typedef struct _ICMP_HEADER {
583 
584 typedef struct _ICMP_MESSAGE {
586  union {
590  } Data;
592 
595 
596 typedef struct _IPV4_HEADER {
597  union {
599  struct {
602  };
603  };
604  union {
606  struct {
609  };
610  };
613  union {
615  struct {
621  };
622  };
629 
630 C_ASSERT(sizeof(IPV4_HEADER) == 20);
631 
632 __inline
633 UCHAR
636 {
637  return (Header->HeaderLength << 2);
638 }
639 
640 #if defined(_NTDDK_) || defined(_NTRTL_)
641 __inline
642 UINT16
643 Ip4FragmentOffset(
645 {
646  return RtlUshortByteSwap(Header->FlagsAndOffset & IP4_OFF_MASK) << 3;
647 }
648 #endif
649 
650 typedef struct _IPV4_OPTION_HEADER {
651  union {
653  struct {
657  };
658  };
661 
662 C_ASSERT(sizeof(IPV4_OPTION_HEADER) == 2);
663 
664 #if !defined(IP_EXPORT_INCLUDED)
665 typedef enum {
666  IP_OPT_EOL = 0x00,
667  IP_OPT_NOP = 0x01,
669  IP_OPT_LSRR = 0x83,
670  IP_OPT_TS = 0x44,
671  IP_OPT_RR = 0x07,
672  IP_OPT_SSRR = 0x89,
673  IP_OPT_SID = 0x88,
677 #else
678 typedef ULONG IPV4_OPTION_TYPE;
679 #endif
680 
681 typedef struct _IPV4_TIMESTAMP_OPTION {
682 #ifdef __cplusplus
683  IPV4_OPTION_HEADER OptionHeader;
684 #else
686 #endif
688  union {
690  struct {
693  };
694  };
696 
697 typedef enum {
702 
703 typedef struct _IPV4_ROUTING_HEADER {
704 #ifdef __cplusplus
705  IPV4_OPTION_HEADER OptionHeader;
706 #else
708 #endif
711 
714 
715 typedef enum {
731 
732 typedef enum {
736 
737 typedef struct _ICMPV4_ROUTER_SOLICIT {
740 
744 
749 
756 
761 
762 typedef struct _ARP_HEADER {
770 
771 typedef enum {
774 } ARP_OPCODE;
775 
776 typedef enum {
780 
781 typedef struct _IGMP_HEADER {
782  union {
783  struct {
786  };
788  };
789  union {
793  };
797 
798 typedef enum {
802 
803 typedef struct _IGMPV3_QUERY_HEADER {
805  union {
807  struct {
811  };
812  };
818  union {
820  struct {
824  };
825  };
828 
835 
836 typedef struct _IGMPV3_REPORT_HEADER_ {
843 
844 typedef struct _IPV6_HEADER {
852 
853 typedef struct _IPV6_FRAGMENT_HEADER {
856  union {
857  struct {
862  };
864  };
867 
868 C_ASSERT(sizeof(IPV6_FRAGMENT_HEADER) == 8);
869 
870 #if defined(_NTDDK_) || defined(_NTRTL_)
871 __inline
872 UINT16
873 Ip6FragmentOffset(
875 {
876  return RtlUshortByteSwap(Header->OffsetAndFlags & IP6F_OFF_MASK);
877 }
878 #endif
879 
880 typedef struct _IPV6_EXTENSION_HEADER {
884 
885 typedef struct _IPV6_OPTION_HEADER {
889 
890 typedef enum {
891  IP6OPT_PAD1 = 0x00,
892  IP6OPT_PADN = 0x01,
895  IP6OPT_JUMBO = 0xc2,
898 
899 typedef struct _IPV6_OPTION_JUMBOGRAM {
903 
908 
909 typedef _Struct_size_bytes_(_Inexpressible_(Length)) struct _IPV6_ROUTING_HEADER {
910  UCHAR NextHeader;
911  UCHAR Length;
912  UCHAR RoutingType;
913  UCHAR SegmentsLeft;
914  UCHAR Reserved[4];
916 
917 typedef struct nd_router_solicit {
920 
921 typedef struct nd_router_advert {
926 
928  struct {
934  };
937 
938 typedef struct nd_neighbor_solicit {
942 
943 typedef struct nd_neighbor_advert {
947 
949  struct {
955  };
958 
959 typedef struct nd_redirect {
964 
965 typedef struct nd_opt_hdr {
969 
970 typedef enum {
983 
984 typedef struct nd_opt_prefix_info {
988  union {
990  struct {
991  UINT8 Route : 1; // Least significant bit.
997  } Flags;
998  };
1001  union {
1003  struct {
1006  };
1007  };
1010 
1011 typedef struct nd_opt_rd_hdr {
1017 
1018 typedef struct nd_opt_mtu {
1024 
1025 typedef struct nd_opt_route_info {
1029  union {
1031  struct {
1034  } Flags;
1035  };
1039 
1040 typedef struct _MLD_HEADER {
1046 
1047 typedef enum {
1051 
1052 typedef struct _MLDV2_QUERY_HEADER {
1054  union {
1056  struct {
1061  };
1062  };
1068  union {
1070  struct {
1074  };
1075  };
1078 
1085 
1086 typedef struct _MLDV2_REPORT_HEADER {
1091 
1093 
1094 #pragma pack(push, 1)
1095 
1096 typedef struct tcp_hdr {
1107 } TCP_HDR;
1108 #if NDIS_RECEIVE_UNALIGNED
1109 typedef TCP_HDR UNALIGNED *PTCP_HDR;
1110 #else
1112 #endif
1113 
1114 typedef struct tcp_opt_mss {
1118 } TCP_OPT_MSS;
1119 
1120 typedef struct tcp_opt_ws {
1124 } TCP_OPT_WS;
1125 
1126 typedef struct tcp_opt_sack_permitted {
1130 
1131 typedef struct tcp_opt_sack {
1137  } Block[0];
1138 } TCP_OPT_SACK;
1139 
1140 typedef struct tcp_opt_ts {
1145 } TCP_OPT_TS;
1146 
1147 typedef struct tcp_opt_unknown {
1150 } TCP_OPT_UNKNOWN;
1151 
1152 #pragma pack(pop)
1153 
1154 typedef struct DL_TUNNEL_ADDRESS {
1159 
1162 
1163 typedef enum _TUNNEL_SUB_TYPE {
1168 
1169 #pragma pack(push, 1)
1170 
1171 typedef struct DL_TEREDO_ADDRESS {
1173  union {
1175  struct {
1179  };
1180  };
1182 
1183 typedef struct _IPTLS_METADATA {
1186 
1187 #pragma pack(pop)
1188 
1190 
1191 typedef enum _NPI_MODULEID_TYPE {
1195 
1196 typedef struct _NPI_MODULEID {
1199 #ifdef __midl
1200  [switch_type(NPI_MODULEID_TYPE), switch_is(Type)]
1201 #endif
1202  union {
1203 #ifdef __midl
1204  [case(MIT_GUID)]
1205 #endif
1207 #ifdef __midl
1208  [case(MIT_IF_LUID)]
1209 #endif
1211 #ifdef __midl
1212  [default];
1213 #endif
1214  };
1215 } NPI_MODULEID;
1217 
1218 #if !defined(__midl)
1219 __inline
1220 BOOLEAN
1222  _In_ PNPI_MODULEID ModuleId1,
1223  _In_ PNPI_MODULEID ModuleId2)
1224 {
1225  if (ModuleId1->Type == ModuleId2->Type)
1226  {
1227  if (ModuleId1->Type == MIT_GUID)
1228  {
1229 #ifdef __cplusplus
1230  return !!InlineIsEqualGUID(ModuleId1->Guid, ModuleId2->Guid);
1231 #else
1232  return (BOOLEAN)InlineIsEqualGUID(&ModuleId1->Guid,
1233  &ModuleId2->Guid);
1234 #endif
1235  }
1236  else if (ModuleId1->Type == MIT_IF_LUID)
1237  {
1238  return (BOOLEAN)RtlEqualMemory(&ModuleId1->IfLuid,
1239  &ModuleId2->IfLuid,
1240  sizeof(LUID));
1241  }
1242  }
1243  return FALSE;
1244 }
1245 #endif
1246 
1247 typedef GUID NPIID;
1248 typedef CONST NPIID *PNPIID;
1249 
1266 
1267 #ifdef NETIODEF_DEFINED_ASSERT
1268 #undef ASSERT
1269 #endif
1270 
1271 #ifdef __cplusplus
1272 }
1273 #endif
1274 
1275 #endif /* _NETIODEF_ */
CONST SOURCEROUTE_HEADER sourceroute_unspecified
__inline UCHAR Ip4HeaderLengthInBytes(_In_ CONST UNALIGNED IPV4_HEADER *Header)
Definition: netiodef.h:634
CONST NPI_MODULEID NPI_MS_FL68_MODULEID
GUID NPIID
Definition: netiodef.h:1247
UINT8 MaxRespTime
Definition: netiodef.h:791
CONST NPI_MODULEID NPI_MS_TUN_MODULEID
struct _IPV6_EXTENSION_HEADER IPV6_EXTENSION_HEADER
__inline BOOLEAN TokenRingGetSourceRouteIndicator(_In_ CONST UNALIGNED DL_EUI48 *Source)
Definition: netiodef.h:525
CONST NPI_MODULEID NPI_MS_WANARPV6_MODULEID
UINT8 nd_opt_ri_type
Definition: netiodef.h:1026
IN_ADDR MappedAddress
Definition: netiodef.h:1178
union _ICMP_MESSAGE::@2976 Data
UINT16 MaxRespTime
Definition: netiodef.h:1042
ICMPV4_MESSAGE RsHeader
Definition: netiodef.h:738
struct _IPV6_OPTION_HEADER IPV6_OPTION_HEADER
UINT16 nd_opt_rh_reserved1
Definition: netiodef.h:1014
UINT8 Version
Definition: netiodef.h:601
UINT8 Local
Definition: netiodef.h:390
struct _IPV4_ROUTING_HEADER IPV4_ROUTING_HEADER
IN_ADDR DestinationAddress
Definition: netiodef.h:627
_TUNNEL_SUB_TYPE
Definition: netiodef.h:1163
struct nd_opt_mtu ND_OPTION_MTU
ICMP4_UNREACH_CODE
Definition: netiodef.h:715
struct _MLD_HEADER MLD_HEADER
ICMP_MESSAGE * PICMPV6_MESSAGE
Definition: netiodef.h:594
struct nd_redirect * PND_REDIRECT_HEADER
struct _MLDV2_QUERY_HEADER * PMLDV2_QUERY_HEADER
CONST NPI_MODULEID NPI_MS_FL4T_MODULEID
NPI_MODULEID_TYPE Type
Definition: netiodef.h:1198
Type
Definition: Type.h:6
UINT8 QuerierRobustnessVariable
Definition: netiodef.h:815
enum _TUNNEL_SUB_TYPE TUNNEL_SUB_TYPE
#define DL_SIZEOF_IPV6_TUNNEL_ADDRESS
Definition: netiodef.h:370
COMPARTMENT_ID
Definition: ntbasedef.h:521
#define IP4_OFF_MASK
Definition: netiodef.h:135
DL_EI48 Ei48
Definition: netiodef.h:427
struct nd_opt_rd_hdr ND_OPTION_RD_HDR
USHORT ProtocolAddressSpace
Definition: netiodef.h:764
UINT16 FlagsAndOffset
Definition: netiodef.h:614
DL_OUI Oui
Definition: netiodef.h:421
unsigned char Byte
Definition: zconf.h:391
IN_ADDR MulticastAddress
Definition: netiodef.h:814
UINT8 Group
Definition: netiodef.h:389
enum TOKENRING_BROADCAST_INDICATOR * PTOKENRING_BROADCAST_INDICATOR
#define RtlUshortByteSwap(_x)
Definition: rtlfuncs.h:3199
struct _ARCNET_HEADER * PARCNET_HEADER
UINT8 VersionType
Definition: netiodef.h:787
UCHAR ProtocolAddressLength
Definition: netiodef.h:766
USHORT HardwareAddressSpace
Definition: netiodef.h:763
UINT8 Type
Definition: netiodef.h:425
COMPARTMENT_ID CompartmentId
Definition: netiodef.h:1155
#define _In_reads_(size)
Definition: no_sal2.h:228
CONST NPIID NPI_FRAMING_LAYER_ID
struct _IPV4_HEADER IPV4_HEADER
CONST NPI_MODULEID NPI_MS_IPV6_MODULEID
ICMP4_TIME_EXCEED_CODE
Definition: netiodef.h:732
struct _IPV6_OPTION_ROUTER_ALERT IPV6_OPTION_ROUTER_ALERT
ARP_HARDWARE_TYPE
Definition: netiodef.h:776
struct _MLDV2_REPORT_RECORD_HEADER MLDV2_REPORT_RECORD_HEADER
CONST DL_EUI48 eui48_broadcast
struct nd_router_advert ND_ROUTER_ADVERT_HEADER
struct _IPV6_EXTENSION_HEADER * PIPV6_EXTENSION_HEADER
UINT8 th_len
Definition: netiodef.h:1102
UINT8 Type
Definition: netiodef.h:579
struct nd_opt_prefix_info ND_OPTION_PREFIX_INFO
UINT8 nd_opt_pi_flags_reserved
Definition: netiodef.h:989
struct nd_opt_prefix_info::@3019::@3023 Flags
ICMPV6_MESSAGE nd_na_hdr
Definition: netiodef.h:944
UCHAR HardwareAddressLength
Definition: netiodef.h:765
#define ETH_LENGTH_OF_HEADER
Definition: netiodef.h:70
IN6_ADDR nd_opt_pi_prefix
Definition: netiodef.h:1008
UINT8 Code
Definition: netiodef.h:580
struct nd_opt_route_info * PND_OPTION_ROUTE_INFO
union _IPV6_ROUTER_ADVERTISEMENT_FLAGS * PIPV6_ROUTER_ADVERTISEMENT_FLAGS
UINT16 nd_opt_mtu_reserved
Definition: netiodef.h:1021
UINT16 VID
Definition: netiodef.h:458
#define NETIO_INLINE
Definition: netiodef.h:27
UINT8 Oui[3]
Definition: netiodef.h:438
#define TOKENRING_SOURCEROUTE_INDICATOR
Definition: netiodef.h:89
#define DL_ADDRESS_LENGTH_MAXIMUM
Definition: netiodef.h:54
UINT32 Val
Definition: netiodef.h:1143
IN_ADDR SourceAddress
Definition: netiodef.h:626
struct _ICMP_MESSAGE ICMP_MESSAGE
__inline VOID TokenRingSetSourceRouteIndicator(_Out_ UNALIGNED DL_EUI48 *Source)
Definition: netiodef.h:533
struct tcp_opt_mss TCP_OPT_MSS
UINT16 HANDLE16
Definition: netiodef.h:47
enum ICMP4_UNREACH_CODE * PICMP4_UNREACH_CODE
UINT16 MoreFragments
Definition: netiodef.h:617
IPV6_OPTION_HEADER Header
Definition: netiodef.h:900
struct _MLDV2_REPORT_HEADER * PMLDV2_REPORT_HEADER
struct DL_TUNNEL_ADDRESS DL_TUNNEL_ADDRESS
DL_EI64 Ei64
Definition: netiodef.h:423
struct _MLD_HEADER * PMLD_HEADER
struct _ICMPV4_ROUTER_SOLICIT * PICMPV4_ROUTER_SOLICIT
ULONGLONG SequenceNumber
Definition: netiodef.h:1184
UINT8 Tse
Definition: netiodef.h:426
DL_ADDRESS_TYPE
Definition: netiodef.h:379
struct _ICMPV4_ROUTER_ADVERT_ENTRY ICMPV4_ROUTER_ADVERT_ENTRY
UINT8 Dsap
Definition: netiodef.h:435
#define SOURCEROUTE_SIZE_MAXIMUM
Definition: netiodef.h:84
CONST NPI_MODULEID NPI_MS_WANARPV4_MODULEID
ICMPV4_MESSAGE Header
Definition: netiodef.h:751
struct _IPV4_OPTION_HEADER IPV4_OPTION_HEADER
struct _IPV4_OPTION_HEADER * PIPV4_OPTION_HEADER
struct _IGMPV3_QUERY_HEADER * PIGMPV3_QUERY_HEADER
struct nd_opt_mtu * PND_OPTION_MTU
UINT8 Kind
Definition: netiodef.h:1141
UINT8 Kind
Definition: netiodef.h:1132
struct _TOKENRING_HEADER TOKENRING_HEADER
struct nd_router_solicit * PND_ROUTER_SOLICIT_HEADER
struct _MLDV2_REPORT_HEADER MLDV2_REPORT_HEADER
UINT32 HANDLE32
Definition: netiodef.h:48
struct nd_neighbor_advert ND_NEIGHBOR_ADVERT_HEADER
UINT16 Type
Definition: netiodef.h:439
struct _SOURCEROUTE_HEADER SOURCEROUTE_HEADER
union _IPV6_NEIGHBOR_ADVERTISEMENT_FLAGS IPV6_NEIGHBOR_ADVERTISEMENT_FLAGS
struct _ICMPV4_ROUTER_ADVERT_HEADER ICMPV4_ROUTER_ADVERT_HEADER
struct tcp_opt_ws TCP_OPT_WS
struct _ICMPV4_ROUTER_ADVERT_ENTRY * PICMPV4_ROUTER_ADVERT_ENTRY
UINT32 * PHANDLE32
Definition: netiodef.h:48
struct _ETHERNET_HEADER * PETHERNET_HEADER
UINT8 SuppressRouterSideProcessing
Definition: netiodef.h:816
ICMP_HEADER * PICMPV4_HEADER
Definition: netiodef.h:712
CONST NPI_MODULEID NPI_MS_IPV4_MODULEID
unsigned int UINT32
DL_EUI48 Source
Definition: netiodef.h:569
Definition: Header.h:8
USHORT Opcode
Definition: netiodef.h:767
IN_ADDR RouterAdvertAddr
Definition: netiodef.h:746
UINT8 nd_opt_pi_reserved3[3]
Definition: netiodef.h:1004
long LONG
Definition: pedump.c:60
struct nd_neighbor_advert * PND_NEIGHBOR_ADVERT_HEADER
enum ICMP4_TIME_EXCEED_CODE * PICMP4_TIME_EXCEED_CODE
MLD_MAX_RESP_CODE_TYPE
Definition: netiodef.h:1047
struct _MLDV2_QUERY_HEADER MLDV2_QUERY_HEADER
UINT8 QuerierRobustnessVariable
Definition: netiodef.h:1065
#define DL_SIZEOF_IPV4_TUNNEL_ADDRESS
Definition: netiodef.h:369
IN6_ADDR nd_opt_ri_prefix
Definition: netiodef.h:1037
UINT8 Reserved
Definition: netiodef.h:790
UINT8 Length
Definition: netiodef.h:1133
struct _ICMPV4_ADDRESS_MASK_MESSAGE ICMPV4_ADDRESS_MASK_MESSAGE
struct _ICMPV4_ROUTER_ADVERT_HEADER * PICMPV4_ROUTER_ADVERT_HEADER
__inline VOID TokenRingResetSourceRouteIndicator(_Out_ UNALIGNED DL_EUI48 *Source)
Definition: netiodef.h:541
IPV6_OPTION_HEADER Header
Definition: netiodef.h:905
struct _ICMPV4_ROUTER_SOLICIT ICMPV4_ROUTER_SOLICIT
struct _IGMPV3_REPORT_RECORD_HEADER * PIGMPV3_REPORT_RECORD_HEADER
UINT16 Reserved
Definition: netiodef.h:1043
SEQ_NUM th_ack
Definition: netiodef.h:1100
unsigned char BOOLEAN
UINT32 nd_opt_pi_preferred_time
Definition: netiodef.h:1000
struct _TOKENRING_HEADER * PTOKENRING_HEADER
IN6_ADDR nd_rd_target
Definition: netiodef.h:961
UINT8 HopLimit
Definition: netiodef.h:848
UINT32 nd_opt_mtu_mtu
Definition: netiodef.h:1022
UINT8 nd_opt_rh_len
Definition: netiodef.h:1013
static WCHAR Address[46]
Definition: ping.c:68
UINT8 QueriersQueryInterfaceCode
Definition: netiodef.h:1069
ICMPV4_MESSAGE RaHeader
Definition: netiodef.h:742
CONST NPI_MODULEID NPI_MS_FL6L_MODULEID
UINT8 MaxRespCodeMantissa
Definition: netiodef.h:808
Definition: netiodef.h:745
IN6_ADDR MulticastAddress
Definition: netiodef.h:1064
#define _Out_
Definition: no_sal2.h:323
UINT8 Control
Definition: netiodef.h:437
struct _IGMP_HEADER * PIGMP_HEADER
UINT8 HANDLE8
Definition: netiodef.h:46
enum DL_ADDRESS_TYPE * PDL_ADDRESS_TYPE
struct tcp_opt_ts TCP_OPT_TS
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
UINT8 nd_opt_mtu_type
Definition: netiodef.h:1019
UINT8 nd_opt_pi_prefix_len
Definition: netiodef.h:987
UINT32 nd_ra_reachable
Definition: netiodef.h:923
union _IPV6_NEIGHBOR_ADVERTISEMENT_FLAGS * PIPV6_NEIGHBOR_ADVERTISEMENT_FLAGS
SEQ_NUM th_seq
Definition: netiodef.h:1099
UINT8 FrameControl
Definition: netiodef.h:489
UINT8 Destination
Definition: netiodef.h:574
ND_OPTION_TYPE
Definition: netiodef.h:970
UINT8 nd_opt_ri_flags_reserved
Definition: netiodef.h:1030
struct _VLAN_TAG VLAN_TAG
union _DL_EI48 * PDL_EI48
Definition: netiodef.h:398
UINT16 th_win
Definition: netiodef.h:1104
UINT32 nd_opt_rh_reserved2
Definition: netiodef.h:1015
UINT8 Data8[4]
Definition: netiodef.h:589
_NPI_MODULEID_TYPE
Definition: netiodef.h:1191
DL_EUI48 Destination
Definition: netiodef.h:443
UINT16 TotalLength
Definition: netiodef.h:611
struct _IGMPV3_REPORT_HEADER_ * PIGMPV3_REPORT_HEADER
DL_EUI64 Eui64
Definition: netiodef.h:1174
UINT8 nd_opt_mtu_len
Definition: netiodef.h:1020
struct DL_TEREDO_ADDRESS DL_TEREDO_ADDRESS
struct _IPV6_FRAGMENT_HEADER IPV6_FRAGMENT_HEADER
struct tcp_opt_sack_permitted TCP_OPT_SACK_PERMITTED
#define UNALIGNED
Definition: crtdefs.h:132
UINT32 Data32[1]
Definition: netiodef.h:587
struct _ICMPV4_TIMESTAMP_MESSAGE ICMPV4_TIMESTAMP_MESSAGE
UINT16 MaxRespCodeMantissaHi
Definition: netiodef.h:1057
UINT8 th_x2
Definition: netiodef.h:1101
UINT16 User_Priority
Definition: netiodef.h:460
struct _SNAP_HEADER SNAP_HEADER
ARP_OPCODE
Definition: netiodef.h:771
struct _IPTLS_METADATA IPTLS_METADATA
struct tcp_opt_sack::tcp_opt_sack_block Block[0]
__inline BOOLEAN NmrIsEqualNpiModuleId(_In_ PNPI_MODULEID ModuleId1, _In_ PNPI_MODULEID ModuleId2)
Definition: netiodef.h:1221
struct _IPV6_HEADER * PIPV6_HEADER
struct nd_neighbor_solicit ND_NEIGHBOR_SOLICIT_HEADER
USHORT Length
Definition: netiodef.h:1197
struct _IPV4_TIMESTAMP_OPTION IPV4_TIMESTAMP_OPTION
UINT8 HeaderLength
Definition: netiodef.h:600
struct nd_router_solicit ND_ROUTER_SOLICIT_HEADER
enum _TUNNEL_SUB_TYPE * PTUNNEL_SUB_TYPE
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
NETIO_INLINE DL_ADDRESS_TYPE TokenRingAddressType(_In_ CONST UCHAR *Address)
Definition: netiodef.h:549
IN6_ADDR nd_rd_dst
Definition: netiodef.h:962
IPV6_ROUTING_HEADER
Definition: netiodef.h:915
UINT8 NextHeader
Definition: netiodef.h:847
struct nd_opt_route_info::@3026::@3028 Flags
uint64_t ULONGLONG
Definition: typedefs.h:65
UINT32 VersionClassFlow
Definition: netiodef.h:845
UINT32 EcR
Definition: netiodef.h:1144
Definition: tcpip.h:125
struct nd_opt_prefix_info * PND_OPTION_PREFIX_INFO
UINT32 SEQ_NUM
Definition: netiodef.h:1092
IN6_ADDR nd_ns_target
Definition: netiodef.h:940
UINT16 Tag
Definition: netiodef.h:456
struct _IPV6_OPTION_HEADER * PIPV6_OPTION_HEADER
struct _ICMP_HEADER * PICMP_HEADER
ICMP_HEADER * PICMPV6_HEADER
Definition: netiodef.h:593
DL_EI48 Ei48
Definition: netiodef.h:404
struct nd_neighbor_solicit * PND_NEIGHBOR_SOLICIT_HEADER
UINT8 Length
Definition: netiodef.h:1116
UINT16 * PHANDLE16
Definition: netiodef.h:47
DL_EUI48 Destination
Definition: netiodef.h:490
enum ND_OPTION_TYPE * PND_OPTION_TYPE
ICMP_MESSAGE ICMPV6_MESSAGE
Definition: netiodef.h:594
struct _ICMP_HEADER ICMP_HEADER
#define ETH_LENGTH_OF_VLAN_HEADER
Definition: netiodef.h:71
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
struct _ARP_HEADER ARP_HEADER
struct _FDDI_HEADER * PFDDI_HEADER
UINT16 HeaderChecksum
Definition: netiodef.h:625
struct _MLDV2_REPORT_RECORD_HEADER * PMLDV2_REPORT_RECORD_HEADER
struct _IPV6_FRAGMENT_HEADER * PIPV6_FRAGMENT_HEADER
struct _ARCNET_HEADER ARCNET_HEADER
UINT8 th_flags
Definition: netiodef.h:1103
ICMPV6_MESSAGE nd_rs_hdr
Definition: netiodef.h:918
IN6_ADDR MulticastAddress
Definition: netiodef.h:1044
IPV6_OPTION_TYPE
Definition: netiodef.h:890
struct _IPTLS_METADATA * PIPTLS_METADATA
LONG PreferenceLevel
Definition: netiodef.h:747
#define IP6F_OFF_MASK
Definition: netiodef.h:216
unsigned char UCHAR
Definition: xmlstorage.h:181
ICMPV6_MESSAGE nd_rd_hdr
Definition: netiodef.h:960
struct _IPV6_OPTION_JUMBOGRAM * PIPV6_OPTION_JUMBOGRAM
UINT64 Value
Definition: netiodef.h:419
CONST NPI_MODULEID NPI_MS_FL_WANARP_MODULEID
ICMP_MESSAGE * PICMPV4_MESSAGE
Definition: netiodef.h:713
UINT8 nd_opt_rh_type
Definition: netiodef.h:1012
UINT8 nd_opt_pi_site_prefix_len
Definition: netiodef.h:1005
struct tcp_opt_unknown TCP_OPT_UNKNOWN
CONST NPI_MODULEID NPI_MS_FL6T_MODULEID
IN6_ADDR SourceAddress
Definition: netiodef.h:849
UINT16 MaxRespCodeType
Definition: netiodef.h:1059
UINT16 MaxRespCodeMantissaLo
Definition: netiodef.h:1060
UINT8 Kind
Definition: netiodef.h:1121
IN6_ADDR DestinationAddress
Definition: netiodef.h:850
struct nd_router_advert * PND_ROUTER_ADVERT_HEADER
struct _IPV6_OPTION_ROUTER_ALERT * PIPV6_OPTION_ROUTER_ALERT
struct tcp_hdr TCP_HDR
UINT16 th_urp
Definition: netiodef.h:1106
#define ETH_LENGTH_OF_SNAP_HEADER
Definition: netiodef.h:72
struct nd_opt_hdr ND_OPTION_HDR
UINT32 nd_opt_ri_route_lifetime
Definition: netiodef.h:1036
struct _IGMP_HEADER IGMP_HEADER
UINT8 QueriersQueryInterfaceCode
Definition: netiodef.h:819
IN_ADDR MulticastAddress
Definition: netiodef.h:795
UINT8 Protocol
Definition: netiodef.h:624
struct _IGMPV3_REPORT_HEADER_ IGMPV3_REPORT_HEADER
ICMP_MESSAGE ICMPV4_MESSAGE
Definition: netiodef.h:713
union _IPV6_ROUTER_ADVERTISEMENT_FLAGS IPV6_ROUTER_ADVERTISEMENT_FLAGS
struct nd_opt_hdr * PND_OPTION_HDR
struct _IPV6_HEADER IPV6_HEADER
#define _In_
Definition: no_sal2.h:204
CONST NPI_MODULEID NPI_MS_FL4L_MODULEID
ICMP_HEADER Header
Definition: netiodef.h:585
UINT32 nd_ra_retransmit
Definition: netiodef.h:924
struct _IPV6_OPTION_JUMBOGRAM IPV6_OPTION_JUMBOGRAM
UINT16 th_dport
Definition: netiodef.h:1098
struct tcp_opt_sack TCP_OPT_SACK
struct _IGMPV3_REPORT_RECORD_HEADER IGMPV3_REPORT_RECORD_HEADER
ICMP_HEADER ICMPV4_HEADER
Definition: netiodef.h:712
enum IPV6_OPTION_TYPE * PIPV6_OPTION_TYPE
UINT32 nd_opt_pi_valid_time
Definition: netiodef.h:999
UINT16 Checksum
Definition: netiodef.h:581
UINT8 nd_opt_type
Definition: netiodef.h:966
DL_EUI48 Source
Definition: netiodef.h:491
UINT8 ShiftCnt
Definition: netiodef.h:1123
enum _NPI_MODULEID_TYPE NPI_MODULEID_TYPE
struct _ICMPV4_ADDRESS_MASK_MESSAGE * PICMPV4_ADDRESS_MASK_MESSAGE
UINT16 Data16[2]
Definition: netiodef.h:588
IN6_ADDR nd_na_target
Definition: netiodef.h:945
UINT8 Source
Definition: netiodef.h:573
UINT16 Type
Definition: netiodef.h:463
struct _NPI_MODULEID NPI_MODULEID
unsigned short USHORT
Definition: pedump.c:61
CONST NPI_MODULEID NPI_MS_NMR_MODULEID
union _DL_OUI * PDL_OUI
Definition: netiodef.h:393
UINT8 Ssap
Definition: netiodef.h:436
UINT8 Code
Definition: netiodef.h:792
IP_OPTION_TIMESTAMP_FLAGS
Definition: netiodef.h:697
UINT8 * PHANDLE8
Definition: netiodef.h:46
UINT8 TimeToLive
Definition: netiodef.h:623
UINT16 Checksum
Definition: netiodef.h:794
struct nd_opt_route_info ND_OPTION_ROUTE_INFO
UINT8 TypeOfServiceAndEcnField
Definition: netiodef.h:605
UINT8 SuppressRouterSideProcessing
Definition: netiodef.h:1066
struct _SOURCEROUTE_HEADER * PSOURCEROUTE_HEADER
CONST NPI_MODULEID NPI_MS_NDIS_MODULEID
unsigned short UINT16
ICMPV6_HEADER IcmpHeader
Definition: netiodef.h:1087
UINT8 Length
Definition: netiodef.h:1122
UINT64 HANDLE64
Definition: netiodef.h:49
TCP_HDR * PTCP_HDR
Definition: netiodef.h:1111
struct _ETHERNET_HEADER ETHERNET_HEADER
struct _SNAP_HEADER * PSNAP_HEADER
UINT32 * PSEQ_NUM
Definition: netiodef.h:1092
UINT16 DontFragment
Definition: netiodef.h:618
CONST NPIID * PNPIID
Definition: netiodef.h:1248
struct _ICMP_MESSAGE * PICMP_MESSAGE
UINT8 nd_opt_len
Definition: netiodef.h:967
struct nd_opt_rd_hdr * PND_OPTION_RD_HDR
union _DL_EI64 * PDL_EI64
Definition: netiodef.h:415
#define DL_HEADER_LENGTH_MAXIMUM
Definition: netiodef.h:55
struct DL_TEREDO_ADDRESS * PDL_TEREDO_ADDRESS
UINT8 VersionAndHeaderLength
Definition: netiodef.h:598
ICMPV6_MESSAGE nd_ns_hdr
Definition: netiodef.h:939
DL_OUI Oui
Definition: netiodef.h:403
UINT16 DontUse1
Definition: netiodef.h:616
UINT8 FrameCode
Definition: netiodef.h:567
ICMP_HEADER ICMPV6_HEADER
Definition: netiodef.h:593
DL_EUI48 Source
Definition: netiodef.h:444
unsigned int ULONG
Definition: retypes.h:1
struct _FDDI_HEADER FDDI_HEADER
struct DL_TUNNEL_ADDRESS * PDL_TUNNEL_ADDRESS
ICMPV6_HEADER IcmpHeader
Definition: netiodef.h:1041
UINT8 TypeOfService
Definition: netiodef.h:608
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
UINT16 CFI
Definition: netiodef.h:459
UINT16 Identification
Definition: netiodef.h:612
UINT64 * PHANDLE64
Definition: netiodef.h:49
UINT16 PayloadLength
Definition: netiodef.h:846
struct _IPV4_HEADER * PIPV4_HEADER
UINT32 nd_opt_pi_reserved2
Definition: netiodef.h:1002
union _DL_EUI64 * PDL_EUI64
Definition: netiodef.h:432
typedef _Struct_size_bytes_(_Inexpressible_(Length)) struct _IPV6_ROUTING_HEADER
Definition: netiodef.h:909
unsigned long long UINT64
CONST NPIID NPI_NETWORK_LAYER_ID
UINT8 Type
Definition: netiodef.h:784
struct _IPV4_ROUTING_HEADER * PIPV4_ROUTING_HEADER
SCOPE_ID ScopeId
Definition: netiodef.h:1156
UINT16 MaxRespCodeExponent
Definition: netiodef.h:1058
UINT8 BroadcastIndicator
Definition: netiodef.h:498
IPV4_OPTION_TYPE
Definition: netiodef.h:665
struct nd_redirect ND_REDIRECT_HEADER
UINT16 DontUse2
Definition: netiodef.h:620
NETIO_INLINE DL_ADDRESS_TYPE EthernetAddressType(_In_reads_(sizeof(DL_EUI48)) CONST UCHAR *Address)
Definition: netiodef.h:470
unsigned char UINT8
UINT16 th_sum
Definition: netiodef.h:1105
C_ASSERT(DL_ADDRESS_LENGTH_MAXIMUM >=sizeof(DL_EUI48))
TOKENRING_BROADCAST_INDICATOR
Definition: netiodef.h:513
ICMPV6_HEADER IcmpHeader
Definition: netiodef.h:1053
UINT8 Version
Definition: netiodef.h:785
DL_EUI48 Destination
Definition: netiodef.h:568
struct _IGMPV3_QUERY_HEADER IGMPV3_QUERY_HEADER
UINT8 AcccessControl
Definition: netiodef.h:488
#define CONST
Definition: pedump.c:81
#define InlineIsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:142
UINT8 Protocol
Definition: netiodef.h:575
UINT8 EcnField
Definition: netiodef.h:607
CONST NPI_MODULEID NPI_MS_FL48_MODULEID
UINT8 nd_opt_ri_prefix_len
Definition: netiodef.h:1028
UINT16 Mss
Definition: netiodef.h:1117
UINT8 Length
Definition: netiodef.h:1142
struct _IPV4_TIMESTAMP_OPTION * PIPV4_TIMESTAMP_OPTION
IGMP_MAX_RESP_CODE_TYPE
Definition: netiodef.h:798
UINT8 Kind
Definition: netiodef.h:1115
UINT8 nd_opt_pi_type
Definition: netiodef.h:985
struct _ARP_HEADER * PARP_HEADER
UINT16 Reserved
Definition: netiodef.h:619
UCHAR IpAddress[0]
Definition: netiodef.h:1157
UCHAR SenderHardwareAddress[0]
Definition: netiodef.h:768
* PIPV6_ROUTING_HEADER
Definition: netiodef.h:915
CONST NPI_MODULEID * PNPI_MODULEID
Definition: netiodef.h:1216
UINT8 JumbogramLength[4]
Definition: netiodef.h:901
ICMPV6_MESSAGE nd_ra_hdr
Definition: netiodef.h:922
UINT8 MaxRespCodeExponent
Definition: netiodef.h:809
UINT16 th_sport
Definition: netiodef.h:1097
struct _ICMPV4_TIMESTAMP_MESSAGE * PICMPV4_TIMESTAMP_MESSAGE