diff options
| author | paul <paul> | 2006-01-11 01:08:19 +0000 | 
|---|---|---|
| committer | paul <paul> | 2006-01-11 01:08:19 +0000 | 
| commit | 1a643f88b238147dc2cfbe137d9feae7e3f3546e (patch) | |
| tree | 8855528746546e29dd645d80a6df22eb84bb351a /ospfd/ospf_neighbor.c | |
| parent | 818e56cf2723843377d2881a6b81b8adc0fe9160 (diff) | |
[ospfd] Bug #234. Fix nbr_self reinitialisation after down/up.
2006-01-10 Len Sorensen <lennartsorensen@ruggedcom.com>
	* (general) Bug #234, see also [quagga-dev 3902].
	  Fix problem with nbr_self not being properly reinitialised
	  when an interface comes up, after having been down.
	  Some re-arrangement done by Paul Jakma, any bugs introduced
	  on top of Len's suggested changes are his.
	* ospf_neighbor.c: (ospf_nbr_add_self) centralise
	  initialisation of nbr_self parameters here.
	* ospf_interface.c: (ospf_if_new) deleting initialisation of
	  parameters of nbr_self, just rely on call to
	  ospf_nbr_add_self.
	  (ospf_if_cleanup) ditto.
	* ospfd.c: (ospf_network_run) ditto.
Diffstat (limited to 'ospfd/ospf_neighbor.c')
| -rw-r--r-- | ospfd/ospf_neighbor.c | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/ospfd/ospf_neighbor.c b/ospfd/ospf_neighbor.c index 5c1a7627a8..58752366eb 100644 --- a/ospfd/ospf_neighbor.c +++ b/ospfd/ospf_neighbor.c @@ -202,6 +202,27 @@ ospf_nbr_add_self (struct ospf_interface *oi)      }    else      rn->info = oi->nbr_self; +   +  /* Initial state */ +  oi->nbr_self->address = *oi->address; +  oi->nbr_self->priority = OSPF_IF_PARAM (oi, priority); +  oi->nbr_self->router_id = oi->ospf->router_id; +  oi->nbr_self->src = oi->address->u.prefix4; +  oi->nbr_self->state = NSM_TwoWay; +   +  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; +      case OSPF_AREA_NSSA: +        UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_E); +        SET_FLAG (oi->nbr_self->options, OSPF_OPTION_NP); +        break; +    }  }  /* Get neighbor count by status.  | 
