ip addr helpers

This commit is contained in:
pantonshire committed 2026-09-06 09:33:02 +01:00
1 parent e298e1950b
commit ecdbef8b45
3 files changed
+77 -2

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
#include <errno.h>
#include <arpa/inet.h>
#include "export.h"
#include "public/net.h"
EXPORT int tlsl_ip_addr_parse(const char *s, struct tlsl_ip_addr *out) {
if (inet_pton(AF_INET, s, &out->v4) == 1) {
out->l3proto = TLSL_L3PROTO_IPV4;
return 0;
}
if (inet_pton(AF_INET6, s, &out->v6) == 1) {
out->l3proto = TLSL_L3PROTO_IPV6;
return 0;
}
return 1;
}
EXPORT str_buf_t tlsl_ip_addr_fmt(const struct tlsl_ip_addr *a) {
char buf[INET6_ADDRSTRLEN] = { 0 };
const char *res;
switch (a->l3proto) {
case TLSL_L3PROTO_IPV4:
res = inet_ntop(AF_INET, &a->v4, buf, sizeof(buf));
break;
case TLSL_L3PROTO_IPV6:
res = inet_ntop(AF_INET6, &a->v6, buf, sizeof(buf));
break;
default:
errno = EINVAL;
return SBUF_NULL;
}
if (!res)
return SBUF_NULL;
return sbuf_from_sview(sview_from_cstr_unbounded(buf));
}