summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/northbound.c16
-rw-r--r--lib/northbound_cli.c4
-rw-r--r--nhrpd/nhrp_main.c1
-rw-r--r--pbrd/pbr_main.c1
4 files changed, 16 insertions, 6 deletions
diff --git a/lib/northbound.c b/lib/northbound.c
index 18500a8bd2..895647cfb7 100644
--- a/lib/northbound.c
+++ b/lib/northbound.c
@@ -383,6 +383,10 @@ static void nb_config_diff_add_change(struct nb_config_cbs *changes,
{
struct nb_config_change *change;
+ /* Ignore unimplemented nodes. */
+ if (!dnode->schema->priv)
+ return;
+
change = XCALLOC(MTYPE_TMP, sizeof(*change));
change->cb.operation = operation;
change->cb.seq = *seq;
@@ -416,6 +420,10 @@ static void nb_config_diff_created(const struct lyd_node *dnode, uint32_t *seq,
enum nb_operation operation;
struct lyd_node *child;
+ /* Ignore unimplemented nodes. */
+ if (!dnode->schema->priv)
+ return;
+
switch (dnode->schema->nodetype) {
case LYS_LEAF:
case LYS_LEAFLIST:
@@ -450,6 +458,10 @@ static void nb_config_diff_created(const struct lyd_node *dnode, uint32_t *seq,
static void nb_config_diff_deleted(const struct lyd_node *dnode, uint32_t *seq,
struct nb_config_cbs *changes)
{
+ /* Ignore unimplemented nodes. */
+ if (!dnode->schema->priv)
+ return;
+
if (nb_operation_is_valid(NB_OP_DESTROY, dnode->schema))
nb_config_diff_add_change(changes, NB_OP_DESTROY, seq, dnode);
else if (CHECK_FLAG(dnode->schema->nodetype, LYS_CONTAINER)) {
@@ -618,7 +630,7 @@ static int nb_candidate_validate_code(struct nb_context *context,
struct nb_node *nb_node;
nb_node = child->schema->priv;
- if (!nb_node->cbs.pre_validate)
+ if (!nb_node || !nb_node->cbs.pre_validate)
goto next;
ret = nb_callback_pre_validate(context, nb_node, child,
@@ -1385,7 +1397,7 @@ static void nb_transaction_apply_finish(struct nb_transaction *transaction,
struct nb_node *nb_node;
nb_node = dnode->schema->priv;
- if (!nb_node->cbs.apply_finish)
+ if (!nb_node || !nb_node->cbs.apply_finish)
goto next;
/*
diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c
index ee080bca3f..6ce520149a 100644
--- a/lib/northbound_cli.c
+++ b/lib/northbound_cli.c
@@ -573,7 +573,7 @@ void nb_cli_show_dnode_cmds(struct vty *vty, struct lyd_node *root,
struct nb_node *nb_node;
nb_node = child->schema->priv;
- if (!nb_node->cbs.cli_show)
+ if (!nb_node || !nb_node->cbs.cli_show)
goto next;
/* Skip default values. */
@@ -591,7 +591,7 @@ void nb_cli_show_dnode_cmds(struct vty *vty, struct lyd_node *root,
parent = ly_iter_next_up(child);
if (parent != NULL) {
nb_node = parent->schema->priv;
- if (nb_node->cbs.cli_show_end)
+ if (nb_node && nb_node->cbs.cli_show_end)
(*nb_node->cbs.cli_show_end)(vty, parent);
}
diff --git a/nhrpd/nhrp_main.c b/nhrpd/nhrp_main.c
index 43aa5117c9..9fc13761c8 100644
--- a/nhrpd/nhrp_main.c
+++ b/nhrpd/nhrp_main.c
@@ -119,7 +119,6 @@ static struct quagga_signal_t sighandlers[] = {
static const struct frr_yang_module_info *const nhrpd_yang_modules[] = {
&frr_filter_info,
&frr_interface_info,
- &frr_vrf_info,
};
FRR_DAEMON_INFO(nhrpd, NHRP, .vty_port = NHRP_VTY_PORT,
diff --git a/pbrd/pbr_main.c b/pbrd/pbr_main.c
index 0711c66d4a..9a9edd79c6 100644
--- a/pbrd/pbr_main.c
+++ b/pbrd/pbr_main.c
@@ -117,7 +117,6 @@ struct quagga_signal_t pbr_signals[] = {
static const struct frr_yang_module_info *const pbrd_yang_modules[] = {
&frr_filter_info,
&frr_interface_info,
- &frr_vrf_info,
};
FRR_DAEMON_INFO(pbrd, PBR, .vty_port = PBR_VTY_PORT,