controller_linux.go 955 B

123456789101112131415161718192021222324252627282930313233
  1. package libnetwork
  2. import (
  3. "github.com/docker/docker/libnetwork/iptables"
  4. "github.com/docker/docker/libnetwork/netlabel"
  5. "github.com/docker/docker/libnetwork/options"
  6. )
  7. // enabledIptablesVersions returns the iptables versions that are enabled
  8. // for the controller.
  9. func (c *Controller) enabledIptablesVersions() []iptables.IPVersion {
  10. c.mu.Lock()
  11. defer c.mu.Unlock()
  12. if c.cfg == nil {
  13. return nil
  14. }
  15. // parse map cfg["bridge"]["generic"]["EnableIPTable"]
  16. cfgBridge := c.cfg.DriverConfig("bridge")
  17. cfgGeneric, ok := cfgBridge[netlabel.GenericData].(options.Generic)
  18. if !ok {
  19. return nil
  20. }
  21. var versions []iptables.IPVersion
  22. if enabled, ok := cfgGeneric["EnableIPTables"].(bool); enabled || !ok {
  23. // iptables is enabled unless user explicitly disabled it
  24. versions = append(versions, iptables.IPv4)
  25. }
  26. if enabled, _ := cfgGeneric["EnableIP6Tables"].(bool); enabled {
  27. versions = append(versions, iptables.IPv6)
  28. }
  29. return versions
  30. }