15#ifndef _NETSIM_PIM_MSG_H_
16#define _NETSIM_PIM_MSG_H_
39 typedef enum enum_pim_msg_type
49 PIMMSG_CandidateRPAdvertisement,
67 }PIM_HDR, *ptrPIM_HDR;
86 NETSIM_IPAddress unicastAddr;
87 }ENCODED_UNICAST_ADDR, *ptrENCODED_UNICAST_ADDR;
88#define ENCODED_UNICAST_ADDR_LEN 6
111 NETSIM_IPAddress GroupMulticastAddr;
112 }ENCODED_GROUP_ADDR, *ptrENCODED_GROUP_ADDR;
113#define ENCODED_GROUP_ADDR_LEN 8
137 NETSIM_IPAddress SourceAddr;
138 }ENCODED_SOURCE_ADDR, *ptrENCODED_SOURCE_ADDR;
139#define ENCODED_SOURCE_ADDR_LEN 8
146 }PIM_HELLO_OPTION, *ptrPIM_HELLO_OPTION;
147#define PIM_HELLO_OPTION_LEN 4
163 }OPTION_HOLDTIME, *ptrOPTION_HOLDTIME;
164#define PIM_OPTION_HOLDTIME_LEN 2
165#define PIM_OPTION_HOLDTIME_TYPE 1
181 UINT propagationDelay : 15;
182 UINT16 overrideInterval;
183 }OPTION_LANPRUNEDELAY, *ptrOPTION_LANPRUNEDELAY;
184#define PIM_OPTION_LANPRUNEDELAY_LEN 4
185#define PIM_OPTION_LANPRUNEDELAY_TYPE 2
201 }OPTION_DRPRIORITY, *ptrOPTION_DRPRIORITY;
202#define PIM_OPTION_DRPRIORITY_LEN 4
203#define PIM_OPTION_DRPRIORITY_TYPE 19
219 }OPTION_GENERATIONID, *ptrOPTION_GENERATIONID;
220#define PIM_OPTION_GENERATIONID_LEN 4
221#define PIM_OPTION_GENERATIONID_TYPE 20
241 ptrENCODED_UNICAST_ADDR* SeconadayAddr;
242 }OPTION_ADDRLIST, *ptrOPTION_ADDRLIST;
243#define PIM_OPTION_ADDRLIST_LEN 0
244#define PIM_OPTION_ADDRLIST_TYPE 24
276 ptrPIM_HELLO_OPTION* option;
277 }PIM_HELLO, *ptrPIM_HELLO;
278#define PIM_HELLO_LEN 0
307 void* multicastDataPacket;
308 }PIM_REGISTERMSG, *ptrPIM_REGISTERMSG;
331 ptrENCODED_GROUP_ADDR groupAddr;
332 ptrENCODED_SOURCE_ADDR sourceAddr;
333 }PIM_REGISTERSTOPMSG, *ptrPIM_REGISTERSTOPMSG;
393 ptrENCODED_GROUP_ADDR multicastAddr;
394 UINT numJoinedSource;
395 UINT numPrunedSource;
396 ptrENCODED_SOURCE_ADDR* joinedSourceAddr;
397 ptrENCODED_SOURCE_ADDR* pruneSourceAddr;
398 }PIM_JOINMSG_GROUP, *ptrPIM_JOINMSG_GROUP;
403 ptrENCODED_UNICAST_ADDR unicastAddr;
407 ptrPIM_JOINMSG_GROUP* groups;
408 }PIM_JOINPRUNE_MSG,*ptrPIM_JOINPRUNE_MSG;
409#define PIM_JP_MSG_LEN (ENCODED_UNICAST_ADDR_LEN+4)
412 void* get_PIM_MSG(NetSim_PACKET* packet);
413 void set_PIM_MSG(NetSim_PACKET* packet,
void* msg);
414 void set_pim_hdr(ptrPIM_HDR hdr, PIMMSG type);
415 NetSim_PACKET* create_pim_packet(PIMMSG type,
419 NETSIM_IPAddress sourceAddrss,
422 NETSIM_IPAddress group,
424 void send_pim_msg(NETSIM_ID d,
double time, NetSim_PACKET* packet);
425 ptrENCODED_UNICAST_ADDR encode_unicast_addr(NETSIM_IPAddress ip);
426 ptrENCODED_SOURCE_ADDR encode_source_addr(NETSIM_IPAddress ip, NETSIM_IPAddress subnet);
427 ptrENCODED_GROUP_ADDR encode_group_addr(NETSIM_IPAddress ip);