mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 06:06:57 +00:00
Merge pull request #2391 from harryoooooooooo/master
fix bug: unpriv lxc will run lxc.net.[i].script.up now
This commit is contained in:
commit
287c5df906
@ -2097,7 +2097,7 @@ int lxc_find_gateway_addresses(struct lxc_handler *handler)
|
||||
|
||||
#define LXC_USERNIC_PATH LIBEXECDIR "/lxc/lxc-user-nic"
|
||||
static int lxc_create_network_unpriv_exec(const char *lxcpath, const char *lxcname,
|
||||
struct lxc_netdev *netdev, pid_t pid)
|
||||
struct lxc_netdev *netdev, pid_t pid, unsigned int hooks_version)
|
||||
{
|
||||
int ret;
|
||||
pid_t child;
|
||||
@ -2242,6 +2242,21 @@ static int lxc_create_network_unpriv_exec(const char *lxcpath, const char *lxcna
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (netdev->upscript) {
|
||||
char *argv[] = {
|
||||
"veth",
|
||||
netdev->link,
|
||||
netdev->priv.veth_attr.veth1,
|
||||
NULL,
|
||||
};
|
||||
|
||||
ret = run_script_argv(lxcname,
|
||||
hooks_version, "net",
|
||||
netdev->upscript, "up", argv);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2499,7 +2514,7 @@ int lxc_network_move_created_netdev_priv(const char *lxcpath, const char *lxcnam
|
||||
}
|
||||
|
||||
int lxc_create_network_unpriv(const char *lxcpath, const char *lxcname,
|
||||
struct lxc_list *network, pid_t pid)
|
||||
struct lxc_list *network, pid_t pid, unsigned int hooks_version)
|
||||
{
|
||||
struct lxc_list *iterator;
|
||||
|
||||
@ -2525,7 +2540,7 @@ int lxc_create_network_unpriv(const char *lxcpath, const char *lxcname,
|
||||
if (netdev->mtu)
|
||||
INFO("mtu ignored due to insufficient privilege");
|
||||
|
||||
if (lxc_create_network_unpriv_exec(lxcpath, lxcname, netdev, pid))
|
||||
if (lxc_create_network_unpriv_exec(lxcpath, lxcname, netdev, pid, hooks_version))
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -263,7 +263,7 @@ extern int lxc_network_move_created_netdev_priv(const char *lxcpath,
|
||||
extern void lxc_delete_network(struct lxc_handler *handler);
|
||||
extern int lxc_find_gateway_addresses(struct lxc_handler *handler);
|
||||
extern int lxc_create_network_unpriv(const char *lxcpath, const char *lxcname,
|
||||
struct lxc_list *network, pid_t pid);
|
||||
struct lxc_list *network, pid_t pid, unsigned int hook_version);
|
||||
extern int lxc_requests_empty_network(struct lxc_handler *handler);
|
||||
extern int lxc_restore_phys_nics_to_netns(struct lxc_handler *handler);
|
||||
extern int lxc_setup_network_in_child_namespaces(const struct lxc_conf *conf,
|
||||
|
@ -1707,7 +1707,7 @@ static int lxc_spawn(struct lxc_handler *handler)
|
||||
}
|
||||
|
||||
ret = lxc_create_network_unpriv(handler->lxcpath, handler->name,
|
||||
&conf->network, handler->pid);
|
||||
&conf->network, handler->pid, conf->hooks_version);
|
||||
if (ret < 0) {
|
||||
ERROR("Failed to create the configured network");
|
||||
goto out_delete_net;
|
||||
|
Loading…
Reference in New Issue
Block a user