github.com/tonistiigi/docker@v0.10.1-0.20240229224939-974013b0dc6a/libnetwork/drivers_linux.go (about)

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