Beispiel #1
0
static void new_verifier(AvahiServer *s, AvahiInterface *i, AvahiEntry *e) {
    AvahiLLMNREntryVerify *ev;

    assert(s);
    assert(i);
    assert(e);
    assert(!e->dead);
    assert(e->type == AVAHI_ENTRY_LLMNR);

    if( !avahi_interface_match (i, e->interface, e->protocol) ||
        !i->llmnr.verifying ||
        !avahi_entry_is_commited(e) )
    /* start verifying rr's only when group has been commited */
        return;

    if(get_verifier(s, i, e))
        return;

    if(!(ev = avahi_new(AvahiLLMNREntryVerify, 1)))
        return;

    ev->s= s;
    ev->interface = i;
    ev->e = e;
    ev->lq = NULL;

    AVAHI_LLIST_PREPEND(AvahiLLMNREntryVerify, by_interface, i->llmnr.verifiers, ev);
    AVAHI_LLIST_PREPEND(AvahiLLMNREntryVerify, by_entry, e->proto.llmnr.verifiers, ev);

    set_state(ev);
}
Beispiel #2
0
static void new_announcer(AvahiServer *s, AvahiInterface *i, AvahiEntry *e) {
    AvahiAnnouncer *a;

    assert(s);
    assert(i);
    assert(e);
    assert(!e->dead);

    if (!avahi_interface_match(i, e->interface, e->protocol) || !i->announcing || !avahi_entry_is_commited(e))
        return;

    /* We don't want duplicate announcers */
    if (get_announcer(s, e, i))
        return;

    if ((!(a = avahi_new(AvahiAnnouncer, 1)))) {
        avahi_log_error(__FILE__": Out of memory.");
        return;
    }

    a->server = s;
    a->interface = i;
    a->entry = e;
    a->time_event = NULL;

    AVAHI_LLIST_PREPEND(AvahiAnnouncer, by_interface, i->announcers, a);
    AVAHI_LLIST_PREPEND(AvahiAnnouncer, by_entry, e->announcers, a);

    go_to_initial_state(a);
}