-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 2/24/20 4:16 AM, Michael Uray wrote:

> I tried a couple things and it looks to me as if it preserves
> everything with "shorewall restart -c" and with "systemctl reload
> shorewall" but not with "systemctl restart shorewall".
>
>
> root@dk1:~# systemctl restart docker
>
>
> root@dk1:~# iptables -L -v | grep -i docker 0     0 ~comb3     all
> --  docker+ any     anywhere             anywhere 67 20688
> DOCKER-USER  all  --  any    any     anywhere             anywhere
> 67 20688 DOCKER-ISOLATION-STAGE-1  all  --  any    any     anywhere
> anywhere 0     0 ACCEPT     all  --  any    docker0  anywhere
> anywhere             ctstate RELATED,ESTABLISHED 0     0 DOCKER
> all  --  any    docker0  anywhere             anywhere 0     0
> ACCEPT     all  --  docker0 !docker0  anywhere
> anywhere 0     0 ACCEPT     all  --  docker0 docker0  anywhere
> anywhere 0     0 DOCKER     all  --  any    br-ac3db22b180b
> anywhere             anywhere 54  3220 DOCKER     all  --  any
> br-61206706fa14  anywhere             anywhere 0     0 ~comb0
> all  --  docker+ any     anywhere             anywhere 1045  187K
> DOCKER     all  --  any    any     anywhere             anywhere 0
> 0 ACCEPT     all  --  any    docker+  anywhere
> anywhere Chain DOCKER (4 references) Chain DOCKER-ISOLATION-STAGE-1
> (1 references) 0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0
> !docker0  anywhere             anywhere 0     0
> DOCKER-ISOLATION-STAGE-2  all  --  br-ac3db22b180b !br-ac3db22b180b
> anywhere             anywhere 30  5851 DOCKER-ISOLATION-STAGE-2
> all  --  br-61206706fa14 !br-61206706fa14  anywhere
> anywhere Chain DOCKER-USER (1 references) 0     0 ACCEPT     all
> --  any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere 0     0
> ~comb2     all  --  any    docker+  anywhere             anywhere
> Chain DOCKER-ISOLATION-STAGE-2 (3 references) 0     0 DROP
> all  --  any    docker0  anywhere             anywhere
>
>
> root@dk1:~# /sbin/shorewall restart -c Compiling using Shorewall
> 5.2.3.2... Processing /etc/shorewall/params ... Processing
> /etc/shorewall/shorewall.conf... Loading Modules... Compiling
> /etc/shorewall/zones... Compiling /etc/shorewall/interfaces...
> Determining Hosts in Zones... Locating Action Files... Compiling
> /etc/shorewall/policy... Compiling TCP Flags filtering... Compiling
> Kernel Route Filtering... Compiling Martian Logging... Compiling
> MAC Filtration -- Phase 1... Compiling /etc/shorewall/rules...
> Compiling /etc/shorewall/conntrack... Compiling MAC Filtration --
> Phase 2... Applying Policies... Generating Rule Matrix...
> Optimizing Ruleset... Creating iptables-restore input... Shorewall
> configuration compiled to /var/lib/shorewall/.restart Stopping
> Shorewall.... Preparing iptables-restore input... Running
> /sbin/iptables-restore --wait 60... done. Starting Shorewall....
> Initializing... Setting up Route Filtering... Setting up Martian
> Logging... Preparing iptables-restore input... Running
> /sbin/iptables-restore --wait 60... done.
>
>
> It looks as if everything is fine after the "shorewall restart -c"
> command:
>
> root@dk1:~# iptables -L -v | grep -i docker 0     0 ~comb3     all
> --  docker+ any     anywhere             anywhere 132 56820
> DOCKER-USER  all  --  any    any     anywhere             anywhere
> 132 56820 DOCKER-ISOLATION-STAGE-1  all  --  any    any
> anywhere             anywhere 0     0 DOCKER     all  --  any
> docker0  anywhere             anywhere 0     0 ACCEPT     all  --
> any    docker0  anywhere             anywhere             ctstate
> RELATED,ESTABLISHED 0     0 ACCEPT     all  --  docker0 !docker0
> anywhere             anywhere 0     0 ACCEPT     all  --  docker0
> docker0  anywhere             anywhere 0     0 DOCKER     all  --
> any    br-ac3db22b180b  anywhere             anywhere 4   240
> DOCKER     all  --  any    br-61206706fa14  anywhere
> anywhere 0     0 ~comb0     all  --  docker+ any     anywhere
> anywhere 33  3880 DOCKER     all  --  any    any     anywhere
> anywhere 0     0 ACCEPT     all  --  any    docker+  anywhere
> anywhere Chain DOCKER (4 references) Chain DOCKER-ISOLATION-STAGE-1
> (1 references) 0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0
> !docker0  anywhere             anywhere 0     0
> DOCKER-ISOLATION-STAGE-2  all  --  br-ac3db22b180b !br-ac3db22b180b
> anywhere             anywhere 10  2394 DOCKER-ISOLATION-STAGE-2
> all  --  br-61206706fa14 !br-61206706fa14  anywhere
> anywhere Chain DOCKER-ISOLATION-STAGE-2 (3 references) 0     0 DROP
> all  --  any    docker0  anywhere             anywhere Chain
> DOCKER-USER (1 references) 0     0 ACCEPT     all  --  any
> docker+  anywhere             anywhere 0     0 ~comb2     all  --
> any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere
>
>
> If I restart the Shorewall service, then it still loses some
> things.
>
> root@dk1:~# systemctl restart shorewall
>
>
> root@dk1:~# iptables -L -v | grep -i docker 0     0 ~comb3     all
> --  docker+ any     anywhere             anywhere 119 38979
> DOCKER-USER  all  --  any    any     anywhere             anywhere
> 119 38979 DOCKER-ISOLATION-STAGE-1  all  --  any    any
> anywhere             anywhere 0     0 DOCKER     all  --  any
> docker0  anywhere             anywhere 0     0 ACCEPT     all  --
> any    docker0  anywhere             anywhere             ctstate
> RELATED,ESTABLISHED 0     0 ACCEPT     all  --  docker0 !docker0
> anywhere             anywhere 0     0 ACCEPT     all  --  docker0
> docker0  anywhere             anywhere 0     0 ~comb0     all  --
> docker+ any     anywhere             anywhere 7   808 DOCKER
> all  --  any    any     anywhere             anywhere 0     0
> ACCEPT     all  --  any    docker+  anywhere             anywhere
> Chain DOCKER (2 references) Chain DOCKER-ISOLATION-STAGE-1 (1
> references) Chain DOCKER-ISOLATION-STAGE-2 (0 references) Chain
> DOCKER-USER (1 references) 0     0 ACCEPT     all  --  any
> docker+  anywhere             anywhere 0     0 ~comb2     all  --
> any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere
>
>
> root@dk1:~# systemctl restart docker
>
>
> root@dk1:~# iptables -L -v | grep -i docker 0     0 ~comb3     all
> --  docker+ any     anywhere             anywhere 392  163K
> DOCKER-USER  all  --  any    any     anywhere             anywhere
> 392  163K DOCKER-ISOLATION-STAGE-1  all  --  any    any
> anywhere             anywhere 0     0 ACCEPT     all  --  any
> docker0  anywhere             anywhere             ctstate
> RELATED,ESTABLISHED 0     0 DOCKER     all  --  any    docker0
> anywhere             anywhere 0     0 ACCEPT     all  --  docker0
> !docker0  anywhere             anywhere 0     0 ACCEPT     all  --
> docker0 docker0  anywhere             anywhere 0     0 DOCKER
> all  --  any    br-ac3db22b180b  anywhere             anywhere 15
> 868 DOCKER     all  --  any    br-61206706fa14  anywhere
> anywhere 0     0 ~comb0     all  --  docker+ any     anywhere
> anywhere 554 85844 DOCKER     all  --  any    any     anywhere
> anywhere 0     0 ACCEPT     all  --  any    docker+  anywhere
> anywhere Chain DOCKER (4 references) Chain DOCKER-ISOLATION-STAGE-1
> (1 references) 0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0
> !docker0  anywhere             anywhere 0     0
> DOCKER-ISOLATION-STAGE-2  all  --  br-ac3db22b180b !br-ac3db22b180b
> anywhere             anywhere 61 16558 DOCKER-ISOLATION-STAGE-2
> all  --  br-61206706fa14 !br-61206706fa14  anywhere
> anywhere Chain DOCKER-USER (1 references) 0     0 ACCEPT     all
> --  any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere 0     0
> ~comb2     all  --  any    docker+  anywhere             anywhere
> Chain DOCKER-ISOLATION-STAGE-2 (3 references) 0     0 DROP
> all  --  any    docker0  anywhere             anywhere
>
>
> It keeps it on a reload.
>
> root@dk1:~# systemctl reload shorewall   root@dk1:~# iptables -L -v
> | grep -i docker 0     0 ~comb3     all  --  docker+ any
> anywhere             anywhere 59 14486 DOCKER-USER  all  --  any
> any     anywhere             anywhere 59 14486
> DOCKER-ISOLATION-STAGE-1  all  --  any    any     anywhere
> anywhere 0     0 DOCKER     all  --  any    docker0  anywhere
> anywhere 0     0 ACCEPT     all  --  any    docker0  anywhere
> anywhere             ctstate RELATED,ESTABLISHED 0     0 ACCEPT
> all  --  docker0 !docker0  anywhere             anywhere 0     0
> ACCEPT     all  --  docker0 docker0  anywhere             anywhere
> 0     0 DOCKER     all  --  any    br-ac3db22b180b  anywhere
> anywhere 4   204 DOCKER     all  --  any    br-61206706fa14
> anywhere             anywhere 0     0 ~comb0     all  --  docker+
> any     anywhere             anywhere 17  1888 DOCKER     all  --
> any    any     anywhere             anywhere 0     0 ACCEPT     all
> --  any    docker+  anywhere             anywhere Chain DOCKER (4
> references) Chain DOCKER-ISOLATION-STAGE-1 (1 references) 0     0
> DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  anywhere
> anywhere 0     0 DOCKER-ISOLATION-STAGE-2  all  --  br-ac3db22b180b
> !br-ac3db22b180b  anywhere             anywhere 22  5605
> DOCKER-ISOLATION-STAGE-2  all  --  br-61206706fa14 !br-61206706fa14
> anywhere             anywhere Chain DOCKER-ISOLATION-STAGE-2 (3
> references) 0     0 DROP       all  --  any    docker0  anywhere
> anywhere Chain DOCKER-USER (1 references) 0     0 ACCEPT     all
> --  any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere 0     0
> ~comb2     all  --  any    docker+  anywhere             anywhere
>
>
> root@dk1:~# systemctl restart docker
>
>  root@dk1:~# /var/lib/shorewall/firewall reload > trace 2>&1
>
>
> root@dk1:~# cat trace Reloading Shorewall.... done.  Everything
> looks fine after reload.
>
> root@dk1:~# iptables -L -v | grep -i docker 0     0 ~comb3     all
> --  docker+ any     anywhere             anywhere 769  364K
> DOCKER-USER  all  --  any    any     anywhere             anywhere
> 769  364K DOCKER-ISOLATION-STAGE-1  all  --  any    any
> anywhere             anywhere 0     0 DOCKER     all  --  any
> docker0  anywhere             anywhere 0     0 ACCEPT     all  --
> any    docker0  anywhere             anywhere             ctstate
> RELATED,ESTABLISHED 0     0 ACCEPT     all  --  docker0 !docker0
> anywhere             anywhere 0     0 ACCEPT     all  --  docker0
> docker0  anywhere             anywhere 0     0 DOCKER     all  --
> any    br-ac3db22b180b  anywhere             anywhere 24  1424
> DOCKER     all  --  any    br-61206706fa14  anywhere
> anywhere 0     0 ~comb0     all  --  docker+ any     anywhere
> anywhere 77 10905 DOCKER     all  --  any    any     anywhere
> anywhere 0     0 ACCEPT     all  --  any    docker+  anywhere
> anywhere Chain DOCKER (4 references) Chain DOCKER-ISOLATION-STAGE-1
> (1 references) 0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0
> !docker0  anywhere             anywhere 0     0
> DOCKER-ISOLATION-STAGE-2  all  --  br-ac3db22b180b !br-ac3db22b180b
> anywhere             anywhere 68 29638 DOCKER-ISOLATION-STAGE-2
> all  --  br-61206706fa14 !br-61206706fa14  anywhere
> anywhere Chain DOCKER-ISOLATION-STAGE-2 (3 references) 0     0 DROP
> all  --  any    docker0  anywhere             anywhere Chain
> DOCKER-USER (1 references) 0     0 ACCEPT     all  --  any
> docker+  anywhere             anywhere 0     0 ~comb2     all  --
> any    docker+  anywhere             anywhere 0     0 ~comb2
> all  --  any    docker+  anywhere             anywhere
>
>
> root@dk1:~# systemctl restart docker
>
> root@dk1:~# iptables-save > iptables.save.after.docker.restart
>
> root@dk1:~# systemctl reload shorewall.service
>
> root@dk1:~# iptables-save > iptables.save.after.shorewall.reload
>
> root@dk1:~# systemctl restart shorewall.service
>
> root@dk1:~# iptables-save > iptables.save.after.shorewall.restart
>
>
> I am wondering how it comes to this different behavior on restart
> and reload.

With RESTART=restart in shorewall.conf, 'restart' does a 'stop'
followed by a 'start' whereas 'reload' essentially does a 'start'.
What I don't understand is why restart sometimes does the right thing
and other times it does the wrong thing.

I've done some cleanup of the Docker-related code in the attached patches:

        patch /usr/share/shorewall/prog.footer < ISOLATION1.patch
        cd /usr/share/shorewall/Shorewall/
        patch -p4 < path/to/ISOLATION2.patch
        shorewall compile
        shorewall reload
        sh -x /var/lib/shorewall/firewall restart > trace 2>&1

If the last operation failed to correctly restore the Docker chains,
then please forward /var/lib/shorewall/firewall and the trace file.

Thanks,
- -Tom
- -- 
Tom Eastep        \ Q: What do you get when you cross a mobster
Shoreline,         \    with an international standard?
Washington, USA     \ A: Someone who makes you an offer you
http://shorewall.org \    can't understand
                      \________________________________________
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org

iQIzBAEBCgAdFiEEFNMNR63CLO6yqbL8luaz8kI6TRAFAl5UVJwACgkQluaz8kI6
TRAKXg/9EhF7fOCi7uBAW/qCdpHgLsgW5taZdV4yEIc0MOrRmPMKUXt9koOyB9Db
/5hJ+NhMZjYijLsYwidtI1jSFVtao0iUxlcCrKCbqGLb4kNT5dxGF9FFsyODdk4r
tQX4USH70W7vxn3kixJgyXpeU3jGJVzCpLO/9r8AGr1RcSq+OowJplOhqfmA8Lkn
A2G8Jk2YjF2nslKYKi3nWuL/Cd4kXMBOV911tNztC05K8vd0G2m1+vgzehiGZscI
xNGcSRjYc7BtXWKAbYqJJwAghtmQzLH9+CqwLlm3W5gsPlKgPgzpxHHLnIUpt8QV
kLRPUc1nQqqhfpRfhtyuQ6mD8g3Mz3zP3/DYNzmQrWEkkGK+46J55m2DMiqoCXsi
CXf2XZOk4OoDKZslFjK/Iu53Msy9W5eSmKFAtZ2jKe6Ce+abN/uhLDytk70yYSX5
/8VzGO+Bz+Yx/EJvNw3AM4hALzDKQX1jvfBxo8o3ReWxHAQjEyYcARvNJMG86uUY
5Xd3LoG+lc0S2nctpceDHYeSCGyFEF/lnaPM7jp0icTjIHXVaRqyibmoH69utGoR
P46qnX45Z/cpFOeLCF7h+0GCNnNGznDDU4SIGyoLxVKJW8v8Vb2FMKVVISN69V2P
SNE3L+KbxOH1hnuhhPeUv5LsgUNT0QECBj2Y8QZnkUS67gKfIUU=
=ju/w
-----END PGP SIGNATURE-----
diff --git a/Shorewall/Perl/prog.footer b/Shorewall/Perl/prog.footer
index f72f648c9..5b5ccba01 100644
--- a/Shorewall/Perl/prog.footer
+++ b/Shorewall/Perl/prog.footer
@@ -148,7 +148,8 @@ g_compiled=
 g_file=
 g_docker=
 g_dockeringress=
-g_dockernetwork=
+g_dockeriso=
+g_dockerisostage=
 g_forcereload=
 g_fallback=
 
diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm
index df30d8884..404554b45 100644
--- a/Shorewall/Perl/Shorewall/Chains.pm
+++ b/Shorewall/Perl/Shorewall/Chains.pm
@@ -3369,13 +3369,13 @@ sub initialize_chain_table($) {
 	add_commands( $chainref, '[ -f ${VARDIR}/.nat_DOCKER ] && cat ${VARDIR}/.nat_DOCKER >&3' );
 	$chainref = new_standard_chain( 'DOCKER-INGRESS'   );
 	set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
-	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-INGRESS           ] && cat ${VARDIR}/.filter_DOCKER-INGRESS   >&3' );
-	$chainref = new_standard_chain( 'DOCKER-USER'   );
+	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-INGRESS ] && cat ${VARDIR}/.filter_DOCKER-INGRESS >&3' );
+	$chainref = new_standard_chain( 'DOCKER-USER'      );
 	set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
-	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-USER              ] && cat ${VARDIR}/.filter_DOCKER-USER      >&3' );
+	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-USER ] && cat ${VARDIR}/.filter_DOCKER-USER >&3' );
 	$chainref = new_standard_chain( 'DOCKER-ISOLATION' );
 	set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
-	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-ISOLATION         ] && cat ${VARDIR}/.filter_DOCKER-ISOLATION >&3' );
+	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-ISOLATION ] && cat ${VARDIR}/.filter_DOCKER-ISOLATION >&3' );
 	$chainref = new_standard_chain( 'DOCKER-ISOLATION-STAGE-1' );
 	set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
 	add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-1 ] && cat ${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-1 >&3' );
@@ -8703,23 +8703,15 @@ sub save_docker_rules($) {
 	  qq(    $tool -t nat -S OUTPUT | tail -n +2 | fgrep DOCKER > \${VARDIR}/.nat_OUTPUT),
 	  qq(    $tool -t nat -S POSTROUTING | tail -n +2 | fgrep -v SHOREWALL | fgrep -v LIBVIRT > \${VARDIR}/.nat_POSTROUTING),
 	  qq(    $tool -t filter -S DOCKER | tail -n +2 > \${VARDIR}/.filter_DOCKER),
-	  qq(    [ -n "\$g_dockeringress" ] && $tool -t filter -S DOCKER-INGRESS   | tail -n +2 > \${VARDIR}/.filter_DOCKER-INGRESS),
-	  qq(    [ -n "\$g_dockeruser" ]    && $tool -t filter -S DOCKER-USER      | tail -n +2 > \${VARDIR}/.filter_DOCKER-USER),
+	  qq(    rm -f \${VARDIR}/.filter_DOCKER-*),
+	  qq(    [ -n "\$g_dockeringress"  ] && $tool -t filter -S DOCKER-INGRESS   | tail -n +2 > \${VARDIR}/.filter_DOCKER-INGRESS),
+	  qq(    [ -n "\$g_dockeruser"     ] && $tool -t filter -S DOCKER-USER      | tail -n +2 > \${VARDIR}/.filter_DOCKER-USER),
+	  qq(    [ -n "\$g_dockeriso"      ] && $tool -t filter -S DOCKER-ISOLATION | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION),
 	  qq(),
-	  qq(    case "\$g_dockernetwork" in),
-	  qq(        One\)),
-	  qq(            rm -f \${VARDIR}/.filter_DOCKER-ISOLATION*),
-	  qq(            $tool -t filter -S DOCKER-ISOLATION | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION),
-	  qq(            ;;),
-	  qq(        Two\)),
-	  qq(            rm -f \${VARDIR}/.filter_DOCKER-ISOLATION*),
-	  qq(            if chain_exists DOCKER_ISOLATION; then),
-	  qq(                $tool -t filter -S DOCKER-ISOLATION | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION),
-          qq(            fi),
-	  qq(            $tool -t filter -S DOCKER-ISOLATION-STAGE-1 | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-1),
-	  qq(            $tool -t filter -S DOCKER-ISOLATION-STAGE-2 | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-2),
-	  qq(            ;;),
-	  qq(    esac),
+	  qq(    if [ -n "\$g_dockerisostage" ]; then),
+	  qq(        $tool -t filter -S DOCKER-ISOLATION-STAGE-1 | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-1),
+	  qq(        $tool -t filter -S DOCKER-ISOLATION-STAGE-2 | tail -n +2 > \${VARDIR}/.filter_DOCKER-ISOLATION-STAGE-2),
+	  qq(    fi),
 	  qq(),
 	);
 
@@ -9240,10 +9232,10 @@ sub create_netfilter_load( $ ) {
 			emit( '[ -n "$g_docker" ] && echo ":DOCKER - [0:0]" >&3' );
 		    } elsif ( $name eq 'DOCKER-ISOLATION' ) {
 			ensure_cmd_mode;
-			emit( '[ "$g_dockernetwork" = One ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
+			emit( '[ -n "$g_dockeriso" ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
 		    } elsif ( $name =~ /^DOCKER-ISOLATION/ ) {
 			ensure_cmd_mode;
-			emit( qq([ "\$g_dockernetwork" = Two ] && echo ":$name - [0:0]" >&3) );
+			emit( qq([ "\$g_dockerisostage" = Two ] && echo ":$name - [0:0]" >&3) );
 		    } elsif ( $name eq 'DOCKER-INGRESS' ) {
 			ensure_cmd_mode;
 			emit( '[ -n "$g_dockeringress" ] && echo ":DOCKER-INGRESS - [0:0]" >&3' );
@@ -9355,11 +9347,11 @@ sub preview_netfilter_load() {
 			print "\n";
 		    } elsif ( $name eq 'DOCKER-ISOLATION' ) {
 			ensure_cmd_mode1;
-			print( '[ "$g_dockernetwork" = One ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
+			print( '[ -n "$g_dockeriso" ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
 			print "\n";
-		    } elsif ( $name =~ /^DOCKER-ISOLATION-/ ) {
+		    } elsif ( $name =~ /^DOCKER-ISOLATION/ ) {
 			ensure_cmd_mode1;
-			print( qq([ "\$g_dockernetwork" = Two ] && echo ":$name - [0:0]" >&3) );
+			print( qq([ "\$g_dockeisostage" ] && echo ":$name - [0:0]" >&3) );
 			print "\n";
 		    } elsif ( $name eq 'DOCKER-INGRESS' ) {
 			ensure_cmd_mode1;
@@ -9456,10 +9448,10 @@ sub create_stop_load( $ ) {
 			emit( '[ -n "$g_docker" ] && echo ":DOCKER - [0:0]" >&3' );
 		    } elsif ( $name eq 'DOCKER-ISOLATION' ) {
 			ensure_cmd_mode;
-			emit( '[ -n "$g_dockernetwork" ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
+			emit( '[ -n "$g_dockeriso" ] && echo ":DOCKER-ISOLATION - [0:0]" >&3' );
 		    } elsif ( $name =~ /^DOCKER-ISOLATION/ ) {
 			ensure_cmd_mode;
-			emit( qq([ "\$g_dockernetwork" = Two ] && echo ":$name - [0:0]" >&3) );
+			emit( qq([ -n "\$g_dockerisostage" ] && echo ":$name - [0:0]" >&3) );
 		    } elsif ( $name eq 'DOCKER-INGRESS' ) {
 			ensure_cmd_mode;
 			emit( '[ -n "$g_dockeringress" ] && echo ":DOCKER-INGRESS - [0:0]" >&3' );
diff --git a/Shorewall/Perl/Shorewall/Compiler.pm b/Shorewall/Perl/Shorewall/Compiler.pm
index 926326708..c8977bd4b 100644
--- a/Shorewall/Perl/Shorewall/Compiler.pm
+++ b/Shorewall/Perl/Shorewall/Compiler.pm
@@ -268,13 +268,10 @@ sub generate_script_2() {
 	emit( '',
 	      'chain_exists DOCKER nat && chain_exists DOCKER && g_docker=Yes',
 	    );
-	emit( 'chain_exists DOCKER-INGRESS   && g_dockeringress=Yes' );
-	emit( 'chain_exists DOCKER-USER      && g_dockeruser=Yes' );
-	emit( 'if chain_exists DOCKER-ISOLATION-STAGE-1; then',
-	      '    g_dockernetwork=Two',
-	      'elif chain_exists DOCKER-ISOLATION; then',
-	      '    g_dockernetwork=One',
-	      'fi' );
+	emit( 'chain_exists DOCKER-INGRESS && g_dockeringress=Yes' );
+	emit( 'chain_exists DOCKER-USER && g_dockeruser=Yes' );
+	emit( 'chain_exists DOCKER-ISOLATION && dockeriso=Yes' );
+	emit( 'chain_exists DOCKER-ISOLATION-STAGE-1 && dockerisostage=Yes' );
     }
 
     pop_indent;
diff --git a/Shorewall/Perl/Shorewall/Misc.pm b/Shorewall/Perl/Shorewall/Misc.pm
index 0ff7fea09..55ed6ba53 100644
--- a/Shorewall/Perl/Shorewall/Misc.pm
+++ b/Shorewall/Perl/Shorewall/Misc.pm
@@ -679,18 +679,10 @@ sub create_docker_rules() {
 
     my $chainref = $filter_table->{FORWARD};
 
-    add_commands( $chainref, '[ -n "$g_dockeringress" ] && echo "-A FORWARD -j DOCKER-INGRESS" >&3', );
-    add_commands( $chainref, '[ -n "$g_dockeruser" ]    && echo "-A FORWARD -j DOCKER-USER"    >&3', );
-    add_commands( $chainref ,
-		  '',
-		  'case "$g_dockernetwork" in',
-		  '    One)',
-		  '        echo "-A FORWARD -j DOCKER-ISOLATION" >&3',
-		  '        ;;',
-		  '    Two)',
-		  '        echo "-A FORWARD -j DOCKER-ISOLATION-STAGE-1" >&3',
-		  '        ;;',
-		  'esac' );
+    add_commands( $chainref, '[ -n "$g_dockeringress" ]  && echo "-A FORWARD -j DOCKER-INGRESS" >&3' );
+    add_commands( $chainref, '[ -n "$g_dockeruser" ]     && echo "-A FORWARD -j DOCKER-USER" >&3' );
+    add_commands( $chainref, '[ -n "$g_dockeriso" ]      && echo "-A FORWARD -j DOCKER-ISOLATION" >&3' );
+    add_commands( $chainref, '[ -n "$g_dockerisostage" ] && echo "-A FORWARD -j DOCKER-ISOLATION-STAGE-1" >&3' );
 
     if ( my $dockerref = known_interface('docker0') ) {
 	add_commands( $chainref, 'if [ -n "$g_docker" ]; then' );

Attachment: ISOLATION1.patch.sig
Description: Binary data

Attachment: ISOLATION2.patch.sig
Description: Binary data

_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to