]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/vrf.c
Merge pull request #4810 from qlyoung/fix-pthread-bad-pointer
[mirror_frr.git] / lib / vrf.c
index 575e96bae4540ca5fd024a3ee323185b461ca41f..4c6df797ad49a87ee1678a7bd004c6e997dc5ae7 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)