mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
net-util: add inet address/family parsing
This commit is contained in:
parent
b226deba78
commit
f52841825a
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user