utils: add lxc_nic_exists()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner 2017-09-03 16:35:48 +02:00
parent 3231134523
commit d75c14e262
No known key found for this signature in database
GPG Key ID: 7B3C391EFEA93624
3 changed files with 23 additions and 21 deletions

View File

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

View File

@ -2409,3 +2409,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;
}

View File

@ -402,5 +402,6 @@ extern void *must_realloc(void *orig, size_t sz);
typedef __typeof__(((struct statfs *)NULL)->f_type) fs_type_magic;
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 */