Fixed Shorewall to work with latest Docker iptables chains

Andy Hall <[email protected]> Tue, 28 Apr 2026 10:35:48 +0100
Newsgroups gmane.comp.security.shorewall
Message-ID <CAOp5WB4yG6sO8yFoYjv8pr3TDya-iJAEam72EMt239tB=dHqrw@mail.gmail.com>
--===============1452998420795711903==
Content-Type: multipart/alternative; boundary="0000000000007ca088065081f5b0"

--0000000000007ca088065081f5b0
Content-Type: text/plain; charset="UTF-8"

When switching from Docker v26 to v29 Shorewall no longer handled the new
iptables chains so we fixed Misc.pm / Compiler.pm / Chains.pm to handle
these...

# diff /usr/share/perl5/vendor_perl/Shorewall/Misc.pm
/usr/share/perl5/vendor_perl/Shorewall/Misc.pm.orig
689,692d688
<     add_commands( $chainref, '[ -n "$g_dockerbridge" ]   && echo "-A
DOCKER-FORWARD -j DOCKER-BRIDGE" >&3' );
<     add_commands( $chainref, '[ -n "$g_dockerct" ]       && echo "-A
DOCKER-FORWARD -j DOCKER-CT" >&3' );
<     add_commands( $chainref, '[ -n "$g_dockerforward" ]  && echo "-A
FORWARD -j DOCKER-FORWARD" >&3' );
<     add_commands( $chainref, '[ -n "$g_dockerinternal" ] && echo "-A
DOCKER-FORWARD -j DOCKER-INTERNAL" >&3' );

# diff /usr/share/perl5/vendor_perl/Shorewall/Compiler.pm
/usr/share/perl5/vendor_perl/Shorewall/Compiler.pm.orig
273,276d272
<       emit( 'chain_exists DOCKER-BRIDGE && g_dockerbridge=Yes' );
<       emit( 'chain_exists DOCKER-CT && g_dockerct=Yes' );
<       emit( 'chain_exists DOCKER-FORWARD && g_dockerforward=Yes' );
<       emit( 'chain_exists DOCKER-INTERNAL && g_dockerinternal=Yes' );

# diff /usr/share/perl5/vendor_perl/Shorewall/Chains.pm
/usr/share/perl5/vendor_perl/Shorewall/Chains.pm.orig
3402,3413d3401
<       $chainref = new_standard_chain( 'DOCKER-BRIDGE'      );
<       set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
<       add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-BRIDGE ] &&
cat ${VARDIR}/.filter_DOCKER-BRIDGE >&3' );
<       $chainref = new_standard_chain( 'DOCKER-CT'      );
<       set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
<       add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-CT ] && cat
${VARDIR}/.filter_DOCKER-CT >&3' );
<       $chainref = new_standard_chain( 'DOCKER-FORWARD'      );
<       set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
<       add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-FORWARD ]
&& cat ${VARDIR}/.filter_DOCKER-FORWARD >&3' );
<       $chainref = new_standard_chain( 'DOCKER-INTERNAL'      );
<       set_optflags( $chainref, DONT_OPTIMIZE | DONT_DELETE | DONT_MOVE );
<       add_commands( $chainref, '[ -f ${VARDIR}/.filter_DOCKER-INTERNAL ]
&& cat ${VARDIR}/.filter_DOCKER-INTERNAL >&3' );
8784,8787d8771
<         qq(    [ -n "\$g_dockerbridge"   ] && $tool -t filter -S
DOCKER-BRIDGE    | tail -n +2 > \${VARDIR}/.filter_DOCKER-BRIDGE),
<         qq(    [ -n "\$g_dockerct"       ] && $tool -t filter -S
DOCKER-CT        | tail -n +2 > \${VARDIR}/.filter_DOCKER-CT),
<         qq(    [ -n "\$g_dockerforward"  ] && $tool -t filter -S
DOCKER-FORWARD   | tail -n +2 > \${VARDIR}/.filter_DOCKER-FORWARD),
<         qq(    [ -n "\$g_dockerinternal" ] && $tool -t filter -S
DOCKER-INTERNAL  | tail -n +2 > \${VARDIR}/.filter_DOCKER-INTERNAL),
8811,8814d8794
<         q(    rm -f ${VARDIR}/.filter_DOCKER-BRIDGE),
<         q(    rm -f ${VARDIR}/.filter_DOCKER-CT),
<         q(    rm -f ${VARDIR}/.filter_DOCKER-FORWARD),
<         q(    rm -f ${VARDIR}/.filter_DOCKER-INTERNAL),
9331,9342d9310
<                   } elsif ( $name eq 'DOCKER-BRIDGE' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerbridge" ] && echo
":DOCKER-BRIDGE - [0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-CT' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerct" ] && echo ":DOCKER-CT -
[0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-FORWARD' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerforward" ] && echo
":DOCKER-FORWARD - [0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-INTERNAL' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerinternal" ] && echo
":DOCKER-INTERNAL - [0:0]" >&3' );
9462,9477d9429
<                   } elsif ( $name eq 'DOCKER-BRIDGE' ) {
<                       ensure_cmd_mode1;
<                       print( '[ -n "$g_dockerbridge" ] && echo
":DOCKER-BRIDGE - [0:0]" >&3' );
<                       print "\n";
<                   } elsif ( $name eq 'DOCKER-CT' ) {
<                       ensure_cmd_mode1;
<                       print( '[ -n "$g_dockerct" ] && echo ":DOCKER-CT -
[0:0]" >&3' );
<                       print "\n";
<                   } elsif ( $name eq 'DOCKER-FORWARD' ) {
<                       ensure_cmd_mode1;
<                       print( '[ -n "$g_dockerforward" ] && echo
":DOCKER-FORWARD - [0:0]" >&3' );
<                       print "\n";
<                   } elsif ( $name eq 'DOCKER-INTERNAL' ) {
<                       ensure_cmd_mode1;
<                       print( '[ -n "$g_dockerinternal" ] && echo
":DOCKER-INTERNAL - [0:0]" >&3' );
<                       print "\n";
9575,9586d9526
<                   } elsif ( $name eq 'DOCKER-BRIDGE' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerbridge" ] && echo
":DOCKER-BRIDGE - [0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-CT' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerct" ] && echo ":DOCKER-CT -
[0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-FORWARD' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerforward" ] && echo
":DOCKER-FORWARD - [0:0]" >&3' );
<                   } elsif ( $name eq 'DOCKER-INTERNAL' ) {
<                       ensure_cmd_mode;
<                       emit( '[ -n "$g_dockerinternal" ] && echo
":DOCKER-INTERNAL - [0:0]" >&3' );

Hope this helps others...thanks.

--0000000000007ca088065081f5b0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">When switching from Docker v26 to v29 Shorewall no longer =
handled the new iptables chains so we fixed Misc.pm / Compiler.pm / Chains.=
pm to handle these...<br><br># diff /usr/share/perl5/vendor_perl/Shorewall/=
Misc.pm /usr/share/perl5/vendor_perl/Shorewall/Misc.pm.orig<br>689,692d688<=
br>&lt; =C2=A0 =C2=A0 add_commands( $chainref, &#39;[ -n &quot;$g_dockerbri=
dge&quot; ] =C2=A0 &amp;&amp; echo &quot;-A DOCKER-FORWARD -j DOCKER-BRIDGE=
&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 add_commands( $chainref, &#=
39;[ -n &quot;$g_dockerct&quot; ] =C2=A0 =C2=A0 =C2=A0 &amp;&amp; echo &quo=
t;-A DOCKER-FORWARD -j DOCKER-CT&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =
=C2=A0 add_commands( $chainref, &#39;[ -n &quot;$g_dockerforward&quot; ] =
=C2=A0&amp;&amp; echo &quot;-A FORWARD -j DOCKER-FORWARD&quot; &gt;&amp;3&#=
39; );<br>&lt; =C2=A0 =C2=A0 add_commands( $chainref, &#39;[ -n &quot;$g_do=
ckerinternal&quot; ] &amp;&amp; echo &quot;-A DOCKER-FORWARD -j DOCKER-INTE=
RNAL&quot; &gt;&amp;3&#39; );<br><br># diff /usr/share/perl5/vendor_perl/Sh=
orewall/Compiler.pm /usr/share/perl5/vendor_perl/Shorewall/Compiler.pm.orig=
<br>273,276d272<br>&lt; =C2=A0 =C2=A0 =C2=A0 emit( &#39;chain_exists DOCKER=
-BRIDGE &amp;&amp; g_dockerbridge=3DYes&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=
=A0 emit( &#39;chain_exists DOCKER-CT &amp;&amp; g_dockerct=3DYes&#39; );<b=
r>&lt; =C2=A0 =C2=A0 =C2=A0 emit( &#39;chain_exists DOCKER-FORWARD &amp;&am=
p; g_dockerforward=3DYes&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 emit( &#39;ch=
ain_exists DOCKER-INTERNAL &amp;&amp; g_dockerinternal=3DYes&#39; );<br><br=
># diff /usr/share/perl5/vendor_perl/Shorewall/Chains.pm /usr/share/perl5/v=
endor_perl/Shorewall/Chains.pm.orig<br>3402,3413d3401<br>&lt; =C2=A0 =C2=A0=
 =C2=A0 $chainref =3D new_standard_chain( &#39;DOCKER-BRIDGE&#39; =C2=A0 =
=C2=A0 =C2=A0);<br>&lt; =C2=A0 =C2=A0 =C2=A0 set_optflags( $chainref, DONT_=
OPTIMIZE | DONT_DELETE | DONT_MOVE );<br>&lt; =C2=A0 =C2=A0 =C2=A0 add_comm=
ands( $chainref, &#39;[ -f ${VARDIR}/.filter_DOCKER-BRIDGE ] &amp;&amp; cat=
 ${VARDIR}/.filter_DOCKER-BRIDGE &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =
=C2=A0 $chainref =3D new_standard_chain( &#39;DOCKER-CT&#39; =C2=A0 =C2=A0 =
=C2=A0);<br>&lt; =C2=A0 =C2=A0 =C2=A0 set_optflags( $chainref, DONT_OPTIMIZ=
E | DONT_DELETE | DONT_MOVE );<br>&lt; =C2=A0 =C2=A0 =C2=A0 add_commands( $=
chainref, &#39;[ -f ${VARDIR}/.filter_DOCKER-CT ] &amp;&amp; cat ${VARDIR}/=
.filter_DOCKER-CT &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 $chainref=
 =3D new_standard_chain( &#39;DOCKER-FORWARD&#39; =C2=A0 =C2=A0 =C2=A0);<br=
>&lt; =C2=A0 =C2=A0 =C2=A0 set_optflags( $chainref, DONT_OPTIMIZE | DONT_DE=
LETE | DONT_MOVE );<br>&lt; =C2=A0 =C2=A0 =C2=A0 add_commands( $chainref, &=
#39;[ -f ${VARDIR}/.filter_DOCKER-FORWARD ] &amp;&amp; cat ${VARDIR}/.filte=
r_DOCKER-FORWARD &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 $chainref =
=3D new_standard_chain( &#39;DOCKER-INTERNAL&#39; =C2=A0 =C2=A0 =C2=A0);<br=
>&lt; =C2=A0 =C2=A0 =C2=A0 set_optflags( $chainref, DONT_OPTIMIZE | DONT_DE=
LETE | DONT_MOVE );<br>&lt; =C2=A0 =C2=A0 =C2=A0 add_commands( $chainref, &=
#39;[ -f ${VARDIR}/.filter_DOCKER-INTERNAL ] &amp;&amp; cat ${VARDIR}/.filt=
er_DOCKER-INTERNAL &gt;&amp;3&#39; );<br>8784,8787d8771<br>&lt; =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 qq( =C2=A0 =C2=A0[ -n &quot;\$g_dockerbridge&quot; =C2=A0=
 ] &amp;&amp; $tool -t filter -S DOCKER-BRIDGE =C2=A0 =C2=A0| tail -n +2 &g=
t; \${VARDIR}/.filter_DOCKER-BRIDGE),<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 q=
q( =C2=A0 =C2=A0[ -n &quot;\$g_dockerct&quot; =C2=A0 =C2=A0 =C2=A0 ] &amp;&=
amp; $tool -t filter -S DOCKER-CT =C2=A0 =C2=A0 =C2=A0 =C2=A0| tail -n +2 &=
gt; \${VARDIR}/.filter_DOCKER-CT),<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 qq( =
=C2=A0 =C2=A0[ -n &quot;\$g_dockerforward&quot; =C2=A0] &amp;&amp; $tool -t=
 filter -S DOCKER-FORWARD =C2=A0 | tail -n +2 &gt; \${VARDIR}/.filter_DOCKE=
R-FORWARD),<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 qq( =C2=A0 =C2=A0[ -n &quot=
;\$g_dockerinternal&quot; ] &amp;&amp; $tool -t filter -S DOCKER-INTERNAL =
=C2=A0| tail -n +2 &gt; \${VARDIR}/.filter_DOCKER-INTERNAL),<br>8811,8814d8=
794<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 q( =C2=A0 =C2=A0rm -f ${VARDIR}/.fi=
lter_DOCKER-BRIDGE),<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 q( =C2=A0 =C2=A0rm=
 -f ${VARDIR}/.filter_DOCKER-CT),<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 q( =
=C2=A0 =C2=A0rm -f ${VARDIR}/.filter_DOCKER-FORWARD),<br>&lt; =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 q( =C2=A0 =C2=A0rm -f ${VARDIR}/.filter_DOCKER-INTERNAL),<br=
>9331,9342d9310<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 } elsif ( $name eq &#39;DOCKER-BRIDGE&#39; ) {<br>&lt; =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensu=
re_cmd_mode;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 emit( &#39;[ -n &quot;$g_dockerbridge&quot; ] &amp=
;&amp; echo &quot;:DOCKER-BRIDGE - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } elsif ( $n=
ame eq &#39;DOCKER-CT&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode;<br>&lt; =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 emit(=
 &#39;[ -n &quot;$g_dockerct&quot; ] &amp;&amp; echo &quot;:DOCKER-CT - [0:=
0]&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 } elsif ( $name eq &#39;DOCKER-FORWARD&#39; ) {<br=
>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 ensure_cmd_mode;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 emit( &#39;[ -n &quot;$g_dockerforward&q=
uot; ] &amp;&amp; echo &quot;:DOCKER-FORWARD - [0:0]&quot; &gt;&amp;3&#39; =
);<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }=
 elsif ( $name eq &#39;DOCKER-INTERNAL&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode=
;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 emit( &#39;[ -n &quot;$g_dockerinternal&quot; ] &amp;&amp; ec=
ho &quot;:DOCKER-INTERNAL - [0:0]&quot; &gt;&amp;3&#39; );<br>9462,9477d942=
9<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } =
elsif ( $name eq &#39;DOCKER-BRIDGE&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode1;<b=
r>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 print( &#39;[ -n &quot;$g_dockerbridge&quot; ] &amp;&amp; echo &=
quot;:DOCKER-BRIDGE - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 print &quot;=
\n&quot;;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 } elsif ( $name eq &#39;DOCKER-CT&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode=
1;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 print( &#39;[ -n &quot;$g_dockerct&quot; ] &amp;&amp; echo &q=
uot;:DOCKER-CT - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 print &quot;\n&=
quot;;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 } elsif ( $name eq &#39;DOCKER-FORWARD&#39; ) {<br>&lt; =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_m=
ode1;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 print( &#39;[ -n &quot;$g_dockerforward&quot; ] &amp;&amp=
; echo &quot;:DOCKER-FORWARD - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 p=
rint &quot;\n&quot;;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 } elsif ( $name eq &#39;DOCKER-INTERNAL&#39; ) {<br>&lt; =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ensure_cmd_mode1;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 print( &#39;[ -n &quot;$g_dockerinternal&qu=
ot; ] &amp;&amp; echo &quot;:DOCKER-INTERNAL - [0:0]&quot; &gt;&amp;3&#39; =
);<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 print &quot;\n&quot;;<br>9575,9586d9526<br>&lt; =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } elsif ( $name eq &#39;D=
OCKER-BRIDGE&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode;<br>&lt; =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 emit( &#39;[ -n=
 &quot;$g_dockerbridge&quot; ] &amp;&amp; echo &quot;:DOCKER-BRIDGE - [0:0]=
&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 } elsif ( $name eq &#39;DOCKER-CT&#39; ) {<br>&lt; =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ensure_cmd_mode;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 emit( &#39;[ -n &quot;$g_dockerct&quot; ] &=
amp;&amp; echo &quot;:DOCKER-CT - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } elsif ( $n=
ame eq &#39;DOCKER-FORWARD&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode;<br>&lt; =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 e=
mit( &#39;[ -n &quot;$g_dockerforward&quot; ] &amp;&amp; echo &quot;:DOCKER=
-FORWARD - [0:0]&quot; &gt;&amp;3&#39; );<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } elsif ( $name eq &#39;DOCKER-INTER=
NAL&#39; ) {<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 ensure_cmd_mode;<br>&lt; =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 emit( &#39;[ -n &quot;=
$g_dockerinternal&quot; ] &amp;&amp; echo &quot;:DOCKER-INTERNAL - [0:0]&qu=
ot; &gt;&amp;3&#39; );<br><br>Hope this helps others...thanks.</div>

--0000000000007ca088065081f5b0--


--===============1452998420795711903==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============1452998420795711903==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline