moby/daemon
Cory Snider cc19eba579 daemon: let libnetwork assign default bridge IPAM
The netutils.ElectInterfaceAddresses function is only used in one place
outside of tests: in the daemon, to configure the default bridge
network. The function is also messy to reason about as it references the
shared mutable state of ipamutils.PredefinedLocalScopeDefaultNetworks.
It uses the list of predefined default networks to always return an IPv4
address even if the named interface does not exist or does not have any
IPv4 addresses. This list happens to be the same as the one used to
initialize the address pool of the 'builtin' IPAM driver, though that is
far from obvious. (Start with "./libnetwork".initIPAMDrivers and trace
the dataflow of the addressPool value. Surprise! Global state is being
mutated using the value of other global mutable state.)

The daemon does not need the fallback behaviour of
ElectInterfaceAddresses. In fact, the daemon does not have to configure
an address pool for the network at all! libnetwork will acquire one of
the available address ranges from the network's IPAM driver when the
preferred-pool configuration is unset. It will do so using the same list
of address ranges and the exact same logic
(netutils.FindAvailableNetworks) as ElectInterfaceAddresses. So unless
the daemon needs to force the network to use a specific address range
because the bridge interface already exists, it can leave the details
up to libnetwork.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2023-01-26 14:54:57 -05:00
..
cluster daemon/cluster: use strings.Cut() 2022-12-21 11:08:57 +01:00
config daemon/config: inform the user when the input JSON contains invalid UTF-8 2023-01-10 17:27:21 -07:00
containerd Merge pull request #44809 from rumpl/containerd-image-history 2023-01-24 14:35:05 -08:00
events daemon/events: use strings.Cut() 2022-12-21 11:09:01 +01:00
graphdriver graphdriver/btrfs: needs kernel headers >= 4.12, not >= 4.7 2023-01-08 05:04:47 +09:00
images images: Pass context to commit related operations 2023-01-18 12:23:32 +01:00
initlayer pkg/containerfs: drop ContainerFS type alias 2022-09-23 16:56:53 -04:00
links daemon/links: use strings.Cut() 2022-12-21 11:09:01 +01:00
listeners Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
logger upgrade to aws sdk go v2 2023-01-07 17:27:31 +00:00
names Add canonical import comment 2018-02-05 16:51:57 -05:00
network daemon: fix empty-lines (revive) 2022-09-28 01:58:51 +02:00
stats migrate pkg/pubsub to github.com/moby/pubsub 2022-09-30 18:40:19 +02:00
testdata Remove libtrust dep from api 2017-09-06 12:05:19 -04:00
apparmor_default.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
apparmor_default_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
archive.go daemon: refactor isOnlineFSOperationPermitted 2022-10-26 12:06:31 -04:00
archive_tarcopyoptions.go Finish refactor of UID/GID usage to a new struct 2022-03-14 16:28:57 -04:00
archive_tarcopyoptions_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
archive_tarcopyoptions_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
archive_unix.go daemon: archive in a dedicated mount namespace 2022-10-27 12:52:14 -04:00
archive_windows.go pkg/system: move CheckSystemDriveAndRemoveDriveLetter to pkg/archive 2022-11-29 17:07:48 +01:00
attach.go Make it explicit raw|multiplexed stream implementation being used 2022-05-12 11:36:31 +02:00
auth.go daemon: use types/registry.AuthConfig 2022-07-29 23:05:18 +02:00
changes.go containerd-integration: prefer error over panic where possible 2022-09-07 22:01:49 +02:00
checkpoint.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
cluster.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
commit.go images: Pass context to commit related operations 2023-01-18 12:23:32 +01:00
configs.go Merge configs/secrets in unix implementation 2018-02-16 11:25:14 -05:00
configs_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
configs_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
configs_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
container.go Merge pull request #43787 from thaJeztah/memdb_nits 2023-01-06 08:09:06 -08:00
container_linux.go daemon: load and cache sysInfo on initialization 2022-01-12 18:28:15 +01:00
container_operations.go libnetwork: return concrete-typed *Endpoint 2023-01-13 14:19:06 -05:00
container_operations_unix.go move pkg/system: process to a separate package 2022-11-04 01:50:23 +01:00
container_operations_windows.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
container_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
container_windows.go daemon: fix capitalization of some functions 2020-04-14 17:22:19 +02:00
containerfs_linux.go daemon: archive in a dedicated mount namespace 2022-10-27 12:52:14 -04:00
content.go update to golang 1.19 2022-09-07 15:27:16 +02:00
create.go imageservice: Add context to various methods 2022-11-03 12:22:40 +01:00
create_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
create_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
create_windows.go daemon, oci: remove LCOW bits 2021-07-27 13:35:59 +02:00
daemon.go libnetwork: return concrete-typed *Controller 2023-01-13 14:09:37 -05:00
daemon_linux.go daemon: let libnetwork assign default bridge IPAM 2023-01-26 14:54:57 -05:00
daemon_linux_test.go daemon: let libnetwork assign default bridge IPAM 2023-01-26 14:54:57 -05:00
daemon_test.go Use hashicorp/go-memdb instead of truncindex 2022-05-20 18:22:21 +02:00
daemon_unix.go daemon: let libnetwork assign default bridge IPAM 2023-01-26 14:54:57 -05:00
daemon_unix_test.go daemon: remove discovery related tests 2022-01-06 18:28:10 +01:00
daemon_unsupported.go daemon: NewDaemon(): check system requirements early 2022-10-17 15:15:55 +02:00
daemon_windows.go libnetwork: return concrete-typed *Controller 2023-01-13 14:09:37 -05:00
daemon_windows_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_windows.go pkg/signal: move signal.DumpStacks() to a separate package 2021-07-15 18:09:43 +02:00
delete.go Lock container when deleting its root directory 2022-08-24 14:59:08 -04:00
delete_test.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
dependency.go Bump swarmkit to v2 2022-04-21 17:33:07 -04:00
devices_linux.go Add DeviceRequests to HostConfig to support NVIDIA GPUs 2019-03-18 17:19:45 +00:00
disk_usage.go daemon/disk_usage: Use context aware singleflight 2022-11-29 16:46:19 +01:00
errors.go daemon: translateContainerdStartErr(): rename to setExitCodeFromError() 2022-12-28 09:27:42 +01:00
events.go daemon: LogDaemonEventWithAttributes: don't call SystemInfo() 2022-06-07 22:01:12 +02:00
events_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
exec.go daemon: translateContainerdStartErr(): rename to setExitCodeFromError() 2022-12-28 09:27:42 +01:00
exec_linux.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
exec_linux_test.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
exec_windows.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
export.go daemon: clean up vestiges of ContainerFS 2022-09-23 16:56:53 -04:00
health.go Merge pull request #43997 from thaJeztah/healthcheck_capture_logs 2022-09-02 10:48:22 +02:00
health_test.go daemon: suppress logs in unit tests 2019-10-18 00:57:56 +02:00
id.go daemon: remove migrateTrustKeyID() 2022-11-28 20:28:55 +01:00
image_service.go images: Pass context to commit related operations 2023-01-18 12:23:32 +01:00
info.go Merge pull request #44663 from thaJeztah/move_meminfo 2022-12-27 13:07:09 +01:00
info_unix.go rootless: move ./rootless to ./pkg/rootless 2023-01-09 16:26:06 +01:00
info_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
info_windows.go Make cgroup namespaces configurable 2019-05-07 10:22:16 -07:00
inspect.go daemon: remove some intermediate vars, use struct-literals 2022-12-28 11:26:44 +01:00
inspect_linux.go daemon: remove some intermediate vars, use struct-literals 2022-12-28 11:26:44 +01:00
inspect_test.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
inspect_windows.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
keys.go daemon: use strconv instead of fmt.Sprintf() 2022-10-08 17:41:39 +02:00
keys_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
kill.go daemon: use strconv instead of fmt.Sprintf() 2022-10-08 17:41:39 +02:00
licensing.go Expose license status in Info (#37612) 2018-08-17 17:05:21 -07:00
licensing_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
links.go Add canonical import comment 2018-02-05 16:51:57 -05:00
list.go container: ViewDB: use errdefs for non-existing containers 2022-12-08 14:33:57 +01:00
list_test.go image: deprecate IDFromDigest() 2023-01-01 12:33:00 +01:00
list_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
list_windows.go pkg/containerfs: alias ContainerFS to string 2022-09-23 16:56:52 -04:00
logdrivers_linux.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logdrivers_windows.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logs.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
logs_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00
metrics.go health: Start probe timeout after exec starts 2022-04-28 17:21:03 -04:00
metrics_unix.go set ReadHeaderTimeout to address G112: Potential Slowloris Attack (gosec) 2022-09-22 12:13:28 +02:00
metrics_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
monitor.go imageservice: Add context to various methods 2022-11-03 12:22:40 +01:00
mounts.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
names.go container: ViewDB: return typed system errors 2022-12-08 14:33:57 +01:00
network.go libnetwork: return concrete-typed *Endpoint 2023-01-13 14:19:06 -05:00
network_windows.go libnetwork: return concrete-typed *Endpoint 2023-01-13 14:19:06 -05:00
nvidia_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_linux.go rootless: move ./rootless to ./pkg/rootless 2023-01-09 16:26:06 +01:00
oci_linux_test.go imageservice: Add context to various methods 2022-11-03 12:22:40 +01:00
oci_opts.go daemon/linux: Set console size on creation 2022-05-19 07:57:27 +02:00
oci_utils.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_windows.go daemon: use strings.Cut() and cleanup error messages 2022-12-21 11:09:03 +01:00
oci_windows_test.go daemon: use strings.Cut() and cleanup error messages 2022-12-21 11:09:03 +01:00
pause.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
prune.go Fixup libnetwork lint errors 2021-06-01 23:48:32 +00:00
reload.go daemon: LogDaemonEventWithAttributes: don't call SystemInfo() 2022-06-07 22:01:12 +02:00
reload_test.go daemon: fix empty-lines (revive) 2022-09-28 01:58:51 +02:00
reload_unix.go daemon: use strconv instead of fmt.Sprintf() 2022-10-08 17:41:39 +02:00
reload_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
rename.go libnetwork: return concrete-typed *Sandbox 2023-01-13 14:19:06 -05:00
resize.go daemon: use strconv instead of fmt.Sprintf() 2022-10-08 17:41:39 +02:00
resize_test.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
restart.go imageservice: Add context to various methods 2022-11-03 12:22:40 +01:00
runtime_unix.go Add additional loggig in case of error of renaming runtimes-old and removing it 2022-11-18 09:05:42 +01:00
runtime_unix_test.go daemon/config: New(): initialize config with platform-specific defaults 2022-08-17 08:54:32 +02:00
runtime_windows.go Add shim config for custom runtimes for plugins 2021-01-14 19:28:28 +00:00
seccomp_linux.go Remove "seccomp" build tag 2022-05-12 14:48:35 -07:00
seccomp_linux_test.go daemon: fix empty-lines (revive) 2022-09-28 01:58:51 +02:00
seccomp_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
secrets.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
secrets_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
start.go daemon: translateContainerdStartErr(): rename to setExitCodeFromError() 2022-12-28 09:27:42 +01:00
start_unix.go daemon: translateContainerdStartErr(): rename to setExitCodeFromError() 2022-12-28 09:27:42 +01:00
start_windows.go Windows CI: Add support for testing with containerd 2021-08-17 07:09:40 -07:00
stats.go Merge pull request #40478 from cpuguy83/dont-prime-the-stats 2020-04-16 20:57:06 +02:00
stats_collector.go pkg/system: move memory-info types to pkg/systeminfo 2022-12-21 10:53:45 +01:00
stats_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
stats_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
stop.go container: StopSignal(): return syscall.Signal 2022-05-05 00:53:53 +02:00
top_unix.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
top_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
top_windows.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
unpause.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
update.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
update_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
update_windows.go Windows: Experimental: Allow containerd for runtime 2019-03-12 18:41:55 -07:00
volumes.go daemon: replace ErrVolumeReadonly with errdefs 2022-09-27 22:24:29 +02:00
volumes_linux.go Fix the several typos detected by github.com/client9/misspell 2018-08-09 00:45:00 +09:00
volumes_linux_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
volumes_unit_test.go volume/mounts: remove "containerOS" argument from NewParser (LCOW code) 2021-07-02 13:51:55 +02:00
volumes_unix.go daemon: archive in a dedicated mount namespace 2022-10-27 12:52:14 -04:00
volumes_windows.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00
wait.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
workdir.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00