Skip to content

Commit

Permalink
bridge: disable IPv6 router advertisements
Browse files Browse the repository at this point in the history
Signed-off-by: Samuel Karp <skarp@amazon.com>
(cherry picked from commit 153d076)
Signed-off-by: Shane Jarych <sjarych@mirantis.com>
  • Loading branch information
samuelkarp authored and Shane Jarych committed Jul 21, 2020
1 parent 7754c50 commit 9ab94ff
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
6 changes: 6 additions & 0 deletions drivers/bridge/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,12 @@ func (d *driver) createNetwork(config *networkConfiguration) (err error) {
bridgeAlreadyExists := bridgeIface.exists()
if !bridgeAlreadyExists {
bridgeSetup.queueStep(setupDevice)
bridgeSetup.queueStep(setupDefaultSysctl)
}

// For the default bridge, set expected sysctls
if config.DefaultBridge {
bridgeSetup.queueStep(setupDefaultSysctl)
}

// Even if a bridge exists try to setup IPv4.
Expand Down
19 changes: 19 additions & 0 deletions drivers/bridge/setup_device.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ package bridge

import (
"fmt"
"io/ioutil"
"os"
"path/filepath"

"github.com/docker/docker/pkg/parsers/kernel"
"github.com/docker/libnetwork/netutils"
Expand Down Expand Up @@ -50,6 +53,22 @@ func setupDevice(config *networkConfiguration, i *bridgeInterface) error {
return err
}

func setupDefaultSysctl(config *networkConfiguration, i *bridgeInterface) error {
// Disable IPv6 router advertisements originating on the bridge
sysPath := filepath.Join("/proc/sys/net/ipv6/conf/", config.BridgeName, "accept_ra")
if _, err := os.Stat(sysPath); err != nil {
logrus.
WithField("bridge", config.BridgeName).
WithField("syspath", sysPath).
Info("failed to read ipv6 net.ipv6.conf.<bridge>.accept_ra")
return nil
}
if err := ioutil.WriteFile(sysPath, []byte{'0', '\n'}, 0644); err != nil {
return fmt.Errorf("libnetwork: Unable to disable IPv6 router advertisement: %v", err)
}
return nil
}

// SetupDeviceUp ups the given bridge interface.
func setupDeviceUp(config *networkConfiguration, i *bridgeInterface) error {
err := i.nlh.LinkSetUp(i.Link)
Expand Down

0 comments on commit 9ab94ff

Please sign in to comment.