NetSim Source Code Help
Loading...
Searching...
No Matches
DSx.c
Go to the documentation of this file.
1
2#include "main.h"
3#include "802_22.h"
4#include "../Application/Application.h"
5/** A service flow is a MAC transport service that provides unidirectional transport of
6packets either to upstream packets transmitted by the CPE or to downstream packets
7transmitted by the BS.
8A service flow is characterized by a set of QoS parameters such as latency, jitter, and
9throughput assurances. In order to standardize operation between the CPE and BS, these
10attributes include details of how the CPE requests upstream bandwidth allocations and the
11expected behavior of the BS upstream scheduler. */
12int fn_NetSim_CR_CreateServiceFlow(NETSIM_ID nDeviceId,NETSIM_ID nInterfaceId,int nId,NetSim_PACKET* packet,double dTime)
13{
14 CPE_MAC* pstruCPEMAC = DEVICE_MACVAR(nDeviceId,nInterfaceId);
15 if(pstruCPEMAC->pstruServiceParameter->Status[nId] == ServiceState_Null ||
17 {
18 //Create a DSA_REQ packet
19 NetSim_PACKET* pstruPacket;
20 DSA_REQ* pstruDSAREQ;
21 int appid;
22 int generationrate = 0;
23 if(packet->pstruAppData)
24 appid = packet->pstruAppData->nApplicationId;
25 else
26 appid = 0;
27 if(appid)
28 {
29 generationrate = (int)ceil((((ptrAPPLICATION_INFO*)NETWORK->appInfo)[appid-1]->dGenerationRate*1000000));
30 }
33 add_dest_to_packet(pstruPacket, pstruCPEMAC->nBSID);
34 pstruPacket->nPacketPriority = Priority_High;
35 pstruPacket->nPacketType = PacketType_Control;
36 pstruPacket->nReceiverId = pstruCPEMAC->nBSID;
39 pstruDSAREQ = fnpAllocateMemory(1,sizeof *pstruDSAREQ);
40 pstruDSAREQ->nTransactionId = ++g_nTransactionId;
41 pstruDSAREQ->type = MMM_DSA_REQ;
42 pstruDSAREQ->pstruIE.nSFDirection = UPSTREAM;
43 switch(packet->nQOS)
44 {
45 case QOS_BE:
46 strcpy(pstruDSAREQ->pstruIE.className,"BE");
47 break;
48 case QOS_ertPS:
49 strcpy(pstruDSAREQ->pstruIE.className,"ERTPS");
50 break;
51 case QOS_nrtPS:
52 strcpy(pstruDSAREQ->pstruIE.className,"NRTPS");
53 break;
54 case QOS_rtPS:
55 strcpy(pstruDSAREQ->pstruIE.className,"RTPS");
56 break;
57 case QOS_UGS:
58 strcpy(pstruDSAREQ->pstruIE.className,"UGS");
59 break;
60 default:
61 strcpy(pstruDSAREQ->pstruIE.className,"NULL");
62 break;
63 }
64 pstruDSAREQ->pstruIE.maxSustainedTrafficrate = generationrate;
65 pstruPacket->pstruMacData->Packet_MACProtocol = pstruDSAREQ;
66 pstruPacket->pstruMacData->dArrivalTime = dTime;
67 pstruPacket->pstruMacData->dOverhead = (double)(DSX_IE_FIXED_SIZE + 3 + strlen(pstruDSAREQ->pstruIE.className));
68 pstruPacket->pstruMacData->dPacketSize = pstruPacket->pstruMacData->dOverhead;
70 pstruPacket->pstruMacData->szSourceMac = DEVICE_HWADDRESS(nDeviceId,nInterfaceId);
71 //Place the packet to head of the list
72 pstruPacket->pstruNextPacket = pstruCPEMAC->pstruQueuedPacketList[0];
73 pstruCPEMAC->pstruQueuedPacketList[0] = pstruPacket;
74 //Add the T7 timeout event
75 pstruEventDetails->dEventTime = dTime+pstruCPEMAC->T7;
78 pstruEventDetails->nDeviceId = nDeviceId;
81 pstruEventDetails->nInterfaceId = nInterfaceId;
87
88 //Add T14 time out event
89 pstruEventDetails->dEventTime = dTime+pstruCPEMAC->T14;
92
93 //Change the state
95 //store the packet into buffer
96 pstruCPEMAC->pstruServiceParameter->pTemp[nId] = fn_NetSim_Packet_CopyPacket(pstruPacket);
97 //Add DSA-REQ to CR Metrics
98 pstruCPEMAC->struCPEMetrics.nDSA_REQSent++;
99 }
100 else
101 return 0; //Already requested/created/in progress
102 return 0;
103}
104/** To manage the various traffic flows between CPEs and the BS, the MAC protocol shall have the
105capability to dynamically manage the addition, deletion, and change of service flows.
106The format of a Dynamic Service Addition Request (DSA-REQ) message is shown in Table.
107
108This message is sent either by a CPE or BS and is to create a new service flow,and shall not
109contain parameters for more than one service flow.The FID field carried in the MAC header
110of the PDU where this message is transmitted shall be the primary management FID of the CPE. */
112{
113 NetSim_PACKET* pstruRSP;
116 BS_MAC* pstruBSMAC = DEVICE_MACVAR(nDeviceId,nInterfaceId);
118 DSA_REQ* pstruDSA = PACKET_MACPROTOCOLDATA(pstruPacket);
119 SYMBOL_PARAMETER* pstruSymbol = ((BS_PHY*)DEVICE_PHYVAR(nDeviceId,nInterfaceId))->pstruSymbolParameter;
120 unsigned int nSlot = (int)ceil(pstruDSA->pstruIE.maxSustainedTrafficrate/(100.0*pstruSymbol->nBitsCountInOneSlot));
121 NETSIM_ID nSID = (NETSIM_ID)(pstruBSMAC->anSIDFromDevId[pstruPacket->nTransmitterId]);
122
123 //Add DSA-REQ
124 pstruBSMAC->struBSMetrics.nDSA_REQReceived++;
125 if(!fn_NetSim_CR_AllocBandwidth(nSID,fnGetQOS(pstruDSA->pstruIE.className),&(pstruBSMAC->uplinkAllocInfo),nSlot,pstruSymbol->nUPlinkSymbol*pstruSymbol->nOFDMSlots))
126 return 0;
127 //Create DSC-RSP packet
130 add_dest_to_packet(pstruRSP, pstruPacket->nTransmitterId);
131 pstruRSP->nPacketPriority = Priority_High;
133 pstruRSP->nReceiverId = pstruPacket->nTransmitterId;
134 pstruRSP->nSourceId = nDeviceId;
135 pstruRSP->nTransmitterId = nDeviceId;
138 {
139 DSA_RSP* pstruDSARSP = fnpAllocateMemory(1,sizeof *pstruDSARSP);
140 pstruDSARSP->nTransactionID = pstruDSA->nTransactionId;
141 pstruDSARSP->type = MMM_DSA_RSP;
142 pstruDSARSP->pstruIE = pstruDSA->pstruIE;
143 pstruDSARSP->pstruIE.nSFID = ++g_nTransactionId;
144 pstruRSP->pstruMacData->Packet_MACProtocol = pstruDSARSP;
145 }
146 pstruRSP->pstruMacData->dOverhead = pstruPacket->pstruMacData->dOverhead +1;
147 pstruRSP->pstruMacData->dPacketSize = pstruRSP->pstruMacData->dOverhead;
148 //Add packet to buffer list
149 {
150 NetSim_BUFFER* pstruBuffer = DEVICE_MAC_NW_INTERFACE(nDeviceId,nInterfaceId)->pstruAccessBuffer;
151 if(!pstruBuffer->pstruPacketlist)
152 {
160 }
161 fn_NetSim_Packet_AddPacketToList(pstruBuffer,pstruRSP,0);
162 }
163 //Add DSA-REP to CR metrics
164 pstruBSMAC->struBSMetrics.nDSA_REPSent++;
165 return 0;
166}
167/** A DSA-RSP message shall be generated in response to a received DSA-REQ message.
168If the transaction is successful, the DSA-RSP message may contain the following:
169
170Service Flow parameters (the completespecification of the service flow shall be included
171in the DSA-RSP if it includes a newly assigned FID or an expanded service class name)
172and CS parameter encodings (specification of the service flow’s CS-specific parameters).*/
174{
177 CPE_MAC* pstruCPEMAC = DEVICE_MACVAR(nDeviceId,nInterfaceId);
179 DSA_RSP* pstruDSA = pstruPacket->pstruMacData->Packet_MACProtocol;
180 if(!strcmp(pstruDSA->pstruIE.className,"BE"))
181 {
182 pstruCPEMAC->pstruServiceParameter->SFID[2] = pstruDSA->pstruIE.nSFID;
183 }
184 else if(!strcmp(pstruDSA->pstruIE.className,"ERTPS"))
185 {
186 pstruCPEMAC->pstruServiceParameter->SFID[4] = pstruDSA->pstruIE.nSFID;
187 }
188 else if(!strcmp(pstruDSA->pstruIE.className,"NRTPS"))
189 {
190 pstruCPEMAC->pstruServiceParameter->SFID[3] = pstruDSA->pstruIE.nSFID;
191 }
192 else if(!strcmp(pstruDSA->pstruIE.className,"UGS"))
193 {
194 pstruCPEMAC->pstruServiceParameter->SFID[5] = pstruDSA->pstruIE.nSFID;
195 }
196 else if(!strcmp(pstruDSA->pstruIE.className,"NULL"))
197 {
198 pstruCPEMAC->pstruServiceParameter->SFID[0] = pstruDSA->pstruIE.nSFID;
199 }
200 else if(!strcmp(pstruDSA->pstruIE.className,"RTPS"))
201 {
202 pstruCPEMAC->pstruServiceParameter->SFID[4] = pstruDSA->pstruIE.nSFID;
203 }
204 //Add DSA-REP to CR metrics
205 pstruCPEMAC->struCPEMetrics.nDSA_REPReceived++;
206 return 0;
207}
208/** Any service flow can be deleted with the DSD messages. When a service flow is deleted,
209all resources associated with it are released. If a service flow for a provisioned service
210is deleted, the ability to reestablish the service flow for that service is network
211management dependent. However, the deletion of a provisioned service flow shall not
212cause a CPE to reinitialize. */
213int fn_NetSim_TerminateServiceFlow(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET* pstruPacket)
214{
215 NetSim_PACKET* pstruDSD;
216 DSD_REQ* pstruREQ;
217 CPE_MAC* pstruCPEMAC = DEVICE_MACVAR(nDeviceId,nInterfaceId);
218 int nFID = fn_NetSim_CR_GetFID(pstruPacket->nQOS);
219 if(((GMH*)pstruPacket->pstruMacData->Packet_MACProtocol)->sz_Type[FRAGMANET_BIT] == '1')
220 {
221 FRAGMENT_SUB_HEADER* pstruFragment = ((GMH*)pstruPacket->pstruMacData->Packet_MACProtocol)->subheader[FRAGMANET_BIT];
222 if(pstruFragment->FC != B2_01)
223 return 1;
224 }
225 //Create the DSD packet
228 add_dest_to_packet(pstruDSD, pstruCPEMAC->nBSID);
229 pstruDSD->nPacketPriority = Priority_High;
231 pstruDSD->nReceiverId = pstruCPEMAC->nBSID;
232 pstruDSD->nSourceId = nDeviceId;
233 pstruDSD->nTransmitterId = nDeviceId;
238 pstruREQ = fnpAllocateMemory(1,sizeof * pstruREQ);
239 pstruREQ->type = MMM_DSD_REQ;
240 pstruREQ->nSFID = pstruCPEMAC->pstruServiceParameter->SFID[nFID];
241 pstruREQ->nTransactionID = ++g_nTransactionId;
242 pstruREQ->pstruIE.nSFDirection = UPSTREAM;
243 pstruREQ->pstruIE.nSFID = pstruREQ->nSFID;
244 switch(pstruPacket->nQOS)
245 {
246 case QOS_BE:
247 strcpy(pstruREQ->pstruIE.className,"BE");
248 break;
249 case QOS_ertPS:
250 strcpy(pstruREQ->pstruIE.className,"ERTPS");
251 break;
252 case QOS_nrtPS:
253 strcpy(pstruREQ->pstruIE.className,"NRTPS");
254 break;
255 case QOS_rtPS:
256 strcpy(pstruREQ->pstruIE.className,"RTPS");
257 break;
258 case QOS_UGS:
259 strcpy(pstruREQ->pstruIE.className,"UGS");
260 break;
261 default:
262 strcpy(pstruREQ->pstruIE.className,"NULL");
263 break;
264 }
265 pstruDSD->pstruMacData->Packet_MACProtocol = pstruREQ;
266 pstruDSD->pstruMacData->dOverhead = (double)(7+strlen(pstruREQ->pstruIE.className)+DSX_IE_FIXED_SIZE);
267 pstruDSD->pstruMacData->dPacketSize = pstruDSD->pstruMacData->dOverhead;
268 //Add packet to queued packet list
269 pstruDSD->pstruNextPacket = pstruCPEMAC->pstruQueuedPacketList[0];
270 pstruCPEMAC->pstruQueuedPacketList[0] = pstruDSD;
272 //Add DSD-REQ to CR metrics
273 pstruCPEMAC->struCPEMetrics.nDSD_REQSent++;
274 return 1;
275}
276/** A Dynamic Service Deletion Request (DSD-REQ) is sent by a CPE or BS to delete an
277existing service flow. */
279{
280 DSD_RSP* pstruDSDRSP;
281 NetSim_PACKET* pPacket;
284 BS_MAC* pstruBSMAC = DEVICE_MACVAR(nDeviceId,nInterfaceId);
286 DSD_REQ* pstruDSD = pstruPacket->pstruMacData->Packet_MACProtocol;
287 unsigned int nSID = pstruBSMAC->anSIDFromDevId[pstruPacket->nTransmitterId];
288 UPLINKALLOCINFO* pstruInfo = pstruBSMAC->uplinkAllocInfo;
289 UPLINKALLOCINFO* pstruPrevInfo=NULL;
290 //Add DSD-REQ to CR Metrics
291 pstruBSMAC->struBSMetrics.nDSD_REQReceived++;
292 while(pstruInfo)
293 {
294 if(nSID == pstruInfo->nSID && pstruInfo->nQoS == fnGetQOS(pstruDSD->pstruIE.className))
295 {
296 if(pstruPrevInfo)
297 {
298 pstruPrevInfo->next = pstruInfo->next;
299 free(pstruInfo);
300 }
301 else
302 {
303 pstruBSMAC->uplinkAllocInfo = pstruInfo->next;
304 free(pstruInfo);
305 }
306 break;
307 }
308 pstruPrevInfo = pstruInfo;
309 pstruInfo = pstruInfo->next;
310 }
311 //Create DSD rep packet
312 pstruDSDRSP = fnpAllocateMemory(1,sizeof* pstruDSDRSP);
313 pstruDSDRSP->nTransactionID = pstruDSD->nTransactionID;
314 pstruDSDRSP->nSFID = pstruDSD->nSFID;
315 pstruDSDRSP->pstruIE = pstruDSD->pstruIE;
316 pstruDSDRSP->type = MMM_DSD_REP;
319 add_dest_to_packet(pPacket, pstruPacket->nSourceId);
322 pPacket->nReceiverId = pstruPacket->nTransmitterId;
323 pPacket->nSourceId = get_first_dest_from_packet(pstruPacket);
324 pPacket->nTransmitterId = pstruPacket->nReceiverId;
326 pPacket->pstruMacData->dOverhead = (double)(DSX_IE_FIXED_SIZE + 8 + strlen(pstruDSDRSP->pstruIE.className));
327 pPacket->pstruMacData->dPacketSize = pPacket->pstruMacData->dOverhead;
329 pPacket->pstruMacData->Packet_MACProtocol = pstruDSDRSP;
330 //Add packet to buffer list
331 {
332 NetSim_BUFFER* pstruBuffer = DEVICE_MAC_NW_INTERFACE(nDeviceId,nInterfaceId)->pstruAccessBuffer;
333 fn_NetSim_Packet_AddPacketToList(pstruBuffer,pPacket,0);
334 }
335 //Add DSD-REP packet to CR metrics
336 pstruBSMAC->struBSMetrics.nDSD_REPSent++;
337 return 1;
338}
339/** A DSD-REP shall be generated in response to a received DSD-REQ. */
341{
344 CPE_MAC* pstruCPEMAC = (CPE_MAC*)DEVICE_MACVAR(nDeviceId,nInterfaceId);
346 DSD_RSP* pstruDSD = (DSD_RSP*)pstruPacket->pstruMacData->Packet_MACProtocol;
347 unsigned int nLoop;
348 for(nLoop=0;nLoop<MAX_FID;nLoop++)
349 {
350 if(pstruCPEMAC->pstruServiceParameter->SFID[nLoop] == pstruDSD->nSFID)
351 {
352 pstruCPEMAC->pstruServiceParameter->SFID[nLoop] = 0;
354 //Add DSD-REP to CR metrics
355 pstruCPEMAC->struCPEMetrics.nDSD_REPReceived++;
356 break;
357 }
358 }
359 return 0;
360}
QUALITY_OF_SERVICE fnGetQOS(char *Qos)
int fn_NetSim_CR_GetFID(QUALITY_OF_SERVICE nQOS)
@ MMM_DSD_REP
Definition: 802_22.h:189
@ MMM_DSA_REQ
Dynamic service addition request, This message is sent by BS or CPE to create new service request.
Definition: 802_22.h:182
@ MMM_DSA_RSP
This message is generated in response to DSA-REQ message.
Definition: 802_22.h:183
@ MMM_DSD_REQ
Dynamic service deletion request.
Definition: 802_22.h:188
#define B2_01
Definition: 802_22.h:26
#define CR_CONTROL_PACKET(MMM)
Definition: 802_22.h:235
int fn_NetSim_CR_AllocBandwidth(NETSIM_ID nSID, QUALITY_OF_SERVICE nQos, UPLINKALLOCINFO **ppstruInfo, unsigned int nSlotRequired, unsigned int nTotalSlot)
@ DSA_RSP_TIMEOUT
Definition: 802_22.h:153
@ DSA_RVD_TIMEOUT
Definition: 802_22.h:154
#define MAX_FID
Definition: 802_22.h:74
#define FRAGMANET_BIT
Definition: 802_22.h:65
unsigned int NETSIM_ID
Definition: Animation.h:45
#define NETSIM_ID
Definition: CLIInterface.h:46
int fn_NetSim_CR_BS_ProcessDSDReq()
Definition: DSx.c:278
int fn_NetSim_CR_BS_ProcessDSAReq()
Definition: DSx.c:111
int fn_NetSim_CR_CreateServiceFlow(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, int nId, NetSim_PACKET *packet, double dTime)
Definition: DSx.c:12
int fn_NetSim_CR_CPE_ProcessDSA_RSP()
Definition: DSx.c:173
int fn_NetSim_CR_CPE_ProcessDSD_REP()
Definition: DSx.c:340
int fn_NetSim_TerminateServiceFlow(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *pstruPacket)
Definition: DSx.c:213
#define DSX_IE_FIXED_SIZE
Definition: DSx.h:18
unsigned int g_nTransactionId
Definition: DSx.h:19
@ ServiceState_Adding_remote
Definition: DSx.h:25
@ ServiceState_Deleting
Definition: DSx.h:31
@ ServiceState_Deleted
Definition: DSx.h:32
@ ServiceState_Null
Definition: DSx.h:24
#define UPSTREAM
Definition: DSx.h:17
#define free(p)
Definition: Memory.h:31
#define fnpAllocateMemory(count, size)
Definition: Memory.h:34
@ QOS_UGS
Definition: Packet.h:88
@ QOS_BE
Definition: Packet.h:92
@ QOS_nrtPS
Definition: Packet.h:91
@ QOS_ertPS
Definition: Packet.h:90
@ QOS_rtPS
Definition: Packet.h:89
@ PacketType_Control
Definition: Packet.h:66
#define PACKET_MACPROTOCOLDATA(pPacket)
Definition: Packet.h:300
NETSIM_ID get_first_dest_from_packet(NetSim_PACKET *packet)
void add_dest_to_packet(NetSim_PACKET *packet, NETSIM_ID dest)
@ Priority_High
Definition: Packet.h:82
#define DEVICE_MAC_NW_INTERFACE(DeviceId, InterfaceId)
Definition: Stack.h:793
#define DEVICE_HWADDRESS(DeviceId, InterfaceId)
Definition: Stack.h:799
#define DEVICE_PHYVAR(DeviceId, InterfaceId)
Definition: Stack.h:797
@ MAC_PROTOCOL_IEEE802_22
Definition: Stack.h:210
EXPORTED struct stru_NetSim_Network * NETWORK
Definition: Stack.h:742
@ TIMER_EVENT
Definition: Stack.h:114
@ MAC_OUT_EVENT
Definition: Stack.h:106
@ MAC_LAYER
Definition: Stack.h:95
#define DEVICE_MACVAR(DeviceId, InterfaceId)
Definition: Stack.h:798
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
Definition: Stack.h:837
#define fn_NetSim_Packet_CopyPacket(pstruPacket)
Definition: main.h:182
#define fn_NetSim_Packet_CreatePacket(layer)
Definition: main.h:186
#define fnpAddEvent(pstruEvent)
Definition: main.h:191
#define fn_NetSim_Packet_AddPacketToList(pstruBuffer, pstruPacket, nInsertionType)
Definition: main.h:179
int * anSIDFromDevId
Have the list of CPE associated with BS. If SID is set CPE is associated else not.
Definition: 802_22.h:802
struct stru_802_22_UplinkAlloctioninfo * uplinkAllocInfo
Definition: 802_22.h:808
BS_METRICS struBSMetrics
Definition: 802_22.h:815
CPE structure for IEEE 802.22 MAC.
Definition: 802_22.h:869
double T7
Wait for DSA/DSC/DSD Response timeout. Max 1 sec.
Definition: 802_22.h:879
CPE_METRICS struCPEMetrics
Definition: 802_22.h:897
NETSIM_ID nBSID
Definition: 802_22.h:870
CR_SERVICE * pstruServiceParameter
Definition: 802_22.h:892
NetSim_PACKET * pstruQueuedPacketList[MAX_FID]
Definition: 802_22.h:891
double T14
Wait for DSx-RSP/DSX-RVD Timeout. Max 200 ms.
Definition: 802_22.h:883
NetSim_PACKET * pTemp[8]
Definition: DSx.h:38
unsigned int SFID[8]
Definition: DSx.h:36
SERVICE_STATE Status[8]
Definition: DSx.h:37
unsigned int nUPlinkSymbol
Definition: 802_22.h:988
int nOFDMSlots
OFDM Slot = 1 symbol * 1 subChannel.
Definition: 802_22.h:982
Structure to store application information.
Definition: Application.h:97
unsigned int nTransactionId
Definition: DSx.h:73
DSX_IE pstruIE
Definition: DSx.h:74
MANAGEMENT_MESSAGE type
Definition: DSx.h:72
DSX_IE pstruIE
Definition: DSx.h:84
unsigned int nTransactionID
Definition: DSx.h:82
MANAGEMENT_MESSAGE type
Definition: DSx.h:81
DSX_IE pstruIE
Definition: DSx.h:94
unsigned int nTransactionID
Definition: DSx.h:92
MANAGEMENT_MESSAGE type
Definition: DSx.h:91
unsigned int nSFID
Definition: DSx.h:93
MANAGEMENT_MESSAGE type
Definition: DSx.h:101
DSX_IE pstruIE
Definition: DSx.h:104
unsigned int nTransactionID
Definition: DSx.h:102
unsigned int nSFID
Definition: DSx.h:103
unsigned int nSFDirection
Definition: DSx.h:45
unsigned int nSFID
Definition: DSx.h:46
char className[10]
Definition: DSx.h:47
unsigned int maxSustainedTrafficrate
Definition: DSx.h:49
unsigned int nDSA_REQReceived
Definition: 802_22.h:631
unsigned int nDSD_REPSent
Definition: 802_22.h:636
unsigned int nDSD_REQReceived
Definition: 802_22.h:633
unsigned int nDSA_REPSent
Definition: 802_22.h:632
unsigned int nDSA_REPReceived
Definition: 802_22.h:665
unsigned int nDSD_REQSent
Definition: 802_22.h:664
unsigned int nDSA_REQSent
Definition: 802_22.h:662
unsigned int nDSD_REPReceived
Definition: 802_22.h:667
struct stru_NetSim_Packet * pstruPacketlist
Definition: Stack.h:585
netsimDEVICE_TYPE nDeviceType
Definition: Stack.h:711
NETSIM_ID nApplicationId
Definition: Stack.h:752
EVENT_TYPE nEventType
Definition: Stack.h:747
NETSIM_ID nProtocolId
Definition: Stack.h:748
struct stru_NetSim_Packet * pPacket
Definition: Stack.h:754
NETSIM_ID nSubEventType
Definition: Stack.h:757
NETSIM_ID nDeviceId
Definition: Stack.h:750
long long int nPacketId
Definition: Stack.h:755
netsimDEVICE_TYPE nDeviceType
Definition: Stack.h:749
NETSIM_ID nInterfaceId
Definition: Stack.h:751
void ** appInfo
Definition: Stack.h:739
struct stru_NetSim_Device ** ppstruDeviceList
Definition: Stack.h:737
MAC_LAYER_PROTOCOL nMACProtocol
Definition: Packet.h:223
PNETSIM_MACADDRESS szSourceMac
Definition: Packet.h:220
struct stru_NetSim_Packet_AppLayer * pstruAppData
Definition: Packet.h:273
NETSIM_ID nReceiverId
Definition: Packet.h:266
unsigned int nControlDataType
Definition: Packet.h:258
struct stru_NetSim_Packet * pstruNextPacket
Definition: Packet.h:278
NETSIM_ID nTransmitterId
Definition: Packet.h:265
QUALITY_OF_SERVICE nQOS
Definition: Packet.h:261
PACKET_TYPE nPacketType
Definition: Packet.h:257
PACKET_PRIORITY nPacketPriority
Definition: Packet.h:260
NETSIM_ID nSourceId
Definition: Packet.h:263
struct stru_NetSim_Packet_MACLayer * pstruMacData
Definition: Packet.h:276