diff options
Diffstat (limited to 'ospf6d')
-rw-r--r-- | ospf6d/ChangeLog | 6 | ||||
-rw-r--r-- | ospf6d/ospf6_asbr.c | 29 | ||||
-rw-r--r-- | ospf6d/ospf6d.h | 2 |
3 files changed, 34 insertions, 3 deletions
diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog index b7871c13..8a8c0bfd 100644 --- a/ospf6d/ChangeLog +++ b/ospf6d/ChangeLog @@ -1,3 +1,9 @@ +2003-04-25 Yasuhiro Ohara <yasu@sfc.wide.ad.jp> + + * ospf6_asbr.c: AS-External LSA refresh was based on the + prefix of the obsolete LSA. It was wrong so fixed. + * version: 0.9.6p + 2002-11-09 Vincent Jardin <jardin@6wind.com> * ospf6_interface.c: update link-local address on interface creation. 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 diff --git a/ospf6d/ospf6d.h b/ospf6d/ospf6d.h index e0d310a9..862b3828 100644 --- a/ospf6d/ospf6d.h +++ b/ospf6d/ospf6d.h @@ -73,7 +73,7 @@ #define HASHVAL 64 #define MAXIOVLIST 1024 -#define OSPF6_DAEMON_VERSION "0.9.6o" +#define OSPF6_DAEMON_VERSION "0.9.6p" #define AF_LINKSTATE 0xff |