From 6a1fea3a40fc97d3b4490040d11e7998a0fe8def Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Tue, 27 Jul 2010 11:02:36 -0700 Subject: [PATCH] Add 'user marks' --- Shorewall/Perl/Shorewall/Chains.pm | 4 ++-- Shorewall/Perl/Shorewall/Config.pm | 6 ++++++ docs/PacketMarking.xml | 9 ++++++++- docs/images/MarkGeometry.dia | Bin 1835 -> 1894 bytes docs/images/MarkGeometry.png | Bin 12400 -> 13085 bytes 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm index e966ab9df..1b264ced9 100644 --- a/Shorewall/Perl/Shorewall/Chains.pm +++ b/Shorewall/Perl/Shorewall/Chains.pm @@ -2143,9 +2143,9 @@ sub verify_mark( $ ) { if ( $value > $mask ) { # - # Not a valid TC mark -- must be a provider mark + # Not a valid TC mark -- must be a provider mark or a user mark # - fatal_error "Invalid Mark or Mask value ($mark)" unless ( $value & $globals{PROVIDER_MASK} ) == $value; + fatal_error "Invalid Mark or Mask value ($mark)" unless ( $value & $globals{PROVIDER_MASK} ) == $value || ( $value & $globals{USER_MASK} ) == $value; } } diff --git a/Shorewall/Perl/Shorewall/Config.pm b/Shorewall/Perl/Shorewall/Config.pm index 476993788..334410ac2 100644 --- a/Shorewall/Perl/Shorewall/Config.pm +++ b/Shorewall/Perl/Shorewall/Config.pm @@ -3033,6 +3033,12 @@ sub get_configuration( $ ) { $globals{PROVIDER_MIN} = 1 << $config{PROVIDER_OFFSET}; $globals{PROVIDER_MASK} = make_mask( $config{PROVIDER_BITS} ) << $config{PROVIDER_OFFSET}; + if ( ( my $userbits = $config{PROVIDER_OFFSET} - $config{TC_BITS} ) > 0 ) { + $globals{USER_MASK} = make_mask( $userbits ) << $config{TC_BITS}; + } else { + $globals{USER_MASK} = 0; + } + if ( defined ( $val = $config{ZONE2ZONE} ) ) { fatal_error "Invalid ZONE2ZONE value ( $val )" unless $val =~ /^[2-]$/; } else { diff --git a/docs/PacketMarking.xml b/docs/PacketMarking.xml index b71caec69..45e24eb7e 100644 --- a/docs/PacketMarking.xml +++ b/docs/PacketMarking.xml @@ -313,7 +313,7 @@ tcp 6 19 TIME_WAIT src=206.124.146.176 dst=192.136.34.98 sport=58597 dport= - The relationship between these options is shown in this + The relationship between these options is shown in this diagram. @@ -358,6 +358,13 @@ tcp 6 19 TIME_WAIT src=206.124.146.176 dst=192.136.34.98 sport=58597 dport= + + The existence of both TC_BITS and MASK_BITS is owed to the way that + WIDE_TC_MARKS was originally implemented. Note that TC_BITS is 14 rather + than 16 when WIDE_TC_MARKS=Yes. + + Beginning with Shorewall 4.4.12, the field between MASK_BITS and + PROVIDER_OFFSET can be used for any purpose you want.
diff --git a/docs/images/MarkGeometry.dia b/docs/images/MarkGeometry.dia index 9242cbfdbe2b409d6efcb4850792303f3fd469ca..a4e7277205523ea2422c7a95454bee13774a76db 100644 GIT binary patch literal 1894 zcmV-s2buUEiwFP!000021MOX1bDKC6eb298+}Bi=gaoK*(%J5AXFJmITN2S}W+3uCNWS-S&P7t*zPp=+){RKgAdXH42*80QqDkxr z(e!li{o=!GZ}9Hy=&c{{H|qa1;WJBpB1-ky>EKGr`J3VJ_VyNp_bHcg0>a=Lq+<9V z4?{jwjfR7>BgnVc~*wG>;RR@IY=tj^j8KJjzjJaxI$Uq!S)07kjK*sJZpaK+5=u`@iI2x=jc2 z%MTH^YxGW&z<)e=S6b9qxea`IHM;9)xN__F9a+B#(qJ5ls=E&&xi|Co`!T=%?PM9e z{CG=m$gR~rB79F!L3e*dOs@l9q))inYMUBMS4FeoQ=`7#Zrg#$FReYWGl-Dii=;6B zzI;?$#TQ&;9E(q6aI-jD8k2bZub9Z9v*(gWK2Ln>we>!}8$&9ejbSgSFm0 zWlZJ4jnSINrAyhsp~tTJu|5Wy8Ke$jJYEM#R2O(O4Mho}F-~k7KzfW^;59=Np_q*( zaT0CPggy2tL&=iKX1^X12?I8TO9yI!btQu7m3#yYf`;bDapH^Qsm>_#i(U{05poc2 z1{Xx?n;ETUhe`^0c?n@Ni1aGH9aT`^r=RWBd1zP$-4;=JA@1Z-7@{H!QQI)YHn6dZ z3=G^3;}9djT-((!2+|Wwfa5w?pL!HG3>K+J56?bgWs_vktmehs;Q z{Y!*5LIxB5`h6Vw%g>qJ?_(qU zD?`+Ss|RTZy6TTx`(zWS^?Xn(E0=RZ6ClOKr_oGQf2$(8o>kDO$B0xF7uYR2Zn9fi zkB{=1$WF)YSJQUofcg{Gr#MyXi|VE$p*8Gm?Jv95Nba$1#V`*=b8K}T<|$$KG>hk zw->oY+vXx-1J=1((jd83B5wCWsco0G(McGv#gXYGX6m;uxPI%jjzS7Z_cDnPrS3g< zA(M!so;xV7-#Vs#YxL0;K55iZZ`2X}DfL^obt-fL?7n`havxjNZz%!j0QK9}9W(V? zQ@`DbmUwMrkwT>s4^Y1)3^=5$-%_NWJbkL)Ui@w8>F!3TglIiJdz#1GdLpw{f>}7RZkH4+;XtYg z7FLQgKlNZg6zAyu$BT2LI1f|{uXanrwtnR|=5+)J@8g~MF>YM_-1e2ZM>P9kz=bZ> z?1w<=XjnoS?V9~;_OO!r*pw384mwQ91LOSZm#`|{7nKmPnS`tsq!`JWd? zpB;z^ReGl(LVXly`^(N*qL~PA~|&jy`3uR~pT{K|A118`aKf$WRX@8g4yz+NQZ)SKdH7O;rmV zPp@-5S%P)VJ2a!w>OIlqrT%RKgj-L$&bKh_de2k^QtSd`17;s$%hZea)~KXa4zoAn)~mm*)R35Mcr!0G^_6W gvtKG|yW})K&;CTs+0n}1usJ*WA59S=59@9K06Cbh2><{9 literal 1835 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 KQJ&b-*Z%|VM#Ve; literal 12400 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