1#ifndef fooverifyhbar
2#define fooverifyhbar
3
4typedef struct AvahiLLMNREntryVerify AvahiLLMNREntryVerify;
5typedef struct AvahiVerifierData AvahiVerifierData;
6
7#include <avahi-common/address.h>
8
9#include "internal.h"
10#include "publish.h"
11
12/* State of the verifier */
13typedef enum {
14    AVAHI_VERIFYING,
15    AVAHI_CONFLICT,
16    AVAHI_VERIFIED,
17    AVAHI_LLMNR_ESTABLISHED
18} AvahiLLMNREntryVerifyState;
19
20/* AvahiLLMNREntryVerify */
21struct AvahiLLMNREntryVerify {
22    AvahiServer *s;
23    AvahiInterface *interface;
24    AvahiEntry *e;
25
26    AvahiLLMNRQuery *lq;
27    AvahiLLMNREntryVerifyState state;
28
29    AVAHI_LLIST_FIELDS(AvahiLLMNREntryVerify, by_interface);
30    AVAHI_LLIST_FIELDS(AvahiLLMNREntryVerify, by_entry);
31};
32
33/* This structure is passed as userdata in AvahiLLMNRQuery */
34struct AvahiVerifierData {
35    AvahiLLMNREntryVerify *ev;
36    const AvahiAddress *address;
37    int t_bit;
38};
39
40void avahi_verify_interface(AvahiServer *s, AvahiInterface *i);
41void avahi_verify_entry(AvahiServer *s, AvahiEntry *e);
42void avahi_verify_group(AvahiServer *s, AvahiSEntryGroup *g);
43
44void avahi_llmnr_entry_return_to_initial_state(AvahiServer *s, AvahiEntry *e, AvahiInterface *i);
45
46/* returns -1 if there is no verifier or state is AVAHI_CONFLICT for this entry */
47/* returns 1 if state is AVAHI_VERFYING */
48/* return 0 if state is AVHAI_VERIFIED */
49int avahi_llmnr_entry_is_verifying(AvahiServer *s, AvahiEntry *e, AvahiInterface *i);
50/* AvahiLLMNREntryVerify* get_verifier(AvahiSLLMNR *sl, AvahiInterface *i, AvahiEntry *e)*/
51
52void avahi_reverify_entry(AvahiServer *s, AvahiEntry *e);
53AvahiLLMNREntryVerifyState avahi_llmnr_entry_verify_state(AvahiLLMNREntryVerify *ev);
54void avahi_remove_verifiers(AvahiServer *s, AvahiEntry *e);
55void avahi_remove_interface_verifiers(AvahiServer *s, AvahiInterface *i);
56
57#endif /* fooverifyhbar */
58