summaryrefslogtreecommitdiffstats
path: root/ospf6d
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ChangeLog6
-rw-r--r--ospf6d/ospf6_asbr.c29
-rw-r--r--ospf6d/ospf6d.h2
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