summaryrefslogtreecommitdiff
path: root/nscd/nscd-client.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-09-15 08:25:49 +0000
committerUlrich Drepper <drepper@redhat.com>2004-09-15 08:25:49 +0000
commitd19687d6ebc545b633e14c07429f7892a599d0b9 (patch)
tree033b6f123581d67026b2375b77175a93dfdc32dd /nscd/nscd-client.h
parent5d156bb641c71070aab9129fe1dac03287b9938a (diff)
Update.
2004-09-15 Ulrich Drepper <drepper@redhat.com> * nscd/Makefile (rountines): Add nscd_getai. (nscd-modules): Add aicache. * nscd/aicache.c: New file. * nscd/nscd_getai.c: New file. * nscd/cache.c (prune_cache): Handle GETAI request type. * nscd/connections.c: Add GETAI support in request handling. * nscd/nscd-client.h (request_type): Add GETAI. Define ai_response_header and struct nscd_ai_result types. (struct datahead): Add aidata field. Declare __nscd_getai. * nscd/nscd.c: Add getaddrinfo definition to catch problems. * nscd/nscd.h: Declare addhstai and readdhstai. * sysdeps/posix/getaddrinfo.c: Add support for using cached results. * nscd/nscd-client.h (struct datahead): Use uint8_t instead of bool.
Diffstat (limited to 'nscd/nscd-client.h')
-rw-r--r--nscd/nscd-client.h32
1 files changed, 30 insertions, 2 deletions
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index 8f3f3a11d7..1a0dd732db 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -61,6 +61,7 @@ typedef enum
GETFDPW,
GETFDGR,
GETFDHST,
+ GETAI,
LASTREQ
} request_type;
@@ -118,6 +119,28 @@ typedef struct
} hst_response_header;
+/* Structure sent in reply to addrinfo query. Note that this struct is
+ sent also if the service is disabled or there is no record found. */
+typedef struct
+{
+ int32_t version;
+ int32_t found;
+ nscd_ssize_t naddrs;
+ nscd_ssize_t addrslen;
+ nscd_ssize_t canonlen;
+ int32_t error;
+} ai_response_header;
+
+/* Structure filled in by __nscd_getai. */
+struct nscd_ai_result
+{
+ int naddrs;
+ char *canon;
+ uint8_t *family;
+ char *addrs;
+};
+
+
/* Type for offsets in data part of database. */
typedef uint32_t ref_t;
/* Value for invalid/no reference. */
@@ -136,9 +159,9 @@ struct datahead
nscd_ssize_t allocsize; /* Allocated Bytes. */
nscd_ssize_t recsize; /* Size of the record. */
nscd_time_t timeout; /* Time when this entry becomes invalid. */
- bool notfound; /* Nonzero if data has not been found. */
+ uint8_t notfound; /* Nonzero if data has not been found. */
uint8_t nreloads; /* Reloads without use. */
- bool usable; /* False if the entry must be ignored. */
+ uint8_t usable; /* False if the entry must be ignored. */
uint64_t :40; /* Alignment. */
/* We need to have the following element aligned for the response
@@ -149,6 +172,7 @@ struct datahead
pw_response_header pwdata;
gr_response_header grdata;
hst_response_header hstdata;
+ ai_response_header aidata;
nscd_ssize_t align1;
nscd_time_t align2;
} data[0];
@@ -270,4 +294,8 @@ extern const struct datahead *__nscd_cache_search (request_type type,
size_t keylen,
const struct mapped_database *mapped);
+/* Look up in addrinfo cache. */
+extern int __nscd_getai (const char *key, struct nscd_ai_result **result,
+ int *h_errnop);
+
#endif /* nscd.h */