16#include "RPL_Message.h"
18#define check_if_dis_needed(rpl) (rpl->joined_dodag == NULL)
20void rpl_dis_pdu_send()
22 NETSIM_ID d = pstruEventDetails->nDeviceId;
23 double time = pstruEventDetails->dEventTime;
24 PRPL_NODE rpl = GET_RPL_NODE(d);
27 pstruEventDetails->dEventTime += rpl->DISInterval;
28 fnpAddEvent(pstruEventDetails);
30 bool isdisneeded = check_if_dis_needed(rpl);
34 NetSim_PACKET* dis_pdu = create_dis_message(d, time);
36 rpl_node_send_msg(d, dis_pdu);
40void rpl_process_dis_msg()
42 NETSIM_ID d = pstruEventDetails->nDeviceId;
43 double t = pstruEventDetails->dEventTime;
45 NetSim_PACKET* dio_pdu = create_current_dio_message(d, t, TRUE);
48 rpl_node_send_msg(d, dio_pdu);
51void rpl_dis_msg_destroy(NetSim_PACKET* packet)
53 PRPL_CTRL_MSG rpl = packet->pstruNetworkData->Packet_RoutingProtocol;
54 PRPL_DIS_BASE b = rpl->Base;
57 for (i = 0; i < rpl->option_count; i++)
58 rpl_option_destroy(rpl->options[i]);
62void rpl_dis_msg_copy(
const NetSim_PACKET* destPacket,
const NetSim_PACKET* srcPacket)
64 PRPL_CTRL_MSG srpl = srcPacket->pstruNetworkData->Packet_RoutingProtocol;
65 PRPL_CTRL_MSG drpl = (PRPL_CTRL_MSG)calloc(1,
sizeof* drpl);
66 memcpy(drpl, srpl,
sizeof* drpl);
67 destPacket->pstruNetworkData->Packet_RoutingProtocol = drpl;
69 PRPL_DIS_BASE b = srpl->Base;
70 PRPL_DIS_BASE db = (PRPL_DIS_BASE)calloc(1,
sizeof* db);
71 memcpy(db, b,
sizeof* db);
75 for (i = 0; i < srpl->option_count; i++)
76 drpl->options[i] = rpl_option_copy(srpl->options[i]);