ip: Move of set_netnsid_from_name() to namespace.c
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>
This commit is contained in:
committed by
Stephen Hemminger
parent
bea332466d
commit
18bbd74b34
@@ -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__ */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
28
ip/ipnetns.c
28
ip/ipnetns.c
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user