2 * Copyright (C) 2000, 2001 Internet Software Consortium.
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
9 * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
10 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
11 * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
13 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
14 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
15 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 /* $Id: context.h,v 1.1 2004/03/15 20:35:25 as Exp $ */
20 #ifndef LWRES_CONTEXT_H
21 #define LWRES_CONTEXT_H 1
25 #include <lwres/lang.h>
26 #include <lwres/int.h>
27 #include <lwres/result.h>
30 * Used to set various options such as timeout, authentication, etc
32 typedef struct lwres_context lwres_context_t
;
36 typedef void *(*lwres_malloc_t
)(void *arg
, size_t length
);
37 typedef void (*lwres_free_t
)(void *arg
, void *mem
, size_t length
);
42 * Make the server reload /etc/resolv.conf periodically.
44 * Make the server do sortlist/searchlist.
46 * Client side can disable the search/sortlist processing.
48 * Use an array of addresses/masks and searchlist for client-side, and
49 * if added to the client disable the processing on the server.
51 * Share /etc/resolv.conf data between contexts.
56 * Don't allocate and connect a socket to the server, since the
57 * caller _is_ a server.
59 #define LWRES_CONTEXT_SERVERMODE 0x00000001U
62 lwres_context_create(lwres_context_t
**contextp
, void *arg
,
63 lwres_malloc_t malloc_function
,
64 lwres_free_t free_function
,
67 * Allocate a lwres context. This is used in all lwres calls.
69 * Memory management can be replaced here by passing in two functions.
70 * If one is non-NULL, they must both be non-NULL. "arg" is passed to
73 * Contexts are not thread safe. Document at the top of the file.
76 * If they are NULL, the standard malloc() and free() will be used.
80 * contextp != NULL && contextp == NULL.
84 * Returns 0 on success, non-zero on failure.
88 lwres_context_destroy(lwres_context_t
**contextp
);
90 * Frees all memory associated with a lwres context.
94 * contextp != NULL && contextp == NULL.
98 lwres_context_nextserial(lwres_context_t
*ctx
);
104 lwres_context_initserial(lwres_context_t
*ctx
, lwres_uint32_t serial
);
107 lwres_context_freemem(lwres_context_t
*ctx
, void *mem
, size_t len
);
110 lwres_context_allocmem(lwres_context_t
*ctx
, size_t len
);
113 lwres_context_getsocket(lwres_context_t
*ctx
);
116 lwres_context_send(lwres_context_t
*ctx
,
117 void *sendbase
, int sendlen
);
120 lwres_context_recv(lwres_context_t
*ctx
,
121 void *recvbase
, int recvlen
,
125 lwres_context_sendrecv(lwres_context_t
*ctx
,
126 void *sendbase
, int sendlen
,
127 void *recvbase
, int recvlen
,
132 #endif /* LWRES_CONTEXT_H */