20#ifndef _NETSIM_IERP_H_
21#define _NETSIM_IERP_H_
26#define IERP_ROUTE_REQUEST_SIZE_FIXED 16
27#define IERP_ROUTE_REPLY_SIZE_FIXED 16
34#define NW_PROTOCOL_IERP NW_PROTOCOL_ZRP
61#define ROUTE_REQUEST 1
63#define IERP_PACKET_LENGTH(size) size*8/32
68 unsigned char NodePtr;
69 unsigned char RESERVED;
70 unsigned short int QueryID;
71 unsigned short int RESERVED1;
72 NETSIM_IPAddress RouteSourceAddress;
73 unsigned int IntermediateNodeCount;
74 NETSIM_IPAddress* IntermediateNodeAddress;
75 NETSIM_IPAddress RouteDestinationAddress;
95 NETSIM_IPAddress DestAddr;
96 NETSIM_IPAddress SubnetMask;
98 NETSIM_IPAddress* Route;
99 unsigned int* RouteMetrics;
103#define IERP_ROUTE_TABLE_ALLOC() (IERP_ROUTE_TABLE*)list_alloc(sizeof(IERP_ROUTE_TABLE),offsetof(IERP_ROUTE_TABLE,ele))
107 NetSim_PACKET* buffer;
108 IERP_ROUTE_TABLE* routeTable;
109 unsigned short int nQueryId;
113 int fn_NetSim_IERP_Init();
114 IERP_ROUTE_TABLE* checkDestInRouteTable(IERP_ROUTE_TABLE* table,NETSIM_IPAddress dest);
115 int flushIerpTable(NODE_IERP* ierp);
116 int addToIERPTableFromIARP(NODE_IERP* ierp, ptrIP_ROUTINGTABLE iarpTable);
117 int extractRouteFromreply(IERP_PACKET* reply);
118 int flushIERPTableFromIARP(NODE_IERP* ierp, ptrIP_ROUTINGTABLE iarpTable);
119 int fn_NetSim_IERP_CopyIerpHeader(
const NetSim_PACKET* destPacket,
const NetSim_PACKET* srcPacket);
120 int fn_NetSim_IERP_FreeIerpHeader(NetSim_PACKET* packet);
121 int fn_NetSim_IERP_GenerateRouteReply(NetSim_PACKET* requestPacket);
122 int fn_NetSim_IERP_GenerateRouteRequest(NODE_IERP* ierp,NetSim_PACKET* dataPacket);
123 bool fn_NetSim_IERP_ProcessPacket(NetSim_PACKET* packet);
124 int fn_NetSim_IERP_ProcessRouteReply();
125 int fn_NetSim_IERP_RoutePacket();
126 int routePacketFromBuffer();