mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-06-12 16:29:54 +00:00
*** empty log message ***
This commit is contained in:
parent
5f59f4bae8
commit
e14459fae5
@ -792,7 +792,7 @@ static int setup_ip6_addr(const char *dirname, const char *ifname)
|
||||
static int setup_network_cb(const char *name, const char *dirname,
|
||||
const char *file, void *data)
|
||||
{
|
||||
char *path;
|
||||
char path[MAXPATHLEN];
|
||||
char strindex[MAXINDEXLEN];
|
||||
char ifname[IFNAMSIZ];
|
||||
char newname[IFNAMSIZ];
|
||||
@ -800,7 +800,7 @@ static int setup_network_cb(const char *name, const char *dirname,
|
||||
char *current_ifname = ifname;
|
||||
int ifindex, ret = -1;
|
||||
|
||||
asprintf(&path, "%s/%s", dirname, file);
|
||||
snprintf(path, MAXPATHLEN, "%s/%s", dirname, file);
|
||||
|
||||
if (read_info(path, "ifindex", strindex, sizeof(strindex))) {
|
||||
lxc_log_error("failed to read ifindex info");
|
||||
@ -809,21 +809,25 @@ static int setup_network_cb(const char *name, const char *dirname,
|
||||
|
||||
ifindex = atoi(strindex);
|
||||
if (!ifindex) {
|
||||
lxc_log_error("bad index %s", strindex);
|
||||
goto out;
|
||||
if (!read_info(path, "up", strindex, sizeof(strindex))
|
||||
if (device_up("lo")) {
|
||||
lxc_log_error("failed to set the loopback up");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!if_indextoname(ifindex, current_ifname)) {
|
||||
lxc_log_error("no interface corresponding to index '%d'",
|
||||
ifindex);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!read_info(path, "name", newname, sizeof(newname))) {
|
||||
if (device_rename(ifname, newname)) {
|
||||
lxc_log_error("failed to rename %s->%s",
|
||||
ifname, newname);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
current_ifname = newname;
|
||||
}
|
||||
@ -832,38 +836,36 @@ static int setup_network_cb(const char *name, const char *dirname,
|
||||
if (setup_hw_addr(hwaddr, current_ifname)) {
|
||||
lxc_log_error("failed to setup hw address for '%s'",
|
||||
current_ifname);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (setup_ip_addr(path, current_ifname)) {
|
||||
lxc_log_error("failed to setup ip addresses for '%s'",
|
||||
ifname);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (setup_ip6_addr(path, current_ifname)) {
|
||||
lxc_log_error("failed to setup ipv6 addresses for '%s'",
|
||||
ifname);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!read_info(path, "up", strindex, sizeof(strindex))) {
|
||||
if (device_up(current_ifname)) {
|
||||
lxc_log_error("failed to set '%s' up", current_ifname);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* the network is up, make the loopback up too */
|
||||
if (device_up("lo")) {
|
||||
lxc_log_error("failed to set the loopback up");
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int setup_network(const char *name)
|
||||
@ -1007,12 +1009,12 @@ out:
|
||||
}
|
||||
static int instanciate_macvlan(const char *dirname, const char *file, pid_t pid)
|
||||
{
|
||||
char *path = NULL, *strindex = NULL, *peer = NULL;
|
||||
char path[MAXPATHLEN], *strindex = NULL, *peer = NULL;
|
||||
char link[IFNAMSIZ];
|
||||
int ifindex, ret = -1;
|
||||
|
||||
asprintf(&peer, "%s~%d", file, pid);
|
||||
asprintf(&path, "%s/%s", dirname, file);
|
||||
snprintf(path, MAXPATHLEN, "%s/%s", dirname, file);
|
||||
if (read_info(path, "link", link, IFNAMSIZ)) {
|
||||
lxc_log_error("failed to read bridge info");
|
||||
goto out;
|
||||
@ -1037,19 +1039,17 @@ static int instanciate_macvlan(const char *dirname, const char *file, pid_t pid)
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
free(path);
|
||||
free(strindex);
|
||||
free(peer);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int instanciate_phys(const char *dirname, const char *file, pid_t pid)
|
||||
{
|
||||
char *path = NULL, *strindex = NULL;
|
||||
char path[MAXPATHLEN], *strindex = NULL;
|
||||
char link[IFNAMSIZ];
|
||||
int ifindex, ret = -1;
|
||||
|
||||
asprintf(&path, "%s/%s", dirname, file);
|
||||
snprintf(path, MAXPATHLEN, "%s/%s", dirname, file);
|
||||
if (read_info(path, "link", link, IFNAMSIZ)) {
|
||||
lxc_log_error("failed to read link info");
|
||||
goto out;
|
||||
@ -1069,7 +1069,28 @@ static int instanciate_phys(const char *dirname, const char *file, pid_t pid)
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
free(path);
|
||||
free(strindex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int instanciate_empty(const char *dirname, const char *file, pid_t pid)
|
||||
{
|
||||
char path[MAXPATHLEN], *strindex = NULL;
|
||||
int ret = -1;
|
||||
|
||||
snprintf(path, MAXPATHLEN, "%s/%s", dirname, file);
|
||||
if (!asprintf(&strindex, "%d", 0)) {
|
||||
lxc_log_error("not enough memory");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (write_info(path, "ifindex", strindex)) {
|
||||
lxc_log_error("failed to write interface index to %s", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
free(strindex);
|
||||
return ret;
|
||||
}
|
||||
@ -1085,7 +1106,8 @@ static int instanciate_netdev_cb(const char *name, const char *dirname,
|
||||
return instanciate_macvlan(dirname, file, *pid);
|
||||
else if (!strncmp("phys", file, strlen("phys")))
|
||||
return instanciate_phys(dirname, file, *pid);
|
||||
|
||||
else if (!strncmp("empty", file, strlen("empty"))
|
||||
return instanciate_empty(dirname, file, *pid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1104,32 +1126,32 @@ static int instanciate_netdev(const char *name, pid_t pid)
|
||||
static int move_netdev_cb(const char *name, const char *dirname,
|
||||
const char *file, void *data)
|
||||
{
|
||||
char *path, ifname[IFNAMSIZ], strindex[MAXINDEXLEN];
|
||||
char path[MAXPATHLEN], ifname[IFNAMSIZ], strindex[MAXINDEXLEN];
|
||||
pid_t *pid = data;
|
||||
int ifindex, ret = -1;
|
||||
|
||||
asprintf(&path, "%s/%s", dirname, file);
|
||||
snprintf(path, MAXPATHLEN, "%s/%s", dirname, file);
|
||||
if (read_info(path, "ifindex", strindex, MAXINDEXLEN) < 0) {
|
||||
lxc_log_error("failed to read index to from %s", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ifindex = atoi(strindex);
|
||||
if (!ifindex)
|
||||
return 0;
|
||||
|
||||
if (!if_indextoname(ifindex, ifname)) {
|
||||
lxc_log_error("interface with index %d does not exist",
|
||||
ifindex);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (device_move(ifname, *pid)) {
|
||||
lxc_log_error("failed to move %s to %d", ifname, *pid);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
free(path);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int move_netdev(const char *name, pid_t pid)
|
||||
|
@ -59,7 +59,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
if (!name || !file)
|
||||
if (!name)
|
||||
usage(argv[0]);
|
||||
|
||||
if (lxc_config_init(&lxc_conf)) {
|
||||
@ -67,7 +67,7 @@ int main(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (lxc_config_read(file, &lxc_conf)) {
|
||||
if (file && lxc_config_read(file, &lxc_conf)) {
|
||||
fprintf(stderr, "invalid configuration file\n");
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user