[libvirt] [PATCH] Bind to ip_addr support.
Stefan de Konink
skinkie at xs4all.nl
Sat May 10 17:42:51 UTC 2008
About mdns, do you think it would be a good thing to *not* follow the
Avahi advise and explicitly set the host the service is running on? In my
humble opinion I think that would be a wise decision.
host The host this services is residing on. We recommend to pass NULL
here, the daemon will than automatically insert the local host name in
that case
I wonder how avahi will decide if the service doesn't run on 0.0.0.0 but
on a specific address. Then we still have domain left, but with a bit
smart implementation upstream that could just work.
The attached patch explicitly sets the host of the mDNS advertisement.
Because of some 'unexpected' behavior... I hoped strdup(NULL) would just
work, but it didn't, I placed it inside an if loop. The debug message
doesn't mind '(null)' but I think 0.0.0.0 is more appropriate.
Sign-off-by: Stefan de Konink <dekonink at kinkrsoftware.nl>
Stefan
-------------- next part --------------
--- qemud/mdns.h.orig 2008-05-10 19:29:18.000000000 +0200
+++ qemud/mdns.h 2008-05-10 19:29:38.000000000 +0200
@@ -83,7 +83,7 @@
*
* returns the service record, or NULL upon failure
*/
-struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, int port);
+struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, const char *host, int port);
/**
* Removes a service entry from a group
--- qemud/mdns.c.orig 2008-05-10 19:22:45.000000000 +0200
+++ qemud/mdns.c 2008-05-10 19:35:10.000000000 +0200
@@ -46,6 +46,7 @@
struct libvirtd_mdns_entry {
char *type;
+ char *host;
int port;
struct libvirtd_mdns_entry *next;
};
@@ -153,7 +154,7 @@
group->name,
entry->type,
NULL,
- NULL,
+ entry->host,
entry->port,
NULL)) < 0) {
AVAHI_DEBUG("Failed to add %s service on port %d: %s",
@@ -440,18 +441,28 @@
}
}
-struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, int port) {
+struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, const char *host, int port) {
struct libvirtd_mdns_entry *entry = malloc(sizeof(*entry));
- AVAHI_DEBUG("Adding entry %s %d to group %s", type, port, group->name);
+ AVAHI_DEBUG("Adding entry %s %s %d to group %s", type, (host == NULL ? "0.0.0.0" : host), port, group->name);
if (!entry)
return NULL;
entry->port = port;
+
if (!(entry->type = strdup(type))) {
free(entry);
return NULL;
}
+
+ if (host != NULL) {
+ if (!(entry->host = strdup(host))) {
+ free(entry->type);
+ free(entry);
+ return NULL;
+ }
+ }
+
entry->next = group->entry;
group->entry = entry;
return entry;
--- qemud/qemud.c.orig2 2008-05-10 19:22:57.000000000 +0200
+++ qemud/qemud.c 2008-05-10 19:26:46.000000000 +0200
@@ -828,7 +828,7 @@
* Add the primary entry - we choose SSH because its most likely to always
* be available
*/
- libvirtd_mdns_add_entry(group, "_libvirt._tcp", port);
+ libvirtd_mdns_add_entry(group, "_libvirt._tcp", ip_addr, port);
libvirtd_mdns_start(server->mdns);
}
#endif
More information about the libvir-list
mailing list