summaryrefslogtreecommitdiff
path: root/ospfd/ospfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospfd/ospfd.c')
-rw-r--r--ospfd/ospfd.c43
1 files changed, 17 insertions, 26 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 05433ccb95..726ce329e3 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -314,22 +314,19 @@ struct ospf *ospf_new_alloc(unsigned short instance, const char *name)
new->instance = instance;
new->router_id.s_addr = htonl(0);
new->router_id_static.s_addr = htonl(0);
- if (name) {
- vrf = vrf_lookup_by_name(name);
- if (vrf)
- new->vrf_id = vrf->vrf_id;
- else
- new->vrf_id = VRF_UNKNOWN;
- /* Freed in ospf_finish_final */
- new->name = XSTRDUP(MTYPE_OSPF_TOP, name);
- if (IS_DEBUG_OSPF_EVENT)
- zlog_debug(
- "%s: Create new ospf instance with vrf_name %s vrf_id %u",
- __func__, name, new->vrf_id);
- } else {
- new->vrf_id = VRF_DEFAULT;
- vrf = vrf_lookup_by_id(VRF_DEFAULT);
- }
+
+ vrf = vrf_lookup_by_name(name);
+ if (vrf)
+ new->vrf_id = vrf->vrf_id;
+ else
+ new->vrf_id = VRF_UNKNOWN;
+
+ /* Freed in ospf_finish_final */
+ new->name = XSTRDUP(MTYPE_OSPF_TOP, name);
+ if (IS_DEBUG_OSPF_EVENT)
+ zlog_debug(
+ "%s: Create new ospf instance with vrf_name %s vrf_id %u",
+ __func__, name, new->vrf_id);
if (vrf)
ospf_vrf_link(new, vrf);
@@ -409,6 +406,8 @@ struct ospf *ospf_new_alloc(unsigned short instance, const char *name)
ospf_opaque_type11_lsa_init(new);
+ SET_FLAG(new->config, OSPF_SEND_EXTRA_DATA_TO_ZEBRA);
+
QOBJ_REG(new, ospf);
new->fd = -1;
@@ -479,9 +478,6 @@ struct ospf *ospf_lookup_by_inst_name(unsigned short instance, const char *name)
struct ospf *ospf = NULL;
struct listnode *node, *nnode;
- if (name == NULL || strmatch(name, VRF_DEFAULT_NAME))
- return ospf_lookup_by_vrf_id(VRF_DEFAULT);
-
for (ALL_LIST_ELEMENTS(om->ospf, node, nnode, ospf)) {
if ((ospf->instance == instance)
&& ((ospf->name == NULL && name == NULL)
@@ -911,8 +907,7 @@ static void ospf_finish_final(struct ospf *ospf)
if (vrf)
ospf_vrf_unlink(ospf, vrf);
- if (ospf->name)
- XFREE(MTYPE_OSPF_TOP, ospf->name);
+ XFREE(MTYPE_OSPF_TOP, ospf->name);
XFREE(MTYPE_OSPF_TOP, ospf);
}
@@ -2211,10 +2206,6 @@ static int ospf_vrf_enable(struct vrf *vrf)
ospf = ospf_lookup_by_name(vrf->name);
if (ospf) {
- if (ospf->name && strmatch(vrf->name, VRF_DEFAULT_NAME)) {
- XFREE(MTYPE_OSPF_TOP, ospf->name);
- ospf->name = NULL;
- }
old_vrf_id = ospf->vrf_id;
/* We have instance configured, link to VRF and make it "up". */
ospf_vrf_link(ospf, vrf);
@@ -2283,7 +2274,7 @@ static int ospf_vrf_disable(struct vrf *vrf)
void ospf_vrf_init(void)
{
vrf_init(ospf_vrf_new, ospf_vrf_enable, ospf_vrf_disable,
- ospf_vrf_delete, ospf_vrf_enable);
+ ospf_vrf_delete);
}
void ospf_vrf_terminate(void)