Hi all,
This is a followup to the excellent
patch which allows static IP address assignment. The problem with
that patch is that you can only set the host name and cannot set a FQDN because
dnsmasq will, as a security measure, not allow it unless --domain is
specified.
This patch adds support for adding <domain
name="my.domain" /> to the network config file. With that stanza, one
can then use FQDNs on the static host assignments, and this should be the domain
reported for any clients that request it. If <domain name .. ./> is
not specified in the config file, then there is no change in
behaviour.
As a special case, you can also set the domain
name to "#", whereupon dnsmasq interprets that to use the domain of
the host OS.
Example default.xml:
<network>
<name>default</name>
<uuid>0098abb7-ff94-4df9-aa78-e4c3fe636a3d</uuid>
<bridge name="virbr0" />
<domain name="mynet.net"
/>
<forward/>
<ip address="192.168.122.1"
netmask="255.255.255.0">
<dhcp>
<host name="vm1.mynet.net"
mac="00:16:3e:24:a5:84" ip="192.168.122.101"
/>
<host name='vm2.mynet.net'
mac="00:16:3e:1f:9a:95" ip="192.168.122.102"
/>
<range start="192.168.122.2"
end="192.168.122.99" />
</dhcp>
</ip>
</network>
Here is the patch:
diff -r -U 3 libvirt-0.4.4/src/network_conf.c
libvirt-0.4.4jjr/src/network_conf.c
---
libvirt-0.4.4/src/network_conf.c 2008-08-20 09:20:01.000000000
-0400
+++ libvirt-0.4.4jjr/src/network_conf.c 2008-09-06 14:03:56.000000000
-0400
@@ -326,6 +326,9 @@
VIR_FREE(tmp);
}
+ /* Parse network domain
information */
+ def->domain = virXPathString(conn,
"string(./domain[1]/@name)", ctxt);
+
/* Parse
bridge information */
def->bridge =
virXPathString(conn, "string(./bridge[1]/@name)",
ctxt);
tmp = virXPathString(conn,
"string(./bridge[1]/@stp)", ctxt);
diff -r -U 3
libvirt-0.4.4/src/network_conf.h libvirt-0.4.4jjr/src/network_conf.h
---
libvirt-0.4.4/src/network_conf.h 2008-08-20 09:20:01.000000000
-0400
+++ libvirt-0.4.4jjr/src/network_conf.h 2008-09-06 14:03:56.000000000
-0400
@@ -57,6 +57,7 @@
char *name;
char
*bridge; /* Name of bridge device
*/
+ char *domain;
unsigned
long delay; /* Bridge forward delay (ms)
*/
int stp : 1; /* Spanning tree protocol
*/
diff -r -U 3 libvirt-0.4.4/src/qemu_driver.c
libvirt-0.4.4jjr/src/qemu_driver.c
---
libvirt-0.4.4/src/qemu_driver.c 2008-08-29
03:20:02.000000000 -0400
+++ libvirt-0.4.4jjr/src/qemu_driver.c
2008-09-06 14:15:28.000000000 -0400
@@ -1105,6 +1105,7
@@
1 + /*
--keep-in-foreground */
1 +
/* --strict-order */
1 + /*
--bind-interfaces */
+
(network->def->domain?2:0) + /* --domain name
*/
2 + /* --pid-file ""
*/
2 + /* --conf-file ""
*/
/*2 + *//* --interface
virbr0 */
@@ -1136,6 +1137,11 @@
APPEND_ARG(*argv, i++, "--strict-order");
APPEND_ARG(*argv, i++, "--bind-interfaces");
+ if (network->def->domain)
{
+ APPEND_ARG(*argv, i++,
"--domain");
+ APPEND_ARG(*argv, i++,
network->def->domain);
+
}
+
APPEND_ARG(*argv, i++,
"--pid-file");
APPEND_ARG(*argv, i++,
"");
Thanks!
-JJ Reynolds