diff --git a/vendor.conf b/vendor.conf index 05bf2fe5e..3cc3486c4 100644 --- a/vendor.conf +++ b/vendor.conf @@ -7,7 +7,7 @@ github.com/containerd/console 4d8a41f4ce5b9bae77c41786ea2458330f43f081 github.com/containerd/containerd b9eeaa1ce83dd9970605ddbd0b35d4d3fa5f87bd github.com/containerd/continuity d3c23511c1bf5851696cba83143d9cbcd666869b github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c -github.com/containerd/go-cni 5882530828ecf62032409b298a3e8b19e08b6534 +github.com/containerd/go-cni 6d7b509a054a3cb1c35ed1865d4fde2f0cb547cd github.com/containerd/go-runc edcf3de1f4971445c42d61f20d506b30612aa031 github.com/containerd/ttrpc 94dde388801693c54f88a6596f713b51a8b30b2d github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40 diff --git a/vendor/github.com/containerd/go-cni/opts.go b/vendor/github.com/containerd/go-cni/opts.go index 5ad33209f..be533f16e 100644 --- a/vendor/github.com/containerd/go-cni/opts.go +++ b/vendor/github.com/containerd/go-cni/opts.go @@ -136,19 +136,37 @@ func WithConfListFile(fileName string) CNIOpt { if err != nil { return err } + i := len(c.networks) c.networks = append(c.networks, &Network{ cni: c.cniConfig, config: confList, - ifName: getIfName(c.prefix, 0), + ifName: getIfName(c.prefix, i), }) return nil } } -// WithDefaultConf can be used to detect network config +// WithDefaultConf can be used to detect the default network +// config file from the configured cni config directory and load +// it. +// Since the CNI spec does not specify a way to detect default networks, +// the convention chosen is - the first network configuration in the sorted +// list of network conf files as the default network. +func WithDefaultConf(c *libcni) error { + return loadFromConfDir(c, 1) +} + +// WithAllConf can be used to detect all network config // files from the configured cni config directory and load // them. -func WithDefaultConf(c *libcni) error { +func WithAllConf(c *libcni) error { + return loadFromConfDir(c, 0) +} + +// loadFromConfDir detects network config files from the +// configured cni config directory and load them. max is +// the maximum network config to load (max i<= 0 means no limit). +func loadFromConfDir(c *libcni, max int) error { files, err := cnilibrary.ConfFiles(c.pluginConfDir, []string{".conf", ".conflist", ".json"}) switch { case err != nil: @@ -166,6 +184,7 @@ func WithDefaultConf(c *libcni) error { // interface provided during init as the network interface for this default // network. For every other network use a generated interface id. i := 0 + var networks []*Network for _, confFile := range files { var confList *cnilibrary.NetworkConfigList if strings.HasSuffix(confFile, ".conflist") { @@ -193,15 +212,19 @@ func WithDefaultConf(c *libcni) error { return errors.Wrapf(ErrInvalidConfig, "CNI config list %s has no networks, skipping", confFile) } - c.networks = append(c.networks, &Network{ + networks = append(networks, &Network{ cni: c.cniConfig, config: confList, ifName: getIfName(c.prefix, i), }) i++ + if i == max { + break + } } - if len(c.networks) == 0 { + if len(networks) == 0 { return errors.Wrapf(ErrCNINotInitialized, "no valid networks found in %s", c.pluginDirs) } + c.networks = append(c.networks, networks...) return nil }