]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ip: Move of set_netnsid_from_name() to namespace.c
authorXiao Liang <shaw.leon@gmail.com>
Fri, 11 Oct 2024 08:01:08 +0000 (16:01 +0800)
committerStephen Hemminger <stephen@networkplumber.org>
Thu, 17 Oct 2024 19:08:08 +0000 (12:08 -0700)
Move set_netnsid_from_name() outside for reuse, like what's done for
netns_id_from_name().

Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
include/namespace.h
ip/ip_common.h
ip/iplink.c
ip/ipnetns.c
lib/namespace.c

index 86000543f99f51599cea410b5e9ac45908107682..98f4af593ae4aa82db8cce272170cc2b7ef17924 100644 (file)
@@ -60,6 +60,8 @@ struct netns_func {
 };
 
 int netns_id_from_name(struct rtnl_handle *rtnl, const char *name);
+int set_netns_id_from_name(struct rtnl_handle *rtnl, const char *name,
+                          int nsid);
 char *netns_name_from_id(int32_t id);
 
 #endif /* __NAMESPACE_H__ */
index 625311c25bce3db459187fdb0e2b92a50a5b325a..726262ab46e6225f698c33336e39d1dce0565804 100644 (file)
@@ -63,8 +63,6 @@ void netns_nsid_socket_init(void);
 int print_nsid(struct nlmsghdr *n, void *arg);
 int ipstats_print(struct nlmsghdr *n, void *arg);
 char *get_name_from_nsid(int nsid);
-int get_netnsid_from_name(const char *name);
-int set_netnsid_from_name(const char *name, int nsid);
 int do_ipaddr(int argc, char **argv);
 int do_ipaddrlabel(int argc, char **argv);
 int do_iproute(int argc, char **argv);
index 0dd83ff448461c97ac3a15edd24ef6619f51b272..c916898562614b312b22111b9edece640d2bf356 100644 (file)
@@ -819,11 +819,11 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, char **type)
                        NEXT_ARG();
                        if (link_netnsid != -1)
                                duparg("link-netns/link-netnsid", *argv);
-                       link_netnsid = get_netnsid_from_name(*argv);
+                       link_netnsid = netns_id_from_name(&rth, *argv);
                        /* No nsid? Try to assign one. */
                        if (link_netnsid < 0)
-                               set_netnsid_from_name(*argv, -1);
-                       link_netnsid = get_netnsid_from_name(*argv);
+                               set_netns_id_from_name(&rth, *argv, -1);
+                       link_netnsid = netns_id_from_name(&rth, *argv);
                        if (link_netnsid < 0)
                                invarg("Invalid \"link-netns\" value\n",
                                       *argv);
index 972d7e9cf94936fa0a63e9668f5e5b7c6b16e11d..5c94340097cecb9c98d0d044e9f702803c970eb8 100644 (file)
@@ -104,7 +104,7 @@ static int ipnetns_have_nsid(void)
        return have_rtnl_getnsid;
 }
 
-int get_netnsid_from_name(const char *name)
+static int get_netnsid_from_name(const char *name)
 {
        netns_nsid_socket_init();
 
@@ -896,33 +896,11 @@ out_delete:
        return -1;
 }
 
-int set_netnsid_from_name(const char *name, int nsid)
+static int set_netnsid_from_name(const char *name, int nsid)
 {
-       struct {
-               struct nlmsghdr n;
-               struct rtgenmsg g;
-               char            buf[1024];
-       } req = {
-               .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
-               .n.nlmsg_flags = NLM_F_REQUEST,
-               .n.nlmsg_type = RTM_NEWNSID,
-               .g.rtgen_family = AF_UNSPEC,
-       };
-       int fd, err = 0;
-
        netns_nsid_socket_init();
 
-       fd = netns_get_fd(name);
-       if (fd < 0)
-               return fd;
-
-       addattr32(&req.n, 1024, NETNSA_FD, fd);
-       addattr32(&req.n, 1024, NETNSA_NSID, nsid);
-       if (rtnl_talk(&rth, &req.n, NULL) < 0)
-               err = -2;
-
-       close(fd);
-       return err;
+       return set_netns_id_from_name(&rth, name, nsid);
 }
 
 static int netns_set(int argc, char **argv)
index d3aeb9658e732c8a74a31060a4084cc6c1e0aa19..74b7e7caf0e5b2dd3794a1e26f03218ac420c037 100644 (file)
@@ -189,6 +189,33 @@ out:
        return ret;
 }
 
+int set_netns_id_from_name(struct rtnl_handle *rtnl, const char *name, int nsid)
+{
+       struct {
+               struct nlmsghdr n;
+               struct rtgenmsg g;
+               char            buf[1024];
+       } req = {
+               .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
+               .n.nlmsg_flags = NLM_F_REQUEST,
+               .n.nlmsg_type = RTM_NEWNSID,
+               .g.rtgen_family = AF_UNSPEC,
+       };
+       int fd, err = 0;
+
+       fd = netns_get_fd(name);
+       if (fd < 0)
+               return fd;
+
+       addattr32(&req.n, 1024, NETNSA_FD, fd);
+       addattr32(&req.n, 1024, NETNSA_NSID, nsid);
+       if (rtnl_talk(rtnl, &req.n, NULL) < 0)
+               err = -2;
+
+       close(fd);
+       return err;
+}
+
 struct netns_name_from_id_ctx {
        int32_t id;
        char *name;