rndis.h
Go to the documentation of this file.
1 /**
2  * @file rndis.h
3  * @brief RNDIS (Remote Network Driver Interface Specification)
4  *
5  * @section License
6  *
7  * Copyright (C) 2010-2018 Oryx Embedded SARL. All rights reserved.
8  *
9  * This file is part of CycloneTCP Pro.
10  *
11  * This software is provided under a commercial license. You may
12  * use this software under the conditions stated in the license
13  * terms. This source code cannot be redistributed.
14  *
15  * @author Oryx Embedded SARL (www.oryx-embedded.com)
16  * @version 1.9.0
17  **/
18 
19 #ifndef _RNDIS_H
20 #define _RNDIS_H
21 
22 //Dependencies
23 #include "core/net.h"
24 #include "error.h"
25 
26 //MAC address
27 #ifndef RNDIS_MAC_ADDR
28  #define RNDIS_MAC_ADDR "02-00-00-12-34-02"
29 #endif
30 
31 //Vendor description
32 #ifndef RNDIS_VENDOR_DESCRIPTION
33  #define RNDIS_VENDOR_DESCRIPTION "Unknown"
34 #endif
35 
36 //RNDIS versions
37 #define RNDIS_MAJOR_VERSION 1
38 #define RNDIS_MINOR_VERSION 0
39 
40 //Maximum transfer size
41 #define RNDIS_MAX_TRANSFER_SIZE 2048
42 
43 //RNDIS message types
44 #define RNDIS_PACKET_MSG 0x00000001
45 #define RNDIS_INITIALIZE_MSG 0x00000002
46 #define RNDIS_INITIALIZE_CMPLT 0x80000002
47 #define RNDIS_HALT_MSG 0x00000003
48 #define RNDIS_QUERY_MSG 0x00000004
49 #define RNDIS_QUERY_CMPLT 0x80000004
50 #define RNDIS_SET_MSG 0x00000005
51 #define RNDIS_SET_CMPLT 0x80000005
52 #define RNDIS_RESET_MSG 0x00000006
53 #define RNDIS_RESET_CMPLT 0x80000006
54 #define RNDIS_INDICATE_STATUS_MSG 0x00000007
55 #define RNDIS_KEEPALIVE_MSG 0x00000008
56 #define RNDIS_KEEPALIVE_CMPLT 0x80000008
57 
58 //RNDIS device notifications
59 #define RNDIS_NOTIFICATION_RESP_AVAILABLE 0x00000001
60 
61 //RNDIS status values
62 #define RNDIS_STATUS_SUCCESS 0x00000000
63 #define RNDIS_STATUS_FAILURE 0xC0000001
64 #define RNDIS_STATUS_INVALID_DATA 0xC0010015
65 #define RNDIS_STATUS_NOT_SUPPORTED 0xC00000BB
66 #define RNDIS_STATUS_MEDIA_CONNECT 0x4001000B
67 #define RNDIS_STATUS_MEDIA_DISCONNECT 0x4001000C
68 
69 //Device flags
70 #define RNDIS_DF_CONNECTIONLESS 0x00000001
71 #define RNDIS_DF_CONNECTION_ORIENTED 0x00000002
72 
73 //Support medium
74 #define RNDIS_MEDIUM_802_3 0x00000000
75 
76 //General objects (required)
77 #define OID_GEN_SUPPORTED_LIST 0x00010101
78 #define OID_GEN_HARDWARE_STATUS 0x00010102
79 #define OID_GEN_MEDIA_SUPPORTED 0x00010103
80 #define OID_GEN_MEDIA_IN_USE 0x00010104
81 #define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
82 #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
83 #define OID_GEN_LINK_SPEED 0x00010107
84 #define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
85 #define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
86 #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
87 #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
88 #define OID_GEN_VENDOR_ID 0x0001010C
89 #define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
90 #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
91 #define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
92 #define OID_GEN_DRIVER_VERSION 0x00010110
93 #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
94 #define OID_GEN_PROTOCOL_OPTIONS 0x00010112
95 #define OID_GEN_MAC_OPTIONS 0x00010113
96 #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
97 #define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
98 #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
99 #define OID_GEN_SUPPORTED_GUIDS 0x00010117
100 #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
101 #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
102 #define OID_GEN_MACHINE_NAME 0x0001021A
103 #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B
104 #define OID_GEN_VLAN_ID 0x0001021C
105 
106 //General objects (optional)
107 #define OID_GEN_MEDIA_CAPABILITIES 0x00010201
108 #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
109 
110 //Statistics objects (required)
111 #define OID_GEN_XMIT_OK 0x00020101
112 #define OID_GEN_RCV_OK 0x00020102
113 #define OID_GEN_XMIT_ERROR 0x00020103
114 #define OID_GEN_RCV_ERROR 0x00020104
115 #define OID_GEN_RCV_NO_BUFFER 0x00020105
116 
117 //Statistics objects (optional)
118 #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
119 #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
120 #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
121 #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
122 #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
123 #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
124 #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
125 #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
126 #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
127 #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
128 #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
129 #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
130 #define OID_GEN_RCV_CRC_ERROR 0x0002020D
131 #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
132 
133 //Ethernet objects (required)
134 #define OID_802_3_PERMANENT_ADDRESS 0x01010101
135 #define OID_802_3_CURRENT_ADDRESS 0x01010102
136 #define OID_802_3_MULTICAST_LIST 0x01010103
137 #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
138 #define OID_802_3_MAC_OPTIONS 0x01010105
139 #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
140 #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
141 #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
142 #define OID_802_3_XMIT_DEFERRED 0x01020201
143 #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
144 #define OID_802_3_RCV_OVERRUN 0x01020203
145 #define OID_802_3_XMIT_UNDERRUN 0x01020204
146 #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
147 #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
148 #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
149 
150 //Hardware status of the underlying NIC
151 #define RNDIS_HARDWARE_STATUS_READY 0x00000000
152 #define RNDIS_HARDWARE_STATUS_INITIALIZING 0x00000001
153 #define RNDIS_HARDWARE_STATUS_RESET 0x00000002
154 #define RNDIS_HARDWARE_STATUS_CLOSING 0x00000003
155 #define RNDIS_HARDWARE_STATUS_NOT_READY 0x00000004
156 
157 //Media types
158 #define RNDIS_MEDIUM_802_3 0x00000000
159 
160 //Media state
161 #define RNDIS_MEDIA_STATE_CONNECTED 0x00000000
162 #define RNDIS_MEDIA_STATE_DISCONNECTED 0x00000001
163 
164 //Packet filter
165 #define RNDIS_PACKET_TYPE_DIRECTED 0x00000001
166 #define RNDIS_PACKET_TYPE_MULTICAST 0x00000002
167 #define RNDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
168 #define RNDIS_PACKET_TYPE_BROADCAST 0x00000008
169 #define RNDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
170 #define RNDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
171 #define RNDIS_PACKET_TYPE_SMT 0x00000040
172 #define RNDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
173 #define RNDIS_PACKET_TYPE_GROUP 0x00000100
174 #define RNDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00000200
175 #define RNDIS_PACKET_TYPE_FUNCTIONAL 0x00000400
176 #define RNDIS_PACKET_TYPE_MAC_FRAME 0x00000800
177 
178 
179 /**
180  * @brief RNDIS states
181  **/
182 
183 typedef enum
184 {
189 } RndisState;
190 
191 
192 /**
193  * @brief Generic RNDIS message
194  **/
195 
196 typedef struct
197 {
198  uint32_t messageType; //0-3
199  uint32_t messageLength; //4-7
200 } RndisMsg;
201 
202 
203 /**
204  * @brief RNDIS Initialize message
205  **/
206 
207 typedef struct
208 {
209  uint32_t messageType; //0-3
210  uint32_t messageLength; //4-7
211  uint32_t requestId; //8-11
212  uint32_t majorVersion; //12-15
213  uint32_t minorVersion; //16-19
214  uint32_t maxTransferSize; //20-23
216 
217 
218 /**
219  * @brief RNDIS Halt message
220  **/
221 
222 typedef struct
223 {
224  uint32_t messageType; //0-3
225  uint32_t messageLength; //4-7
226  uint32_t requestId; //8-11
227 } RndisHaltMsg;
228 
229 
230 /**
231  * @brief RNDIS Query message
232  **/
233 
234 typedef struct
235 {
236  uint32_t messageType; //0-3
237  uint32_t messageLength; //4-7
238  uint32_t requestId; //8-11
239  uint32_t oid; //12-15
240  uint32_t infoBufferLength; //16-19
241  uint32_t infoBufferOffset; //20-23
242  uint32_t reserved; //24-27
243  uint8_t oidInputBuffer[]; //28
244 } RndisQueryMsg;
245 
246 
247 /**
248  * @brief RNDIS Set message
249  **/
250 
251 typedef struct
252 {
253  uint32_t messageType; //0-3
254  uint32_t messageLength; //4-7
255  uint32_t requestId; //8-11
256  uint32_t oid; //12-15
257  uint32_t infoBufferLength; //16-19
258  uint32_t infoBufferOffset; //20-23
259  uint32_t reserved; //24-27
260  uint8_t oidInputBuffer[]; //28
261 } RndisSetMsg;
262 
263 
264 /**
265  * @brief RNDIS Reset message
266  **/
267 
268 typedef struct
269 {
270  uint32_t messageType; //0-3
271  uint32_t messageLength; //4-7
272  uint32_t reserved; //8-11
273 } RndisResetMsg;
274 
275 
276 /**
277  * @brief RNDIS Indicate Status message
278  **/
279 
280 typedef struct
281 {
282  uint32_t messageType; //0-3
283  uint32_t messageLength; //4-7
284  uint32_t status; //8-11
285  uint32_t statusBufferLength; //12-15
286  uint32_t statusBufferOffset; //16-19
287  uint8_t diagnosticInfoBuffer[]; //20
289 
290 
291 /**
292  * @brief Diagnostic information
293  **/
294 
295 typedef struct
296 {
297  uint32_t diagStatus; //0-3
298  uint32_t errorOffset; //4-7
299 } RndisDiagInfo;
300 
301 
302 /**
303  * @brief RNDIS Keep-Alive message
304  **/
305 
306 typedef struct
307 {
308  uint32_t messageType; //0-3
309  uint32_t messageLength; //4-7
310  uint32_t requestId; //8-11
312 
313 
314 /**
315  * @brief Response to a RNDIS Initialize message
316  **/
317 
318 typedef struct
319 {
320  uint32_t messageType; //0-3
321  uint32_t messageLength; //4-7
322  uint32_t requestId; //8-11
323  uint32_t status; //12-15
324  uint32_t majorVersion; //16-19
325  uint32_t minorVersion; //20-23
326  uint32_t deviceFlags; //24-27
327  uint32_t medium; //28-31
328  uint32_t maxPacketsPerTransfer; //32-35
329  uint32_t maxTransferSize; //36-39
330  uint32_t packetAlignmentFactor; //40-43
331  uint32_t afListOffset; //44-47
332  uint32_t afListSize; //48-51
334 
335 
336 /**
337  * @brief Response to a RNDIS Query message
338  **/
339 
340 typedef struct
341 {
342  uint32_t messageType; //0-3
343  uint32_t messageLength; //4-7
344  uint32_t requestId; //8-11
345  uint32_t status; //12-15
346  uint32_t infoBufferLength; //16-19
347  uint32_t infoBufferOffset; //20-23
348  uint8_t oidInputBuffer[]; //24
350 
351 
352 /**
353  * @brief Response to a RNDIS Set message
354  **/
355 
356 typedef struct
357 {
358  uint32_t messageType; //0-3
359  uint32_t messageLength; //4-7
360  uint32_t requestId; //8-11
361  uint32_t status; //12-15
362 } RndisSetCmplt;
363 
364 
365 /**
366  * @brief Response to a RNDIS Reset message
367  **/
368 
369 typedef struct
370 {
371  uint32_t messageType; //0-3
372  uint32_t messageLength; //4-7
373  uint32_t status; //8-11
374  uint32_t addressingReset; //12-15
376 
377 
378 /**
379  * @brief Response to a RNDIS Keep-Alive message
380  **/
381 
382 typedef struct
383 {
384  uint32_t messageType; //0-3
385  uint32_t messageLength; //4-7
386  uint32_t requestId; //8-11
387  uint32_t status; //12-15
389 
390 
391 /**
392  * @brief RNDIS Packet message
393  **/
394 
395 typedef struct
396 {
397  uint32_t messageType; //0-3
398  uint32_t messageLength; //4-7
399  uint32_t dataOffset; //8-11
400  uint32_t dataLength; //12-15
401  uint32_t oobDataOffset; //16-19
402  uint32_t oobDataLength; //20-23
403  uint32_t numOobDataElements; //24-27
404  uint32_t perPacketInfoOffset; //28-31
405  uint32_t perPacketInfoLength; //32-35
406  uint32_t vcHandle; //36-39
407  uint32_t reserved; //40-43
408  uint8_t payload[]; //44
410 
411 
412 /**
413  * @brief Out-of-band data record
414  **/
415 
416 typedef struct
417 {
418  uint32_t size; //0-3
419  uint32_t type; //4-7
420  uint32_t classInfoOffset; //8-11
421  uint8_t oobData[]; //12
423 
424 
425 /**
426  * @brief Per-packet information data record
427  **/
428 
429 typedef struct
430 {
431  uint32_t size; //0-3
432  uint32_t type; //4-7
433  uint32_t perPacketInfoOffset; //8-11
434  uint8_t perPacketData[]; //12
436 
437 
438 /**
439  * @brief Device notification message
440  **/
441 
442 typedef struct
443 {
444  uint32_t notification; //0-3
445  uint32_t reserved; //4-7
447 
448 
449 /**
450  * @brief RNDIS context
451  **/
452 
453 typedef struct
454 {
460  uint32_t packetFilter;
462  size_t rxBufferLen;
463  uint8_t encapsulatedResp[RNDIS_MAX_TRANSFER_SIZE];
465 
466  uint32_t data[512 / 4];
467  uint8_t CmdOpCode;
468  uint8_t CmdLength;
469 } RndisContext;
470 
471 //Global variables
473 
474 //RNDIS related functions
475 void rndisInit(void);
476 
484 
486 error_t rndisFormatIndicateStatusMsg(uint32_t status);
487 
488 error_t rndisFormatInitializeCmplt(uint32_t requestId);
489 error_t rndisFormatQueryCmplt(uint32_t requestId, uint32_t status, uint32_t length);
490 error_t rndisFormatSetCmplt(uint32_t requestId, uint32_t status);
492 error_t rndisFormatKeepAliveCmplt(uint32_t requestId);
493 
494 error_t rndisSendNotification(uint32_t notification);
495 
496 void rndisChangeState(RndisState newState);
497 
498 #endif
error_t rndisProcessHaltMsg(const RndisHaltMsg *message, size_t length)
Process RNDIS Halt message.
Definition: rndis.c:184
error_t rndisFormatHaltMsg(void)
Format RNDIS Halt message.
Definition: rndis.c:461
error_t rndisFormatResetCmplt(void)
Format RNDIS Reset Cmplt message.
Definition: rndis.c:615
RNDIS Query message.
Definition: rndis.h:234
RNDIS Indicate Status message.
Definition: rndis.h:280
error_t rndisSendNotification(uint32_t notification)
Send RNDIS notification message.
Definition: rndis.c:672
uint32_t requestId
Definition: rndis.h:386
uint32_t requestId
Definition: rndis.h:344
Diagnostic information.
Definition: rndis.h:295
Generic RNDIS message.
Definition: rndis.h:196
Response to a RNDIS Initialize message.
Definition: rndis.h:318
bool_t rxState
Definition: rndis.h:459
uint32_t maxTransferSize
Definition: rndis.h:329
TCP/IP stack core.
uint32_t messageType
Definition: rndis.h:358
uint32_t messageType
Definition: rndis.h:371
uint32_t packetFilter
Definition: rndis.h:460
uint32_t deviceFlags
Definition: rndis.h:326
uint32_t packetAlignmentFactor
Definition: rndis.h:330
RndisState state
Definition: rndis.h:455
uint32_t perPacketInfoLength
Definition: rndis.h:405
uint32_t size
Definition: rndis.h:418
RNDIS Packet message.
Definition: rndis.h:395
uint32_t requestId
Definition: rndis.h:211
uint32_t afListOffset
Definition: rndis.h:331
uint8_t message[]
Definition: chap.h:150
uint32_t dataLength
Definition: rndis.h:400
uint32_t requestId
Definition: rndis.h:238
Response to a RNDIS Query message.
Definition: rndis.h:340
uint32_t messageLength
Definition: rndis.h:372
uint32_t notification
Definition: rndis.h:444
uint32_t status
Definition: rndis.h:345
bool_t linkEvent
Definition: rndis.h:456
uint32_t messageType
Definition: rndis.h:384
uint32_t vcHandle
Definition: rndis.h:406
RNDIS Keep-Alive message.
Definition: rndis.h:306
uint32_t minorVersion
Definition: rndis.h:213
uint32_t requestId
Definition: rndis.h:322
void rndisChangeState(RndisState newState)
Update RNDIS state.
Definition: rndis.c:699
uint32_t messageType
Definition: rndis.h:253
uint32_t oid
Definition: rndis.h:256
uint32_t messageType
Definition: rndis.h:282
uint32_t infoBufferOffset
Definition: rndis.h:258
RNDIS Initialize message.
Definition: rndis.h:207
uint32_t addressingReset
Definition: rndis.h:374
uint8_t CmdOpCode
Definition: rndis.h:467
uint32_t messageType
Definition: rndis.h:320
uint32_t requestId
Definition: rndis.h:226
uint32_t status
Definition: rndis.h:323
Error codes description.
uint32_t requestId
Definition: rndis.h:310
uint32_t messageType
Definition: rndis.h:209
uint32_t messageLength
Definition: rndis.h:254
Out-of-band data record.
Definition: rndis.h:416
uint32_t messageLength
Definition: rndis.h:385
uint32_t diagStatus
Definition: rndis.h:297
uint32_t reserved
Definition: rndis.h:272
uint32_t oobDataOffset
Definition: rndis.h:401
uint32_t status
Definition: rndis.h:387
error_t rndisProcessSetMsg(const RndisSetMsg *message, size_t length)
Process RNDIS Set message.
Definition: rndis.c:357
uint32_t messageLength
Definition: rndis.h:343
RNDIS Reset message.
Definition: rndis.h:268
uint32_t messageLength
Definition: rndis.h:359
uint32_t medium
Definition: rndis.h:327
RNDIS Set message.
Definition: rndis.h:251
Response to a RNDIS Keep-Alive message.
Definition: rndis.h:382
error_t rndisProcessInitializeMsg(const RndisInitializeMsg *message, size_t length)
Process RNDIS Initialize message.
Definition: rndis.c:157
uint32_t statusBufferLength
Definition: rndis.h:285
Device notification message.
Definition: rndis.h:442
error_t rndisFormatIndicateStatusMsg(uint32_t status)
Format RNDIS Indicate Status message.
Definition: rndis.c:487
error_t rndisFormatSetCmplt(uint32_t requestId, uint32_t status)
Format RNDIS Set Cmplt message.
Definition: rndis.c:586
uint32_t messageLength
Definition: rndis.h:210
bool_t linkState
Definition: rndis.h:457
uint32_t majorVersion
Definition: rndis.h:324
uint32_t reserved
Definition: rndis.h:407
uint32_t infoBufferLength
Definition: rndis.h:240
uint32_t status
Definition: rndis.h:373
uint32_t messageType
Definition: rndis.h:198
uint32_t messageLength
Definition: rndis.h:321
uint32_t majorVersion
Definition: rndis.h:212
#define RNDIS_MAX_TRANSFER_SIZE
Definition: rndis.h:41
error_t rndisFormatInitializeCmplt(uint32_t requestId)
Format RNDIS Initialize Cmplt message.
Definition: rndis.c:515
uint32_t infoBufferLength
Definition: rndis.h:346
size_t rxBufferLen
Definition: rndis.h:462
error_t rndisProcessMsg(const RndisMsg *message, size_t length)
Process incoming RNDIS message.
Definition: rndis.c:99
#define rxBuffer
uint32_t messageType
Definition: rndis.h:308
uint32_t classInfoOffset
Definition: rndis.h:420
error_t
Error codes.
Definition: error.h:40
uint32_t messageType
Definition: rndis.h:224
void rndisInit(void)
RNDIS core initialization.
Definition: rndis.c:77
uint32_t type
Definition: rndis.h:419
uint32_t reserved
Definition: rndis.h:445
uint32_t statusBufferOffset
Definition: rndis.h:286
uint32_t infoBufferOffset
Definition: rndis.h:241
RndisState
RNDIS states.
Definition: rndis.h:183
RNDIS context.
Definition: rndis.h:453
uint32_t maxPacketsPerTransfer
Definition: rndis.h:328
uint32_t perPacketInfoOffset
Definition: rndis.h:404
uint8_t data[]
Definition: dtls_misc.h:167
uint32_t messageType
Definition: rndis.h:397
Response to a RNDIS Reset message.
Definition: rndis.h:369
uint32_t status
Definition: rndis.h:361
uint8_t CmdLength
Definition: rndis.h:468
uint32_t messageLength
Definition: rndis.h:271
uint32_t requestId
Definition: rndis.h:360
Response to a RNDIS Set message.
Definition: rndis.h:356
RNDIS Halt message.
Definition: rndis.h:222
uint32_t messageType
Definition: rndis.h:270
uint32_t infoBufferOffset
Definition: rndis.h:347
uint32_t maxTransferSize
Definition: rndis.h:214
uint32_t messageLength
Definition: rndis.h:309
uint32_t messageLength
Definition: rndis.h:283
RndisContext rndisContext
Definition: rndis.c:42
uint32_t afListSize
Definition: rndis.h:332
uint32_t requestId
Definition: rndis.h:255
size_t encapsulatedRespLen
Definition: rndis.h:464
uint32_t reserved
Definition: rndis.h:242
error_t rndisProcessKeepAliveMsg(const RndisKeepAliveMsg *message, size_t length)
Process RNDIS Keep-Alive message.
Definition: rndis.c:436
uint32_t messageType
Definition: rndis.h:342
uint32_t messageType
Definition: rndis.h:236
uint32_t perPacketInfoOffset
Definition: rndis.h:433
error_t rndisProcessResetMsg(const RndisResetMsg *message, size_t length)
Process RNDIS Reset message.
Definition: rndis.c:406
uint32_t reserved
Definition: rndis.h:259
uint32_t messageLength
Definition: rndis.h:237
uint32_t messageLength
Definition: rndis.h:225
uint8_t length
Definition: dtls_misc.h:140
uint32_t messageLength
Definition: rndis.h:199
uint32_t errorOffset
Definition: rndis.h:298
uint32_t messageLength
Definition: rndis.h:398
uint32_t numOobDataElements
Definition: rndis.h:403
bool_t txState
Definition: rndis.h:458
error_t rndisFormatKeepAliveCmplt(uint32_t requestId)
Format RNDIS Keep-Alive Cmplt message.
Definition: rndis.c:645
uint32_t dataOffset
Definition: rndis.h:399
int bool_t
Definition: compiler_port.h:47
uint32_t minorVersion
Definition: rndis.h:325
uint32_t infoBufferLength
Definition: rndis.h:257
error_t rndisFormatQueryCmplt(uint32_t requestId, uint32_t status, uint32_t length)
Format RNDIS Query Cmplt message.
Definition: rndis.c:556
uint32_t oobDataLength
Definition: rndis.h:402
uint32_t oid
Definition: rndis.h:239
Per-packet information data record.
Definition: rndis.h:429
error_t rndisProcessQueryMsg(const RndisQueryMsg *message, size_t length)
Process RNDIS Query message.
Definition: rndis.c:208