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