diff -c zebra-0.93a/ospf6d/ChangeLog zebra/ospf6d/ChangeLog *** ospf6d/ChangeLog Mon Jul 8 22:31:02 2002 --- ospf6d/ChangeLog Fri Jul 19 20:23:52 2002 *************** *** 1,3 **** --- 1,18 ---- + 2002-07-14 Yasuhiro Ohara + + * ospf6_dbex.c: bug that ospf6d fails to refresh self-originated + LSA if he have not the LSA before has been fixed. + * ospf6_asbr.c: bug of failing removing ASE LSA when remove + message arrived from zebra has been fixed. + * version: 0.9.6k + + 2002-07-13 Yasuhiro Ohara + + * ospf6_zebra.c: bug reported [zebra 14642] fixed. + The bug was related to the synchronization between zebra + and ospf6d. Now synchronization will be correctly done. + * version: 0.9.6j + 2002-07-07 Yasuhiro Ohara * ospf6_lsdb.c: bug fixed in ospf6_lsdb_type_router (). Only in zebra/ospf6d: Makefile diff -c zebra-0.93a/ospf6d/ospf6_area.c zebra/ospf6d/ospf6_area.c *** ospf6d/ospf6_area.c Mon Jul 8 22:31:02 2002 --- ospf6d/ospf6_area.c Sat Jul 13 02:22:41 2002 *************** *** 100,127 **** void - ospf6_area_intra_topo_add (struct ospf6_route_req *topo_entry) - { - if (topo_entry->route.type == OSPF6_DEST_TYPE_ROUTER) - { - if (CHECK_FLAG (topo_entry->path.router_bits, OSPF6_ROUTER_LSA_BIT_B)) - ospf6_abr_abr_entry_add (topo_entry); - } - CALL_ADD_HOOK (&intra_topology_hook, topo_entry); - } - - void - ospf6_area_intra_topo_remove (struct ospf6_route_req *topo_entry) - { - if (topo_entry->route.type == OSPF6_DEST_TYPE_ROUTER) - { - if (CHECK_FLAG (topo_entry->path.router_bits, OSPF6_ROUTER_LSA_BIT_E)) - ospf6_abr_abr_entry_add (topo_entry); - } - CALL_REMOVE_HOOK (&intra_topology_hook, topo_entry); - } - - void ospf6_area_route_add (void *data) { struct ospf6_route_req *route = data; --- 100,105 ---- diff -c zebra-0.93a/ospf6d/ospf6_asbr.c zebra/ospf6d/ospf6_asbr.c *** ospf6d/ospf6_asbr.c Mon Jul 8 22:31:02 2002 --- ospf6d/ospf6_asbr.c Fri Jul 19 20:23:52 2002 *************** *** 117,123 **** struct ospf6_lsa *lsa; lsa = ospf6_lsdb_lookup_lsdb (htons (OSPF6_LSA_TYPE_AS_EXTERNAL), ! htonl (route->path.origin.id), ospf6->router_id, ospf6->lsdb); if (lsa) ospf6_lsa_premature_aging (lsa); --- 117,123 ---- struct ospf6_lsa *lsa; lsa = ospf6_lsdb_lookup_lsdb (htons (OSPF6_LSA_TYPE_AS_EXTERNAL), ! route->path.origin.id, ospf6->router_id, ospf6->lsdb); if (lsa) ospf6_lsa_premature_aging (lsa); *************** *** 417,422 **** --- 417,425 ---- struct ospf6_route_req route, *target; assert (ospf6); + + if (IS_OSPF6_DUMP_ASBR) + zlog_info ("ASBR: refresh %s", lsa->str); target = NULL; for (ospf6_route_head (&route, ospf6->external_table); diff -c zebra-0.93a/ospf6d/ospf6_dbex.c zebra/ospf6d/ospf6_dbex.c *** ospf6d/ospf6_dbex.c Mon Jul 8 22:31:02 2002 --- ospf6d/ospf6_dbex.c Fri Jul 19 20:23:52 2002 *************** *** 361,367 **** /* (f) */ /* Self Originated LSA, section 13.4 */ if (received->lsa_hdr->lsh_advrtr == ospf6->router_id ! && have && ismore_recent < 0) { /* we're going to make new lsa or to flush this LSA. */ if (IS_OSPF6_DUMP_DBEX) --- 361,367 ---- /* (f) */ /* Self Originated LSA, section 13.4 */ if (received->lsa_hdr->lsh_advrtr == ospf6->router_id ! && (! have || ismore_recent < 0)) { /* we're going to make new lsa or to flush this LSA. */ if (IS_OSPF6_DUMP_DBEX) diff -c zebra-0.93a/ospf6d/ospf6_intra.c zebra/ospf6d/ospf6_intra.c *** ospf6d/ospf6_intra.c Mon Jul 8 22:31:02 2002 --- ospf6d/ospf6_intra.c Sat Jul 13 02:22:41 2002 *************** *** 37,42 **** --- 37,52 ---- struct ospf6_route_req request; struct ospf6_area *area; + if (IS_OSPF6_DUMP_INTRA) + { + char buf[64]; + struct prefix_ls *p_ls; + p_ls = (struct prefix_ls *) &topo_entry->route.prefix; + inet_ntop (AF_INET, &p_ls->adv_router, buf, sizeof (buf)); + zlog_info ("INTRA: Calculate [%s] %s and %s", + (type == ADD ? "add" : "remove"), lsa->str, buf); + } + intra_prefix = OSPF6_LSA_HEADER_END (lsa->header); area = lsa->scope; *************** *** 198,207 **** ! ospf6_lsdb_is_end (&node); ospf6_lsdb_next (&node)) { - if (IS_OSPF6_DUMP_INTRA) - zlog_info ("INTRA: topology hook: Examining %s (%p)", - node.lsa->str, node.lsa); - if (IS_LSA_MAXAGE (node.lsa)) continue; --- 208,213 ---- diff -c zebra-0.93a/ospf6d/ospf6_lsa.c zebra/ospf6d/ospf6_lsa.c *** ospf6d/ospf6_lsa.c Mon Jul 8 22:31:02 2002 --- ospf6d/ospf6_lsa.c Fri Jul 19 20:23:53 2002 *************** *** 775,780 **** --- 775,781 ---- { struct ospf6_lsa *lsa; struct ospf6_lsdb *lsdb = NULL; + void (*hook) (struct ospf6_lsa *, struct ospf6_lsa *); lsa = (struct ospf6_lsa *) THREAD_ARG (thread); assert (lsa && lsa->lsa_hdr); *************** *** 804,815 **** else assert (0); ! #if 0 ! if (lsdb->hook) ! (*lsdb->hook) (lsa, NULL); ! #else /*0*/ ! CALL_REMOVE_HOOK (&database_hook, lsa); ! #endif /*0*/ /* do not free LSA, and do nothing about lslists. wait event (ospf6_lsdb_check_maxage) */ --- 805,815 ---- else assert (0); ! /* call LSDB hook to re-process LSA */ ! hook = ospf6_lsdb_hook[ntohs (lsa->header->type) & ! OSPF6_LSTYPE_CODE_MASK].hook; ! if (hook) ! (*hook) (NULL, lsa); /* do not free LSA, and do nothing about lslists. wait event (ospf6_lsdb_check_maxage) */ diff -c zebra-0.93a/ospf6d/ospf6_route.c zebra/ospf6d/ospf6_route.c *** ospf6d/ospf6_route.c Sun Jul 7 17:12:48 2002 --- ospf6d/ospf6_route.c Wed Jul 10 18:26:56 2002 *************** *** 1013,1018 **** --- 1013,1022 ---- struct prefix_ls *pl = (struct prefix_ls *) &prefix; struct route_node *node; + u_int route_count = 0; + u_int path_count = 0; + u_int route_redundant = 0; + memset (&prefix, 0, sizeof (struct prefix)); for (i = 0; i < argc; i++) *************** *** 1101,1114 **** for (node = route_top (table->table); node; node = route_next (node)) { ! if (! node->info) continue; if (detail) ! ospf6_route_show_detail (vty, node->info); else ! ospf6_route_show (vty, node->info); } return CMD_SUCCESS; } --- 1105,1129 ---- for (node = route_top (table->table); node; node = route_next (node)) { ! struct ospf6_route_node *route = node->info; ! ! if (! route) continue; if (detail) ! ospf6_route_show_detail (vty, route); else ! ospf6_route_show (vty, route); ! ! route_count++; ! path_count += route->path_list->count; ! if (route->path_list->count > 1) ! route_redundant++; } + + vty_out (vty, "===========%s", VTY_NEWLINE); + vty_out (vty, "Route: %d Path: %d Redundant: %d%s", + route_count, path_count, route_redundant, VTY_NEWLINE); return CMD_SUCCESS; } diff -c zebra-0.93a/ospf6d/ospf6_zebra.c zebra/ospf6d/ospf6_zebra.c *** ospf6d/ospf6_zebra.c Sun Jul 7 17:12:48 2002 --- ospf6d/ospf6_zebra.c Wed Jul 24 15:54:33 2002 *************** *** 433,442 **** linklist_add (nexthop, nexthop_list); } ! if (type == REMOVE && nexthop_list->count == 0) { ! if (! ospf6_route_end (&route)) ! ospf6_route_next (&route); if (! memcmp (&request->route, &route.route, sizeof (struct ospf6_route))) { --- 433,445 ---- linklist_add (nexthop, nexthop_list); } ! if (type == REMOVE && nexthop_list->count != 0) ! type = ADD; ! else if (type == REMOVE && nexthop_list->count == 0) { ! if (IS_OSPF6_DUMP_ZEBRA) ! zlog_info ("ZEBRA: all nexthop with the selected path has gone"); ! if (! memcmp (&request->route, &route.route, sizeof (struct ospf6_route))) { *************** *** 444,450 **** struct ospf6_path seconde_path; if (IS_OSPF6_DUMP_ZEBRA) ! zlog_info ("ZEBRA: find alternative path to add"); linklist_remove (nexthop, nexthop_list); XFREE (MTYPE_OSPF6_OTHER, nexthop); --- 447,453 ---- struct ospf6_path seconde_path; if (IS_OSPF6_DUMP_ZEBRA) ! zlog_info ("ZEBRA: found alternative path to add"); linklist_remove (nexthop, nexthop_list); XFREE (MTYPE_OSPF6_OTHER, nexthop); *************** *** 476,481 **** --- 479,491 ---- requested route */ if (IS_OSPF6_DUMP_ZEBRA) zlog_info ("ZEBRA: can't find alternative path, remove"); + + if (IS_OSPF6_DUMP_ZEBRA) + { + zlog_info ("ZEBRA: Debug: walk over the route ?"); + ospf6_route_log_request ("Debug route", "***", &route); + ospf6_route_log_request ("Debug request", "***", request); + } nexthop = XCALLOC (MTYPE_OSPF6_OTHER, sizeof (struct ospf6_nexthop)); Only in zebra/ospf6d: ospf6_zebra.c.orig diff -c zebra-0.93a/ospf6d/ospf6d.h zebra/ospf6d/ospf6d.h *** ospf6d/ospf6d.h Mon Jul 8 22:31:04 2002 --- ospf6d/ospf6d.h Fri Jul 19 20:23:53 2002 *************** *** 74,80 **** #define HASHVAL 64 #define MAXIOVLIST 1024 ! #define OSPF6_DAEMON_VERSION "0.9.6i" #define AF_LINKSTATE 0xff --- 74,80 ---- #define HASHVAL 64 #define MAXIOVLIST 1024 ! #define OSPF6_DAEMON_VERSION "0.9.6k" #define AF_LINKSTATE 0xff