ipnetns: make net namespace cache variable size
Save some space by using variable size for nsid cache elements.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
diff --git a/ip/ipnetns.c b/ip/ipnetns.c
index 3b704a4..088096f 100644
--- a/ip/ipnetns.c
+++ b/ip/ipnetns.c
@@ -139,7 +139,7 @@
struct hlist_node nsid_hash;
struct hlist_node name_hash;
int nsid;
- char name[NAME_MAX];
+ char name[0];
};
#define NSIDMAP_SIZE 128
@@ -164,7 +164,7 @@
return NULL;
}
-static int netns_map_add(int nsid, char *name)
+static int netns_map_add(int nsid, const char *name)
{
struct nsid_cache *c;
uint32_t h;
@@ -172,7 +172,7 @@
if (netns_map_get_by_nsid(nsid) != NULL)
return -EEXIST;
- c = malloc(sizeof(*c));
+ c = malloc(sizeof(*c) + strlen(name));
if (c == NULL) {
perror("malloc");
return -ENOMEM;