diff --git a/src/lxc/lxc_user_nic.c b/src/lxc/lxc_user_nic.c index c4388a741..a2ad03080 100644 --- a/src/lxc/lxc_user_nic.c +++ b/src/lxc/lxc_user_nic.c @@ -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; diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 0a345adb3..07257d29a 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -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; +} diff --git a/src/lxc/utils.h b/src/lxc/utils.h index f0b9bfbba..41f3716e3 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -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 */