xref: /aosp_15_r20/external/libnl/include/netlink/addr.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1 /* SPDX-License-Identifier: LGPL-2.1-only */
2 /*
3  * Copyright (c) 2003-2013 Thomas Graf <[email protected]>
4  */
5 
6 #ifndef NETLINK_ADDR_H_
7 #define NETLINK_ADDR_H_
8 
9 #include <netlink/netlink.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct nlattr;
16 
17 struct nl_addr;
18 
19 /* Creation */
20 extern struct nl_addr *	nl_addr_alloc(size_t);
21 extern struct nl_addr *	nl_addr_alloc_attr(const struct nlattr *, int);
22 extern struct nl_addr *	nl_addr_build(int, const void *, size_t);
23 extern int		nl_addr_parse(const char *, int, struct nl_addr **);
24 extern struct nl_addr *	nl_addr_clone(const struct nl_addr *);
25 
26 /* Usage Management */
27 extern struct nl_addr *	nl_addr_get(struct nl_addr *);
28 extern void		nl_addr_put(struct nl_addr *);
29 extern int		nl_addr_shared(const struct nl_addr *);
30 
31 extern int		nl_addr_cmp(const struct nl_addr *,
32 				    const struct nl_addr *);
33 extern int		nl_addr_cmp_prefix(const struct nl_addr *,
34 					   const struct nl_addr *);
35 extern int		nl_addr_iszero(const struct nl_addr *);
36 extern int		nl_addr_valid(const char *, int);
37 extern int      	nl_addr_guess_family(const struct nl_addr *);
38 extern int		nl_addr_fill_sockaddr(const struct nl_addr *,
39 					      struct sockaddr *, socklen_t *);
40 extern int		nl_addr_info(const struct nl_addr *,
41 				     struct addrinfo **);
42 extern int		nl_addr_resolve(const struct nl_addr *, char *, size_t);
43 
44 /* Access Functions */
45 extern void		nl_addr_set_family(struct nl_addr *, int);
46 extern int		nl_addr_get_family(const struct nl_addr *);
47 extern int		nl_addr_set_binary_addr(struct nl_addr *, const void *,
48 						size_t);
49 extern void *		nl_addr_get_binary_addr(const struct nl_addr *);
50 extern unsigned int	nl_addr_get_len(const struct nl_addr *);
51 extern void		nl_addr_set_prefixlen(struct nl_addr *, int);
52 extern unsigned int	nl_addr_get_prefixlen(const struct nl_addr *);
53 
54 /* Address Family Translations */
55 extern char *		nl_af2str(int, char *, size_t);
56 extern int		nl_str2af(const char *);
57 
58 /* Translations to Strings */
59 extern char *		nl_addr2str(const struct nl_addr *, char *, size_t);
60 
61 #ifdef __cplusplus
62 }
63 #endif
64 
65 #endif
66