Skip to content

Commit

Permalink
tree_wide: switch to netns_getifaddrs()
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Sep 23, 2018
1 parent cc6119a commit b1e44ed
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 38 deletions.
13 changes: 4 additions & 9 deletions src/lxc/confile.c
Expand Up @@ -48,19 +48,14 @@
#include "config.h"
#include "confile.h"
#include "confile_utils.h"
#include <../include/netns_ifaddrs.h>
#include "log.h"
#include "lxcseccomp.h"
#include "network.h"
#include "parse.h"
#include "storage.h"
#include "utils.h"

#if HAVE_IFADDRS_H
#include <ifaddrs.h>
#else
#include <../include/ifaddrs.h>
#endif

#if HAVE_SYS_PERSONALITY_H
#include <sys/personality.h>
#endif
Expand Down Expand Up @@ -324,14 +319,14 @@ static int set_config_net_flags(const char *key, const char *value,
static int create_matched_ifnames(const char *value, struct lxc_conf *lxc_conf,
struct lxc_netdev *netdev)
{
struct ifaddrs *ifaddr, *ifa;
struct netns_ifaddrs *ifaddr, *ifa;
int n;
int ret = 0;
const char *type_key = "lxc.net.type";
const char *link_key = "lxc.net.link";
const char *tmpvalue = "phys";

if (getifaddrs(&ifaddr) == -1) {
if (netns_getifaddrs(&ifaddr, -1, &(bool){false}) < 0) {
SYSERROR("Get network interfaces failed");
return -1;
}
Expand Down Expand Up @@ -359,7 +354,7 @@ static int create_matched_ifnames(const char *value, struct lxc_conf *lxc_conf,
}
}

freeifaddrs(ifaddr);
netns_freeifaddrs(ifaddr);
ifaddr = NULL;

return ret;
Expand Down
19 changes: 7 additions & 12 deletions src/lxc/lxccontainer.c
Expand Up @@ -53,6 +53,7 @@
#include "confile_utils.h"
#include "criu.h"
#include "error.h"
#include <../include/netns_ifaddrs.h>
#include "initutils.h"
#include "log.h"
#include "lxc.h"
Expand All @@ -78,12 +79,6 @@
#include <sys/mkdev.h>
#endif

#if HAVE_IFADDRS_H
#include <ifaddrs.h>
#else
#include <../include/ifaddrs.h>
#endif

#if IS_BIONIC
#include <../include/lxcmntent.h>
#else
Expand Down Expand Up @@ -2327,7 +2322,7 @@ static char **do_lxcapi_get_interfaces(struct lxc_container *c)

if (pid == 0) { /* child */
int ret = 1, nbytes;
struct ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;
struct netns_ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;

/* close the read-end of the pipe */
close(pipefd[0]);
Expand All @@ -2338,7 +2333,7 @@ static char **do_lxcapi_get_interfaces(struct lxc_container *c)
}

/* Grab the list of interfaces */
if (getifaddrs(&interfaceArray)) {
if (netns_getifaddrs(&interfaceArray, -1, &(bool){false})) {
SYSERROR("Failed to get interfaces list");
goto out;
}
Expand All @@ -2357,7 +2352,7 @@ static char **do_lxcapi_get_interfaces(struct lxc_container *c)

out:
if (interfaceArray)
freeifaddrs(interfaceArray);
netns_freeifaddrs(interfaceArray);

/* close the write-end of the pipe, thus sending EOF to the reader */
close(pipefd[1]);
Expand Down Expand Up @@ -2429,7 +2424,7 @@ static char **do_lxcapi_get_ips(struct lxc_container *c, const char *interface,
int ret = 1;
char *address = NULL;
void *tempAddrPtr = NULL;
struct ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;
struct netns_ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;

/* close the read-end of the pipe */
close(pipefd[0]);
Expand All @@ -2440,7 +2435,7 @@ static char **do_lxcapi_get_ips(struct lxc_container *c, const char *interface,
}

/* Grab the list of interfaces */
if (getifaddrs(&interfaceArray)) {
if (netns_getifaddrs(&interfaceArray, -1, &(bool){false})) {
SYSERROR("Failed to get interfaces list");
goto out;
}
Expand Down Expand Up @@ -2496,7 +2491,7 @@ static char **do_lxcapi_get_ips(struct lxc_container *c, const char *interface,

out:
if (interfaceArray)
freeifaddrs(interfaceArray);
netns_freeifaddrs(interfaceArray);

/* close the write-end of the pipe, thus sending EOF to the reader */
close(pipefd[1]);
Expand Down
13 changes: 4 additions & 9 deletions src/lxc/network.c
Expand Up @@ -48,19 +48,14 @@
#include "af_unix.h"
#include "conf.h"
#include "config.h"
#include <../include/netns_ifaddrs.h>
#include "file_utils.h"
#include "log.h"
#include "macro.h"
#include "network.h"
#include "nl.h"
#include "utils.h"

#if HAVE_IFADDRS_H
#include <ifaddrs.h>
#else
#include <../include/ifaddrs.h>
#endif

#ifndef HAVE_STRLCPY
#include "include/strlcpy.h"
#endif
Expand Down Expand Up @@ -1950,7 +1945,7 @@ static const char padchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *lxc_mkifname(char *template)
{
int ret;
struct ifaddrs *ifa, *ifaddr;
struct netns_ifaddrs *ifa, *ifaddr;
char name[IFNAMSIZ];
bool exists = false;
size_t i = 0;
Expand All @@ -1967,7 +1962,7 @@ char *lxc_mkifname(char *template)
return NULL;

/* Get all the network interfaces. */
ret = getifaddrs(&ifaddr);
ret = netns_getifaddrs(&ifaddr, -1, &(bool){false});
if (ret < 0) {
SYSERROR("Failed to get network interfaces");
return NULL;
Expand Down Expand Up @@ -2001,7 +1996,7 @@ char *lxc_mkifname(char *template)
break;
}

freeifaddrs(ifaddr);
netns_freeifaddrs(ifaddr);
(void)strlcpy(template, name, strlen(template) + 1);

return template;
Expand Down
11 changes: 3 additions & 8 deletions src/lxc/tools/lxc_device.c
Expand Up @@ -30,15 +30,10 @@
#include <lxc/lxccontainer.h>

#include "arguments.h"
#include "../../include/netns_ifaddrs.h"
#include "log.h"
#include "utils.h"

#if HAVE_IFADDRS_H
#include <ifaddrs.h>
#else
#include "../include/ifaddrs.h"
#endif

lxc_log_define(lxc_device, lxc);

static bool is_interface(const char *dev_name, pid_t pid);
Expand Down Expand Up @@ -73,15 +68,15 @@ static bool is_interface(const char *dev_name, pid_t pid)
}

if (p == 0) {
struct ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;
struct netns_ifaddrs *interfaceArray = NULL, *tempIfAddr = NULL;

if (!switch_to_ns(pid, "net")) {
ERROR("Failed to enter netns of container");
_exit(-1);
}

/* Grab the list of interfaces */
if (getifaddrs(&interfaceArray)) {
if (netns_getifaddrs(&interfaceArray, -1, &(bool){false})) {
ERROR("Failed to get interfaces list");
_exit(-1);
}
Expand Down

0 comments on commit b1e44ed

Please sign in to comment.