Add support for DNS in network, and add test code. Signed-off-by: Thomas Hipp <thipp@xxxxxxx> --- network.go | 39 ++++++++++++++++++++++++++++++++++ network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 99 insertions(+), 5 deletions(-) diff --git a/network.go b/network.go index cc850a1..e0baa96 100644 --- a/network.go +++ b/network.go @@ -84,6 +84,44 @@ type NetworkRoute struct { Gateway string `xml:"gateway,attr,omitempty"` } +type NetworkDNSForwarder struct { + Domain string `xml:"domain,attr,omitempty"` + Addr string `xml:"addr,attr,omitempty"` +} + +type NetworkDNSTXT struct { + Name string `xml:"name,attr"` + Value string `xml:"value,attr"` +} + +type NetworkDNSHostHostname struct { + Hostname string `xml:",chardata"` +} + +type NetworkDNSHost struct { + IP string `xml:"ip,attr"` + Hostnames []NetworkDNSHostHostname `xml:"hostname"` +} + +type NetworkDNSSRV struct { + Service string `xml:"service,attr"` + Protocol string `xml:"protocol,attr"` + Target string `xml:"target,attr,omitempty"` + Port uint `xml:"port,attr,omitempty"` + Priority uint `xml:"priority,attr,omitempty"` + Weight uint `xml:"weight,attr,omitempty"` + Domain string `xml:"domain,attr,omitempty"` +} + +type NetworkDNS struct { + Enable string `xml:"enable,attr,omitempty"` + ForwardPlainNames string `xml:"forwardPlainNames,attr,omitempty"` + Forwarders []NetworkDNSForwarder `xml:"forwarder"` + TXTs []NetworkDNSTXT `xml:"txt"` + Host *NetworkDNSHost `xml:"host"` + SRVs []NetworkDNSSRV `xml:"srv"` +} + type Network struct { XMLName xml.Name `xml:"network"` IPv6 string `xml:"ipv6,attr,omitempty"` @@ -96,6 +134,7 @@ type Network struct { Domain *NetworkDomain `xml:"domain"` IPs []NetworkIP `xml:"ip"` Routes []NetworkRoute `xml:"route"` + DNS *NetworkDNS `xml:"dns"` } func (s *Network) Unmarshal(doc string) error { diff --git a/network_test.go b/network_test.go index 5269398..2eb81ab 100644 --- a/network_test.go +++ b/network_test.go @@ -89,9 +89,9 @@ var networkTestData = []struct { }, }, NetworkIP{ - Family: "ipv6", - Address:"2001:db8:ca2:2::1", - Prefix: "64", + Family: "ipv6", + Address: "2001:db8:ca2:2::1", + Prefix: "64", DHCP: &NetworkDHCP{ Hosts: []NetworkDHCPHost{ NetworkDHCPHost{ @@ -99,13 +99,57 @@ var networkTestData = []struct { Name: "paul", }, NetworkDHCPHost{ - ID: "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66", - IP: "2001:db8:ca2:2:3::2", + ID: "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66", + IP: "2001:db8:ca2:2:3::2", }, }, }, }, }, + DNS: &NetworkDNS{ + Enable: "yes", + ForwardPlainNames: "no", + Forwarders: []NetworkDNSForwarder{ + NetworkDNSForwarder{ + Addr: "8.8.8.8", + }, + NetworkDNSForwarder{ + Domain: "example.com", + Addr: "8.8.4.4", + }, + NetworkDNSForwarder{ + Domain: "www.example.com", + }, + }, + TXTs: []NetworkDNSTXT{ + NetworkDNSTXT{ + Name: "example", + Value: "example value", + }, + }, + Host: &NetworkDNSHost{ + IP: "192.168.122.2", + Hostnames: []NetworkDNSHostHostname{ + NetworkDNSHostHostname{ + Hostname: "myhost", + }, + NetworkDNSHostHostname{ + Hostname: "myhostalias", + }, + }, + }, + SRVs: []NetworkDNSSRV{ + NetworkDNSSRV{ + Service: "name", + Protocol: "tcp", + Domain: "test-domain-name", + Target: ".", + Port: 1024, + Priority: 10, + Weight: 10, + }, + }, + }, }, Expected: []string{ `<network>`, @@ -124,6 +168,17 @@ var networkTestData = []struct { ` <host id="0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66" ip="2001:db8:ca2:2:3::2"></host>`, ` </dhcp>`, ` </ip>`, + ` <dns enable="yes" forwardPlainNames="no">`, + ` <forwarder addr="8.8.8.8"></forwarder>`, + ` <forwarder domain="example.com" addr="8.8.4.4"></forwarder>`, + ` <forwarder domain="www.example.com"></forwarder>`, + ` <txt name="example" value="example value"></txt>`, + ` <host ip="192.168.122.2">`, + ` <hostname>myhost</hostname>`, + ` <hostname>myhostalias</hostname>`, + ` </host>`, + ` <srv service="name" protocol="tcp" target="." port="1024" priority="10" weight="10" domain="test-domain-name"></srv>`, + ` </dns>`, `</network>`, }, }, -- 2.13.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list