summaryrefslogtreecommitdiff
path: root/bfdd/bfd.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@users.noreply.github.com>2020-09-25 13:05:21 -0400
committerGitHub <noreply@github.com>2020-09-25 13:05:21 -0400
commitea8dd244aa35114043b51ea988a5bd170f9e0511 (patch)
treeac292874c50b2a828ae1fc6d588964efe0bd1b7e /bfdd/bfd.c
parentb1f476731a002fae9c65127314cbad12786f3719 (diff)
parent3704ff5608a9624a92c02dcae437f4c7d05da347 (diff)
Merge pull request #7175 from idryzhov/fix-nb-bypass
*: move all userdata when changing node xpath
Diffstat (limited to 'bfdd/bfd.c')
-rw-r--r--bfdd/bfd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bfdd/bfd.c b/bfdd/bfd.c
index c16912060c..4877abd573 100644
--- a/bfdd/bfd.c
+++ b/bfdd/bfd.c
@@ -2158,6 +2158,7 @@ void bfd_session_update_vrf_name(struct bfd_session *bs, struct vrf *vrf)
if (yang_module_find("frr-bfdd") && bs->key.vrfname[0]) {
struct lyd_node *bfd_dnode;
char xpath[XPATH_MAXLEN], xpath_srcaddr[XPATH_MAXLEN + 32];
+ char oldpath[XPATH_MAXLEN], newpath[XPATH_MAXLEN];
char addr_buf[INET6_ADDRSTRLEN];
int slen;
@@ -2185,7 +2186,12 @@ void bfd_session_update_vrf_name(struct bfd_session *bs, struct vrf *vrf)
bfd_dnode = yang_dnode_get(running_config->dnode, xpath,
bs->key.vrfname);
if (bfd_dnode) {
+ yang_dnode_get_path(bfd_dnode->parent, oldpath,
+ sizeof(oldpath));
yang_dnode_change_leaf(bfd_dnode, vrf->name);
+ yang_dnode_get_path(bfd_dnode->parent, newpath,
+ sizeof(newpath));
+ nb_running_move_tree(oldpath, newpath);
running_config->version++;
}
}