net-util: add inet address/family parsing

This commit is contained in:
Tom Gundersen 2013-11-09 22:19:42 +01:00
parent b226deba78
commit f52841825a
2 changed files with 30 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include <netinet/ether.h>
#include <net/if.h>
#include <arpa/inet.h>
#include "net-util.h"
#include "log.h"
@ -163,3 +164,30 @@ int config_parse_hwaddr(const char *unit,
return 0;
}
int net_parse_inaddr(const char *address, unsigned char *family, void *dst) {
int r;
assert(address);
assert(family);
assert(dst);
/* IPv4 */
r = inet_pton(AF_INET, address, dst);
if (r > 0)
*family = AF_INET; /* successfully parsed IPv4 address */
else if (r < 0)
return -errno;
else {
/* not an IPv4 address, so let's try IPv6 */
r = inet_pton(AF_INET6, address, dst);
if (r > 0)
*family = AF_INET6; /* successfully parsed IPv6 address */
else if (r < 0)
return -errno;
else
return -EINVAL;
}
return 0;
}

View File

@ -42,3 +42,5 @@ int config_parse_hwaddr(const char *unit, const char *filename, unsigned line,
int config_parse_ifname(const char *unit, const char *filename, unsigned line,
const char *section, const char *lvalue, int ltype,
const char *rvalue, void *data, void *userdata);
int net_parse_inaddr(const char *address, unsigned char *family, void *dst);