]> git.meshlink.io Git - catta/blobdiff - avahi-daemon/static-hosts.c
add sys/types.h for openbsd compat
[catta] / avahi-daemon / static-hosts.c
index 9941a51dcc56bc566dd5eb812679b8335b0c2b93..ebc358df2e3663233a8b3ae9571dd2ba3c37a958 100644 (file)
@@ -110,11 +110,13 @@ static void static_host_free(StaticHost *s) {
 static void add_static_host_to_server(StaticHost *h)
 {
     AvahiAddress a;
+    AvahiProtocol p;
     int err;
+    const AvahiServerConfig *config;
 
     if (!h->group)
         if (!(h->group = avahi_s_entry_group_new (avahi_server, entry_group_callback, h))) {
-            avahi_log_error("avahi_s_entry_group_new() failed: %s", avahi_strerror(err));
+            avahi_log_error("avahi_s_entry_group_new() failed: %s", avahi_strerror(avahi_server_errno(avahi_server)));
             return;
         }
 
@@ -123,7 +125,12 @@ static void add_static_host_to_server(StaticHost *h)
         return;
     }
 
-    if ((err = avahi_server_add_address(avahi_server, h->group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, h->host, &a))) {
+    config = avahi_server_get_config(avahi_server);
+    
+    p = (a.proto == AVAHI_PROTO_INET && config->publish_a_on_ipv6) ||
+        (a.proto == AVAHI_PROTO_INET6 && config->publish_aaaa_on_ipv4) ? AVAHI_PROTO_UNSPEC : a.proto;
+    
+    if ((err = avahi_server_add_address(avahi_server, h->group, AVAHI_IF_UNSPEC, p, 0, h->host, &a)) < 0) {
         avahi_log_error ("Static host name %s: avahi_server_add_address failure: %s", h->host, avahi_strerror(err));
         return;
     }