backend.go 1015 B

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