network.go | 39 ++++++++++++++++++++++++++++++++++ network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 99 insertions(+), 5 deletions(-)
Add support for DNS in network, and add test code.
Signed-off-by: Thomas Hipp <thipp@suse.de>
---
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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Could someone please review this? Cheers, Thomas On 07/12/2017 03:28 PM, Thomas Hipp wrote: > Add support for DNS in network, and add test code. > > Signed-off-by: Thomas Hipp <thipp@suse.de> > --- > 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>`, > }, > }, > -- Thomas Hipp Software Developer — k8s core SUSE Linux GmbH, Maxfeldstr. 5, D-90409 Nürnberg Tel: +49 (0) 911 74053 0 — Fax: +49 (0) 911 7417755 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) PGP fingerprint: 48D6 A5F4 2D60 57BF 9A37 8004 5DE8 949A 899C 8D99 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jul 12, 2017 at 03:28:13PM +0200, Thomas Hipp wrote: > Add support for DNS in network, and add test code. > > Signed-off-by: Thomas Hipp <thipp@suse.de> > --- > network.go | 39 ++++++++++++++++++++++++++++++++++ > network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- > 2 files changed, 99 insertions(+), 5 deletions(-) ACK & pushed Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.