2012-01-02 18:23:54 +04:00
<network >
<name > default</name>
<uuid > 81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
<forward dev= 'eth1' mode= 'nat' >
<interface dev= 'eth1' />
</forward>
2013-07-30 16:36:08 +04:00
<bridge name= 'virbr0' stp= 'on' delay= '0' />
2012-01-02 18:23:54 +04:00
<dns >
network: fix problems with SRV records
A patch submitted by Steven Malin last week pointed out a problem with
libvirt's DNS SRV record configuration:
https://www.redhat.com/archives/libvir-list/2014-March/msg00536.html
When searching for that message later, I found another series that had
been posted by Guannan Ren back in 2012 that somehow slipped between
the cracks:
https://www.redhat.com/archives/libvir-list/2012-July/msg00236.html
That patch was very much out of date, but also pointed out some real
problems.
This patch fixes all the noted problems by refactoring
virNetworkDNSSrvDefParseXML() and networkDnsmasqConfContents(), then
verifies those fixes by added several new records to the test case.
Problems fixed:
* both service and protocol now have an underscore ("_") prepended on
the commandline, as required by RFC2782.
<srv service='sip' protocol='udp' domain='example.com'
target='tests.example.com' port='5060' priority='10'
weight='150'/>
before: srv-host=sip.udp.example.com,tests.example.com,5060,10,150
after: srv-host=_sip._udp.example.com,tests.example.com,5060,10,150
* if "domain" wasn't specified in the <srv> element, the extra
trailing "." will no longer be added to the dnsmasq commandline.
<srv service='sip' protocol='udp' target='tests.example.com'
port='5060' priority='10' weight='150'/>
before: srv-host=sip.udp.,tests.example.com,5060,10,150
after: srv-host=_sip._udp,tests.example.com,5060,10,150
* when optional attributes aren't specified, the separating comma is
also now not placed on the dnsmasq commandline. If optional
attributes in the middle of the line are not specified, they are
replaced with a default value in the commandline (1 for port, 0 for
priority and weight).
<srv service='sip' protocol='udp' target='tests.example.com'
port='5060'/>
before: srv-host=sip.udp.,tests.example.com,5060,,
after: srv-host=_sip._udp,tests.example.com,5060
(actually the would have generated an error, because "optional"
attributes weren't really optional.)
* The allowed characters for both service and protocol are now limited
to alphanumerics, plus a few special characters that are found in
existing names in /etc/services and /etc/protocols. (One exception
is that both of these files contain names with an embedded ".", but
"." can't be used in these fields of an SRV record because it is
used as a field separator and there is no method to escape a "."
into a field.) (Previously only the strings "tcp" and "udp" were
allowed for protocol, but this restriction has been removed, since
RFC2782 specifically says that it isn't limited to those, and that
anyway it is case insensitive.)
* the "domain" attribute is no longer required in order to recognize
the port, priority, and weight attributes during parsing. Only
"target" is required for this.
* if "target" isn't specified, port, priority, and weight are not
allowed (since they are meaningless - an empty target means "this
service is *not available* for this domain").
* port, priority, and weight are now truly optional, as the comments
originally suggested, but which was not actually true.
2014-03-18 05:16:38 +04:00
<srv service= 'name' protocol= 'tcp' domain= 'test-domain-name.com' target= 'test.example.com' port= '1111' priority= '11' weight= '111' />
<srv service= 'name2' protocol= 'udp' target= 'test2.example.com' port= '2222' priority= '22' weight= '222' />
<srv service= 'name3' protocol= 'tcp' domain= 'test3.com' target= 'test3.example.com' port= '3333' priority= '33' />
<srv service= 'name4' protocol= 'tcp' domain= 'test4.com' target= 'test4.example.com' port= '4444' />
<srv service= 'name5' protocol= 'udp' target= 'test5.example.com' priority= '55' weight= '555' />
<srv service= 'name6' protocol= 'tcp' domain= 'test6.com' target= 'test6.example.com' port= '6666' weight= '666' />
<srv service= 'name7' protocol= 'tcp' domain= 'test7.com' target= 'test7.example.com' weight= '777' />
2012-01-02 18:23:54 +04:00
</dns>
<ip address= '192.168.122.1' netmask= '255.255.255.0' >
<dhcp >
2013-07-30 16:36:08 +04:00
<range start= '192.168.122.2' end= '192.168.122.254' />
<host mac= '00:16:3e:77:e2:ed' name= 'a.example.com' ip= '192.168.122.10' />
<host mac= '00:16:3e:3e:a9:1a' name= 'b.example.com' ip= '192.168.122.11' />
2012-01-02 18:23:54 +04:00
</dhcp>
</ip>
<ip family= 'ipv4' address= '192.168.123.1' netmask= '255.255.255.0' >
</ip>
<ip family= 'ipv6' address= '2001:db8:ac10:fe01::1' prefix= '64' >
</ip>
<ip family= 'ipv6' address= '2001:db8:ac10:fd01::1' prefix= '64' >
</ip>
<ip family= 'ipv4' address= '10.24.10.1' >
</ip>
</network>