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;
456 JDNS_EXPORT
void jdns_probe(jdns_session_t *s);
464 JDNS_EXPORT
int jdns_query(jdns_session_t *s,
const unsigned char *name,
int rtype);
503 JDNS_EXPORT
int jdns_step(jdns_session_t *s);
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
JDNS_EXPORT int jdns_init_multicast(jdns_session_t *s, const jdns_address_t *addr, int port, const jdns_address_t *maddr)
void * app
user-supplied context
Definition: jdns.h:312
int id
query id or publish id
Definition: jdns.h:398
JDNS_EXPORT int jdns_address_cmp(const jdns_address_t *a, const jdns_address_t *b)
JDNS_EXPORT void jdns_update_publish(jdns_session_t *s, int id, const jdns_rr_t *rec)
jdns_server_t * server
for MX, SRV
Definition: jdns.h:240
Preprocessor magic to allow export of library symbols.
JDNS_EXPORT int jdns_publish(jdns_session_t *s, int mode, const jdns_rr_t *rec)
int(* time_now)(jdns_session_t *s, void *app)
Definition: jdns.h:319
JDNS_EXPORT void jdns_set_handle_writable(jdns_session_t *s, int handle)
void(* udp_unbind)(jdns_session_t *s, void *app, int handle)
Definition: jdns.h:357
JDNS_EXPORT void jdns_shutdown(jdns_session_t *s)
jdns_address_t * address
for A, AAAA
Definition: jdns.h:239
JDNS_EXPORT void jdns_set_handle_readable(jdns_session_t *s, int handle)
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
jdns_response_t * response
for query
Definition: jdns.h:409
JDNS_EXPORT int jdns_next_timer(jdns_session_t *s)
JDNS_EXPORT jdns_dnsparams_t * jdns_system_dnsparams()
JDNS_EXPORT void jdns_session_delete(jdns_session_t *s)
void(* debug_line)(jdns_session_t *s, void *app, const char *str)
Definition: jdns.h:333
int port
SRV only.
Definition: jdns.h:149
JDNS_EXPORT int jdns_init_unicast(jdns_session_t *s, const jdns_address_t *addr, int port)
JDNS_EXPORT void jdns_set_hold_ids_enabled(jdns_session_t *s, int enabled)
JDNS_EXPORT void jdns_probe(jdns_session_t *s)
JDNS_EXPORT void jdns_set_nameservers(jdns_session_t *s, const jdns_nameserverlist_t *nslist)
JDNS_EXPORT int jdns_step(jdns_session_t *s)
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_EXPORT void jdns_cancel_query(jdns_session_t *s, int id)
int(* rand_int)(jdns_session_t *s, void *app)
Definition: jdns.h:326
jdns_stringlist_t * texts
for TXT
Definition: jdns.h:242
unsigned char * name
for CNAME, PTR, NS
Definition: jdns.h:241
JDNS_EXPORT jdns_event_t * jdns_next_event(jdns_session_t *s)
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
JDNS_EXPORT jdns_session_t * jdns_session_new(jdns_callbacks_t *callbacks)
int weight
SRV only.
Definition: jdns.h:155
JDNS_EXPORT void jdns_cancel_publish(jdns_session_t *s, int id)
JDNS_EXPORT int jdns_address_set_cstr(jdns_address_t *a, const char *str)
JDNS_EXPORT int jdns_query(jdns_session_t *s, const unsigned char *name, int rtype)