]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: introduce parse_ifindex_or_ifname()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 29 May 2019 01:43:12 +0000 (10:43 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 29 May 2019 04:21:18 +0000 (13:21 +0900)
src/basic/parse-util.c
src/basic/parse-util.h

index 87724af693068b624a0f9f0a366404ca3597239c..ae764c581df8490aebbefb3183b7f7ac2f1e894d 100644 (file)
@@ -4,6 +4,7 @@
 #include <inttypes.h>
 #include <linux/oom.h>
 #include <locale.h>
+#include <net/if.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -93,6 +94,24 @@ int parse_ifindex(const char *s, int *ret) {
         return 0;
 }
 
+int parse_ifindex_or_ifname(const char *s, int *ret) {
+        int r;
+
+        assert(s);
+        assert(ret);
+
+        r = parse_ifindex(s, ret);
+        if (r >= 0)
+                return r;
+
+        r = (int) if_nametoindex(s);
+        if (r <= 0)
+                return -errno;
+
+        *ret = r;
+        return 0;
+}
+
 int parse_mtu(int family, const char *s, uint32_t *ret) {
         uint64_t u;
         size_t m;
index e47641b429544de390efebd0e4a72e7585b08f49..7f5b0cf2b4894b0a93b1ee603dc3ebdb9796faf0 100644 (file)
@@ -16,6 +16,7 @@ int parse_dev(const char *s, dev_t *ret);
 int parse_pid(const char *s, pid_t* ret_pid);
 int parse_mode(const char *s, mode_t *ret);
 int parse_ifindex(const char *s, int *ret);
+int parse_ifindex_or_ifname(const char *s, int *ret);
 int parse_mtu(int family, const char *s, uint32_t *ret);
 
 int parse_size(const char *t, uint64_t base, uint64_t *size);