backend.go 939 B

123456789101112131415161718192021222324252627282930313233
  1. package network
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/coreos/flannel/backend"
  6. "github.com/coreos/flannel/backend/alloc"
  7. "github.com/coreos/flannel/backend/awsvpc"
  8. "github.com/coreos/flannel/backend/gce"
  9. "github.com/coreos/flannel/backend/hostgw"
  10. "github.com/coreos/flannel/backend/udp"
  11. "github.com/coreos/flannel/backend/vxlan"
  12. "github.com/coreos/flannel/subnet"
  13. )
  14. var backendMap = map[string]func(sm subnet.Manager, network string, config *subnet.Config) backend.Backend {
  15. "udp": udp.New,
  16. "alloc": alloc.New,
  17. "host-gw": hostgw.New,
  18. "vxlan": vxlan.New,
  19. "aws-vpc": awsvpc.New,
  20. "gce": gce.New,
  21. }
  22. func newBackend(sm subnet.Manager, network string, config *subnet.Config) (backend.Backend, error) {
  23. betype := strings.ToLower(config.BackendType)
  24. befunc, ok := backendMap[betype]
  25. if !ok {
  26. return nil, fmt.Errorf("%v: '%v': unknown backend type", network, betype)
  27. }
  28. return befunc(sm, network, config), nil
  29. }