summaryrefslogtreecommitdiff
path: root/ospf6d
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_flood.c9
-rw-r--r--ospf6d/ospf6_interface.c9
-rw-r--r--ospf6d/ospf6_lsa.c13
-rw-r--r--ospf6d/ospf6_lsa.h2
-rw-r--r--ospf6d/ospf6_main.c1
-rw-r--r--ospf6d/ospf6_message.c6
-rw-r--r--ospf6d/ospf6_top.c9
-rw-r--r--ospf6d/ospf6d.c8
-rw-r--r--ospf6d/subdir.am30
9 files changed, 52 insertions, 35 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 85d02c186b..b144c6804e 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -332,11 +332,12 @@ void ospf6_flood_interface(struct ospf6_neighbor *from, struct ospf6_lsa *lsa,
if (req == on->last_ls_req) {
/* sanity check refcount */
assert(req->lock >= 2);
- ospf6_lsa_unlock(req);
+ req = ospf6_lsa_unlock(req);
on->last_ls_req = NULL;
}
- ospf6_lsdb_remove(req,
- on->request_list);
+ if (req)
+ ospf6_lsdb_remove(
+ req, on->request_list);
ospf6_check_nbr_loading(on);
continue;
}
@@ -348,7 +349,7 @@ void ospf6_flood_interface(struct ospf6_neighbor *from, struct ospf6_lsa *lsa,
zlog_debug(
"Received is newer, remove requesting");
if (req == on->last_ls_req) {
- ospf6_lsa_unlock(req);
+ req = ospf6_lsa_unlock(req);
on->last_ls_req = NULL;
}
if (req)
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 93265afc43..1209997514 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -1943,8 +1943,13 @@ static int config_write_ospf6_interface(struct vty *vty)
return 0;
}
+static int config_write_ospf6_interface(struct vty *vty);
static struct cmd_node interface_node = {
- INTERFACE_NODE, "%s(config-if)# ", 1 /* VTYSH */
+ .name = "interface",
+ .node = INTERFACE_NODE,
+ .parent_node = CONFIG_NODE,
+ .prompt = "%s(config-if)# ",
+ .config_write = config_write_ospf6_interface,
};
static int ospf6_ifp_create(struct interface *ifp)
@@ -2001,7 +2006,7 @@ static int ospf6_ifp_destroy(struct interface *ifp)
void ospf6_interface_init(void)
{
/* Install interface node. */
- install_node(&interface_node, config_write_ospf6_interface);
+ install_node(&interface_node);
if_cmd_init();
if_zapi_callbacks(ospf6_ifp_create, ospf6_ifp_up,
ospf6_ifp_down, ospf6_ifp_destroy);
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index bcfd975879..9e7479c797 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -397,10 +397,10 @@ void ospf6_lsa_show_summary(struct vty *vty, struct ospf6_lsa *lsa)
(unsigned long)ntohl(lsa->header->seqnum),
handler->lh_get_prefix_str(lsa, buf, sizeof(buf), 0));
} else if (type != OSPF6_LSTYPE_UNKNOWN) {
- sprintf(tmpbuf, "%-4s %-15s%-15s%4hu %8lx",
- ospf6_lstype_short_name(lsa->header->type), id,
- adv_router, ospf6_lsa_age_current(lsa),
- (unsigned long)ntohl(lsa->header->seqnum));
+ snprintf(tmpbuf, sizeof(tmpbuf), "%-4s %-15s%-15s%4hu %8lx",
+ ospf6_lstype_short_name(lsa->header->type), id,
+ adv_router, ospf6_lsa_age_current(lsa),
+ (unsigned long)ntohl(lsa->header->seqnum));
while (handler->lh_get_prefix_str(lsa, buf, sizeof(buf), cnt)
!= NULL) {
@@ -608,16 +608,17 @@ void ospf6_lsa_lock(struct ospf6_lsa *lsa)
}
/* decrement reference counter of struct ospf6_lsa */
-void ospf6_lsa_unlock(struct ospf6_lsa *lsa)
+struct ospf6_lsa *ospf6_lsa_unlock(struct ospf6_lsa *lsa)
{
/* decrement reference counter */
assert(lsa->lock > 0);
lsa->lock--;
if (lsa->lock != 0)
- return;
+ return lsa;
ospf6_lsa_delete(lsa);
+ return NULL;
}
diff --git a/ospf6d/ospf6_lsa.h b/ospf6d/ospf6_lsa.h
index 02f9f9d26c..5519dd1b80 100644
--- a/ospf6d/ospf6_lsa.h
+++ b/ospf6d/ospf6_lsa.h
@@ -227,7 +227,7 @@ extern void ospf6_lsa_delete(struct ospf6_lsa *lsa);
extern struct ospf6_lsa *ospf6_lsa_copy(struct ospf6_lsa *);
extern void ospf6_lsa_lock(struct ospf6_lsa *);
-extern void ospf6_lsa_unlock(struct ospf6_lsa *);
+extern struct ospf6_lsa *ospf6_lsa_unlock(struct ospf6_lsa *);
extern int ospf6_lsa_expire(struct thread *);
extern int ospf6_lsa_refresh(struct thread *);
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index e4bed7a79d..4dbe5ca321 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -168,6 +168,7 @@ struct quagga_signal_t ospf6_signals[] = {
static const struct frr_yang_module_info *const ospf6d_yang_modules[] = {
&frr_interface_info,
&frr_route_map_info,
+ &frr_vrf_info,
};
FRR_DAEMON_INFO(ospf6d, OSPF6, .vty_port = OSPF6_VTY_PORT,
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index 21f9b0722c..31862a2298 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1948,9 +1948,9 @@ int ospf6_lsreq_send(struct thread *thread)
}
if (last_req != NULL) {
- if (on->last_ls_req != NULL) {
- ospf6_lsa_unlock(on->last_ls_req);
- }
+ if (on->last_ls_req != NULL)
+ on->last_ls_req = ospf6_lsa_unlock(on->last_ls_req);
+
ospf6_lsa_lock(last_req);
on->last_ls_req = last_req;
}
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index dc10fa52cb..dd672dd1c5 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -1112,16 +1112,21 @@ static int config_write_ospf6(struct vty *vty)
return 0;
}
+static int config_write_ospf6(struct vty *vty);
/* OSPF6 node structure. */
static struct cmd_node ospf6_node = {
- OSPF6_NODE, "%s(config-ospf6)# ", 1 /* VTYSH */
+ .name = "ospf6",
+ .node = OSPF6_NODE,
+ .parent_node = CONFIG_NODE,
+ .prompt = "%s(config-ospf6)# ",
+ .config_write = config_write_ospf6,
};
/* Install ospf related commands. */
void ospf6_top_init(void)
{
/* Install ospf6 top node. */
- install_node(&ospf6_node, config_write_ospf6);
+ install_node(&ospf6_node);
install_element(VIEW_NODE, &show_ipv6_ospf6_cmd);
install_element(CONFIG_NODE, &router_ospf6_cmd);
diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c
index db61fe087b..17e33902d9 100644
--- a/ospf6d/ospf6d.c
+++ b/ospf6d/ospf6d.c
@@ -69,8 +69,12 @@ struct route_node *route_prev(struct route_node *node)
return prev;
}
+static int config_write_ospf6_debug(struct vty *vty);
static struct cmd_node debug_node = {
- DEBUG_NODE, "", 1 /* VTYSH */
+ .name = "debug",
+ .node = DEBUG_NODE,
+ .prompt = "",
+ .config_write = config_write_ospf6_debug,
};
static int config_write_ospf6_debug(struct vty *vty)
@@ -1216,7 +1220,7 @@ void ospf6_init(void)
prefix_list_delete_hook(ospf6_plist_del);
ospf6_bfd_init();
- install_node(&debug_node, config_write_ospf6_debug);
+ install_node(&debug_node);
install_element_ospf6_debug_message();
install_element_ospf6_debug_lsa();
diff --git a/ospf6d/subdir.am b/ospf6d/subdir.am
index 570b077cb1..9bb6838310 100644
--- a/ospf6d/subdir.am
+++ b/ospf6d/subdir.am
@@ -7,21 +7,21 @@ noinst_LIBRARIES += ospf6d/libospf6.a
sbin_PROGRAMS += ospf6d/ospf6d
dist_examples_DATA += ospf6d/ospf6d.conf.sample
vtysh_scan += \
- $(top_srcdir)/ospf6d/ospf6_abr.c \
- $(top_srcdir)/ospf6d/ospf6_asbr.c \
- $(top_srcdir)/ospf6d/ospf6_area.c \
- $(top_srcdir)/ospf6d/ospf6_bfd.c \
- $(top_srcdir)/ospf6d/ospf6_flood.c \
- $(top_srcdir)/ospf6d/ospf6_interface.c \
- $(top_srcdir)/ospf6d/ospf6_intra.c \
- $(top_srcdir)/ospf6d/ospf6_lsa.c \
- $(top_srcdir)/ospf6d/ospf6_message.c \
- $(top_srcdir)/ospf6d/ospf6_neighbor.c \
- $(top_srcdir)/ospf6d/ospf6_route.c \
- $(top_srcdir)/ospf6d/ospf6_spf.c \
- $(top_srcdir)/ospf6d/ospf6_top.c \
- $(top_srcdir)/ospf6d/ospf6_zebra.c \
- $(top_srcdir)/ospf6d/ospf6d.c \
+ ospf6d/ospf6_abr.c \
+ ospf6d/ospf6_asbr.c \
+ ospf6d/ospf6_area.c \
+ ospf6d/ospf6_bfd.c \
+ ospf6d/ospf6_flood.c \
+ ospf6d/ospf6_interface.c \
+ ospf6d/ospf6_intra.c \
+ ospf6d/ospf6_lsa.c \
+ ospf6d/ospf6_message.c \
+ ospf6d/ospf6_neighbor.c \
+ ospf6d/ospf6_route.c \
+ ospf6d/ospf6_spf.c \
+ ospf6d/ospf6_top.c \
+ ospf6d/ospf6_zebra.c \
+ ospf6d/ospf6d.c \
# end
if SNMP
module_LTLIBRARIES += ospf6d/ospf6d_snmp.la