void rtupdate2(struct rtpkt *rcvdpkt) { int current_node = 2; printf("node2: current table\n"); printdt2(&dt2); int i = 0; int update_neighbors = 0; //update our table. int id = rcvdpkt->sourceid; int k = 0; int is_neighbor = 0; for (i = 0; i < 4; i++) { if (i == current_node){ continue; } if (dt2.costs[i][rcvdpkt->sourceid] > dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid] + rcvdpkt->mincost[i]) { update_neighbors = 1; /* printf("i: %i\n", i); printf("rcvdpkt->sourceid: %i\n", rcvdpkt->sourceid); printf("dt2.costs[i][rcvdpkt->sourceid]: %i\n", dt2.costs[i][rcvdpkt->sourceid]); printf("dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid]: %i\n", dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid]); printf("mincost[i]: %i\n", rcvdpkt->mincost[i]);*/ dt2.costs[i][rcvdpkt->sourceid] = dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid] + rcvdpkt->mincost[i]; } } printf("node2: new table\n"); printdt2(&dt2); printf("node2: updating neighbors\n"); if (update_neighbors == 1) { // update neighboring nodes. for (i = 0; i < 4; i++) { if (i == current_node) { continue; } struct rtpkt pkt; pkt.sourceid = current_node; pkt.destid = i; pkt.mincost[0] = mincost2(0); pkt.mincost[1] = mincost2(1); pkt.mincost[2] = mincost2(2); pkt.mincost[3] = mincost2(3); tolayer2(pkt); } } }
void rtupdate2(struct rtpkt *rcvdpkt) { int i,j,k, changedFlg = 0; int source = rcvdpkt -> sourceid; for (i = 0; i < 4; i++) { dt2.costs[source][i] = rcvdpkt -> mincost[i]; } for (j = 0; j < 4; j++) { for (k = 0; k < 4; k++) { if (dt2.costs[node][j] > (dt2.costs[node][k] + dt2.costs[k][j])) { dt2.costs[node][j] = dt2.costs[node][k] + dt2.costs[k][j]; changedFlg = 1; } } } // inform all the neighbors if our mindist table has changed if (changedFlg != 0) send2Neighbors(); if (TRACE == 1) printdt2(&dt2); }
void rtfinalize2() { printf("node2: final table:\n"); printdt2(&dt2); }