Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package docker for openSUSE:Factory checked 
in at 2023-02-02 18:07:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/docker (Old)
 and      /work/SRC/openSUSE:Factory/.docker.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "docker"

Thu Feb  2 18:07:41 2023 rev:128 rq:1062476 version:20.10.23_ce

Changes:
--------
--- /work/SRC/openSUSE:Factory/docker/docker.changes    2022-12-08 
16:50:04.923144264 +0100
+++ /work/SRC/openSUSE:Factory/.docker.new.32243/docker.changes 2023-02-02 
18:23:24.805643464 +0100
@@ -1,0 +2,9 @@
+Wed Feb  1 14:33:19 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 20.10.23-ce
+  * see upstream changelog at 
https://docs.docker.com/engine/release-notes/#201023
+
+- drop kubic flavor as kubic is EOL. this removes:
+  kubelet.env docker-kubic-service.conf 
0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch
+
+-------------------------------------------------------------------

Old:
----
  0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch
  _multibuild
  docker-20.10.21_ce_3056208812eb.tar.xz
  docker-cli-20.10.21_ce.tar.xz
  docker-kubic-service.conf
  docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789.tar.xz
  kubelet.env

New:
----
  docker-20.10.23_ce_6051f1429.tar.xz
  docker-cli-20.10.23_ce.tar.xz
  docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ docker.spec ++++++
--- /var/tmp/diff_new_pack.3gJ169/_old  2023-02-02 18:23:25.437647322 +0100
+++ /var/tmp/diff_new_pack.3gJ169/_new  2023-02-02 18:23:25.441647346 +0100
@@ -42,15 +42,15 @@
 # helpfully injects into our build environment from the changelog). If you want
 # to generate a new git_commit_epoch, use this:
 #  $ date --date="$(git show --format=fuller --date=iso $COMMIT_ID | grep -oP 
'(?<=^CommitDate: ).*')" '+%s'
-%define real_version 20.10.21
-%define git_version 3056208812eb
-%define git_commit_epoch 1666698255
+%define real_version 20.10.23
+%define git_version 6051f1429
+%define git_commit_epoch 1674059068
 
 # We require a specific pin of libnetwork because it doesn't really do
 # versioning and minor version mismatches in libnetwork can break Docker
 # networking. All other key runtime dependencies (containerd, runc) are stable
 # enough that this isn't necessary.
-%define libnetwork_version 0dde5c895075df6e3630e76f750a447cf63f4789
+%define libnetwork_version 05b93e0d3a95952f70c113b0bc5bdb538d7afdd7
 
 %define dist_builddir  %{_builddir}/dist-suse
 %define cli_builddir   %{dist_builddir}/src/github.com/docker/cli
@@ -78,10 +78,6 @@
 Source104:      docker-audit.rules
 Source105:      docker-daemon.json
 Source106:      docker.sysusers
-# Kubelet-specific sources.
-# bsc#1086185 -- but we only apply this on Kubic.
-Source900:      docker-kubic-service.conf
-Source901:      kubelet.env
 # NOTE: All of these patches are maintained in <https://github.com/suse/docker>
 #       in the suse-<version> branch. Make sure you update the patches in that
 #       branch and then git-format-patch the patch here.
@@ -91,8 +87,6 @@
 Patch101:       0002-SECRETS-SUSE-implement-SUSE-container-secrets.patch
 # SUSE-FEATURE: Add support to mirror unofficial/private registries
 #               <https://github.com/docker/docker/pull/34319>.
-Patch200:       0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch
-# SUSE-BACKPORT: Backport of https://github.com/docker/docker/pull/37353. 
bsc#1073877 bsc#1099277
 Patch300:       0004-bsc1073877-apparmor-clobber-docker-default-profile-o.patch
 # SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/42273. 
bsc#1183855 bsc#1175081
 Patch301:       0005-bsc1183855-btrfs-Do-not-disable-quota-on-cleanup.patch
@@ -117,9 +111,7 @@
 BuildRequires:  go-go-md2man
 BuildRequires:  pkgconfig(libsystemd)
 BuildRequires:  sysuser-tools
-# Due to a limitation in openSUSE's Go packaging we cannot have a BuildRequires
-# for 'golang(API) >= 1.18' here, so just require 1.18 exactly. bsc#1172608
-BuildRequires:  go1.18
+BuildRequires:  golang(API) = 1.18
 Requires:       (apparmor-parser or container-selinux)
 Requires:       ca-certificates-mozilla
 # The docker-proxy binary used to be in a separate package. We obsolete it,
@@ -157,26 +149,6 @@
 Recommends:     git-core >= 1.7
 ExcludeArch:    s390 ppc
 
-# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
-#                 packaging, when everything was renamed to -kubic. It also is
-#                 used to ensure that nothing complains too much when using
-#                 -kubic packages. Hopfully it can be removed one day.
-%if "%flavour" == "kubic"
-# Obsolete old packege without the -kubic suffix
-Obsoletes:      %{realname} = 1.12.6
-Obsoletes:      %{realname}_1_12_6
-# Conflict with non-kubic package, and provide equivalent
-Conflicts:      %{realname}
-Provides:       %{realname} = %{version}
-# Kubernetes requires cri-runtime, which should be provided only by the -kubic 
flavour of this package
-Provides:       cri-runtime
-# No i586 Kubernetes, so docker-kubic must not be built for i586 also
-ExcludeArch:    i586
-# Disable leap based builds for kubic flavor (bsc#1121412)
-%if 0%{?suse_version} == 1500 && 0%{?is_opensuse}
-ExclusiveArch:  do_not_build
-%endif
-%endif
 
 %description
 Docker complements LXC with a high-level API which operates at the process
@@ -194,17 +166,6 @@
 Requires:       bash-completion
 Supplements:    packageand(%{name}:bash-completion)
 BuildArch:      noarch
-# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
-#                 packaging, when everything was renamed to -kubic. It also is
-#                 used to ensure that nothing complains too much when using
-#                 -kubic packages. Hopfully it can be removed one day.
-%if "%flavour" == "kubic"
-# Obsolete old packege without the -kubic suffix
-Obsoletes:      %{realname}-bash-completion = 1.12.6
-# Conflict with non-kubic package, and provide equivalent
-Conflicts:      %{realname}-bash-completion > 1.12.6
-Provides:       %{realname}-bash-completion = %{version}
-%endif
 
 %description bash-completion
 Bash command line completion support for %{name}.
@@ -216,17 +177,6 @@
 Requires:       zsh
 Supplements:    packageand(%{name}:zsh)
 BuildArch:      noarch
-# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
-#                 packaging, when everything was renamed to -kubic. It also is
-#                 used to ensure that nothing complains too much when using
-#                 -kubic packages. Hopfully it can be removed one day.
-%if "%flavour" == "kubic"
-# Obsolete old packege without the -kubic suffix
-Obsoletes:      %{realname}-zsh-completion = 1.12.6
-# Conflict with non-kubic package, and provide equivalent
-Conflicts:      %{realname}-zsh-completion > 1.12.6
-Provides:       %{realname}-zsh-completion = %{version}
-%endif
 
 %description zsh-completion
 Zsh command line completion support for %{name}.
@@ -238,29 +188,10 @@
 Requires:       fish
 Supplements:    packageand(%{name}:fish)
 BuildArch:      noarch
-%if "%flavour" == "kubic"
-# Conflict with non-kubic package, and provide equivalent
-Conflicts:      %{realname}-fish-completion
-Provides:       %{realname}-fish-completion = %{version}
-%endif
 
 %description fish-completion
 Fish command line completion support for %{name}.
 
-%if "%flavour" == "kubic"
-%package kubeadm-criconfig
-Summary:        docker container runtime configuration for kubeadm
-Group:          System/Management
-Requires:       kubernetes-kubeadm
-Requires(post): %fillup_prereq
-Supplements:    docker-kubic
-Provides:       kubernetes-kubeadm-criconfig
-Conflicts:      cri-o-kubeadm-criconfig
-
-%description kubeadm-criconfig
-docker container runtime configuration for kubeadm
-%endif
-
 %prep
 %setup -q -n %{realname}-%{version}_%{git_version}
 
@@ -271,10 +202,6 @@
 %patch100 -p1
 %patch101 -p1
 %endif
-%if "%flavour" == "kubic"
-# PATCH-SUSE: Mirror patch.
-%patch200 -p1
-%endif
 # bsc#1099277
 %patch300 -p1
 # bsc#1183855 bsc#1175081
@@ -395,9 +322,6 @@
 
 # systemd service
 install -D -m0644 %{SOURCE100} %{buildroot}%{_unitdir}/%{realname}.service
-%if "%flavour" == "kubic"
-install -D -m0644 %{SOURCE900} 
%{buildroot}%{_unitdir}/%{realname}.service.d/90-kubic.conf
-%endif
 ln -sf service %{buildroot}%{_sbindir}/rcdocker
 
 # udev rules that prevents dolphin to show all docker devices and slows down
@@ -421,12 +345,6 @@
 # sysusers.d
 install -D -m0644 %{SOURCE106} %{buildroot}%{_sysusersdir}/%{name}.conf
 
-%if "%flavour" == "kubic"
-# place kubelet.env in fillupdir (for kubeadm-criconfig)
-sed -e 's-@LIBEXECDIR@-%{_libexecdir}-g' -i %{SOURCE901}
-install -D -m0644 %{SOURCE901} %{buildroot}%{_fillupdir}/sysconfig.kubelet
-%endif
-
 %fdupes %{buildroot}
 
 %pre -f %{name}.pre
@@ -451,11 +369,6 @@
 %service_add_post %{realname}.service
 %{fillup_only -n docker}
 
-%if "%flavour" == "kubic"
-%post kubeadm-criconfig
-%fillup_only -n kubelet
-%endif
-
 %preun
 %service_del_preun %{realname}.service
 
@@ -474,10 +387,6 @@
 
 %{_unitdir}/%{realname}.service
 %{_sysusersdir}/%{name}.conf
-%if "%flavour" == "kubic"
-%dir %{_unitdir}/%{realname}.service.d/
-%{_unitdir}/%{realname}.service.d/90-kubic.conf
-%endif
 
 %dir %{_sysconfdir}/docker
 %config(noreplace) %{_sysconfdir}/docker/daemon.json
@@ -503,10 +412,4 @@
 %defattr(-,root,root)
 %{_datadir}/fish/vendor_completions.d/%{realname}.fish
 
-%if "%flavour" == "kubic"
-%files kubeadm-criconfig
-%defattr(-,root,root)
-%{_fillupdir}/sysconfig.kubelet
-%endif
-
 %changelog

++++++ _service ++++++
--- /var/tmp/diff_new_pack.3gJ169/_old  2023-02-02 18:23:25.513647786 +0100
+++ /var/tmp/diff_new_pack.3gJ169/_new  2023-02-02 18:23:25.517647811 +0100
@@ -3,16 +3,16 @@
     <param name="url">https://github.com/moby/moby.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="versionformat">20.10.21_ce_%h</param>
-    <param name="revision">v20.10.21</param>
+    <param name="versionformat">20.10.23_ce_%h</param>
+    <param name="revision">v20.10.23</param>
     <param name="filename">docker</param>
   </service>
   <service name="tar_scm" mode="disabled">
     <param name="url">https://github.com/docker/cli.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="versionformat">20.10.21_ce</param>
-    <param name="revision">v20.10.21</param>
+    <param name="versionformat">20.10.23_ce</param>
+    <param name="revision">v20.10.23</param>
     <param name="filename">docker-cli</param>
   </service>
   <service name="tar_scm" mode="disabled">
@@ -20,7 +20,7 @@
     <param name="scm">git</param>
     <param name="exclude">.git</param>
     <param name="versionformat">%H</param>
-    <param name="revision">0dde5c895075df6e3630e76f750a447cf63f4789</param>
+    <param name="revision">05b93e0d3a95952f70c113b0bc5bdb538d7afdd7</param>
     <param name="filename">docker-libnetwork</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ docker-20.10.21_ce_3056208812eb.tar.xz -> 
docker-20.10.23_ce_6051f1429.tar.xz ++++++
/work/SRC/openSUSE:Factory/docker/docker-20.10.21_ce_3056208812eb.tar.xz 
/work/SRC/openSUSE:Factory/.docker.new.32243/docker-20.10.23_ce_6051f1429.tar.xz
 differ: char 15, line 1

++++++ docker-cli-20.10.21_ce.tar.xz -> docker-cli-20.10.23_ce.tar.xz ++++++
++++ 17329 lines of diff (skipped)

++++++ docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789.tar.xz -> 
docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.circleci/config.yml
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.circleci/config.yml
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.circleci/config.yml
 2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.circleci/config.yml
 2023-01-18 13:19:52.000000000 +0100
@@ -4,7 +4,7 @@
   working_directory: ~/go/src/github.com/docker/libnetwork
   docker:
     # the following image is irrelevant for the build, everything is built 
inside a container, check the Makefile
-    - image: 'circleci/golang:latest'
+    - image: 'cimg/go:1.18.9'
       environment:
           dockerbuildargs: .
           dockerargs:  --privileged -e CIRCLECI
@@ -15,7 +15,7 @@
     steps:
       - checkout
       - setup_remote_docker:
-          version: 19.03.12
+          version: 20.10.18
           reusable: true
           exclusive: false
       - run: make builder
@@ -25,7 +25,7 @@
     steps:
       - checkout
       - setup_remote_docker:
-          version: 19.03.12
+          version: 20.10.18
           reusable: true
           exclusive: false
       - run: make build
@@ -35,7 +35,7 @@
     steps:
       - checkout
       - setup_remote_docker:
-          version: 19.03.12
+          version: 20.10.18
           reusable: true
           exclusive: false
       - run: make check
@@ -45,7 +45,7 @@
     steps:
       - checkout
       - setup_remote_docker:
-          version: 19.03.12
+          version: 20.10.18
           reusable: true
           exclusive: false
       - run: make cross
@@ -55,7 +55,7 @@
     steps:
       - checkout
       - setup_remote_docker:
-          version: 19.03.12
+          version: 20.10.18
           reusable: true
           exclusive: false
       - run: make unit-tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.github/ISSUE_TEMPLATE.md
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.github/ISSUE_TEMPLATE.md
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.github/ISSUE_TEMPLATE.md
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.github/ISSUE_TEMPLATE.md
    2023-01-18 13:19:52.000000000 +0100
@@ -0,0 +1,7 @@
+> **Warning**
+> libnetwork was moved to https://github.com/moby/moby/tree/master/libnetwork
+>
+> libnetwork has been merged to the main repo of Moby since Docker 22.06.
+>
+> The old libnetwork repo (https://github.com/moby/libnetwork) now only 
accepts PR for Docker 20.10,
+> and will be archived after the EOL of Docker 20.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.github/PULL_REQUEST_TEMPLATE.md
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.github/PULL_REQUEST_TEMPLATE.md
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/.github/PULL_REQUEST_TEMPLATE.md
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/.github/PULL_REQUEST_TEMPLATE.md
     2023-01-18 13:19:52.000000000 +0100
@@ -0,0 +1,7 @@
+> **Warning**
+> libnetwork was moved to https://github.com/moby/moby/tree/master/libnetwork
+>
+> libnetwork has been merged to the main repo of Moby since Docker 22.06.
+>
+> The old libnetwork repo (https://github.com/moby/libnetwork) now only 
accepts PR for Docker 20.10,
+> and will be archived after the EOL of Docker 20.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/Dockerfile 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/Dockerfile
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/Dockerfile   
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/Dockerfile   
2023-01-18 13:19:52.000000000 +0100
@@ -1,21 +1,23 @@
-ARG GO_VERSION=1.13.8
+ARG GO_VERSION=1.18.9
 
 FROM golang:${GO_VERSION}-buster as dev
 RUN apt-get update && apt-get -y install iptables \
                protobuf-compiler
 
-RUN go get -d github.com/gogo/protobuf/protoc-gen-gogo && \
-               cd /go/src/github.com/gogo/protobuf/protoc-gen-gogo && \
-               git reset --hard 30cf7ac33676b5786e78c746683f0d4cd64fa75b && \
-               go install
-
-RUN go get golang.org/x/lint/golint \
-               golang.org/x/tools/cmd/cover \
-               github.com/mattn/goveralls \
-               github.com/gordonklaus/ineffassign \
-               github.com/client9/misspell/cmd/misspell
+RUN git clone https://github.com/gogo/protobuf.git  
/go/src/github.com/gogo/protobuf \
+  && cd /go/src/github.com/gogo/protobuf/protoc-gen-gogo \
+  && git reset --hard 30cf7ac33676b5786e78c746683f0d4cd64fa75b \
+  && GO111MODULE=off go install
+
+RUN go install golang.org/x/lint/golint@latest \
+ && go install golang.org/x/tools/cmd/cover@latest \
+ && go install github.com/mattn/goveralls@latest \
+ && go install github.com/gordonklaus/ineffassign@latest \
+ && go install github.com/client9/misspell/cmd/misspell@latest
 
 WORKDIR /go/src/github.com/docker/libnetwork
+ENV GO111MODULE=off
+
 
 FROM dev
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/Makefile 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/Makefile
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/Makefile     
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/Makefile     
2023-01-18 13:19:52.000000000 +0100
@@ -45,8 +45,8 @@
 build-local:
        @echo "🐳 $@"
        @mkdir -p "bin"
-       go build -tags experimental -o "bin/dnet" ./cmd/dnet
-       go build -o "bin/docker-proxy" ./cmd/proxy
+       GO111MODULE=off go build -tags experimental -o "bin/dnet" ./cmd/dnet
+       GO111MODULE=off go build -o "bin/docker-proxy" ./cmd/proxy
        CGO_ENABLED=0 go build -o "bin/diagnosticClient" ./cmd/diagnostic
        CGO_ENABLED=0 go build -o "bin/testMain" 
./cmd/networkdb-test/testMain.go
 
@@ -82,8 +82,8 @@
 
 cross-local:
        @echo "🐳 $@"
-       go build -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
-       go build -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
+       GO111MODULE=off go build -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
+       GO111MODULE=off go build -o "bin/docker-proxy-$$GOOS-$$GOARCH" 
./cmd/proxy
 
 # Rebuild protocol buffers.
 # These may need to be rebuilt after vendoring updates, so .proto files are 
declared .PHONY so they are always rebuilt.
@@ -125,7 +125,7 @@
 unit-tests-local:
        @echo "🐳 Running tests... "
        @echo "mode: count" > coverage.coverprofile
-       @go build -o "bin/docker-proxy" ./cmd/proxy
+       @GO111MODULE=off go build -o "bin/docker-proxy" ./cmd/proxy
        @for dir in $$( find . -maxdepth 10 -not -path './.git*' -not -path 
'*/_*' -not -path './vendor/*' -type d); do \
        if ls $$dir/*.go &> /dev/null; then \
                pushd . &> /dev/null ; \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/README.md 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/README.md
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/README.md    
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/README.md    
2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,12 @@
+> **Warning**
+> libnetwork was moved to https://github.com/moby/moby/tree/master/libnetwork
+>
+> libnetwork has been merged to the main repo of Moby since Docker 22.06.
+>
+> The old libnetwork repo (https://github.com/moby/libnetwork) now only 
accepts PR for Docker 20.10,
+> and will be archived after the EOL of Docker 20.10.
+
+- - -
 # libnetwork - networking for containers
 
 [![Circle 
CI](https://circleci.com/gh/docker/libnetwork/tree/master.svg?style=svg)](https://circleci.com/gh/docker/libnetwork/tree/master)
 [![Coverage 
Status](https://coveralls.io/repos/docker/libnetwork/badge.svg)](https://coveralls.io/r/docker/libnetwork)
 
[![GoDoc](https://godoc.org/github.com/docker/libnetwork?status.svg)](https://godoc.org/github.com/docker/libnetwork)
 [![Go Report 
Card](https://goreportcard.com/badge/github.com/docker/libnetwork)](https://goreportcard.com/report/github.com/docker/libnetwork)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/api/api.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/api/api.go
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/api/api.go   
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/api/api.go   
2023-01-18 13:19:52.000000000 +0100
@@ -278,6 +278,7 @@
 /***************************
  NetworkController interface
 ****************************/
+
 func procCreateNetwork(c libnetwork.NetworkController, vars map[string]string, 
body []byte) (interface{}, *responseStatus) {
        var create networkCreate
 
@@ -385,6 +386,7 @@
 /******************
  Network interface
 *******************/
+
 func procCreateEndpoint(c libnetwork.NetworkController, vars 
map[string]string, body []byte) (interface{}, *responseStatus) {
        var ec endpointCreate
 
@@ -483,6 +485,7 @@
 /******************
  Endpoint interface
 *******************/
+
 func procJoinEndpoint(c libnetwork.NetworkController, vars map[string]string, 
body []byte) (interface{}, *responseStatus) {
        var ej endpointJoin
        var setFctList []libnetwork.EndpointOption
@@ -561,6 +564,7 @@
 /******************
  Service interface
 *******************/
+
 func procGetServices(c libnetwork.NetworkController, vars map[string]string, 
body []byte) (interface{}, *responseStatus) {
        // Look for query filters and validate
        nwName, filterByNwName := vars[urlNwName]
@@ -734,6 +738,7 @@
 /******************
  Sandbox interface
 *******************/
+
 func procGetSandbox(c libnetwork.NetworkController, vars map[string]string, 
body []byte) (interface{}, *responseStatus) {
        if epT, ok := vars[urlEpID]; ok {
                sv, errRsp := findService(c, epT, byID)
@@ -816,6 +821,7 @@
 /***********
   Utilities
 ************/
+
 const (
        byID = iota
        byName
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/bitseq/sequence.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/bitseq/sequence.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/bitseq/sequence.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/bitseq/sequence.go
   2023-01-18 13:19:52.000000000 +0100
@@ -621,13 +621,14 @@
 // Remove current sequence if empty.
 // Check if new sequence can be merged with neighbour (previous/next) 
sequences.
 //
-//
 // Identify "current" sequence containing block:
-//                                      [prev seq] [current seq] [next seq]
+//
+//     [prev seq] [current seq] [next seq]
 //
 // Based on block position, resulting list of sequences can be any of three 
forms:
 //
-//        block position                        Resulting list of sequences
+//     block position                        Resulting list of sequences
+//
 // A) block is first in current:         [prev seq] [new] [modified current 
seq] [next seq]
 // B) block is last in current:          [prev seq] [modified current seq] 
[new] [next seq]
 // C) block is in the middle of current: [prev seq] [curr pre] [new] [curr 
post] [next seq]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/client/types.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/client/types.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/client/types.go  
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/client/types.go  
    2023-01-18 13:19:52.000000000 +0100
@@ -31,6 +31,7 @@
 /***********
   Body types
   ************/
+
 type ipamConf struct {
        PreferredPool string
        SubPool       string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/config/config.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/config/config.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/config/config.go 
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/config/config.go 
    2023-01-18 13:19:52.000000000 +0100
@@ -1,7 +1,6 @@
 package config
 
 import (
-       "fmt"
        "strings"
 
        "github.com/BurntSushi/toml"
@@ -14,7 +13,6 @@
        "github.com/docker/libnetwork/ipamutils"
        "github.com/docker/libnetwork/netlabel"
        "github.com/docker/libnetwork/osl"
-       "github.com/docker/libnetwork/portallocator"
        "github.com/sirupsen/logrus"
 )
 
@@ -240,23 +238,6 @@
        }
 }
 
-// OptionDynamicPortRange function returns an option setter for service port 
allocation range
-func OptionDynamicPortRange(in string) Option {
-       return func(c *Config) {
-               start, end := 0, 0
-               if len(in) > 0 {
-                       n, err := fmt.Sscanf(in, "%d-%d", &start, &end)
-                       if n != 2 || err != nil {
-                               logrus.Errorf("Failed to parse range string 
with err %v", err)
-                               return
-                       }
-               }
-               if err := portallocator.Get().SetPortRange(start, end); err != 
nil {
-                       logrus.Errorf("Failed to set port range with err %v", 
err)
-               }
-       }
-}
-
 // OptionNetworkControlPlaneMTU function returns an option setter for control 
plane MTU
 func OptionNetworkControlPlaneMTU(exp int) Option {
        return func(c *Config) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/datastore/datastore.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/datastore/datastore.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/datastore/datastore.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/datastore/datastore.go
       2023-01-18 13:19:52.000000000 +0100
@@ -14,7 +14,7 @@
        "github.com/docker/libnetwork/types"
 )
 
-//DataStore exported
+// DataStore exported
 type DataStore interface {
        // GetObject gets data from datastore and unmarshals to the specified 
object
        GetObject(key string, o KVObject) error
@@ -174,14 +174,14 @@
        return true
 }
 
-//Key provides convenient method to create a Key
+// Key provides convenient method to create a Key
 func Key(key ...string) string {
        keychain := append(rootChain, key...)
        str := strings.Join(keychain, "/")
        return str + "/"
 }
 
-//ParseKey provides convenient method to unpack the key to complement the Key 
function
+// ParseKey provides convenient method to unpack the key to complement the Key 
function
 func ParseKey(key string) ([]string, error) {
        chain := strings.Split(strings.Trim(key, "/"), "/")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/bridge.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/bridge.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/bridge.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/bridge.go
     2023-01-18 13:19:52.000000000 +0100
@@ -781,8 +781,8 @@
                // Setup IP6Tables.
                {config.EnableIPv6 && d.config.EnableIP6Tables, 
network.setupIP6Tables},
 
-               //We want to track firewalld configuration so that
-               //if it is started/reloaded, the rules can be applied correctly
+               // We want to track firewalld configuration so that
+               // if it is started/reloaded, the rules can be applied correctly
                {d.config.EnableIPTables, network.setupFirewalld},
                // same for IPv6
                {config.EnableIPv6 && d.config.EnableIP6Tables, 
network.setupFirewalld6},
@@ -796,7 +796,7 @@
                // Add inter-network communication rules.
                {d.config.EnableIPTables, setupNetworkIsolationRules},
 
-               //Configure bridge networking filtering if ICC is off and IP 
tables are enabled
+               // Configure bridge networking filtering if ICC is off and IP 
tables are enabled
                {!config.EnableICC && d.config.EnableIPTables, 
setupBridgeNetFiltering},
        } {
                if step.Condition {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_int8.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_int8.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_int8.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_int8.go
     2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !arm && !ppc64 && !ppc64le && !riscv64
 // +build !arm,!ppc64,!ppc64le,!riscv64
 
 package bridge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_uint8.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_uint8.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_uint8.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_linux_rawsockaddr_data_uint8.go
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build arm || ppc64 || ppc64le || riscv64
 // +build arm ppc64 ppc64le riscv64
 
 package bridge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/netlink_deprecated_unsupported.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/netlink_deprecated_unsupported.go
     2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux
 // +build !linux
 
 package bridge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/port_mapping_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/port_mapping_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/port_mapping_test.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/port_mapping_test.go
  2023-01-18 13:19:52.000000000 +0100
@@ -97,6 +97,8 @@
 }
 
 func TestPortMappingV6Config(t *testing.T) {
+       t.Skip("FIXME: circleci does not have proper IPv6 support")
+
        defer testutils.SetupTestOSContext(t)()
        d := newDriver()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/setup_bridgenetfiltering.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/setup_bridgenetfiltering.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/setup_bridgenetfiltering.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/setup_bridgenetfiltering.go
   2023-01-18 13:19:52.000000000 +0100
@@ -20,7 +20,7 @@
        ipvboth
 )
 
-//Gets the IP version in use ( [ipv4], [ipv6] or [ipv4 and ipv6] )
+// Gets the IP version in use ( [ipv4], [ipv6] or [ipv4 and ipv6] )
 func getIPVersion(config *networkConfiguration) ipVersion {
        ipVersion := ipv4
        if config.AddressIPv6 != nil || config.EnableIPv6 {
@@ -49,7 +49,7 @@
        return nil
 }
 
-//Enable bridge net filtering if ip forwarding is enabled. See github issue 
#11404
+// Enable bridge net filtering if ip forwarding is enabled. See github issue 
#11404
 func checkBridgeNetFiltering(config *networkConfiguration, i *bridgeInterface) 
error {
        ipVer := getIPVersion(config)
        iface := config.BridgeName
@@ -119,7 +119,7 @@
        }
 }
 
-//Gets the value of the kernel parameters located at the given path
+// Gets the value of the kernel parameters located at the given path
 func getKernelBoolParam(path string) (bool, error) {
        enabled := false
        line, err := ioutil.ReadFile(path)
@@ -132,7 +132,7 @@
        return enabled, err
 }
 
-//Sets the value of the kernel parameter located at the given path
+// Sets the value of the kernel parameter located at the given path
 func setKernelBoolParam(path string, on bool) error {
        value := byte('0')
        if on {
@@ -141,7 +141,7 @@
        return ioutil.WriteFile(path, []byte{value, '\n'}, 0644)
 }
 
-//Checks to see if packet forwarding is enabled
+// Checks to see if packet forwarding is enabled
 func isPacketForwardingEnabled(ipVer ipVersion, iface string) (bool, error) {
        switch ipVer {
        case ipv4, ipv6:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/setup_ip_tables.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/setup_ip_tables.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/bridge/setup_ip_tables.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/bridge/setup_ip_tables.go
    2023-01-18 13:19:52.000000000 +0100
@@ -22,6 +22,7 @@
        // bridge. A positive match identifies a packet originated from one 
bridge
        // network's bridge destined to another bridge network's bridge and will
        // result in the packet being dropped. No match returns to the parent 
chain.
+
        IsolationChain1 = "DOCKER-ISOLATION-STAGE-1"
        IsolationChain2 = "DOCKER-ISOLATION-STAGE-2"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/overlay/ostweaks_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/overlay/ostweaks_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/overlay/ostweaks_unsupported.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/overlay/ostweaks_unsupported.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux
 // +build !linux
 
 package overlay
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/port_mapping.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/port_mapping.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/port_mapping.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/port_mapping.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows.go
   2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 // Shim for the Host Network Service (HNS) to manage networking for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows_store.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows_store.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows_store.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows_store.go
     2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/drivers/windows/windows_test.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/drivers/windows/windows_test.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_info_unix.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_info_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_info_unix.go
        2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_info_unix.go
        2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_info_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_info_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_info_windows.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_info_windows.go
     2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_test.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/endpoint_test.go 
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/endpoint_test.go 
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/etchosts/etchosts_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/etchosts/etchosts_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/etchosts/etchosts_test.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/etchosts/etchosts_test.go
    2023-01-18 13:19:52.000000000 +0100
@@ -446,11 +446,11 @@
 
                        for j := 0; j < 25; j++ {
                                if err := Add(file.Name(), rec); err != nil {
-                                       t.Fatal(err)
+                                       t.Error(err)
                                }
 
                                if err := Delete(file.Name(), rec); err != nil {
-                                       t.Fatal(err)
+                                       t.Error(err)
                                }
                        }
                }(i)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/firewall_others.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/firewall_others.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/firewall_others.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/firewall_others.go
   2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux
 // +build !linux
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipam/allocator_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipam/allocator_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipam/allocator_test.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipam/allocator_test.go
       2023-01-18 13:19:52.000000000 +0100
@@ -1516,7 +1516,7 @@
                                wg.Add(1)
                                go func(ip *net.IPNet) {
                                        if err = a.ReleaseAddress(poolID, 
ip.IP); err != nil {
-                                               t.Fatal(err)
+                                               t.Error(err)
                                        }
                                        l.Lock()
                                        ips = append(ips, IP{ip, -1})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipam/parallel_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipam/parallel_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipam/parallel_test.go
        2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipam/parallel_test.go
        2023-01-18 13:19:52.000000000 +0100
@@ -93,7 +93,7 @@
                go func(t *testing.T, a *Allocator, ch chan *op) {
                        name, _, _, err := a.RequestPool("GlobalDefault", "", 
"", nil, false)
                        if err != nil {
-                               t.Fatalf("request error %v", err)
+                               t.Errorf("request error %v", err)
                        }
                        idx := atomic.AddInt32(&operationIndex, 1)
                        ch <- &op{idx, true, name}
@@ -101,7 +101,7 @@
                        idx = atomic.AddInt32(&operationIndex, 1)
                        err = a.ReleasePool(name)
                        if err != nil {
-                               t.Fatalf("release error %v", err)
+                               t.Errorf("release error %v", err)
                        }
                        ch <- &op{idx, false, name}
                }(t, a, ch)
@@ -267,7 +267,7 @@
                        // logrus.Errorf("list %v", tctx.ipList)
                        err := tctx.a.ReleaseAddress(tctx.pid, 
tctx.ipList[index].IP)
                        if err != nil {
-                               t.Fatalf("routine %d got %v", id, err)
+                               t.Errorf("routine %d got %v", id, err)
                        }
                        ch <- tctx.ipList[index]
                        parallelExec.Release(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/builtin/builtin_unix.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/builtin/builtin_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/builtin/builtin_unix.go
        2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/builtin/builtin_unix.go
        2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build linux || freebsd || darwin
 // +build linux freebsd darwin
 
 package builtin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/builtin/builtin_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/builtin/builtin_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/builtin/builtin_windows.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/builtin/builtin_windows.go
     2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package builtin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/remote/api/api.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/remote/api/api.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/ipams/remote/api/api.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/ipams/remote/api/api.go
      2023-01-18 13:19:52.000000000 +0100
@@ -34,14 +34,14 @@
        }
 }
 
-// GetAddressSpacesResponse is the response to the ``get default address 
spaces`` request message
+// GetAddressSpacesResponse is the response to the “get default address 
spaces“ request message
 type GetAddressSpacesResponse struct {
        Response
        LocalDefaultAddressSpace  string
        GlobalDefaultAddressSpace string
 }
 
-// RequestPoolRequest represents the expected data in a ``request address 
pool`` request message
+// RequestPoolRequest represents the expected data in a “request address 
pool“ request message
 type RequestPoolRequest struct {
        AddressSpace string
        Pool         string
@@ -50,7 +50,7 @@
        V6           bool
 }
 
-// RequestPoolResponse represents the response message to a ``request address 
pool`` request
+// RequestPoolResponse represents the response message to a “request address 
pool“ request
 type RequestPoolResponse struct {
        Response
        PoolID string
@@ -58,37 +58,37 @@
        Data   map[string]string
 }
 
-// ReleasePoolRequest represents the expected data in a ``release address 
pool`` request message
+// ReleasePoolRequest represents the expected data in a “release address 
pool“ request message
 type ReleasePoolRequest struct {
        PoolID string
 }
 
-// ReleasePoolResponse represents the response message to a ``release address 
pool`` request
+// ReleasePoolResponse represents the response message to a “release address 
pool“ request
 type ReleasePoolResponse struct {
        Response
 }
 
-// RequestAddressRequest represents the expected data in a ``request address`` 
request message
+// RequestAddressRequest represents the expected data in a “request 
address“ request message
 type RequestAddressRequest struct {
        PoolID  string
        Address string
        Options map[string]string
 }
 
-// RequestAddressResponse represents the expected data in the response message 
to a ``request address`` request
+// RequestAddressResponse represents the expected data in the response message 
to a “request address“ request
 type RequestAddressResponse struct {
        Response
        Address string // in CIDR format
        Data    map[string]string
 }
 
-// ReleaseAddressRequest represents the expected data in a ``release address`` 
request message
+// ReleaseAddressRequest represents the expected data in a “release 
address“ request message
 type ReleaseAddressRequest struct {
        PoolID  string
        Address string
 }
 
-// ReleaseAddressResponse represents the response message to a ``release 
address`` request
+// ReleaseAddressResponse represents the response message to a “release 
address“ request
 type ReleaseAddressResponse struct {
        Response
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/iptables/iptables.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/iptables/iptables.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/iptables/iptables.go
 2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/iptables/iptables.go
 2023-01-18 13:19:52.000000000 +0100
@@ -5,7 +5,6 @@
        "fmt"
        "net"
        "os/exec"
-       "regexp"
        "strconv"
        "strings"
        "sync"
@@ -54,7 +53,6 @@
        iptablesPath  string
        ip6tablesPath string
        supportsXlock = false
-       supportsCOpt  = false
        xLockWaitMsg  = "Another app is currently holding the xtables lock"
        // used to lock iptables commands if xtables lock is not supported
        bestEffortLock sync.Mutex
@@ -86,19 +84,27 @@
        return fmt.Sprintf("Error iptables %s: %s", e.Chain, string(e.Output))
 }
 
-func probe() {
+func detectIptables() {
        path, err := exec.LookPath("iptables")
        if err != nil {
-               logrus.Warnf("Failed to find iptables: %v", err)
+               logrus.WithError(err).Warnf("failed to find iptables")
                return
        }
-       if out, err := exec.Command(path, "--wait", "-t", "nat", "-L", 
"-n").CombinedOutput(); err != nil {
-               logrus.Warnf("Running iptables --wait -t nat -L -n failed with 
message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+       iptablesPath = path
+
+       // The --wait flag was added in iptables v1.6.0.
+       // TODO remove this check once we drop support for CentOS/RHEL 7, which 
uses an older version of iptables
+       if out, err := exec.Command(path, "--wait", "-L", 
"-n").CombinedOutput(); err != nil {
+               logrus.WithError(err).Infof("unable to detect if iptables 
supports xlock: 'iptables --wait -L -n': `%s`", strings.TrimSpace(string(out)))
+       } else {
+               supportsXlock = true
        }
-       _, err = exec.LookPath("ip6tables")
+
+       path, err = exec.LookPath("ip6tables")
        if err != nil {
-               logrus.Warnf("Failed to find ip6tables: %v", err)
-               return
+               logrus.WithError(err).Warnf("unable to find ip6tables")
+       } else {
+               ip6tablesPath = path
        }
 }
 
@@ -110,32 +116,11 @@
                return
        }
        if err := FirewalldInit(); err != nil {
-               logrus.Debugf("Fail to initialize firewalld: %v, using raw 
iptables instead", err)
-       }
-}
-
-func detectIptables() {
-       path, err := exec.LookPath("iptables")
-       if err != nil {
-               return
-       }
-       iptablesPath = path
-       path, err = exec.LookPath("ip6tables")
-       if err != nil {
-               return
+               logrus.WithError(err).Debugf("unable to initialize firewalld; 
using raw iptables instead")
        }
-       ip6tablesPath = path
-       supportsXlock = exec.Command(iptablesPath, "--wait", "-L", "-n").Run() 
== nil
-       mj, mn, mc, err := GetVersion()
-       if err != nil {
-               logrus.Warnf("Failed to read iptables version: %v", err)
-               return
-       }
-       supportsCOpt = supportsCOption(mj, mn, mc)
 }
 
 func initDependencies() {
-       probe()
        initFirewalld()
        detectIptables()
 }
@@ -475,26 +460,9 @@
                return false
        }
 
-       if supportsCOpt {
-               // if exit status is 0 then return true, the rule exists
-               _, err := f(append([]string{"-t", string(table), "-C", chain}, 
rule...)...)
-               return err == nil
-       }
-
-       // parse "iptables -S" for the rule (it checks rules in a specific chain
-       // in a specific table and it is very unreliable)
-       return iptable.existsRaw(table, chain, rule...)
-}
-
-func (iptable IPTable) existsRaw(table Table, chain string, rule ...string) 
bool {
-       path := iptablesPath
-       if iptable.Version == IPv6 {
-               path = ip6tablesPath
-       }
-       ruleString := fmt.Sprintf("%s %s\n", chain, strings.Join(rule, " "))
-       existingRules, _ := exec.Command(path, "-t", string(table), "-S", 
chain).Output()
-
-       return strings.Contains(string(existingRules), ruleString)
+       // if exit status is 0 then return true, the rule exists
+       _, err := f(append([]string{"-t", string(table), "-C", chain}, 
rule...)...)
+       return err == nil
 }
 
 // Maximum duration that an iptables operation can take
@@ -548,6 +516,9 @@
        path := iptablesPath
        commandName := "iptables"
        if iptable.Version == IPv6 {
+               if ip6tablesPath == "" {
+                       return nil, fmt.Errorf("ip6tables is missing")
+               }
                path = ip6tablesPath
                commandName = "ip6tables"
        }
@@ -589,15 +560,6 @@
        return false
 }
 
-// GetVersion reads the iptables version numbers during initialization
-func GetVersion() (major, minor, micro int, err error) {
-       out, err := exec.Command(iptablesPath, "--version").CombinedOutput()
-       if err == nil {
-               major, minor, micro = parseVersionNumbers(string(out))
-       }
-       return
-}
-
 // SetDefaultPolicy sets the passed default policy for the table/chain
 func (iptable IPTable) SetDefaultPolicy(table Table, chain string, policy 
Policy) error {
        if err := iptable.RawCombinedOutput("-t", string(table), "-P", chain, 
string(policy)); err != nil {
@@ -606,19 +568,6 @@
        return nil
 }
 
-func parseVersionNumbers(input string) (major, minor, micro int) {
-       re := regexp.MustCompile(`v\d*.\d*.\d*`)
-       line := re.FindString(input)
-       fmt.Sscanf(line, "v%d.%d.%d", &major, &minor, &micro)
-       return
-}
-
-// iptables -C, --check option was added in v.1.4.11
-// http://ftp.netfilter.org/pub/iptables/changes-iptables-1.4.11.txt
-func supportsCOption(mj, mn, mc int) bool {
-       return mj > 1 || (mj == 1 && (mn > 4 || (mn == 4 && mc >= 11)))
-}
-
 // AddReturnRule adds a return rule for the chain in the filter table
 func (iptable IPTable) AddReturnRule(chain string) error {
        var (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/iptables/iptables_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/iptables/iptables_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/iptables/iptables_test.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/iptables/iptables_test.go
    2023-01-18 13:19:52.000000000 +0100
@@ -213,7 +213,7 @@
                        defer wg.Done()
                        err := natChain.Forward(Append, ip, port, proto, 
dstAddr, dstPort, "lo")
                        if err != nil {
-                               t.Fatal(err)
+                               t.Error(err)
                        }
                }()
        }
@@ -286,44 +286,15 @@
                if err != nil {
                        t.Fatalf("i=%d, err: %v", i, err)
                }
-               if !iptable.existsRaw(Filter, testChain1, r.rule...) {
+               if !iptable.exists(true, Filter, testChain1, r.rule...) {
                        t.Fatalf("Failed to detect rule. i=%d", i)
                }
                // Truncate the rule
                trg := r.rule[len(r.rule)-1]
                trg = trg[:len(trg)-2]
                r.rule[len(r.rule)-1] = trg
-               if iptable.existsRaw(Filter, testChain1, r.rule...) {
+               if iptable.exists(true, Filter, testChain1, r.rule...) {
                        t.Fatalf("Invalid detection. i=%d", i)
                }
        }
 }
-
-func TestGetVersion(t *testing.T) {
-       mj, mn, mc := parseVersionNumbers("iptables v1.4.19.1-alpha")
-       if mj != 1 || mn != 4 || mc != 19 {
-               t.Fatal("Failed to parse version numbers")
-       }
-}
-
-func TestSupportsCOption(t *testing.T) {
-       input := []struct {
-               mj int
-               mn int
-               mc int
-               ok bool
-       }{
-               {1, 4, 11, true},
-               {1, 4, 12, true},
-               {1, 5, 0, true},
-               {0, 4, 11, false},
-               {0, 5, 12, false},
-               {1, 3, 12, false},
-               {1, 4, 10, false},
-       }
-       for ind, inp := range input {
-               if inp.ok != supportsCOption(inp.mj, inp.mn, inp.mc) {
-                       t.Fatalf("Incorrect check: %d", ind)
-               }
-       }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/libnetwork_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/libnetwork_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/libnetwork_test.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/libnetwork_test.go
   2023-01-18 13:19:52.000000000 +0100
@@ -1080,6 +1080,9 @@
                libnetwork.OptionHostname("test"),
                libnetwork.OptionDomainname("docker.io"),
                libnetwork.OptionExtraHost("web", "192.168.0.1"))
+       if err != nil {
+               t.Fatal(err)
+       }
        defer func() {
                if err := sbx1.Delete(); err != nil {
                        t.Fatal(err)
@@ -1087,6 +1090,9 @@
        }()
 
        sbx2, err := controller.NewSandbox("c2")
+       if err != nil {
+               t.Fatal(err)
+       }
        defer func() {
                if err := sbx2.Delete(); err != nil {
                        t.Fatal(err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/netutils/utils_linux.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/netutils/utils_linux.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/netutils/utils_linux.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/netutils/utils_linux.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,4 +1,6 @@
+//go:build linux
 // +build linux
+
 // Network utility functions.
 
 package netutils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network.go
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network.go   
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network.go   
2023-01-18 13:19:52.000000000 +0100
@@ -4,6 +4,7 @@
        "encoding/json"
        "fmt"
        "net"
+       "runtime"
        "strings"
        "sync"
        "time"
@@ -980,13 +981,13 @@
 }
 
 // This function gets called in 3 ways:
-//  * Delete() -- (false, false)
-//      remove if endpoint count == 0 or endpoint count == 1 and
-//      there is a load balancer IP
-//  * Delete(libnetwork.NetworkDeleteOptionRemoveLB) -- (false, true)
-//      remove load balancer and network if endpoint count == 1
-//  * controller.networkCleanup() -- (true, true)
-//      remove the network no matter what
+//   - Delete() -- (false, false)
+//     remove if endpoint count == 0 or endpoint count == 1 and
+//     there is a load balancer IP
+//   - Delete(libnetwork.NetworkDeleteOptionRemoveLB) -- (false, true)
+//     remove load balancer and network if endpoint count == 1
+//   - controller.networkCleanup() -- (true, true)
+//     remove the network no matter what
 func (n *network) delete(force bool, rmLBEndpoint bool) error {
        n.Lock()
        c := n.ctrlr
@@ -1062,13 +1063,6 @@
                goto removeFromStore
        }
 
-       if err = n.deleteNetwork(); err != nil {
-               if !force {
-                       return err
-               }
-               logrus.Debugf("driver failed to delete stale network %s (%s): 
%v", n.Name(), n.ID(), err)
-       }
-
        n.ipamRelease()
        if err = c.updateToStore(n); err != nil {
                logrus.Warnf("Failed to update store after ipam release for 
network %s (%s): %v", n.Name(), n.ID(), err)
@@ -1089,8 +1083,19 @@
        c.cleanupServiceDiscovery(n.ID())
 
        // Cleanup the load balancer. On Windows this call is required
-       // to remove remote loadbalancers in VFP.
-       c.cleanupServiceBindings(n.ID())
+       // to remove remote loadbalancers in VFP, and must be performed before
+       // dataplane network deletion.
+       if runtime.GOOS == "windows" {
+               c.cleanupServiceBindings(n.ID())
+       }
+
+       // Delete the network from the dataplane
+       if err = n.deleteNetwork(); err != nil {
+               if !force {
+                       return err
+               }
+               logrus.Debugf("driver failed to delete stale network %s (%s): 
%v", n.Name(), n.ID(), err)
+       }
 
 removeFromStore:
        // deleteFromStore performs an atomic delete operation and the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network_unix.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network_unix.go  
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network_unix.go  
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/network_windows.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/network_windows.go
   2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb.go
       2023-01-18 13:19:52.000000000 +0100
@@ -283,7 +283,7 @@
                logrus.Errorf("%v(%v) Could not close DB: %v", 
nDB.config.Hostname, nDB.config.NodeID, err)
        }
 
-       //Avoid (*Broadcaster).run goroutine leak
+       // Avoid (*Broadcaster).run goroutine leak
        nDB.broadcaster.Close()
 }
 
@@ -473,17 +473,18 @@
 
 // deleteNodeNetworkEntries is called in 2 conditions with 2 different 
outcomes:
 // 1) when a notification is coming of a node leaving the network
-//             - Walk all the network entries and mark the leaving node's 
entries for deletion
-//                     These will be garbage collected when the reap timer 
will expire
+//   - Walk all the network entries and mark the leaving node's entries for 
deletion
+//     These will be garbage collected when the reap timer will expire
+//
 // 2) when the local node is leaving the network
-//             - Walk all the network entries:
-//                     A) if the entry is owned by the local node
-//               then we will mark it for deletion. This will ensure that if a 
node did not
-//               yet received the notification that the local node is leaving, 
will be aware
-//               of the entries to be deleted.
-//                     B) if the entry is owned by a remote node, then we can 
safely delete it. This
-//                     ensures that if we join back this network as we receive 
the CREATE event for
-//               entries owned by remote nodes, we will accept them and we 
notify the application
+//   - Walk all the network entries:
+//     A) if the entry is owned by the local node
+//     then we will mark it for deletion. This will ensure that if a node did 
not
+//     yet received the notification that the local node is leaving, will be 
aware
+//     of the entries to be deleted.
+//     B) if the entry is owned by a remote node, then we can safely delete 
it. This
+//     ensures that if we join back this network as we receive the CREATE 
event for
+//     entries owned by remote nodes, we will accept them and we notify the 
application
 func (nDB *NetworkDB) deleteNodeNetworkEntries(nid, node string) {
        // Indicates if the delete is triggered for the local node
        isNodeLocal := node == nDB.config.NodeID
@@ -608,7 +609,7 @@
        nodeNetworks[nid] = &network{id: nid, ltime: ltime, entriesNumber: 
entries}
        nodeNetworks[nid].tableBroadcasts = &memberlist.TransmitLimitedQueue{
                NumNodes: func() int {
-                       //TODO fcrisciani this can be optimized maybe avoiding 
the lock?
+                       // TODO fcrisciani this can be optimized maybe avoiding 
the lock?
                        // this call is done each GetBroadcasts call to 
evaluate the number of
                        // replicas for the message
                        nDB.RLock()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb.pb.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb.pb.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb.pb.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb.pb.go
    2023-01-18 13:19:52.000000000 +0100
@@ -145,7 +145,9 @@
 func (x NetworkEvent_Type) String() string {
        return proto.EnumName(NetworkEvent_Type_name, int32(x))
 }
-func (NetworkEvent_Type) EnumDescriptor() ([]byte, []int) { return 
fileDescriptorNetworkdb, []int{2, 0} }
+func (NetworkEvent_Type) EnumDescriptor() ([]byte, []int) {
+       return fileDescriptorNetworkdb, []int{2, 0}
+}
 
 type TableEvent_Type int32
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/networkdb/networkdb_test.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/networkdb/networkdb_test.go
  2023-01-18 13:19:52.000000000 +0100
@@ -6,6 +6,7 @@
        "log"
        "net"
        "os"
+       "strconv"
        "strings"
        "sync/atomic"
        "testing"
@@ -562,12 +563,12 @@
        assert.NilError(t, err)
 
        for i := 0; i < keysWriteDelete; i++ {
-               err = dbs[i%2].CreateEntry("testTable", "network1", 
"key-"+string(i), []byte("value"))
+               err = dbs[i%2].CreateEntry("testTable", "network1", 
"key-"+strconv.Itoa(i), []byte("value"))
                assert.NilError(t, err)
        }
        time.Sleep(time.Second)
        for i := 0; i < keysWriteDelete; i++ {
-               err = dbs[i%2].DeleteEntry("testTable", "network1", 
"key-"+string(i))
+               err = dbs[i%2].DeleteEntry("testTable", "network1", 
"key-"+strconv.Itoa(i))
                assert.NilError(t, err)
        }
        for i := 0; i < 2; i++ {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/kernel/knobs_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/kernel/knobs_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/kernel/knobs_unsupported.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/kernel/knobs_unsupported.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux
 // +build !linux
 
 package kernel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/namespace_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/namespace_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/namespace_unsupported.go
 2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/namespace_unsupported.go
 2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux && !windows && !freebsd
 // +build !linux,!windows,!freebsd
 
 package osl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/sandbox_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/sandbox_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/sandbox_unsupported.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/sandbox_unsupported.go
   2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux && !windows && !freebsd
 // +build !linux,!windows,!freebsd
 
 package osl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/sandbox_unsupported_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/sandbox_unsupported_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/osl/sandbox_unsupported_test.go
      2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/osl/sandbox_unsupported_test.go
      2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux
 // +build !linux
 
 package osl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portallocator/portallocator.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portallocator/portallocator.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portallocator/portallocator.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portallocator/portallocator.go
       2023-01-18 13:19:52.000000000 +0100
@@ -3,7 +3,6 @@
 import (
        "errors"
        "fmt"
-       "github.com/sirupsen/logrus"
        "net"
        "sync"
 )
@@ -14,25 +13,9 @@
        // defaultPortRangeEnd indicates the last port in port range
        // consistent with default /proc/sys/net/ipv4/ip_local_port_range
        // upper bound on linux
-       defaultPortRangeEnd = 60999
+       defaultPortRangeEnd = 65535
 )
 
-func sanitizePortRange(start int, end int) (newStart, newEnd int, err error) {
-       if start > defaultPortRangeEnd || end < defaultPortRangeStart || start 
> end {
-               return 0, 0, fmt.Errorf("Request out allowed range [%v, %v]",
-                       defaultPortRangeStart, defaultPortRangeEnd)
-       }
-       err = nil
-       newStart, newEnd = start, end
-       if start < defaultPortRangeStart {
-               newStart = defaultPortRangeStart
-       }
-       if end > defaultPortRangeEnd {
-               newEnd = defaultPortRangeEnd
-       }
-       return
-}
-
 type ipMapping map[string]protoMap
 
 var (
@@ -111,19 +94,11 @@
        return instance
 }
 
-func getDefaultPortRange() (int, int) {
+func newInstance() *PortAllocator {
        start, end, err := getDynamicPortRange()
-       if err == nil {
-               start, end, err = sanitizePortRange(start, end)
-       }
        if err != nil {
                start, end = defaultPortRangeStart, defaultPortRangeEnd
        }
-       return start, end
-}
-
-func newInstance() *PortAllocator {
-       start, end := getDefaultPortRange()
        return &PortAllocator{
                ipMap: ipMapping{},
                Begin: start,
@@ -197,35 +172,6 @@
        return nil
 }
 
-// SetPortRange sets dynamic port allocation range.
-// if both portBegin and portEnd are 0, the port range reverts to default
-// value. Otherwise they are sanitized against the default values to
-// ensure their validity.
-func (p *PortAllocator) SetPortRange(portBegin, portEnd int) error {
-       // if begin and end is zero, revert to default values
-       var begin, end int
-       var err error
-       if portBegin == 0 && portEnd == 0 {
-               begin, end = getDefaultPortRange()
-
-       } else {
-               begin, end, err = sanitizePortRange(portBegin, portEnd)
-               if err != nil {
-                       return err
-               }
-       }
-       logrus.Debugf("Setting up port allocator to range %v-%v, current %v-%v",
-               begin, end, p.Begin, p.End)
-       p.mutex.Lock()
-       defer p.mutex.Unlock()
-       if p.Begin == begin && p.End == end {
-               return nil
-       }
-       p.ipMap = ipMapping{}
-       p.Begin, p.End = begin, end
-       return nil
-}
-
 func (p *PortAllocator) newPortMap() *portMap {
        defaultKey := getRangeKey(p.Begin, p.End)
        pm := &portMap{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portallocator/portallocator_test.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portallocator/portallocator_test.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portallocator/portallocator_test.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portallocator/portallocator_test.go
  2023-01-18 13:19:52.000000000 +0100
@@ -1,7 +1,6 @@
 package portallocator
 
 import (
-       "fmt"
        "net"
        "testing"
 
@@ -322,47 +321,3 @@
                t.Fatalf("Acquire(0) allocated the same port twice: %d", port)
        }
 }
-
-func TestChangePortRange(t *testing.T) {
-       var tests = []struct {
-               begin  int
-               end    int
-               setErr error
-               reqRlt int
-       }{
-               {defaultPortRangeEnd + 1, defaultPortRangeEnd + 10, 
fmt.Errorf("begin out of range"), 0},
-               {defaultPortRangeStart - 10, defaultPortRangeStart - 1, 
fmt.Errorf("end out of range"), 0},
-               {defaultPortRangeEnd, defaultPortRangeStart, fmt.Errorf("out of 
order"), 0},
-               {defaultPortRangeStart + 100, defaultPortRangeEnd + 10, nil, 
defaultPortRangeStart + 100},
-               {0, 0, nil, defaultPortRangeStart}, // revert to default if no 
value given
-               {defaultPortRangeStart - 100, defaultPortRangeEnd, nil, 
defaultPortRangeStart + 1},
-       }
-       p := Get()
-       port := 0
-       for _, c := range tests {
-               t.Logf("test: port allocate range %v-%v, setErr=%v, reqPort=%v",
-                       c.begin, c.end, c.setErr, c.reqRlt)
-               err := p.SetPortRange(c.begin, c.end)
-               if (c.setErr == nil && c.setErr != err) ||
-                       (c.setErr != nil && err == nil) {
-                       t.Fatalf("Unexpected set range result, expected=%v, 
actual=%v", c.setErr, err)
-               }
-               if err != nil {
-                       continue
-               }
-               if port > 0 {
-                       err := p.ReleasePort(defaultIP, "tcp", port)
-                       if err != nil {
-                               t.Fatalf("Releasing port %v failed, err=%v", 
port, err)
-                       }
-               }
-
-               port, err = p.RequestPort(defaultIP, "tcp", 0)
-               if err != nil {
-                       t.Fatalf("Request failed, err %v", err)
-               }
-               if port != c.reqRlt {
-                       t.Fatalf("Incorrect port returned, expected=%v, 
actual=%v", c.reqRlt, port)
-               }
-       }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portmapper/mapper.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portmapper/mapper.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/portmapper/mapper.go
 2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/portmapper/mapper.go
 2023-01-18 13:19:52.000000000 +0100
@@ -214,7 +214,7 @@
        return ErrUnknownBackendAddressType
 }
 
-//ReMapAll will re-apply all port mappings
+// ReMapAll will re-apply all port mappings
 func (pm *PortMapper) ReMapAll() {
        pm.lock.Lock()
        defer pm.lock.Unlock()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolvconf/resolvconf.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolvconf/resolvconf.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolvconf/resolvconf.go
     2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolvconf/resolvconf.go
     2023-01-18 13:19:52.000000000 +0100
@@ -139,12 +139,11 @@
 }
 
 // FilterResolvDNS cleans up the config in resolvConf.  It has two main jobs:
-// 1. It looks for localhost (127.*|::1) entries in the provided
-//    resolv.conf, removing local nameserver entries, and, if the resulting
-//    cleaned config has no defined nameservers left, adds default DNS entries
-// 2. Given the caller provides the enable/disable state of IPv6, the filter
-//    code will remove all IPv6 nameservers if it is not enabled for containers
-//
+//  1. It looks for localhost (127.*|::1) entries in the provided
+//     resolv.conf, removing local nameserver entries, and, if the resulting
+//     cleaned config has no defined nameservers left, adds default DNS entries
+//  2. Given the caller provides the enable/disable state of IPv6, the filter
+//     code will remove all IPv6 nameservers if it is not enabled for 
containers
 func FilterResolvDNS(resolvConf []byte, ipv6Enabled bool) (*File, error) {
        cleanedResolvConf := localhostNSRegexp.ReplaceAll(resolvConf, []byte{})
        // if IPv6 is not enabled, also clean out any IPv6 address nameserver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolver_unix.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolver_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolver_unix.go 
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolver_unix.go 
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolver_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolver_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/resolver_windows.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/resolver_windows.go
  2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_dns_unix.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_dns_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_dns_unix.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_dns_unix.go
  2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_dns_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_dns_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_dns_windows.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_dns_windows.go
       2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_externalkey_unix.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_externalkey_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_externalkey_unix.go
  2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_externalkey_unix.go
  2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build linux || freebsd
 // +build linux freebsd
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_externalkey_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_externalkey_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/sandbox_externalkey_windows.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/sandbox_externalkey_windows.go
       2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_common.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_common.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_common.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_common.go
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build linux || windows
 // +build linux windows
 
 package libnetwork
@@ -368,12 +369,15 @@
        // Remove loadbalancer service(if needed) and backend in all
        // sandboxes in the network only if the vip is valid.
        if entries == 0 {
-               // The network may well have been deleted before the last
-               // of the service bindings.  That's ok on Linux because
-               // removing the network sandbox implicitly removes the
-               // backend service bindings.  Windows VFP cleanup requires
-               // calling cleanupServiceBindings on the network prior to
-               // deleting the network, performed by network.delete.
+               // The network may well have been deleted from the store (and
+               // dataplane) before the last of the service bindings.  On 
Linux that's
+               // ok because removing the network sandbox from the dataplane
+               // implicitly cleans up all related dataplane state.
+               // On the Windows dataplane, VFP policylists must be removed
+               // independently of the network, and they must be removed 
before the HNS
+               // network. Otherwise, policylist removal fails with "network 
not
+               // found." On Windows cleanupServiceBindings must be called 
prior to
+               // removing the network from the store or dataplane.
                n, err := c.NetworkByID(nID)
                if err == nil {
                        n.(*network).rmLBBackend(ip, lb, rmService, fullRemove)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_unsupported.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_unsupported.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_unsupported.go
       2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_unsupported.go
       2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build !linux && !windows
 // +build !linux,!windows
 
 package libnetwork
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/service_windows.go
   2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/service_windows.go
   2023-01-18 13:19:52.000000000 +0100
@@ -139,12 +139,16 @@
 
                        if policyLists, ok := lbPolicylistMap[lb]; ok {
                                if policyLists.ilb != nil {
-                                       policyLists.ilb.Delete()
+                                       if _, err := policyLists.ilb.Delete(); 
err != nil {
+                                               logrus.Errorf("Failed to remove 
HNS ILB policylist %s: %s", policyLists.ilb.ID, err)
+                                       }
                                        policyLists.ilb = nil
                                }
 
                                if policyLists.elb != nil {
-                                       policyLists.elb.Delete()
+                                       if _, err := policyLists.elb.Delete(); 
err != nil {
+                                               logrus.Errorf("Failed to remove 
HNS ELB policylist %s: %s", policyLists.elb.ID, err)
+                                       }
                                        policyLists.elb = nil
                                }
                                delete(lbPolicylistMap, lb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/store.go 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/store.go
--- old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/store.go     
2022-07-16 09:26:57.000000000 +0200
+++ new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/store.go     
2023-01-18 13:19:52.000000000 +0100
@@ -340,8 +340,11 @@
                return
        }
 
+       networkID := n.ID()
+       endpointID := ep.ID()
+
        c.Lock()
-       nw, ok := nmap[n.ID()]
+       nw, ok := nmap[networkID]
        c.Unlock()
 
        if ok {
@@ -349,12 +352,12 @@
                n.updateSvcRecord(ep, c.getLocalEps(nw), true)
 
                c.Lock()
-               nw.localEps[ep.ID()] = ep
+               nw.localEps[endpointID] = ep
 
                // If we had learned that from the kv store remove it
                // from remote ep list now that we know that this is
                // indeed a local endpoint
-               delete(nw.remoteEps, ep.ID())
+               delete(nw.remoteEps, endpointID)
                c.Unlock()
                return
        }
@@ -370,8 +373,8 @@
        n.updateSvcRecord(ep, c.getLocalEps(nw), true)
 
        c.Lock()
-       nw.localEps[ep.ID()] = ep
-       nmap[n.ID()] = nw
+       nw.localEps[endpointID] = ep
+       nmap[networkID] = nw
        nw.stopCh = make(chan struct{})
        c.Unlock()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/testutils/context_unix.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/testutils/context_unix.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/testutils/context_unix.go
    2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/testutils/context_unix.go
    2023-01-18 13:19:52.000000000 +0100
@@ -1,3 +1,4 @@
+//go:build linux || freebsd
 // +build linux freebsd
 
 package testutils
@@ -16,8 +17,7 @@
 //
 // Example usage:
 //
-//     defer SetupTestOSContext(t)()
-//
+//     defer SetupTestOSContext(t)()
 func SetupTestOSContext(t *testing.T) func() {
        runtime.LockOSThread()
        if err := syscall.Unshare(syscall.CLONE_NEWNET); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/testutils/context_windows.go
 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/testutils/context_windows.go
--- 
old/docker-libnetwork-0dde5c895075df6e3630e76f750a447cf63f4789/testutils/context_windows.go
 2022-07-16 09:26:57.000000000 +0200
+++ 
new/docker-libnetwork-05b93e0d3a95952f70c113b0bc5bdb538d7afdd7/testutils/context_windows.go
 2023-01-18 13:19:52.000000000 +0100
@@ -10,8 +10,7 @@
 //
 // Example usage:
 //
-//     defer SetupTestOSContext(t)()
-//
+//     defer SetupTestOSContext(t)()
 func SetupTestOSContext(t *testing.T) func() {
        return func() {
        }

++++++ docker-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.3gJ169/_old  2023-02-02 18:23:27.669660948 +0100
+++ /var/tmp/diff_new_pack.3gJ169/_new  2023-02-02 18:23:27.673660974 +0100
@@ -1,10 +1,7 @@
-# This is intentional, since we use _multibuild for the flavours.
-addFilter ("^docker-kubic.src: W: invalid-spec-name")
-
 # The #! comes from upstream.
-addFilter ("^docker(-kubic)?-bash-completion.noarch: W: 
sourced-script-with-shebang /etc/bash_completion.d/docker bash")
-addFilter ("^docker(-kubic)?-zsh-completion.noarch: W: 
sourced-script-with-shebang /etc/zsh_completion.d/docker zsh")
+addFilter ("^docker-bash-completion.noarch: W: sourced-script-with-shebang 
/etc/bash_completion.d/docker bash")
+addFilter ("^docker-zsh-completion.noarch: W: sourced-script-with-shebang 
/etc/zsh_completion.d/docker zsh")
 
 # -test is something that is used internally and isn't actually shipped -- 
it's a pseduo-source package.
-addFilter ("^docker(-kubic)?-test.*")
+addFilter ("^docker-test.*")
 

Reply via email to