Ejemplo n.º 1
0
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);
		}
	}
}
Ejemplo n.º 2
0
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);


}
Ejemplo n.º 3
0
void rtfinalize2()
{
	printf("node2: final table:\n");
	printdt2(&dt2);
}