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