* ospf_abr.c: (ospf_area_range_cost_set) Shouldn't create a new
range, should just lookup to see if one exists, the new range
is just leaked. Fixes CID #46.
+ * ospf_lsa.c: (ospf_default_originate_timer) Let the thread
+ take (struct ospf *) as thread argument, rather than (struct
+ ospf *)->default_originate, thus avoiding having to call
+ ospf_lookup.
+ * ospf_zebra.c: (ospf_redistribute_default_set) change setup
+ of ospf_default_originate_timer thread to match.
+ * ospfd.c: (ospf_router_id_update) ditto.
2006-04-24 Paul Jakma <paul.jakma@sun.com>
int
ospf_default_originate_timer (struct thread *thread)
{
- int *origin;
struct prefix_ipv4 p;
struct in_addr nexthop;
struct external_info *ei;
struct ospf *ospf;
- ospf = ospf_lookup ();
-
- /* Get originate flags. */
- origin = THREAD_ARG (thread);
+ ospf = THREAD_ARG (thread);
p.family = AF_INET;
p.prefix.s_addr = 0;
p.prefixlen = 0;
- if (*origin == DEFAULT_ORIGINATE_ALWAYS)
+ if (ospf->default_originate == DEFAULT_ORIGINATE_ALWAYS)
{
/* If there is no default route via redistribute,
then originate AS-external-LSA with nexthop 0 (self). */
if (ospf->router_id.s_addr == 0)
ospf->external_origin |= (1 << DEFAULT_ROUTE);
else
- thread_add_timer (master, ospf_default_originate_timer,
- &ospf->default_originate, 1);
+ thread_add_timer (master, ospf_default_originate_timer, ospf, 1);
ospf_asbr_status_update (ospf, ++ospf->redistribute);
ospf, type);
/* Originate Deafult. */
if (ospf->external_origin & (1 << ZEBRA_ROUTE_MAX))
- thread_add_event (master, ospf_default_originate_timer,
- &ospf->default_originate, 0);
+ thread_add_event (master, ospf_default_originate_timer, ospf, 0);
ospf->external_origin = 0;
}