int port;
};
+/** @brief A socket address and length */
+struct resolved {
+
+ /** @brief Pointer to the address */
+ struct sockaddr *sa;
+
+ /** @brief Length of the address */
+ socklen_t len;
+};
+
struct addrinfo *get_address(const struct stringlist *a,
const struct addrinfo *pref,
- char **namep);
+ char **namep)
+ attribute((nonnull (1)));
int addrinfocmp(const struct addrinfo *a,
- const struct addrinfo *b);
+ const struct addrinfo *b) attribute((nonnull (1, 2)));
int sockaddrcmp(const struct sockaddr *a,
- const struct sockaddr *b);
+ const struct sockaddr *b) attribute((nonnull (1, 2)));
-int multicast(const struct sockaddr *sa);
-char *format_sockaddr(const struct sockaddr *sa);
+int multicast(const struct sockaddr *sa) attribute((nonnull (1)));
+char *format_sockaddr(const struct sockaddr *sa) attribute((nonnull (1)));
int netaddress_parse(struct netaddress *na,
int nvec,
- char **vec);
+ char **vec) attribute((nonnull (1)));
void netaddress_format(const struct netaddress *na,
int *nvecp,
- char ***vecp);
-struct addrinfo *netaddress_resolve(const struct netaddress *na,
- int passive,
- int protocol);
+ char ***vecp) attribute((nonnull (1)));
+int netaddress_resolve(const struct netaddress *na, int passive, int type,
+ struct resolved **raddr_out, size_t *nraddr_out)
+ attribute((nonnull (1, 4, 5)));
+void netaddress_free_resolved(struct resolved *raddr, size_t nraddr);
#endif /* ADDR_H */