27 #include "jdns_export.h" 33 typedef void (*jdns_object_dtor_func)(
void *);
34 typedef void *(*jdns_object_cctor_func)(
const void *);
37 jdns_object_dtor_func dtor; \ 38 jdns_object_cctor_func cctor; 40 #define JDNS_OBJECT_NEW(name) \ 41 (name##_t *)jdns_object_new(sizeof(name##_t), \ 42 (jdns_object_dtor_func)name##_delete, \ 43 (jdns_object_cctor_func)name##_copy); 50 JDNS_EXPORT
void *jdns_object_new(
int size,
void (*dtor)(
void *),
51 void *(*cctor)(
const void *));
52 JDNS_EXPORT
void *jdns_object_copy(
const void *a);
53 JDNS_EXPORT
void jdns_object_delete(
void *a);
54 JDNS_EXPORT
void jdns_object_free(
void *a);
56 #define JDNS_LIST_DECLARE(name) \ 74 JDNS_EXPORT
void jdns_list_insert(
jdns_list_t *a,
void *item,
int pos);
75 JDNS_EXPORT
void jdns_list_insert_value(
jdns_list_t *a,
const void *item,
int pos);
76 JDNS_EXPORT
void jdns_list_remove(
jdns_list_t *a,
void *item);
77 JDNS_EXPORT
void jdns_list_remove_at(
jdns_list_t *a,
int pos);
89 JDNS_EXPORT
void jdns_string_set(
jdns_string_t *s,
const unsigned char *str,
91 JDNS_EXPORT
void jdns_string_set_cstr(
jdns_string_t *s,
const char *str);
111 unsigned long int v4;
120 JDNS_EXPORT
void jdns_address_set_ipv4(
jdns_address_t *a,
unsigned long int ipv4);
121 JDNS_EXPORT
void jdns_address_set_ipv6(
jdns_address_t *a,
const unsigned char *ipv6);
123 JDNS_EXPORT
int jdns_address_set_cstr(
jdns_address_t *a,
const char *str);
128 #define JDNS_UNICAST_PORT 53 129 #define JDNS_MULTICAST_PORT 5353 144 JDNS_EXPORT
void jdns_server_set_name(
jdns_server_t *s,
const unsigned char *name);
199 #define JDNS_RTYPE_A 1 200 #define JDNS_RTYPE_AAAA 28 201 #define JDNS_RTYPE_MX 15 202 #define JDNS_RTYPE_SRV 33 203 #define JDNS_RTYPE_CNAME 5 204 #define JDNS_RTYPE_PTR 12 205 #define JDNS_RTYPE_TXT 16 206 #define JDNS_RTYPE_HINFO 13 207 #define JDNS_RTYPE_NS 2 208 #define JDNS_RTYPE_ANY 255 212 unsigned char *owner;
217 unsigned char *rdata;
236 JDNS_EXPORT
void jdns_rr_delete(
jdns_rr_t *r);
237 JDNS_EXPORT
void jdns_rr_set_owner(
jdns_rr_t *r,
const unsigned char *name);
238 JDNS_EXPORT
void jdns_rr_set_record(
jdns_rr_t *r,
int type,
const unsigned char *rdata,
242 JDNS_EXPORT
void jdns_rr_set_MX(
jdns_rr_t *r,
const unsigned char *name,
int priority);
243 JDNS_EXPORT
void jdns_rr_set_SRV(
jdns_rr_t *r,
const unsigned char *name,
int port,
244 int priority,
int weight);
245 JDNS_EXPORT
void jdns_rr_set_CNAME(
jdns_rr_t *r,
const unsigned char *name);
246 JDNS_EXPORT
void jdns_rr_set_PTR(
jdns_rr_t *r,
const unsigned char *name);
250 JDNS_EXPORT
void jdns_rr_set_NS(
jdns_rr_t *r,
const unsigned char *name);
252 JDNS_EXPORT
int jdns_rr_verify(
const jdns_rr_t *r);
272 #define JDNS_PUBLISH_SHARED 0x0001 273 #define JDNS_PUBLISH_UNIQUE 0x0002 275 #define JDNS_STEP_TIMER 0x0001 276 #define JDNS_STEP_HANDLE 0x0002 278 #define JDNS_EVENT_RESPONSE 0x0001 279 #define JDNS_EVENT_PUBLISH 0x0002 280 #define JDNS_EVENT_SHUTDOWN 0x0003 282 #define JDNS_STATUS_SUCCESS 0x0001 283 #define JDNS_STATUS_NXDOMAIN 0x0002 284 #define JDNS_STATUS_ERROR 0x0003 285 #define JDNS_STATUS_TIMEOUT 0x0004 286 #define JDNS_STATUS_CONFLICT 0x0005 288 typedef struct jdns_session jdns_session_t;
298 int (*time_now)(jdns_session_t *s,
void *app);
304 int (*rand_int)(jdns_session_t *s,
void *app);
311 void (*debug_line)(jdns_session_t *s,
void *app,
const char *str);
324 int (*udp_bind)(jdns_session_t *s,
void *app,
333 void (*udp_unbind)(jdns_session_t *s,
void *app,
int handle);
344 int (*udp_read)(jdns_session_t *s,
void *app,
int handle,
357 int (*udp_write)(jdns_session_t *s,
void *app,
int handle,
385 JDNS_EXPORT
void jdns_session_delete(jdns_session_t *s);
392 JDNS_EXPORT
int jdns_init_unicast(jdns_session_t *s,
const jdns_address_t *addr,
401 JDNS_EXPORT
int jdns_init_multicast(jdns_session_t *s,
const jdns_address_t *addr,
407 JDNS_EXPORT
void jdns_shutdown(jdns_session_t *s);
413 JDNS_EXPORT
void jdns_set_nameservers(jdns_session_t *s,
419 JDNS_EXPORT
void jdns_probe(jdns_session_t *s);
426 JDNS_EXPORT
int jdns_query(jdns_session_t *s,
const unsigned char *name,
int rtype);
432 JDNS_EXPORT
void jdns_cancel_query(jdns_session_t *s,
int id);
441 JDNS_EXPORT
int jdns_publish(jdns_session_t *s,
int mode,
const jdns_rr_t *rec);
450 JDNS_EXPORT
void jdns_update_publish(jdns_session_t *s,
int id,
const jdns_rr_t *rec);
456 JDNS_EXPORT
void jdns_cancel_publish(jdns_session_t *s,
int id);
461 JDNS_EXPORT
int jdns_step(jdns_session_t *s);
466 JDNS_EXPORT
int jdns_next_timer(jdns_session_t *s);
472 JDNS_EXPORT
void jdns_set_handle_readable(jdns_session_t *s,
int handle);
478 JDNS_EXPORT
void jdns_set_handle_writable(jdns_session_t *s,
int handle);
483 JDNS_EXPORT
jdns_event_t *jdns_next_event(jdns_session_t *s);
502 JDNS_EXPORT
void jdns_set_hold_ids_enabled(jdns_session_t *s,
int enabled);