[libvirt] [PATCH go-xml] Add support for NAT in network forward

Thomas Hipp posted 1 patch 6 years, 8 months ago
Failed in applying to current master (apply log)
network.go      | 20 ++++++++++++++++++--
network_test.go | 31 +++++++++++++++++++++++++------
2 files changed, 43 insertions(+), 8 deletions(-)
[libvirt] [PATCH go-xml] Add support for NAT in network forward
Posted by Thomas Hipp 6 years, 8 months ago
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>`,
-- 
2.13.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH go-xml] Add support for NAT in network forward
Posted by Thomas Hipp 6 years, 8 months ago
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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH go-xml] Add support for NAT in network forward
Posted by Daniel P. Berrange 6 years, 8 months ago
On Wed, Jul 12, 2017 at 01:26:03PM +0200, 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(-)

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