drivers_linux.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package libnetwork
  2. import (
  3. "fmt"
  4. "github.com/docker/docker/libnetwork/driverapi"
  5. "github.com/docker/docker/libnetwork/drivers/bridge"
  6. "github.com/docker/docker/libnetwork/drivers/host"
  7. "github.com/docker/docker/libnetwork/drivers/ipvlan"
  8. "github.com/docker/docker/libnetwork/drivers/macvlan"
  9. "github.com/docker/docker/libnetwork/drivers/null"
  10. "github.com/docker/docker/libnetwork/drivers/overlay"
  11. )
  12. func registerNetworkDrivers(r driverapi.Registerer, driverConfig func(string) map[string]interface{}) error {
  13. noConfig := func(fn func(driverapi.Registerer) error) func(driverapi.Registerer, map[string]interface{}) error {
  14. return func(r driverapi.Registerer, _ map[string]interface{}) error { return fn(r) }
  15. }
  16. for _, nr := range []struct {
  17. ntype string
  18. register func(driverapi.Registerer, map[string]interface{}) error
  19. }{
  20. {ntype: bridge.NetworkType, register: bridge.Register},
  21. {ntype: host.NetworkType, register: noConfig(host.Register)},
  22. {ntype: ipvlan.NetworkType, register: ipvlan.Register},
  23. {ntype: macvlan.NetworkType, register: macvlan.Register},
  24. {ntype: null.NetworkType, register: noConfig(null.Register)},
  25. {ntype: overlay.NetworkType, register: overlay.Register},
  26. } {
  27. if err := nr.register(r, driverConfig(nr.ntype)); err != nil {
  28. return fmt.Errorf("failed to register %q driver: %w", nr.ntype, err)
  29. }
  30. }
  31. return nil
  32. }