]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/in-addr-util.h
e07bd86ef7010ad7b69bf5669009c33a34d177f5
1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2014 Lennart Poettering
8 #include <netinet/in.h>
10 #include <sys/socket.h>
22 union in_addr_union address
;
25 bool in4_addr_is_null(const struct in_addr
*a
);
26 int in_addr_is_null(int family
, const union in_addr_union
*u
);
28 int in_addr_is_multicast(int family
, const union in_addr_union
*u
);
30 bool in4_addr_is_link_local(const struct in_addr
*a
);
31 int in_addr_is_link_local(int family
, const union in_addr_union
*u
);
33 bool in4_addr_is_localhost(const struct in_addr
*a
);
34 int in_addr_is_localhost(int family
, const union in_addr_union
*u
);
36 int in_addr_equal(int family
, const union in_addr_union
*a
, const union in_addr_union
*b
);
37 int in_addr_prefix_intersect(int family
, const union in_addr_union
*a
, unsigned aprefixlen
, const union in_addr_union
*b
, unsigned bprefixlen
);
38 int in_addr_prefix_next(int family
, union in_addr_union
*u
, unsigned prefixlen
);
39 int in_addr_to_string(int family
, const union in_addr_union
*u
, char **ret
);
40 int in_addr_ifindex_to_string(int family
, const union in_addr_union
*u
, int ifindex
, char **ret
);
41 int in_addr_from_string(int family
, const char *s
, union in_addr_union
*ret
);
42 int in_addr_from_string_auto(const char *s
, int *ret_family
, union in_addr_union
*ret
);
43 int in_addr_ifindex_from_string_auto(const char *s
, int *family
, union in_addr_union
*ret
, int *ifindex
);
44 unsigned char in4_addr_netmask_to_prefixlen(const struct in_addr
*addr
);
45 struct in_addr
* in4_addr_prefixlen_to_netmask(struct in_addr
*addr
, unsigned char prefixlen
);
46 int in4_addr_default_prefixlen(const struct in_addr
*addr
, unsigned char *prefixlen
);
47 int in4_addr_default_subnet_mask(const struct in_addr
*addr
, struct in_addr
*mask
);
48 int in_addr_mask(int family
, union in_addr_union
*addr
, unsigned char prefixlen
);
49 int in_addr_prefix_covers(int family
, const union in_addr_union
*prefix
, unsigned char prefixlen
, const union in_addr_union
*address
);
50 int in_addr_parse_prefixlen(int family
, const char *p
, unsigned char *ret
);
51 int in_addr_prefix_from_string(const char *p
, int family
, union in_addr_union
*ret_prefix
, unsigned char *ret_prefixlen
);
52 int in_addr_prefix_from_string_auto(const char *p
, int *ret_family
, union in_addr_union
*ret_prefix
, unsigned char *ret_prefixlen
);
54 static inline size_t FAMILY_ADDRESS_SIZE(int family
) {
55 assert(IN_SET(family
, AF_INET
, AF_INET6
));
56 return family
== AF_INET6
? 16 : 4;
59 #define IN_ADDR_NULL ((union in_addr_union) {})