[Linux-decnet-commit] CVS: dnprogs/dnroute get_neigh.c,1.7,1.8
Brought to you by:
chrissie_c,
ph3-der-loewe
|
From: Patrick C. <pa...@us...> - 2006-04-05 08:13:29
|
Update of /cvsroot/linux-decnet/dnprogs/dnroute In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10510 Modified Files: get_neigh.c Log Message: Show the device for a node-router. cope better with machines that have two NICS on one ethernet Index: get_neigh.c =================================================================== RCS file: /cvsroot/linux-decnet/dnprogs/dnroute/get_neigh.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** get_neigh.c 5 Apr 2006 07:17:44 -0000 1.7 --- get_neigh.c 5 Apr 2006 08:13:24 -0000 1.8 *************** *** 247,250 **** --- 247,251 ---- char *routername = NULL; unsigned short router; + int interface = 0; if (first) *************** *** 261,266 **** --- 262,270 ---- nodename = strdup(ne->n_name); + /* Is this node behind a level 1 router ? */ if (node_table[i].router) { + struct nodeinfo *rn; + router = node_table[i].router; dn_addr[0] = router & 0xFF; *************** *** 269,272 **** --- 273,279 ---- if (ne) routername = strdup(ne->n_name); + rn = dm_hash_lookup_binary(node_hash, (void *)&router, 2); + if (rn) + interface = rn->interface; } else *************** *** 274,277 **** --- 281,286 ---- router = exec_addr->a_addr[1] << 8 | i; routername = nodename; + if (n) + interface = n->interface; } *************** *** 280,284 **** nodename?nodename:"", node_table[i].cost, node_table[i].hops, ! n?if_index_to_name(n->interface):"????", router>>10, router & 0x3FF, routername?routername:""); --- 289,293 ---- nodename?nodename:"", node_table[i].cost, node_table[i].hops, ! if_index_to_name(interface), router>>10, router & 0x3FF, routername?routername:""); *************** *** 563,566 **** --- 572,580 ---- area, node, if_index_to_name(interface), interface, n?n->interface:0); + /* If this node has already been scanned then ignore it. + This can happen if a node has two NICS on one ethernet + and we don't want routes to flip-flop */ + if (n && n->scanned) + return 0; /* If it's not there or the interface has changed then |