X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/e7eb3a2744aa45179daea235800753d3d1955338..0e8c21de2a464fc913e0dbb6f7f148a84db95d55:/lib/addr.h diff --git a/lib/addr.h b/lib/addr.h index 973733f..90c165e 100644 --- a/lib/addr.h +++ b/lib/addr.h @@ -23,7 +23,23 @@ #include -#include "configuration.h" +struct stringlist; + +/** @brief A network address */ +struct netaddress { + /** @brief Address family + * + * Typically @c AF_UNIX, @c AF_INET, @c AF_INET6 or @c AF_UNSPEC. + * Set to -1 to mean 'no address'. + */ + int af; + + /** @brief Address or NULL for 'any' */ + char *address; + + /** @brief Port number */ + int port; +}; struct addrinfo *get_address(const struct stringlist *a, const struct addrinfo *pref, @@ -31,10 +47,22 @@ struct addrinfo *get_address(const struct stringlist *a, int addrinfocmp(const struct addrinfo *a, const struct addrinfo *b); +int sockaddrcmp(const struct sockaddr *a, + const struct sockaddr *b); int multicast(const struct sockaddr *sa); char *format_sockaddr(const struct sockaddr *sa); +int netaddress_parse(struct netaddress *na, + int nvec, + char **vec); +void netaddress_format(const struct netaddress *na, + int *nvecp, + char ***vecp); +struct addrinfo *netaddress_resolve(const struct netaddress *na, + int passive, + int protocol); + #endif /* ADDR_H */ /*