summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_interface.c
diff options
context:
space:
mode:
authorpaul <paul>2002-12-13 21:44:27 +0000
committerpaul <paul>2002-12-13 21:44:27 +0000
commitfdc64b8740747007d9fc8587f1ecbd4c4e2b50c0 (patch)
tree1dd622d1305d29f9d934406298dbb35bdc4eebf4 /ospfd/ospf_interface.c
parentda773e4239ae3046bfe66b53a3f32b4948ff5724 (diff)
downloadquagga-patch.z16681.ospfd.nssa.tar.bz2
quagga-patch.z16681.ospfd.nssa.tar.xz
Kevin C Miller <kevinm@andrew.cmu.edu>patch.z16681.ospfd.nssa
[zebra 16681] OSPF NSSA Patches
Diffstat (limited to 'ospfd/ospf_interface.c')
-rw-r--r--ospfd/ospf_interface.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c
index ddae9800..f0300273 100644
--- a/ospfd/ospf_interface.c
+++ b/ospfd/ospf_interface.c
@@ -257,7 +257,22 @@ ospf_if_cleanup (struct ospf_interface *oi)
oi->nbr_self = ospf_nbr_new (oi);
oi->nbr_self->state = NSM_TwoWay;
oi->nbr_self->priority = OSPF_IF_PARAM (oi, priority);
- oi->nbr_self->options = OSPF_OPTION_E;
+
+ switch (oi->area->external_routing)
+ {
+ case OSPF_AREA_DEFAULT:
+ SET_FLAG (oi->nbr_self->options, OSPF_OPTION_E);
+ break;
+ case OSPF_AREA_STUB:
+ UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_E);
+ break;
+#ifdef HAVE_NSSA
+ case OSPF_AREA_NSSA:
+ UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_E);
+ SET_FLAG (oi->nbr_self->options, OSPF_OPTION_NP);
+ break;
+#endif /* HAVE_NSSA */
+ }
ospf_lsa_unlock (oi->network_lsa_self);
oi->network_lsa_self = NULL;