From 3cb6569d55f50c21a0c877a0f7aa21c75046e6f8 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Thu, 18 May 2017 09:29:28 +0000 Subject: [PATCH] Don't clear WEAVE-NPC chain here; it is controlled by weave-npc. We don't get a very useful error object back from go-iptables and I didn't feel like parsing the message, so just ignore all errors. It would be racy to try to check if WEAVE-NPC existed before calling NewChain. --- net/bridge.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/bridge.go b/net/bridge.go index 2acda3ea..c7347ccf 100644 --- a/net/bridge.go +++ b/net/bridge.go @@ -436,9 +436,8 @@ func configureIPTables(config *BridgeConfig) error { if config.NPC { // Steer traffic via the NPC - if err = ipt.ClearChain("filter", "WEAVE-NPC"); err != nil { - return errors.Wrap(err, "clearing WEAVE-NPC chain") - } + _ = ipt.NewChain("filter", "WEAVE-NPC") // ignore error because it might already exist + // If WEAVE-NPC chain doesn't exist then next line will fail if err = ipt.AppendUnique("filter", "FORWARD", "-o", config.WeaveBridgeName, "-j", "WEAVE-NPC"); err != nil { return err }