util: introduce parse_ifindex_or_ifname()
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user