]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: call vrf update hook when default vrf name changes
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 14 Jun 2019 11:52:00 +0000 (13:52 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 27 Aug 2019 13:08:50 +0000 (15:08 +0200)
this is a call done whenever vrf name changes. This is useful on remote
daemons.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
lib/vrf.c

index 229f19f29ae877a2f2b02ae7c9b65c27e36ae634..7d8e227c6f864d61d9fe09178e7abfb485860f0b 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -199,9 +199,14 @@ struct vrf *vrf_get(vrf_id_t vrf_id, const char *name)
 
        /* Set name */
        if (name && vrf->name[0] != '\0' && strcmp(name, vrf->name)) {
+               /* update the vrf name */
                RB_REMOVE(vrf_name_head, &vrfs_by_name, vrf);
+               strlcpy(vrf->data.l.netns_name,
+                       name, NS_NAMSIZ);
                strlcpy(vrf->name, name, sizeof(vrf->name));
                RB_INSERT(vrf_name_head, &vrfs_by_name, vrf);
+               if (vrf->vrf_id == VRF_DEFAULT)
+                       vrf_set_default_name(vrf->name, false);
        } else if (name && vrf->name[0] == '\0') {
                strlcpy(vrf->name, name, sizeof(vrf->name));
                RB_INSERT(vrf_name_head, &vrfs_by_name, vrf);
@@ -870,7 +875,8 @@ void vrf_set_default_name(const char *default_name, bool force)
                           def_vrf->vrf_id);
                return;
        }
-
+       if (strmatch(vrf_default_name, default_name))
+               return;
        snprintf(vrf_default_name, VRF_NAMSIZ, "%s", default_name);
        if (def_vrf) {
                if (force)