1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
6 This file is part of systemd.
8 Copyright 2014 Lennart Poettering
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 #include <netinet/in.h>
34 int in_addr_null(unsigned family, union in_addr_union *u);
35 int in_addr_equal(unsigned family, union in_addr_union *a, union in_addr_union *b);
36 int in_addr_prefix_intersect(unsigned family, const union in_addr_union *a, unsigned aprefixlen, const union in_addr_union *b, unsigned bprefixlen);
37 int in_addr_prefix_next(unsigned family, union in_addr_union *u, unsigned prefixlen);
38 int in_addr_to_string(unsigned family, const union in_addr_union *u, char **ret);
39 int in_addr_from_string(unsigned family, const char *s, union in_addr_union *ret);
40 int in_addr_from_string_auto(const char *s, unsigned *family, union in_addr_union *ret);
42 static inline size_t PROTO_ADDRESS_SIZE(int proto) {
43 assert(proto == AF_INET || proto == AF_INET6);
44 return proto == AF_INET6 ? 16 : 4;