Unverified Commit af24b9e5 by Stéphane Graber Committed by GitHub

Merge pull request #3307 from brauner/2020-03-19/fixes

network: fixes
parents 74d40612 f7591785
......@@ -1847,17 +1847,15 @@ static int mount_entry(const char *fsname, const char *target,
}
if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) {
unsigned long rqd_flags = 0;
unsigned long required_flags = 0;
DEBUG("Remounting \"%s\" on \"%s\" to respect bind or remount options",
srcpath ? srcpath : "(none)", target ? target : "(none)");
if (mountflags & MS_RDONLY)
rqd_flags |= MS_RDONLY;
required_flags |= MS_RDONLY;
#ifdef HAVE_STATVFS
if (srcpath && statvfs(srcpath, &sb) == 0) {
unsigned long required_flags = rqd_flags;
if (sb.f_flag & MS_NOSUID)
required_flags |= MS_NOSUID;
......@@ -1878,8 +1876,7 @@ static int mount_entry(const char *fsname, const char *target,
* mountflags, then skip the remount.
*/
if (!(mountflags & MS_REMOUNT)) {
if (!(required_flags & ~mountflags) &&
rqd_flags == 0) {
if (!(required_flags & ~mountflags)) {
DEBUG("Mountflags already were %lu, skipping remount", mountflags);
goto skipremount;
}
......
......@@ -504,7 +504,7 @@ static int instantiate_macvlan(struct lxc_handler *handler, struct lxc_netdev *n
}
strlcpy(netdev->created_name, peer, IFNAMSIZ);
if (netdev->name[0] == '\0')
if (is_empty_string(netdev->name))
(void)strlcpy(netdev->name, peer, IFNAMSIZ);
netdev->ifindex = if_nametoindex(peer);
......@@ -668,7 +668,7 @@ static int instantiate_ipvlan(struct lxc_handler *handler, struct lxc_netdev *ne
}
strlcpy(netdev->created_name, peer, IFNAMSIZ);
if (netdev->name[0] == '\0')
if (is_empty_string(netdev->name))
(void)strlcpy(netdev->name, peer, IFNAMSIZ);
netdev->ifindex = if_nametoindex(peer);
......@@ -743,7 +743,7 @@ static int instantiate_vlan(struct lxc_handler *handler, struct lxc_netdev *netd
}
strlcpy(netdev->created_name, peer, IFNAMSIZ);
if (netdev->name[0] == '\0')
if (is_empty_string(netdev->name))
(void)strlcpy(netdev->name, peer, IFNAMSIZ);
netdev->ifindex = if_nametoindex(peer);
......@@ -818,7 +818,7 @@ static int instantiate_phys(struct lxc_handler *handler, struct lxc_netdev *netd
}
strlcpy(netdev->created_name, netdev->link, IFNAMSIZ);
if (netdev->name[0] == '\0')
if (is_empty_string(netdev->name))
(void)strlcpy(netdev->name, netdev->link, IFNAMSIZ);
/*
......@@ -924,7 +924,7 @@ static int instantiate_ns_veth(struct lxc_netdev *netdev)
errno, "Failed to retrieve ifindex for network device with name %s",
netdev->created_name);
if (netdev->name[0] == '\0')
if (is_empty_string(netdev->name))
(void)strlcpy(netdev->name, "eth%d", IFNAMSIZ);
if (strcmp(netdev->created_name, netdev->name) != 0) {
......@@ -1179,10 +1179,8 @@ static int lxc_netdev_move_by_index_fd(int ifindex, int fd, const char *ifname)
if (nla_put_u32(nlmsg, IFLA_NET_NS_FD, fd))
goto out;
if (ifname != NULL) {
if (nla_put_string(nlmsg, IFLA_IFNAME, ifname))
goto out;
}
if (!is_empty_string(ifname) && nla_put_string(nlmsg, IFLA_IFNAME, ifname))
goto out;
err = netlink_transaction(&nlh, nlmsg, nlmsg);
out:
......@@ -1219,10 +1217,8 @@ int lxc_netdev_move_by_index(int ifindex, pid_t pid, const char *ifname)
if (nla_put_u32(nlmsg, IFLA_NET_NS_PID, pid))
goto out;
if (ifname != NULL) {
if (nla_put_string(nlmsg, IFLA_IFNAME, ifname))
goto out;
}
if (!is_empty_string(ifname) && nla_put_string(nlmsg, IFLA_IFNAME, ifname))
goto out;
err = netlink_transaction(&nlh, nlmsg, nlmsg);
out:
......@@ -2812,8 +2808,8 @@ static int lxc_create_network_unpriv_exec(const char *lxcpath, const char *lxcna
INFO("Execing lxc-user-nic create %s %s %s veth %s %s", lxcpath,
lxcname, pidstr, netdev_link,
netdev->name[0] != '\0' ? netdev->name : "(null)");
if (netdev->name[0] != '\0')
!is_empty_string(netdev->name) ? netdev->name : "(null)");
if (!is_empty_string(netdev->name))
execlp(LXC_USERNIC_PATH, LXC_USERNIC_PATH, "create",
lxcpath, lxcname, pidstr, "veth", netdev_link,
netdev->name, (char *)NULL);
......@@ -3363,7 +3359,7 @@ int lxc_network_move_created_netdev_priv(struct lxc_handler *handler)
physname = is_wlan(netdev->link);
if (physname)
ret = lxc_netdev_move_wlan(physname, netdev->link, pid, NULL);
ret = lxc_netdev_move_wlan(physname, netdev->link, pid, netdev->name);
else
ret = lxc_netdev_move_by_index(netdev->ifindex, pid, netdev->name);
if (ret) {
......
......@@ -98,4 +98,9 @@ extern char *lxc_trim_whitespace_in_place(char *buffer);
extern int lxc_is_line_empty(const char *line);
extern void remove_trailing_slashes(char *p);
static inline bool is_empty_string(const char *s)
{
return !s || strcmp(s, "") == 0;
}
#endif /* __LXC_STRING_UTILS_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment