The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/3433

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Closes #3432

Signed-off-by: Stéphane Graber <[email protected]>
From a7db52dde2290ca42c3af080f5dbe98d5e63293b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <[email protected]>
Date: Wed, 21 Jun 2017 15:39:27 -0400
Subject: [PATCH] network: Only generate DHCP fw rules if enabled
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #3432

Signed-off-by: Stéphane Graber <[email protected]>
---
 lxd/networks.go | 61 ++++++++++++++++++++++++++++++---------------------------
 1 file changed, 32 insertions(+), 29 deletions(-)

diff --git a/lxd/networks.go b/lxd/networks.go
index 7a8be9c9f..43c6dedc5 100644
--- a/lxd/networks.go
+++ b/lxd/networks.go
@@ -673,19 +673,21 @@ func (n *network) Start() error {
 
        // Configure IPv4 firewall (includes fan)
        if n.config["bridge.mode"] == "fan" || 
!shared.StringInSlice(n.config["ipv4.address"], []string{"", "none"}) {
-               // Setup basic iptables overrides
-               rules := [][]string{
-                       {"ipv4", n.name, "", "INPUT", "-i", n.name, "-p", 
"udp", "--dport", "67", "-j", "ACCEPT"},
-                       {"ipv4", n.name, "", "INPUT", "-i", n.name, "-p", 
"udp", "--dport", "53", "-j", "ACCEPT"},
-                       {"ipv4", n.name, "", "INPUT", "-i", n.name, "-p", 
"tcp", "--dport", "53", "-j", "ACCEPT"},
-                       {"ipv4", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"udp", "--sport", "67", "-j", "ACCEPT"},
-                       {"ipv4", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"udp", "--sport", "53", "-j", "ACCEPT"},
-                       {"ipv4", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"tcp", "--sport", "53", "-j", "ACCEPT"}}
-
-               for _, rule := range rules {
-                       err = networkIptablesPrepend(rule[0], rule[1], rule[2], 
rule[3], rule[4:]...)
-                       if err != nil {
-                               return err
+               if n.config["ipv4.dhcp"] == "" || 
shared.IsTrue(n.config["ipv4.dhcp"]) {
+                       // Setup basic iptables overrides for DHCP/DNS
+                       rules := [][]string{
+                               {"ipv4", n.name, "", "INPUT", "-i", n.name, 
"-p", "udp", "--dport", "67", "-j", "ACCEPT"},
+                               {"ipv4", n.name, "", "INPUT", "-i", n.name, 
"-p", "udp", "--dport", "53", "-j", "ACCEPT"},
+                               {"ipv4", n.name, "", "INPUT", "-i", n.name, 
"-p", "tcp", "--dport", "53", "-j", "ACCEPT"},
+                               {"ipv4", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "udp", "--sport", "67", "-j", "ACCEPT"},
+                               {"ipv4", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "udp", "--sport", "53", "-j", "ACCEPT"},
+                               {"ipv4", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "tcp", "--sport", "53", "-j", "ACCEPT"}}
+
+                       for _, rule := range rules {
+                               err = networkIptablesPrepend(rule[0], rule[1], 
rule[2], rule[3], rule[4:]...)
+                               if err != nil {
+                                       return err
+                               }
                        }
                }
 
@@ -829,6 +831,23 @@ func (n *network) Start() error {
                // Update the dnsmasq config
                dnsmasqCmd = append(dnsmasqCmd, 
[]string{fmt.Sprintf("--listen-address=%s", ip.String()), "--enable-ra"}...)
                if n.config["ipv6.dhcp"] == "" || 
shared.IsTrue(n.config["ipv6.dhcp"]) {
+                       // Setup basic iptables overrides for DHCP/DNS
+                       rules := [][]string{
+                               {"ipv6", n.name, "", "INPUT", "-i", n.name, 
"-p", "udp", "--dport", "546", "-j", "ACCEPT"},
+                               {"ipv6", n.name, "", "INPUT", "-i", n.name, 
"-p", "udp", "--dport", "53", "-j", "ACCEPT"},
+                               {"ipv6", n.name, "", "INPUT", "-i", n.name, 
"-p", "tcp", "--dport", "53", "-j", "ACCEPT"},
+                               {"ipv6", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "udp", "--sport", "546", "-j", "ACCEPT"},
+                               {"ipv6", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "udp", "--sport", "53", "-j", "ACCEPT"},
+                               {"ipv6", n.name, "", "OUTPUT", "-o", n.name, 
"-p", "tcp", "--sport", "53", "-j", "ACCEPT"}}
+
+                       for _, rule := range rules {
+                               err = networkIptablesPrepend(rule[0], rule[1], 
rule[2], rule[3], rule[4:]...)
+                               if err != nil {
+                                       return err
+                               }
+                       }
+
+                       // Build DHCP configuration
                        if !shared.StringInSlice("--dhcp-no-override", 
dnsmasqCmd) {
                                dnsmasqCmd = append(dnsmasqCmd, 
[]string{"--dhcp-no-override", "--dhcp-authoritative", 
fmt.Sprintf("--dhcp-leasefile=%s", shared.VarPath("networks", n.name, 
"dnsmasq.leases")), fmt.Sprintf("--dhcp-hostsfile=%s", 
shared.VarPath("networks", n.name, "dnsmasq.hosts"))}...)
                        }
@@ -854,22 +873,6 @@ func (n *network) Start() error {
                        dnsmasqCmd = append(dnsmasqCmd, 
[]string{"--dhcp-range", fmt.Sprintf("::,constructor:%s,ra-only", n.name)}...)
                }
 
-               // Setup basic iptables overrides
-               rules := [][]string{
-                       {"ipv6", n.name, "", "INPUT", "-i", n.name, "-p", 
"udp", "--dport", "546", "-j", "ACCEPT"},
-                       {"ipv6", n.name, "", "INPUT", "-i", n.name, "-p", 
"udp", "--dport", "53", "-j", "ACCEPT"},
-                       {"ipv6", n.name, "", "INPUT", "-i", n.name, "-p", 
"tcp", "--dport", "53", "-j", "ACCEPT"},
-                       {"ipv6", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"udp", "--sport", "546", "-j", "ACCEPT"},
-                       {"ipv6", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"udp", "--sport", "53", "-j", "ACCEPT"},
-                       {"ipv6", n.name, "", "OUTPUT", "-o", n.name, "-p", 
"tcp", "--sport", "53", "-j", "ACCEPT"}}
-
-               for _, rule := range rules {
-                       err = networkIptablesPrepend(rule[0], rule[1], rule[2], 
rule[3], rule[4:]...)
-                       if err != nil {
-                               return err
-                       }
-               }
-
                // Allow forwarding
                if n.config["ipv6.routing"] == "" || 
shared.IsTrue(n.config["ipv6.routing"]) {
                        // Get a list of proc entries
_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to