summaryrefslogtreecommitdiff
path: root/ospfd/ospf_asbr.c
diff options
context:
space:
mode:
authorajs <ajs>2004-12-08 17:28:56 +0000
committerajs <ajs>2004-12-08 17:28:56 +0000
commite84cc647f194593ebd1805422376f2a30e3e06e3 (patch)
tree1a2fcbc233df7d3c143d13fce2b19c83da63bccc /ospfd/ospf_asbr.c
parentb9e7028fb2f626e1d345c6d52ace0567a410647f (diff)
2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* *.c: Change level of debug messages to LOG_DEBUG.
Diffstat (limited to 'ospfd/ospf_asbr.c')
-rw-r--r--ospfd/ospf_asbr.c46
1 files changed, 26 insertions, 20 deletions
diff --git a/ospfd/ospf_asbr.c b/ospfd/ospf_asbr.c
index d13bbc43..71093d95 100644
--- a/ospfd/ospf_asbr.c
+++ b/ospfd/ospf_asbr.c
@@ -43,15 +43,16 @@
#include "ospfd/ospf_route.h"
#include "ospfd/ospf_zebra.h"
#include "ospfd/ospf_dump.h"
+
/* Remove external route. */
void
-ospf_external_route_remove (struct prefix_ipv4 *p)
+ospf_external_route_remove (struct ospf *ospf, struct prefix_ipv4 *p)
{
struct route_node *rn;
struct ospf_route *or;
- rn = route_node_lookup (ospf_top->old_external_route, (struct prefix *) p);
+ rn = route_node_lookup (ospf->old_external_route, (struct prefix *) p);
if (rn)
if ((or = rn->info))
{
@@ -76,11 +77,12 @@ ospf_external_route_remove (struct prefix_ipv4 *p)
/* Lookup external route. */
struct ospf_route *
-ospf_external_route_lookup (struct prefix_ipv4 *p)
+ospf_external_route_lookup (struct ospf *ospf,
+ struct prefix_ipv4 *p)
{
struct route_node *rn;
- rn = route_node_lookup (ospf_top->old_external_route, (struct prefix *) p);
+ rn = route_node_lookup (ospf->old_external_route, (struct prefix *) p);
if (rn)
{
route_unlock_node (rn);
@@ -166,7 +168,7 @@ ospf_external_info_add (u_char type, struct prefix_ipv4 p,
rn->info = new;
if (IS_DEBUG_OSPF (lsa, LSA_GENERATE))
- zlog_info ("Redistribute[%s]: %s/%d external info created.",
+ zlog_debug ("Redistribute[%s]: %s/%d external info created.",
LOOKUP (ospf_redistributed_proto, type),
inet_ntoa (p.prefix), p.prefixlen);
return new;
@@ -203,14 +205,15 @@ ospf_external_info_lookup (u_char type, struct prefix_ipv4 *p)
}
struct ospf_lsa *
-ospf_external_info_find_lsa (struct prefix_ipv4 *p)
+ospf_external_info_find_lsa (struct ospf *ospf,
+ struct prefix_ipv4 *p)
{
struct ospf_lsa *lsa;
struct as_external_lsa *al;
struct in_addr mask, id;
- lsa = ospf_lsdb_lookup_by_id (ospf_top->lsdb, OSPF_AS_EXTERNAL_LSA,
- p->prefix, ospf_top->router_id);
+ lsa = ospf_lsdb_lookup_by_id (ospf->lsdb, OSPF_AS_EXTERNAL_LSA,
+ p->prefix, ospf->router_id);
if (!lsa)
return NULL;
@@ -222,8 +225,8 @@ ospf_external_info_find_lsa (struct prefix_ipv4 *p)
if (mask.s_addr != al->mask.s_addr)
{
id.s_addr = p->prefix.s_addr | (~mask.s_addr);
- lsa = ospf_lsdb_lookup_by_id (ospf_top->lsdb, OSPF_AS_EXTERNAL_LSA,
- id, ospf_top->router_id);
+ lsa = ospf_lsdb_lookup_by_id (ospf->lsdb, OSPF_AS_EXTERNAL_LSA,
+ id, ospf->router_id);
if (!lsa)
return NULL;
}
@@ -234,7 +237,7 @@ ospf_external_info_find_lsa (struct prefix_ipv4 *p)
/* Update ASBR status. */
void
-ospf_asbr_status_update (u_char status)
+ospf_asbr_status_update (struct ospf *ospf, u_char status)
{
zlog_info ("ASBR[Status:%d]: Update", status);
@@ -242,46 +245,49 @@ ospf_asbr_status_update (u_char status)
if (status)
{
/* Already ASBR. */
- if (OSPF_IS_ASBR)
+ if (IS_OSPF_ASBR (ospf))
{
zlog_info ("ASBR[Status:%d]: Already ASBR", status);
return;
}
- SET_FLAG (ospf_top->flags, OSPF_FLAG_ASBR);
+ SET_FLAG (ospf->flags, OSPF_FLAG_ASBR);
}
else
{
/* Already non ASBR. */
- if (! OSPF_IS_ASBR)
+ if (! IS_OSPF_ASBR (ospf))
{
zlog_info ("ASBR[Status:%d]: Already non ASBR", status);
return;
}
- UNSET_FLAG (ospf_top->flags, OSPF_FLAG_ASBR);
+ UNSET_FLAG (ospf->flags, OSPF_FLAG_ASBR);
}
/* Transition from/to status ASBR, schedule timer. */
- ospf_spf_calculate_schedule ();
- OSPF_TIMER_ON (ospf_top->t_router_lsa_update,
+ ospf_spf_calculate_schedule (ospf);
+ OSPF_TIMER_ON (ospf->t_router_lsa_update,
ospf_router_lsa_update_timer, OSPF_LSA_UPDATE_DELAY);
}
void
ospf_redistribute_withdraw (u_char type)
{
+ struct ospf *ospf;
struct route_node *rn;
struct external_info *ei;
+ ospf = ospf_lookup ();
+
/* Delete external info for specified type. */
if (EXTERNAL_INFO (type))
for (rn = route_top (EXTERNAL_INFO (type)); rn; rn = route_next (rn))
if ((ei = rn->info))
- if (ospf_external_info_find_lsa (&ei->p))
+ if (ospf_external_info_find_lsa (ospf, &ei->p))
{
if (is_prefix_default (&ei->p) &&
- ospf_top->default_originate != DEFAULT_ORIGINATE_NONE)
+ ospf->default_originate != DEFAULT_ORIGINATE_NONE)
continue;
- ospf_external_lsa_flush (type, &ei->p, ei->ifindex, ei->nexthop);
+ ospf_external_lsa_flush (ospf, type, &ei->p, ei->ifindex, ei->nexthop);
ospf_external_info_delete (type, ei->p);
}
}