36 strcpy(stype,
"IGMP_LEAVE_GROUP");
40 strcpy(stype,
"IGMP_V2_Membership_Report");
44 strcpy(stype,
"IGMP_Membership_Query");
73 memcpy(ret, msg,
sizeof* ret);
140 memset(&pevent, 0,
sizeof pevent);
197 bool isContinue =
true;
235 bool isStartup =
true;
248 for (i = 0; i <
DEVICE(d)->nNumOfInterface; i++)
void igmp_start_timer(NETSIM_ID d, IP_SUBEVENT sev, NETSIM_IPAddress addr, double time)
bool router_process_report(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
ptrIGMP_ROUTER_DB router_get_multicast_db(NETSIM_ID d, NETSIM_IPAddress ip)
bool router_process_query(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
bool host_process_report(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
bool host_process_query(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
#define isBroadcastInterface(d, i)
#define GET_IGMP_ROUTER(d)
struct stru_igmp_msg * ptrIGMP_MSG
@ IGMPMSG_MembershipQuery
@ IGMPMSG_V2MembershipReport
static UINT8 make_resp_time(UINT T)
static void set_IGMP_MSG(NetSim_PACKET *packet, ptrIGMP_MSG msg)
bool igmp_process_query(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
static ptrIGMP_MSG get_IGMP_MSG(NetSim_PACKET *packet)
void send_membership_report(NETSIM_ID d, NETSIM_IPAddress group)
void IGMP_FreePacket(NetSim_PACKET *packet)
void process_igmp_packet()
void send_query_msg(NETSIM_ID d, NETSIM_IPAddress group, double time)
static void send_igmp_packet(NETSIM_ID d, double time, NetSim_PACKET *packet)
static void free_igmp_hdr(ptrIGMP_MSG msg)
static ptrIGMP_MSG copy_igmp_hdr(ptrIGMP_MSG msg)
void copy_igmp_packet(NetSim_PACKET *d, NetSim_PACKET *s)
static int get_ctrlpackettype_basedon_igmptype(IGMPMSG_TYPE type, char *stype)
static NetSim_PACKET * create_igmp_packet(NETSIM_ID src, NETSIM_ID ifId, NETSIM_ID dest, IGMPMSG_TYPE type, NETSIM_IPAddress group, UINT maxRespTime, UINT8 ttl)
static bool igmp_process_report(NetSim_PACKET *packet, ptrIGMP_MSG msg, NETSIM_ID d)
static ptrIGMP_MSG create_igmp_hdr(IGMPMSG_TYPE type, UINT8 maxRespTime, NETSIM_IPAddress group)
@ EVENT_IGMP_SendStartupQuery
NETSIM_IPAddress IP_COPY(NETSIM_IPAddress ip)
#define fnNetSimError(x,...)
void add_dest_to_packet(NetSim_PACKET *packet, NETSIM_ID dest)
#define DEVICE_TYPE(DeviceId)
#define DEVICE_NWADDRESS(DeviceId, InterfaceId)
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
bool isRouter(NETSIM_ID d)
#define fn_NetSim_Packet_CreatePacket(layer)
#define fn_NetSim_Packet_FreePacket(pstruPacket)
#define fnpAddEvent(pstruEvent)
struct stru_NetSim_Packet * pPacket
netsimDEVICE_TYPE nDeviceType
IP_PROTOCOL_NUMBER IPProtocol
NETWORK_LAYER_PROTOCOL nNetworkProtocol
NETSIM_IPAddress szDestIP
void * Packet_NetworkProtocol
NETSIM_IPAddress szSourceIP
char szPacketType[MAX_PACKET_TYPE_LEN]
struct stru_NetSim_Packet_NetworkLayer * pstruNetworkData
unsigned int nControlDataType
PACKET_PRIORITY nPacketPriority
NETSIM_IPAddress GroupAddress
UINT QueryResponseInterval