summaryrefslogtreecommitdiff
path: root/libvirt/network_def.go
diff options
context:
space:
mode:
Diffstat (limited to 'libvirt/network_def.go')
-rw-r--r--libvirt/network_def.go111
1 files changed, 11 insertions, 100 deletions
diff --git a/libvirt/network_def.go b/libvirt/network_def.go
index bd758747..dcfa7eb0 100644
--- a/libvirt/network_def.go
+++ b/libvirt/network_def.go
@@ -3,101 +3,12 @@ package libvirt
import (
"encoding/xml"
"fmt"
-)
-
-type defNetworkIpDhcpRange struct {
- XMLName xml.Name `xml:"range,omitempty"`
-
- Start string `xml:"start,attr,omitempty"`
- End string `xml:"end,attr,omitempty"`
-}
-
-type defNetworkIpDhcpHost struct {
- XMLName xml.Name `xml:"host,omitempty"`
-
- Ip string `xml:"ip,attr,omitempty"`
- Mac string `xml:"mac,attr,omitempty"`
- Name string `xml:"name,attr,omitempty"`
-}
-
-type defNetworkIpDhcp struct {
- XMLName xml.Name `xml:"dhcp,omitempty"`
-
- Ranges []*defNetworkIpDhcpRange `xml:"range,omitempty"`
- Hosts []*defNetworkIpDhcpHost `xml:"host,omitempty"`
-}
-
-type defNetworkIp struct {
- XMLName xml.Name `xml:"ip,omitempty"`
-
- Address string `xml:"address,attr"`
- Netmask string `xml:"netmask,attr,omitempty"`
- Prefix int `xml:"prefix,attr,omitempty"`
- Family string `xml:"family,attr,omitempty"`
- Dhcp *defNetworkIpDhcp `xml:"dhcp,omitempty"`
-}
-
-type defNetworkBridge struct {
- XMLName xml.Name `xml:"bridge,omitempty"`
-
- Name string `xml:"name,attr,omitempty"`
- Stp string `xml:"stp,attr,omitempty"`
-}
-
-type defNetworkDomain struct {
- XMLName xml.Name `xml:"domain,omitempty"`
-
- Name string `xml:"name,attr,omitempty"`
- LocalOnly string `xml:"localOnly,attr,omitempty"`
-}
-
-type defNetworkForward struct {
- Mode string `xml:"mode,attr"`
- Device string `xml:"dev,attr,omitempty"`
- Nat *struct {
- Addresses []*struct {
- Start string `xml:"start,attr"`
- End string `xml:"end,attr"`
- } `xml:"address,omitempty"`
- Ports []*struct {
- Start string `xml:"start,attr"`
- End string `xml:"end,attr"`
- } `xml:"port,omitempty"`
- } `xml:"nat,omitempty"`
-}
-
-type defNetworkDns struct {
- Host []*defDnsHost `xml:"host,omitempty"`
- Forwarder []*defDnsForwarder `xml:"forwarder,omitempty"`
-}
-type defDnsHost struct {
- Ip string `xml:"ip,attr"`
- HostName []string `xml:"hostname"`
-}
-
-type defDnsForwarder struct {
- Domain string `xml:"domain,attr,omitempty"`
- Address string `xml:"addr,attr,omitempty"`
-}
-
-// network definition in XML, compatible with what libvirt expects
-// note: we have to use pointers or otherwise golang's XML will not properly detect
-// empty values and generate things like "<bridge></bridge>" that
-// make libvirt crazy...
-type defNetwork struct {
- XMLName xml.Name `xml:"network"`
-
- Name string `xml:"name,omitempty"`
- Domain *defNetworkDomain `xml:"domain,omitempty"`
- Bridge *defNetworkBridge `xml:"bridge,omitempty"`
- Forward *defNetworkForward `xml:"forward,omitempty"`
- Ips []*defNetworkIp `xml:"ip,omitempty"`
- Dns *defNetworkDns `xml:"dns,omitempty"`
-}
+ "github.com/libvirt/libvirt-go-xml"
+)
// Check if the network has a DHCP server managed by libvirt
-func (net defNetwork) HasDHCP() bool {
+func HasDHCP(net libvirtxml.Network) bool {
if net.Forward != nil {
if net.Forward.Mode == "nat" || net.Forward.Mode == "route" || net.Forward.Mode == "" {
return true
@@ -107,30 +18,30 @@ func (net defNetwork) HasDHCP() bool {
}
// Creates a network definition from a XML
-func newDefNetworkFromXML(s string) (defNetwork, error) {
- var networkDef defNetwork
+func newDefNetworkFromXML(s string) (libvirtxml.Network, error) {
+ var networkDef libvirtxml.Network
err := xml.Unmarshal([]byte(s), &networkDef)
if err != nil {
- return defNetwork{}, err
+ return libvirtxml.Network{}, err
}
return networkDef, nil
}
-func newDefNetworkfromLibvirt(network LibVirtNetwork) (defNetwork, error) {
+func newDefNetworkfromLibvirt(network LibVirtNetwork) (libvirtxml.Network, error) {
networkXmlDesc, err := network.GetXMLDesc(0)
if err != nil {
- return defNetwork{}, fmt.Errorf("Error retrieving libvirt domain XML description: %s", err)
+ return libvirtxml.Network{}, fmt.Errorf("Error retrieving libvirt domain XML description: %s", err)
}
- networkDef := defNetwork{}
+ networkDef := libvirtxml.Network{}
err = xml.Unmarshal([]byte(networkXmlDesc), &networkDef)
if err != nil {
- return defNetwork{}, fmt.Errorf("Error reading libvirt network XML description: %s", err)
+ return libvirtxml.Network{}, fmt.Errorf("Error reading libvirt network XML description: %s", err)
}
return networkDef, nil
}
// Creates a network definition with the defaults the provider uses
-func newNetworkDef() defNetwork {
+func newNetworkDef() libvirtxml.Network {
const defNetworkXML = `
<network>
<name>default</name>