diff options
author | paul <paul> | 2003-04-28 17:07:26 +0000 |
---|---|---|
committer | paul <paul> | 2003-04-28 17:07:26 +0000 |
commit | a7182ddbaf0fe97453a9f2dfda5cc65b7fb3a1a8 (patch) | |
tree | ca8303e1d66bdc7d5a80e4e94b4fcb062715cabc /ospf6d/ospf6_asbr.c | |
parent | 47b8ec7ee87e5c8efe552c515523ed60875f3767 (diff) | |
download | quagga-zebra.org.20030428.tar.bz2 quagga-zebra.org.20030428.tar.xz |
Import of Zebra CVS 20030428-18:07zebra.org.20030428
Diffstat (limited to 'ospf6d/ospf6_asbr.c')
-rw-r--r-- | ospf6d/ospf6_asbr.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c index 00a2b66c..56ed1a6c 100644 --- a/ospf6d/ospf6_asbr.c +++ b/ospf6d/ospf6_asbr.c @@ -412,8 +412,9 @@ ospf6_asbr_external_lsa_refresh (void *data) struct ospf6_lsa_as_external *e; struct prefix prefix; struct route_node *node; - struct ospf6_external_route *route; - struct ospf6_external_info *info; + struct ospf6_external_route *route = NULL; + struct ospf6_external_info *info = NULL; + struct ospf6_external_info *match = NULL; if (IS_OSPF6_DUMP_ASBR) zlog_info ("ASBR: refresh %s", lsa->str); @@ -424,6 +425,29 @@ ospf6_asbr_external_lsa_refresh (void *data) prefix.family = AF_INET6; apply_mask_ipv6 ((struct prefix_ipv6 *) &prefix); + for (node = route_top (external_table); node; node = route_next (node)) + { + route = node->info; + if (route == NULL) + continue; + + for (info = route->info_head; info; info = info->next) + { + if (lsa->header->id == htonl (info->id)) + match = info; + } + } + + if (match == NULL) + { + ospf6_lsa_premature_aging (lsa); + return 0; + } + + ospf6_asbr_schedule_external (match); + return 0; + +#if 0 node = route_node_lookup (external_table, &prefix); if (! node || ! node->info) { @@ -450,6 +474,7 @@ ospf6_asbr_external_lsa_refresh (void *data) ospf6_lsa_premature_aging (lsa); return 0; +#endif } void |