From: Christian Brauner Date: Sun, 3 Sep 2017 14:35:48 +0000 (+0200) Subject: utils: add lxc_nic_exists() X-Git-Tag: lxc-2.0.9~48^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc0922628b8af091b2a701673798613164dc9d70;p=thirdparty%2Flxc.git utils: add lxc_nic_exists() Signed-off-by: Christian Brauner --- 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 d36107020..959481ee2 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -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; +} diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 4408c6d69..3f4d90479 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -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 */