Add support for NAT in network forward, and add test code.

Signed-off-by: Thomas Hipp <[email protected]>
---
 network.go      | 20 ++++++++++++++++++--
 network_test.go | 31 +++++++++++++++++++++++++------
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/network.go b/network.go
index cc850a1..3635ad2 100644
--- a/network.go
+++ b/network.go
@@ -41,9 +41,25 @@ type NetworkDomain struct {
        LocalOnly string `xml:"localOnly,attr,omitempty"`
 }
 
+type NetworkForwardNATAddress struct {
+       Start string `xml:"start,attr"`
+       End   string `xml:"end,attr"`
+}
+
+type NetworkForwardNATPort struct {
+       Start uint `xml:"start,attr"`
+       End   uint `xml:"end,attr"`
+}
+
+type NetworkForwardNAT struct {
+       Addresses []NetworkForwardNATAddress `xml:"address"`
+       Ports     []NetworkForwardNATPort    `xml:"port"`
+}
+
 type NetworkForward struct {
-       Mode string `xml:"mode,attr,omitempty"`
-       Dev  string `xml:"dev,attr,omitempty"`
+       Mode string             `xml:"mode,attr,omitempty"`
+       Dev  string             `xml:"dev,attr,omitempty"`
+       NAT  *NetworkForwardNAT `xml:"nat"`
 }
 
 type NetworkMAC struct {
diff --git a/network_test.go b/network_test.go
index 5269398..65f4d53 100644
--- a/network_test.go
+++ b/network_test.go
@@ -67,6 +67,20 @@ var networkTestData = []struct {
                        },
                        Forward: &NetworkForward{
                                Mode: "nat",
+                               NAT: &NetworkForwardNAT{
+                                       Addresses: []NetworkForwardNATAddress{
+                                               NetworkForwardNATAddress{
+                                                       Start: "1.2.3.4",
+                                                       End:   "1.2.3.10",
+                                               },
+                                       },
+                                       Ports: []NetworkForwardNATPort{
+                                               NetworkForwardNATPort{
+                                                       Start: 500,
+                                                       End:   1000,
+                                               },
+                                       },
+                               },
                        },
                        IPs: []NetworkIP{
                                NetworkIP{
@@ -89,9 +103,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,8 +113,8 @@ 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",
                                                        },
                                                },
                                        },
@@ -111,7 +125,12 @@ var networkTestData = []struct {
                        `<network>`,
                        `  <name>test</name>`,
                        `  <bridge name="virbr0"></bridge>`,
-                       `  <forward mode="nat"></forward>`,
+                       `  <forward mode="nat">`,
+                       `    <nat>`,
+                       `      <address start="1.2.3.4" 
end="1.2.3.10"></address>`,
+                       `      <port start="500" end="1000"></port>`,
+                       `    </nat>`,
+                       `  </forward>`,
                        `  <ip address="192.168.122.1" 
netmask="255.255.255.0">`,
                        `    <dhcp>`,
                        `      <range start="192.168.122.2" 
end="192.168.122.254"></range>`,
-- 
2.13.2

--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to