-gint avahi_server_add_address(
- AvahiServer *s,
- AvahiEntryGroup *g,
- gint interface,
- guchar protocol,
- AvahiEntryFlags flags,
- const gchar *name,
- AvahiAddress *a) {
-
- gchar *n = NULL;
- g_assert(s);
- g_assert(a);
-
- name = name ? (n = avahi_normalize_name(name)) : s->host_name_fqdn;
-
- if (a->family == AF_INET) {
- gchar *reverse;
- AvahiRecord *r;
-
- r = avahi_record_new_full(name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_A);
- r->data.a.address = a->data.ipv4;
- avahi_server_add(s, g, interface, protocol, flags | AVAHI_ENTRY_UNIQUE, r);
- avahi_record_unref(r);
-
- reverse = avahi_reverse_lookup_name_ipv4(&a->data.ipv4);
- avahi_server_add_ptr(s, g, interface, protocol, flags | AVAHI_ENTRY_UNIQUE, reverse, name);
- g_free(reverse);
-
- } else {
- gchar *reverse;
- AvahiRecord *r;
-
- r = avahi_record_new_full(name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_AAAA);
- r->data.aaaa.address = a->data.ipv6;
- avahi_server_add(s, g, interface, protocol, flags | AVAHI_ENTRY_UNIQUE, r);
- avahi_record_unref(r);
-
- reverse = avahi_reverse_lookup_name_ipv6_arpa(&a->data.ipv6);
- avahi_server_add_ptr(s, g, interface, protocol, flags | AVAHI_ENTRY_UNIQUE, reverse, name);
- g_free(reverse);
-
- reverse = avahi_reverse_lookup_name_ipv6_int(&a->data.ipv6);
- avahi_server_add_ptr(s, g, interface, protocol, flags | AVAHI_ENTRY_UNIQUE, reverse, name);
- g_free(reverse);
- }
-
- g_free(n);