37 typedef void (*jdns_object_dtor_func)(
void *);
38 typedef void *(*jdns_object_cctor_func)(
const void *);
41 jdns_object_dtor_func dtor; \
42 jdns_object_cctor_func cctor;
44 #define JDNS_OBJECT_NEW(name) \
45 (name##_t *)jdns_object_new(sizeof(name##_t), \
46 (jdns_object_dtor_func)name##_delete, \
47 (jdns_object_cctor_func)name##_copy);
54 JDNS_EXPORT
void *jdns_object_new(
int size,
void (*dtor)(
void *),
55 void *(*cctor)(
const void *));
56 JDNS_EXPORT
void *jdns_object_copy(
const void *a);
57 JDNS_EXPORT
void jdns_object_delete(
void *a);
58 JDNS_EXPORT
void jdns_object_free(
void *a);
60 #define JDNS_LIST_DECLARE(name) \
78 JDNS_EXPORT
void jdns_list_insert(
jdns_list_t *a,
void *item,
int pos);
79 JDNS_EXPORT
void jdns_list_insert_value(
jdns_list_t *a,
const void *item,
int pos);
80 JDNS_EXPORT
void jdns_list_remove(
jdns_list_t *a,
void *item);
81 JDNS_EXPORT
void jdns_list_remove_at(
jdns_list_t *a,
int pos);
93 JDNS_EXPORT
void jdns_string_set(
jdns_string_t *s,
const unsigned char *str,
95 JDNS_EXPORT
void jdns_string_set_cstr(
jdns_string_t *s,
const char *str);
115 unsigned long int v4;
124 JDNS_EXPORT
void jdns_address_set_ipv4(
jdns_address_t *a,
unsigned long int ipv4);
125 JDNS_EXPORT
void jdns_address_set_ipv6(
jdns_address_t *a,
const unsigned char *ipv6);
138 #define JDNS_UNICAST_PORT 53
139 #define JDNS_MULTICAST_PORT 5353
161 JDNS_EXPORT
void jdns_server_set_name(
jdns_server_t *s,
const unsigned char *name);
216 #define JDNS_RTYPE_A 1
217 #define JDNS_RTYPE_AAAA 28
218 #define JDNS_RTYPE_MX 15
219 #define JDNS_RTYPE_SRV 33
220 #define JDNS_RTYPE_CNAME 5
221 #define JDNS_RTYPE_PTR 12
222 #define JDNS_RTYPE_TXT 16
223 #define JDNS_RTYPE_HINFO 13
224 #define JDNS_RTYPE_NS 2
225 #define JDNS_RTYPE_ANY 255
229 unsigned char *owner;
234 unsigned char *rdata;
253 JDNS_EXPORT
void jdns_rr_delete(
jdns_rr_t *r);
254 JDNS_EXPORT
void jdns_rr_set_owner(
jdns_rr_t *r,
const unsigned char *name);
255 JDNS_EXPORT
void jdns_rr_set_record(
jdns_rr_t *r,
int type,
const unsigned char *rdata,
259 JDNS_EXPORT
void jdns_rr_set_MX(
jdns_rr_t *r,
const unsigned char *name,
int priority);
260 JDNS_EXPORT
void jdns_rr_set_SRV(
jdns_rr_t *r,
const unsigned char *name,
int port,
261 int priority,
int weight);
262 JDNS_EXPORT
void jdns_rr_set_CNAME(
jdns_rr_t *r,
const unsigned char *name);
263 JDNS_EXPORT
void jdns_rr_set_PTR(
jdns_rr_t *r,
const unsigned char *name);
267 JDNS_EXPORT
void jdns_rr_set_NS(
jdns_rr_t *r,
const unsigned char *name);
269 JDNS_EXPORT
int jdns_rr_verify(
const jdns_rr_t *r);
289 #define JDNS_PUBLISH_SHARED 0x0001
290 #define JDNS_PUBLISH_UNIQUE 0x0002
292 #define JDNS_STEP_TIMER 0x0001
293 #define JDNS_STEP_HANDLE 0x0002
295 #define JDNS_EVENT_RESPONSE 0x0001
296 #define JDNS_EVENT_PUBLISH 0x0002
297 #define JDNS_EVENT_SHUTDOWN 0x0003
299 #define JDNS_STATUS_SUCCESS 0x0001
300 #define JDNS_STATUS_NXDOMAIN 0x0002
301 #define JDNS_STATUS_ERROR 0x0003
302 #define JDNS_STATUS_TIMEOUT 0x0004
303 #define JDNS_STATUS_CONFLICT 0x0005
305 typedef struct jdns_session jdns_session_t;
464 JDNS_EXPORT
int jdns_query(jdns_session_t *s,
const unsigned char *name,
int rtype);
JDNS_EXPORT int jdns_address_cmp(const jdns_address_t *a, const jdns_address_t *b)
JDNS_EXPORT jdns_dnsparams_t * jdns_system_dnsparams()
JDNS_EXPORT jdns_session_t * jdns_session_new(jdns_callbacks_t *callbacks)
JDNS_EXPORT void jdns_cancel_query(jdns_session_t *s, int id)
JDNS_EXPORT int jdns_publish(jdns_session_t *s, int mode, const jdns_rr_t *rec)
JDNS_EXPORT int jdns_next_timer(jdns_session_t *s)
JDNS_EXPORT void jdns_set_hold_ids_enabled(jdns_session_t *s, int enabled)
JDNS_EXPORT void jdns_set_nameservers(jdns_session_t *s, const jdns_nameserverlist_t *nslist)
JDNS_EXPORT int jdns_query(jdns_session_t *s, const unsigned char *name, int rtype)
JDNS_EXPORT void jdns_set_handle_writable(jdns_session_t *s, int handle)
JDNS_EXPORT void jdns_probe(jdns_session_t *s)
JDNS_EXPORT void jdns_update_publish(jdns_session_t *s, int id, const jdns_rr_t *rec)
JDNS_EXPORT int jdns_init_unicast(jdns_session_t *s, const jdns_address_t *addr, int port)
JDNS_EXPORT jdns_event_t * jdns_next_event(jdns_session_t *s)
JDNS_EXPORT void jdns_set_handle_readable(jdns_session_t *s, int handle)
JDNS_EXPORT void jdns_cancel_publish(jdns_session_t *s, int id)
JDNS_EXPORT void jdns_session_delete(jdns_session_t *s)
JDNS_EXPORT int jdns_init_multicast(jdns_session_t *s, const jdns_address_t *addr, int port, const jdns_address_t *maddr)
JDNS_EXPORT int jdns_address_set_cstr(jdns_address_t *a, const char *str)
JDNS_EXPORT int jdns_step(jdns_session_t *s)
JDNS_EXPORT void jdns_shutdown(jdns_session_t *s)
Preprocessor magic to allow export of library symbols.
int(* rand_int)(jdns_session_t *s, void *app)
Definition: jdns.h:326
void(* debug_line)(jdns_session_t *s, void *app, const char *str)
Definition: jdns.h:333
void(* udp_unbind)(jdns_session_t *s, void *app, int handle)
Definition: jdns.h:357
int(* udp_write)(jdns_session_t *s, void *app, int handle, const jdns_address_t *addr, int port, unsigned char *buf, int bufsize)
Definition: jdns.h:383
int(* time_now)(jdns_session_t *s, void *app)
Definition: jdns.h:319
int(* udp_read)(jdns_session_t *s, void *app, int handle, jdns_address_t *addr, int *port, unsigned char *buf, int *bufsize)
Definition: jdns.h:369
int(* udp_bind)(jdns_session_t *s, void *app, const jdns_address_t *addr, int port, const jdns_address_t *maddr)
Definition: jdns.h:348
void * app
user-supplied context
Definition: jdns.h:312
int id
query id or publish id
Definition: jdns.h:398
int type
JDNS_EVENT.
Definition: jdns.h:393
int status
for query, this can be SUCCESS, NXDOMAIN, ERROR, or TIMEOUT for publish, this can be SUCCESS,...
Definition: jdns.h:404
jdns_response_t * response
for query
Definition: jdns.h:409
jdns_server_t * server
for MX, SRV
Definition: jdns.h:240
jdns_stringlist_t * texts
for TXT
Definition: jdns.h:242
jdns_address_t * address
for A, AAAA
Definition: jdns.h:239
unsigned char * name
for CNAME, PTR, NS
Definition: jdns.h:241
int port
SRV only.
Definition: jdns.h:149
int weight
SRV only.
Definition: jdns.h:155