| #ifndef LOOKUP_H |
| #define LOOKUP_H |
| |
| #include <stdint.h> |
| #include <stddef.h> |
| |
| struct address { |
| int family; |
| unsigned scopeid; |
| uint8_t addr[16]; |
| int sortkey; |
| }; |
| |
| struct service { |
| uint16_t port; |
| unsigned char proto, socktype; |
| }; |
| |
| #define MAXNS 3 |
| |
| struct resolvconf { |
| struct address ns[MAXNS]; |
| unsigned nns, attempts, ndots; |
| unsigned timeout; |
| }; |
| |
| /* The limit of 48 results is a non-sharp bound on the number of addresses |
| * that can fit in one 512-byte DNS packet full of v4 results and a second |
| * packet full of v6 results. Due to headers, the actual limit is lower. */ |
| #define MAXADDRS 48 |
| #define MAXSERVS 2 |
| |
| int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int socktype, int flags); |
| int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags); |
| int __lookup_ipliteral(struct address buf[static 1], const char *name, int family); |
| |
| int __get_resolv_conf(struct resolvconf *, char *, size_t); |
| |
| #endif |