Skip to content

Commit 28277c0

Browse files
authored
Merge pull request #2558 from thaJeztah/master_router_advertisements
[master] bridge: disable IPv6 router advertisements
2 parents 868f23b + deb0c57 commit 28277c0

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

drivers/bridge/bridge.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,12 @@ func (d *driver) createNetwork(config *networkConfiguration) (err error) {
689689
bridgeAlreadyExists := bridgeIface.exists()
690690
if !bridgeAlreadyExists {
691691
bridgeSetup.queueStep(setupDevice)
692+
bridgeSetup.queueStep(setupDefaultSysctl)
693+
}
694+
695+
// For the default bridge, set expected sysctls
696+
if config.DefaultBridge {
697+
bridgeSetup.queueStep(setupDefaultSysctl)
692698
}
693699

694700
// Even if a bridge exists try to setup IPv4.

drivers/bridge/setup_device.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package bridge
22

33
import (
44
"fmt"
5+
"io/ioutil"
6+
"os"
7+
"path/filepath"
58

69
"github.com/docker/docker/pkg/parsers/kernel"
710
"github.com/docker/libnetwork/netutils"
@@ -49,6 +52,22 @@ func setupDevice(config *networkConfiguration, i *bridgeInterface) error {
4952
return err
5053
}
5154

55+
func setupDefaultSysctl(config *networkConfiguration, i *bridgeInterface) error {
56+
// Disable IPv6 router advertisements originating on the bridge
57+
sysPath := filepath.Join("/proc/sys/net/ipv6/conf/", config.BridgeName, "accept_ra")
58+
if _, err := os.Stat(sysPath); err != nil {
59+
logrus.
60+
WithField("bridge", config.BridgeName).
61+
WithField("syspath", sysPath).
62+
Info("failed to read ipv6 net.ipv6.conf.<bridge>.accept_ra")
63+
return nil
64+
}
65+
if err := ioutil.WriteFile(sysPath, []byte{'0', '\n'}, 0644); err != nil {
66+
return fmt.Errorf("libnetwork: Unable to disable IPv6 router advertisement: %v", err)
67+
}
68+
return nil
69+
}
70+
5271
// SetupDeviceUp ups the given bridge interface.
5372
func setupDeviceUp(config *networkConfiguration, i *bridgeInterface) error {
5473
err := i.nlh.LinkSetUp(i.Link)

0 commit comments

Comments
 (0)