summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_interface.c
diff options
context:
space:
mode:
authorPaul Jakma <paul@quagga.net>2009-10-13 16:13:13 +0100
committerPaul Jakma <paul@quagga.net>2010-12-08 17:13:14 +0000
commit7eb5b47e54169ac0da40ed1a6760db5d5f915a4d (patch)
tree8d70f87bea20b07f2bbc753a3661c9be9058e1ef /ospfd/ospf_interface.c
parentaa276fd783f5cdbeefe22bf54109fe523a465e07 (diff)
downloadquagga-7eb5b47e54169ac0da40ed1a6760db5d5f915a4d.tar.bz2
quagga-7eb5b47e54169ac0da40ed1a6760db5d5f915a4d.tar.xz
ospfd: Remember network LSA sequence numbers across up/downs of an interface
* ospf_interface.h: (struct ospf_if_params) add field for saved network LSA seqnum * ospf_interfa.c: (ospf_new_if_params) init network_lsa_seqnum field to initial seqnum - doesnt matter though. * ospf_lsa.c: (ospf_network_lsa_new) check for any saved sequence number, and use if it exists. Save the result back. This should help avoid needless round of LSUpdate/LSRequests when a neighbour has to tell the originator "uhm, i have something newer than that already". * ospf_vty.c: (show_ip_ospf_interface_sub) Show the saved network LSA seqnum
Diffstat (limited to 'ospfd/ospf_interface.c')
-rw-r--r--ospfd/ospf_interface.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c
index b3336589..a812dd90 100644
--- a/ospfd/ospf_interface.c
+++ b/ospfd/ospf_interface.c
@@ -531,6 +531,8 @@ ospf_new_if_params (void)
oip->auth_crypt = list_new ();
+ oip->network_lsa_seqnum = htonl(OSPF_INITIAL_SEQUENCE_NUMBER);
+
return oip;
}
@@ -569,7 +571,8 @@ ospf_free_if_params (struct interface *ifp, struct in_addr addr)
!OSPF_IF_PARAM_CONFIGURED (oip, type) &&
!OSPF_IF_PARAM_CONFIGURED (oip, auth_simple) &&
!OSPF_IF_PARAM_CONFIGURED (oip, auth_type) &&
- listcount (oip->auth_crypt) == 0)
+ listcount (oip->auth_crypt) == 0 &&
+ ntohl (oip->network_lsa_seqnum) != OSPF_INITIAL_SEQUENCE_NUMBER)
{
ospf_del_if_params (oip);
rn->info = NULL;