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