1#ifndef foollmnrqueryschedhbar
2#define foollmnrqueryschedhbar
3
4typedef struct AvahiLLMNRQueryJob AvahiLLMNRQueryJob;
5typedef struct AvahiLLMNRQueryScheduler AvahiLLMNRQueryScheduler;
6
7#include "iface.h"
8
9#define AVAHI_LLMNR_INTERVAL 1000
10#define AVAHI_LLMNR_JITTER 100
11
12struct AvahiLLMNRQueryJob {
13    AvahiLLMNRQueryScheduler *scheduler;
14    AvahiLLMNRQuery *lq;
15
16    int n_sent, prev_scheduled;
17    AvahiDnsPacket *p;
18
19    AvahiTimeEvent *time_event;
20
21    /* List of jobs maintained by AvahiLLMNRQueryScheduler*/
22    AVAHI_LLIST_FIELDS(AvahiLLMNRQueryJob, jobs_by_scheduler);
23
24    /* List of jobs maintained by Interface. */
25    /* Both contain the same data. */
26    AVAHI_LLIST_FIELDS(AvahiLLMNRQueryJob, jobs_by_interface);
27};
28
29struct AvahiLLMNRQueryScheduler {
30    AvahiInterface *i;
31    AvahiTimeEventQueue *time_event_queue;
32
33    /* For 'lq' lq->post_id */
34    unsigned int next_id;
35
36    AVAHI_LLIST_HEAD(AvahiLLMNRQueryJob, jobs);
37};
38
39/* Add new query scheduler for specified Interface*/
40AvahiLLMNRQueryScheduler *avahi_llmnr_query_scheduler_new(AvahiInterface *i);
41
42/* This would destroy 'qj' as well as corresponding 'lq' object. */
43void avahi_llmnr_query_job_destroy(AvahiLLMNRQueryScheduler *s, AvahiLLMNRQueryJob *qj);
44
45void avahi_llmnr_query_scheduler_free(AvahiLLMNRQueryScheduler *s);
46void avahi_llmnr_query_scheduler_clear(AvahiLLMNRQueryScheduler *s);
47
48/* Issue an 'AvahiLLMNRQueryJob' for 'AvahiLLMNRQuery' object(lq) on specified scheduler */
49/* This would fill 'lq->post_id' */
50int avahi_llmnr_query_scheduler_post(AvahiLLMNRQueryScheduler *s, AvahiLLMNRQuery *lq, int immediately);
51
52/* Remove AvahiLLMNRQuery and AvahiLLMNRQueryJob for this id.
53(id == ls->post_id, which was created during avahi_llmnr_query_scheduler_post(s, lq, immediately)) */
54int avahi_llmnr_query_scheduler_withdraw_by_id(AvahiLLMNRQueryScheduler *s, unsigned id);
55void avahi_llmnr_query_job_remove(AvahiInterface *i, AvahiKey *key);
56
57#endif /*foollmnrquerychedhbar*/
58