+++ /dev/null
-diff -ru quagga.a/ospfd/ospf_lsa.h quagga.b/ospfd/ospf_lsa.h
---- quagga.a/ospfd/ospf_lsa.h 2011-03-23 11:04:36.144939371 +0100
-+++ quagga.b/ospfd/ospf_lsa.h 2011-03-23 11:03:11.226321351 +0100
-@@ -114,6 +114,9 @@
-
- /* Refreshement List or Queue */
- int refresh_list;
-+
-+ /* For Type-9 Opaque-LSAs */
-+ struct ospf_interface *oi;
- };
-
- /* OSPF LSA Link Type. */
-diff -ru quagga.a/ospfd/ospf_nsm.c quagga.b/ospfd/ospf_nsm.c
---- quagga.a/ospfd/ospf_nsm.c 2011-03-23 11:04:36.134938356 +0100
-+++ quagga.b/ospfd/ospf_nsm.c 2011-03-23 11:03:11.229655023 +0100
-@@ -216,7 +216,7 @@
- {
- case OSPF_OPAQUE_LINK_LSA:
- /* Exclude type-9 LSAs that does not have the same "oi" with "nbr". */
-- if (lsa->oi != nbr->oi)
-+ if (nbr->oi && ospf_if_exists (lsa->oi) != nbr->oi)
- return 0;
- break;
- case OSPF_OPAQUE_AREA_LSA:
-diff -ru quagga.a/ospfd/ospf_opaque.c quagga.b/ospfd/ospf_opaque.c
---- quagga.a/ospfd/ospf_opaque.c 2011-03-23 11:04:36.144939371 +0100
-+++ quagga.b/ospfd/ospf_opaque.c 2011-03-23 11:03:11.229655023 +0100
-@@ -251,7 +251,7 @@
- void (* config_write_debug )(struct vty *vty);
- void (* show_opaque_info )(struct vty *vty, struct ospf_lsa *lsa);
- int (* lsa_originator)(void *arg);
-- void (* lsa_refresher )(struct ospf_lsa *lsa);
-+ struct ospf_lsa *(* lsa_refresher )(struct ospf_lsa *lsa);
- int (* new_lsa_hook)(struct ospf_lsa *lsa);
- int (* del_lsa_hook)(struct ospf_lsa *lsa);
- };
-@@ -354,7 +354,7 @@
- void (* config_write_debug )(struct vty *vty),
- void (* show_opaque_info )(struct vty *vty, struct ospf_lsa *lsa),
- int (* lsa_originator)(void *arg),
-- void (* lsa_refresher )(struct ospf_lsa *lsa),
-+ struct ospf_lsa *(* lsa_refresher )(struct ospf_lsa *lsa),
- int (* new_lsa_hook)(struct ospf_lsa *lsa),
- int (* del_lsa_hook)(struct ospf_lsa *lsa))
- {
-@@ -1608,12 +1608,13 @@
- return new;
- }
-
--void
-+struct ospf_lsa *
- ospf_opaque_lsa_refresh (struct ospf_lsa *lsa)
- {
- struct ospf *ospf;
- struct ospf_opaque_functab *functab;
--
-+ struct ospf_lsa *new = NULL;
-+
- ospf = ospf_lookup ();
-
- if ((functab = ospf_opaque_functab_lookup (lsa)) == NULL
-@@ -1633,9 +1634,9 @@
- ospf_lsa_flush (ospf, lsa);
- }
- else
-- (* functab->lsa_refresher)(lsa);
-+ new = (* functab->lsa_refresher)(lsa);
-
-- return;
-+ return new;
- }
-
- /*------------------------------------------------------------------------*
---- quagga.a/ospfd/ospf_opaque.h 2011-03-23 11:04:36.141605700 +0100
-+++ quagga.b/ospfd/ospf_opaque.h 2011-03-23 11:03:11.229655023 +0100
-@@ -120,7 +120,7 @@
- void (* config_write_debug )(struct vty *vty),
- void (* show_opaque_info )(struct vty *vty, struct ospf_lsa *lsa),
- int (* lsa_originator)(void *arg),
-- void (* lsa_refresher )(struct ospf_lsa *lsa),
-+ struct ospf_lsa *(* lsa_refresher )(struct ospf_lsa *lsa),
- int (* new_lsa_hook)(struct ospf_lsa *lsa),
- int (* del_lsa_hook)(struct ospf_lsa *lsa)
- );
-@@ -143,7 +143,7 @@
- int *init_delay);
- extern struct ospf_lsa *ospf_opaque_lsa_install (struct ospf_lsa *,
- int rt_recalc);
--extern void ospf_opaque_lsa_refresh (struct ospf_lsa *lsa);
-+extern struct ospf_lsa *ospf_opaque_lsa_refresh (struct ospf_lsa *lsa);
-
- extern void ospf_opaque_lsa_reoriginate_schedule (void *lsa_type_dependent,
- u_char lsa_type,