[Linux-decnet-commit] CVS: dnprogs/dnroute get_neigh.c,1.12,1.13
Brought to you by:
chrissie_c,
ph3-der-loewe
From: Patrick C. <pa...@us...> - 2006-04-26 14:17:49
|
Update of /cvsroot/linux-decnet/dnprogs/dnroute In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25588 Modified Files: get_neigh.c Log Message: Make it a bit more level1 friendly. Index: get_neigh.c =================================================================== RCS file: /cvsroot/linux-decnet/dnprogs/dnroute/get_neigh.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** get_neigh.c 7 Apr 2006 12:59:57 -0000 1.12 --- get_neigh.c 26 Apr 2006 14:17:44 -0000 1.13 *************** *** 200,236 **** /* Areas */ ! for (i=1; i<64; i++) { ! if (area_table[i].valid) { ! struct nodeinfo *n; ! unsigned short area_node = area_table[i].router; ! char *ifname = ""; ! ! if (first) { ! first = 0; ! fprintf(fp, "\n Area Cost Hops Next Hop to Area\n"); ! } ! if (!area_node) /* Local */ ! { ! area_node = exec_addr->a_addr[1] << 8 | exec_addr->a_addr[0]; ! ifname = "(local)"; ! } ! n = dm_hash_lookup_binary(node_hash, (void*)&area_table[i].router, 2); ! dn_addr[0] = area_node & 0xFF; ! dn_addr[1] = area_node>>8; ! ne = getnodebyaddr((const char *)dn_addr, 2, AF_DECnet); ! fprintf(fp, " %3d %3d %3d %-7s -> %2d.%-4d %s %s\n", ! i, area_table[i].cost, area_table[i].hops, ! n?if_index_to_name(n->interface):ifname, ! area_node>>10, area_node & 0x03FF, ! ne?ne->n_name:"", ! area_table[i].manual?"(M)":""); } } /* Nodes */ --- 200,251 ---- /* Areas */ ! if (send_level2) { ! for (i=1; i<64; i++) { ! if (area_table[i].valid) { ! struct nodeinfo *n; ! unsigned short area_node = area_table[i].router; ! char *ifname = ""; ! if (first) ! { ! first = 0; ! fprintf(fp, "\n Area Cost Hops Next Hop to Area\n"); ! } ! if (!area_node) /* Local */ ! { ! area_node = exec_addr->a_addr[1] << 8 | exec_addr->a_addr[0]; ! ifname = "(local)"; ! } ! ! n = dm_hash_lookup_binary(node_hash, (void*)&area_table[i].router, 2); ! dn_addr[0] = area_node & 0xFF; ! dn_addr[1] = area_node>>8; ! ne = getnodebyaddr((const char *)dn_addr, 2, AF_DECnet); ! fprintf(fp, " %3d %3d %3d %-7s -> %2d.%-4d %s %s\n", ! i, area_table[i].cost, area_table[i].hops, ! n?if_index_to_name(n->interface):ifname, ! area_node>>10, area_node & 0x03FF, ! ne?ne->n_name:"", ! area_table[i].manual?"(M)":""); ! } } } + else + { + int area = exec_addr->a_addr[1] >> 2; + unsigned short area_node = area_table[area].router; + dn_addr[0] = area_node & 0xFF; + dn_addr[1] = area_node >> 8; + ne = getnodebyaddr((const char *)dn_addr, 2, AF_DECnet); + + fprintf(fp, "\nThe next hop to the nearest area router is node %d.%d %s\n\n", + area_node>>10, area_node & 1023, + ne?ne->n_name:""); + } /* Nodes */ *************** *** 522,527 **** static void add_area_routeinfo(unsigned short area, int cost, int hops, unsigned short from_node) { ! /* Don't add a local area route */ ! if (area == (exec_addr->a_addr[1] >> 2)) { area_table[area].cost = 0; --- 537,542 ---- static void add_area_routeinfo(unsigned short area, int cost, int hops, unsigned short from_node) { ! /* Don't add a local area route if we're the area router */ ! if (area == (exec_addr->a_addr[1] >> 2) && send_level2) { area_table[area].cost = 0; *************** *** 903,907 **** nodeaddr = (buf[11]<<8) | buf[10]; ! level = buf[12] & 0x3; priority = buf[15]; --- 918,922 ---- nodeaddr = (buf[11]<<8) | buf[10]; ! level = 3-(buf[12] & 0x3); priority = buf[15]; *************** *** 1050,1058 **** /* ! * Add an entry for our area. If we are running this, we must assume ! * this node is a router ! */ ! area_table[exec_addr->a_addr[1]>>2].router = 0; ! area_table[exec_addr->a_addr[1]>>2].valid = 1; /* Start it off */ --- 1065,1079 ---- /* ! * Add an entry for our area. If we are a level2 router, then it's us. */ ! if (send_level2) ! { ! area_table[exec_addr->a_addr[1]>>2].router = 0; ! area_table[exec_addr->a_addr[1]>>2].valid = 1; ! } ! ! /* Set the local area to "manual control" so we don't force all ! traffic through a local router */ ! area_table[exec_addr->a_addr[1]>>2].manual = 1; /* Start it off */ |