
Could someone please review this? Cheers, Thomas On 07/12/2017 01:26 PM, Thomas Hipp wrote:
Add support for NAT in network forward, and add test code.
Signed-off-by: Thomas Hipp <thipp@suse.de> --- 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>`,
-- 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