X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=secnet.h;h=a38b77c00f6f78e3bbe94a3683222f554afe0905;hb=c1dec6ce30e7a925a7cacec16833a217187f1d84;hp=16d49596ba0baa2609c2431894fa6cd199524afe;hpb=f1af5809ba842b5ca0799a8e085e92967976ac34;p=secnet.git diff --git a/secnet.h b/secnet.h index 16d4959..a38b77c 100644 --- a/secnet.h +++ b/secnet.h @@ -3,6 +3,8 @@ #ifndef secnet_h #define secnet_h +#define ADNS_FEATURE_MANYAF + #include "config.h" #include #include @@ -30,6 +32,14 @@ typedef const char *cstring_t; #define True (_Bool)1 typedef _Bool bool_t; +union iaddr { + struct sockaddr sa; + struct sockaddr_in sin; +#ifdef CONFIG_IPV6 + struct sockaddr_in6 sin6; +#endif +}; + #define ASSERT(x) do { if (!(x)) { fatal("assertion failed line %d file " \ __FILE__,__LINE__); } } while(0) @@ -106,7 +116,7 @@ extern cstring_t *dict_keys(dict_t *dict); /* List-manipulation functions */ extern list_t *list_new(void); -extern int32_t list_length(list_t *a); +extern int32_t list_length(const list_t *a); extern list_t *list_append(list_t *a, item_t *i); extern list_t *list_append_list(list_t *a, list_t *b); /* Returns an item from the list (index starts at 0), or NULL */ @@ -285,7 +295,7 @@ struct buffer_if; will be freed once resolve_answer_fn returns. It is in network byte order. */ typedef void resolve_answer_fn(void *st, const struct comm_addr *addrs, - int naddrs); + int naddrs, const char *failwhy); typedef bool_t resolve_request_fn(void *st, cstring_t name, int remoteport, struct comm_if *comm, resolve_answer_fn *cb, void *cst); @@ -333,7 +343,8 @@ struct comm_addr { must start by memsetting it with FILLZERO, or some equivalent. */ struct comm_if *comm; - struct sockaddr_in sin; + union iaddr ia; + int ix; }; /* Return True if the packet was processed, and shouldn't be passed to @@ -561,6 +572,7 @@ extern void log_from_fd(int fd, cstring_t prefix, struct log_if *log); #define STRING(x) STRING2(x) #define FILLZERO(obj) (memset(&(obj),0,sizeof((obj)))) +#define ARRAY_SIZE(ary) (sizeof(ary)/sizeof(ary[0])) /* * void COPY_OBJ( OBJECT& dst, const OBJECT& src);