*** empty log message ***

This commit is contained in:
dlezcano 2008-09-03 12:06:19 +00:00
parent 5f59f4bae8
commit e14459fae5
2 changed files with 54 additions and 32 deletions

View File

@ -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)

View File

@ -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;
} }