Skip to content

Commit

Permalink
utils: add lxc_nic_exists()
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 4, 2017
1 parent eec13ca commit bc09226
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 23 deletions.
22 changes: 1 addition & 21 deletions src/lxc/lxc_user_nic.c
Expand Up @@ -397,26 +397,6 @@ static char *find_line(char *p, char *e, char *u, char *t, char *l)
return NULL;
}

static bool nic_exists(char *nic)
{
char path[MAXPATHLEN];
int ret;
struct stat sb;

if (!strcmp(nic, "none"))
return true;

ret = snprintf(path, MAXPATHLEN, "/sys/class/net/%s", nic);
if (ret < 0 || (size_t)ret >= MAXPATHLEN)
return false;

ret = stat(path, &sb);
if (ret < 0)
return false;

return true;
}

static int instantiate_veth(char *n1, char **n2)
{
int err;
Expand Down Expand Up @@ -625,7 +605,7 @@ static bool cull_entries(int fd, char *me, char *t, char *br, char *nicname,
continue;

if (nic[0] != '\0')
exists = nic_exists(nic);
exists = lxc_nic_exists(nic);

if (!exists)
entry_lines[n - 1].keep = false;
Expand Down
21 changes: 21 additions & 0 deletions src/lxc/utils.c
Expand Up @@ -2406,3 +2406,24 @@ bool has_fs_type(const char *path, fs_type_magic magic_val)

return has_type;
}

bool lxc_nic_exists(char *nic)
{
#define __LXC_SYS_CLASS_NET_LEN 15 + IFNAMSIZ + 1
char path[__LXC_SYS_CLASS_NET_LEN];
int ret;
struct stat sb;

if (!strcmp(nic, "none"))
return true;

ret = snprintf(path, __LXC_SYS_CLASS_NET_LEN, "/sys/class/net/%s", nic);
if (ret < 0 || (size_t)ret >= __LXC_SYS_CLASS_NET_LEN)
return false;

ret = stat(path, &sb);
if (ret < 0)
return false;

return true;
}
5 changes: 3 additions & 2 deletions src/lxc/utils.h
Expand Up @@ -390,7 +390,8 @@ void *must_realloc(void *orig, size_t sz);

/* __typeof__ should be safe to use with all compilers. */
typedef __typeof__(((struct statfs *)NULL)->f_type) fs_type_magic;
bool has_fs_type(const char *path, fs_type_magic magic_val);
bool is_fs_type(const struct statfs *fs, fs_type_magic magic_val);
extern bool has_fs_type(const char *path, fs_type_magic magic_val);
extern bool is_fs_type(const struct statfs *fs, fs_type_magic magic_val);
extern bool lxc_nic_exists(char *nic);

#endif /* __LXC_UTILS_H */

0 comments on commit bc09226

Please sign in to comment.