blob: f28fd8eeb2f83603be7c9247d11754478dcb85d2 [file] [log] [blame]
Harald Welted12eab92017-08-02 19:49:47 +02001#pragma once
2#include <stdint.h>
3#include <netinet/in.h>
4
5/* a simple wrapper around an in6_addr to also contain the length of the address,
6 * thereby implicitly indicating the address family of the address */
7struct in46_addr {
8 uint8_t len;
9 union {
10 struct in_addr v4;
11 struct in6_addr v6;
12 };
13};
14
15extern int in46a_to_af(const struct in46_addr *in);
16extern int in46a_to_sas(struct sockaddr_storage *out, const struct in46_addr *in);
17extern const char *in46a_ntop(const struct in46_addr *in, char *dst, socklen_t dst_size);
18extern int in46a_equal(const struct in46_addr *a, const struct in46_addr *b);
19extern int in46a_within_mask(const struct in46_addr *addr, const struct in46_addr *net, size_t prefixlen);