mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-10 16:43:20 +00:00
add address family to/from string helper functions.
Add the functions family_name and read_family to convert an address family to a string and to convernt a string to an address family. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
0b218ab18d
commit
45c90d1990
@ -109,6 +109,9 @@ extern const char *format_host(int af, int len, const void *addr,
|
||||
extern const char *rt_addr_n2a(int af, int len, const void *addr,
|
||||
char *buf, int buflen);
|
||||
|
||||
extern int read_family(const char *name);
|
||||
extern const char *family_name(int family);
|
||||
|
||||
void missarg(const char *) __attribute__((noreturn));
|
||||
void invarg(const char *, const char *) __attribute__((noreturn));
|
||||
void duparg(const char *, const char *) __attribute__((noreturn));
|
||||
|
16
ip/ip.c
16
ip/ip.c
@ -190,21 +190,11 @@ int main(int argc, char **argv)
|
||||
argv++;
|
||||
if (argc <= 1)
|
||||
usage();
|
||||
if (strcmp(argv[1], "inet") == 0)
|
||||
preferred_family = AF_INET;
|
||||
else if (strcmp(argv[1], "inet6") == 0)
|
||||
preferred_family = AF_INET6;
|
||||
else if (strcmp(argv[1], "dnet") == 0)
|
||||
preferred_family = AF_DECnet;
|
||||
else if (strcmp(argv[1], "link") == 0)
|
||||
preferred_family = AF_PACKET;
|
||||
else if (strcmp(argv[1], "ipx") == 0)
|
||||
preferred_family = AF_IPX;
|
||||
else if (strcmp(argv[1], "bridge") == 0)
|
||||
preferred_family = AF_BRIDGE;
|
||||
else if (strcmp(argv[1], "help") == 0)
|
||||
if (strcmp(argv[1], "help") == 0)
|
||||
usage();
|
||||
else
|
||||
preferred_family = read_family(argv[1]);
|
||||
if (preferred_family == AF_UNSPEC)
|
||||
invarg("invalid protocol family", argv[1]);
|
||||
} else if (strcmp(opt, "-4") == 0) {
|
||||
preferred_family = AF_INET;
|
||||
|
35
lib/utils.c
35
lib/utils.c
@ -666,6 +666,41 @@ const char *rt_addr_n2a(int af, int len, const void *addr, char *buf, int buflen
|
||||
}
|
||||
}
|
||||
|
||||
int read_family(const char *name)
|
||||
{
|
||||
int family = AF_UNSPEC;
|
||||
if (strcmp(name, "inet") == 0)
|
||||
family = AF_INET;
|
||||
else if (strcmp(name, "inet6") == 0)
|
||||
family = AF_INET6;
|
||||
else if (strcmp(name, "dnet") == 0)
|
||||
family = AF_DECnet;
|
||||
else if (strcmp(name, "link") == 0)
|
||||
family = AF_PACKET;
|
||||
else if (strcmp(name, "ipx") == 0)
|
||||
family = AF_IPX;
|
||||
else if (strcmp(name, "bridge") == 0)
|
||||
family = AF_BRIDGE;
|
||||
return family;
|
||||
}
|
||||
|
||||
const char *family_name(int family)
|
||||
{
|
||||
if (family == AF_INET)
|
||||
return "inet";
|
||||
if (family == AF_INET6)
|
||||
return "inet6";
|
||||
if (family == AF_DECnet)
|
||||
return "dnet";
|
||||
if (family == AF_PACKET)
|
||||
return "link";
|
||||
if (family == AF_IPX)
|
||||
return "ipx";
|
||||
if (family == AF_BRIDGE)
|
||||
return "bridge";
|
||||
return "???";
|
||||
}
|
||||
|
||||
#ifdef RESOLVE_HOSTNAMES
|
||||
struct namerec
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user