From mboxrd@z Thu Jan 1 00:00:00 1970 From: Josh Date: Thu, 01 Feb 2007 22:20:02 +0000 Subject: [LARTC] tc filter Questions Message-Id: <45C26792.2020601@usa.net> MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------000600030704050901070309" List-Id: To: lartc@vger.kernel.org This is a multi-part message in MIME format. --------------000600030704050901070309 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I'm attempting to set up a hierarchy of tc qdiscs with filters, but the filters don't seem to be working correctly.  I'm running iptables 1.3.5 with iproute 2.6.16.20060323 on a Gentoo 2.6.18 kernel.  The system takes all my tc setup, but does not filter packets as I am expecting it to based on my ruleset.

My tc qdiscs and classes are added correctly and report as I'd expect with "tc -s -d qdisc show dev eth1", and the filters seem to report what I want.  The iptables script is set correctly, which I verified by testing for the NF_MARK that was expected on the packets.  Pay particular attention to NF_MARK 0xFF, which I want to end up in tc class 20:1.  However, when I run "tc -s -d class show dev eth1" I see nothing going into 20:1, and lots going into 20:2.  Full output of these commands appears near the bottom of this message.

Please also see attached for a pdf representation of my tc setup that may make understanding what I'm trying to do a bit easier.

First, I mark my packets using NF_MARK in iptables like this:
# mangle/POSTROUTING chain
# Catch-all mark:
iptables -t mangle -A POSTROUTING -o $WAN_NIC -j MARK --set-mark 0xFF
# Skype & SSH traffic:
iptables -t mangle -A POSTROUTING -p UDP -s ${LAN}.13 --sport 56168 -o $WAN_NIC -j MARK --set-mark 0x100
iptables -t mangle -A POSTROUTING -p ICMP -o $WAN_NIC -j MARK --set-mark 0x100
iptables -t mangle -A POSTROUTING -p TCP -m multiport --sports 22200:22201 -j MARK --set-mark 0x101
# Streaming media:
iptables -t mangle -A POSTROUTING -p UDP --sport 1234 -o $WAN_NIC -j MARK --set-mark 0x105
# BitTorrent - presently defined via connmark match on torrent user locally:
iptables -t mangle -A POSTROUTING -m connmark --mark 0x1000 -j MARK --set-mark 0x1F0

#testing to verify that the 0xFF mark is working as expected:
iptables -t mangle -A POSTROUTING -m mark ! --mark 0xFF -j RETURN
iptables -t mangle -A POSTROUTING -m mark --mark 0xFF
iptables -t mangle -A POSTROUTING -m mark ! --mark 0xFF
  
I know the above works because the hit counters in iptables act as I expect (see also the result of the iptables -L output below.)

Then, I enable my tc qdiscs, classes, and filters like this:
MAX="45056bps"
 
tc qdisc add dev eth1 root handle 1: htb default 1
tc class add dev eth1 parent 1: classid 1:1 htb rate ${MAX}
 
tc qdisc add dev eth1 parent 1:1 handle 2: prio
 
tc qdisc add dev eth1 parent 2:1 handle 10: htb default 2
        # put mark 0x100 into 10:1
        tc class add dev eth1 parent 10: classid 10:1 htb rate 8192bps ceil ${MAX}
        tc filter add dev eth1 pref 1 protocol ip parent 1: handle 0x100 fw classid 10:1
        # put mark 0x101 into 10:2
        tc class add dev eth1 parent 10: classid 10:2 htb rate 15360bps ceil ${MAX}
        tc filter add dev eth1 pref 2 protocol ip parent 1: handle 0x101 fw classid 10:2
        # put mark 0x105 into 10:3
        tc class add dev eth1 parent 10: classid 10:3 htb rate 30720bps ceil ${MAX}
        tc filter add dev eth1 pref 3 protocol ip parent 1: handle 0x105 fw classid 10:3
 
tc qdisc add dev eth1 parent 2:2 handle 20: htb default 2
        # put mark 0xFF into 20:1
        tc class add dev eth1 parent 20: classid 20:1 htb rate 10240bps ceil ${MAX}
        tc filter add dev eth1 pref 5 protocol ip parent 1: handle 0xFF fw classid 20:1
        # stuff without a mark goes here per the default - shouldn't happen
        tc class add dev eth1 parent 20: classid 20:2 htb rate 15360bps ceil ${MAX}
 
# put mark 0x1F0 into 2:3
tc qdisc add dev eth1 parent 2:3 handle 30: bfifo limit 64k
tc filter add dev eth1 pref 4 protocol ip parent 1: handle 0x1F0 fw classid 2:3
  
My qdiscs and classes report to be set up how I asked, and they function.  However, 20:1 never sees any traffic despite many packets hitting the 0xFF mark in iptables (I tested for 0xFF at the end of the POSTROUTING chain, so I know packets are leaving this chain with this mark.)  It seems they get put into 20:2 per the default rule on 20:.  The same holds true for the 10:2 class, as nothing ever goes into 10:1 or 10:3, even when these marks are set at the end of the POSTROUTING chain traversal.

Finally, I also tried the same setup except commenting out all my filter commands in the tc script.  I then added the "-j CLASSIFY #:#" syntax to my iptables rules to directly classify to the classes I want.  The same effects were visible in this case as I described above.  It's as if the packets get sorted into the tc tree without any filtering of any kind, despite filters showing up with "tc -s -d filter show dev eth1".

Any ideas as to what I am doing wrong are appreciated as I'm don't know what I'm missing.

For completeness, below is the result of my tc and relevant iptables listings after my scripts are run (and with a number of packets sent on my interface):

tc -s -d qdisc show dev eth1:
qdisc htb 1: r2q 10 default 1 direct_packets_stat 0 ver 3.17
 Sent 129462870 bytes 135363 pkt (dropped 46, overlimits 87892 requeues 0) 
 backlog 0b 5p requeues 0 
qdisc prio 2: parent 1:1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 129462870 bytes 135363 pkt (dropped 46, overlimits 0 requeues 0) 
 backlog 0b 5p requeues 0 
qdisc htb 10: parent 2:1 r2q 10 default 2 direct_packets_stat 0 ver 3.17
 Sent 8370 bytes 93 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0 
qdisc htb 20: parent 2:2 r2q 10 default 2 direct_packets_stat 0 ver 3.17
 Sent 947507 bytes 8007 pkt (dropped 0, overlimits 1030 requeues 0) 
 backlog 0b 0p requeues 0 
qdisc bfifo 30: parent 2:3 limit 64Kb
 Sent 128506939 bytes 127262 pkt (dropped 46, overlimits 0 requeues 0) 
 backlog 4225b 5p requeues 0
  
tc -s -d class show dev eth1:
class htb 1:1 root leaf 2: prio 0 quantum 4505 rate 360448bit ceil 360448bit burst 2Kb/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 129335552 bytes 135231 pkt (dropped 46, overlimits 0 requeues 0) 
 rate 338568bit 47pps backlog 0b 0p requeues 0 
 lended: 135231 borrowed: 0 giants: 0
 tokens: 11940 ctokens: 11940
 
class prio 2:1 parent 2: leaf 10: 
 
class prio 2:2 parent 2: leaf 20: 
 
class prio 2:3 parent 2: leaf 30: 
 
class htb 10:1 root prio 0 quantum 1000 rate 65536bit ceil 360448bit burst 1680b/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 205200 ctokens: 45498
 
class htb 10:2 root prio 0 quantum 1536 rate 122880bit ceil 360448bit burst 1752b/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 8370 bytes 93 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 24bit 0pps backlog 0b 0p requeues 0 
 lended: 93 borrowed: 0 giants: 0
 tokens: 108398 ctokens: 43545
 
class htb 10:3 root prio 0 quantum 3072 rate 245760bit ceil 360448bit burst 1906b/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 62076 ctokens: 45498
 
class htb 20:1 root prio 0 quantum 1024 rate 81920bit ceil 360448bit burst 1701b/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 166210 ctokens: 45498
 
class htb 20:2 root prio 0 quantum 1536 rate 122880bit ceil 360448bit burst 1752b/8 mpu 0b overhead 0b cburst 2Kb/8 mpu 0b overhead 0b level 0 
 Sent 941657 bytes 7983 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 1256bit 2pps backlog 0b 0p requeues 0 
 lended: 7983 borrowed: 0 giants: 0
 tokens: 92799 ctokens: 38245
  
tc -s -d filter show dev eth1:
filter parent 1: protocol ip pref 1 fw 
filter parent 1: protocol ip pref 1 fw handle 0x100 classid 10:1 
filter parent 1: protocol ip pref 2 fw 
filter parent 1: protocol ip pref 2 fw handle 0x101 classid 10:2 
filter parent 1: protocol ip pref 3 fw 
filter parent 1: protocol ip pref 3 fw handle 0x105 classid 10:3 
filter parent 1: protocol ip pref 4 fw 
filter parent 1: protocol ip pref 4 fw handle 0x1f0 classid 2:3 
filter parent 1: protocol ip pref 5 fw 
filter parent 1: protocol ip pref 5 fw handle 0xff classid 20:1
  
iptables --line-numbers -xnvL POSTROUTING -t mangle:
Chain POSTROUTING (policy ACCEPT 270084736 packets, 194631738808 bytes)
num      pkts      bytes target     prot opt in     out     source               destination         
1      144850 137138305 MARK       all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           MARK set 0xff 
2          22     1366 MARK       udp  --  *      eth1    192.168.42.13        0.0.0.0/0           udp spt:56168 MARK set 0x100 
3          41     1342 MARK       icmp --  *      eth1    0.0.0.0/0            0.0.0.0/0           MARK set 0x100 
4           0        0 MARK       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport sports 22200:22201 MARK set 0x101 
5           0        0 MARK       udp  --  *      eth1    0.0.0.0/0            0.0.0.0/0           udp spt:1234 MARK set 0x105 
6      139456 136418911 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0           CONNMARK match 0x1000 MARK set 0x1f0 
7      154381 140258853 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           MARK match !0xff 
8        5351   717886            all  --  *      *       0.0.0.0/0            0.0.0.0/0           MARK match 0xff 
9          0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           MARK match !0xff

-- 
Josh
--------------000600030704050901070309 Content-Type: application/pdf; name="tc_diagram.pdf" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="tc_diagram.pdf" JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0 ZURlY29kZT4+CnN0cmVhbQp4nLVY244cJxB9n6/g2ZInFHcky9LsLVLeHK+UH0icyBpHil/8 +wGqoItuGPd621rtrk53wWkOdQMpvp3+E1K8lWcQIEP+51X++/Uv8ccb8e9JCkjvv/59Mj6c tbAAZy++nGxwZ0PoKhAZ6wtCyx6R5emf06c3ac788/uvhfpb+v0tkXw+jOHj6UOZWeKH3z2f rDLnIEwIZyue/xS/PKXFBvH8SbyTINV78fz59Pi8GWWCF8bluVdjdBkRzzGZplfvpJFWuvIQ 2FNfntgz1AdhPS7Ki7yT9+Wxtsvzh+WTmv4qf4iLKA5ImeRAdBWErD27hNCwA/H74h8y/VZ5 A3mo8+nvSsRH+SBtWafyy8qfQPZrhzwRQPd1sfs6RBp9gSx7tGP5RzFsFQANaXnObX0PAND3 wC0C3Mkn+cQ9EqoD5LnAC2e2Hpk4DJCYOn1JdUBw8g6fcmctT1xzS0A/Dc0CwmALVMoNKeQU CqRTKBlCV4FIO5QELXtElt/xwGMYtlug07sgdByHP8RZAkiqZlY/SgE55jcR7/hcbSatDV+Y zunV6Dx1WpgOKZAWtFheRS8W5bxgaBbTUBtXPO0qPi67RoMUT6l1ekRVRbTs0Z5dO4phkLST svNdkzDbNQvqhbvG52rS+TTNsrCgJFsYoroUtOzRHumOYthK563O9U5m3xpIF2bSeVM2rATb TunCLFd5DWUFg224X9VBMOtK6eECdxRMOq+FDHFkqvQteV0GAWc1F9amIrUEnNWOBRy3XAcc vStNxpeKWIgRmXeOkXmnGJn3kpFxyw1ZcCy6yZKim1AX3YUafHELjdQ5DxpCmBWNUJ7KVLHs EVneLosHMWxdVEHeVi0HZTHCZd6UQXLOkLgHRfABHlM/5eUDYAE1NzxMyWQIgzYL81JtBDCD 1UaAkOYZbIV2tBpHMQwyptTZYtBqKEihih1q8uOmyuM27uKNfjjmLnrYf7xU+r5OdsUqZWMu jOTCWNN1/B0iyz3Sv5phVqysH7nzrRaDxtmZptPs1hZRspsDnt0WtFiOsxv6Vs1uDjbZDV+0 M1khy6ephWxBi+WYDNWsZFZtupV80Eg5xFAT7nMdR4QZxSRtfDuS6BUiy9v57CCGQZsPuYFW altycz7bFE61Coq5h0Dq6NPEcluT1x6yOitIJWCQJl9RfS99ta27FrmmynFNETUVY6dp3L1r BzEMqpB81a7Nm9Bc3n5o1+JP2LVRssVTU9VUW64poqoiWvZoz64dxTDYtfi6XZv2v1r+2K6p cPyuKTXtTmo/RucrzQtY7cDQskd7Or6jGKbnuUHHJ+FWx4dtx0/p+LDtkI75aV7H4qeIqmei ZY/2RMJRDIPrtVR8x5GAms7LiilXQi93dVN6hLGzgyF3vqeD2kroyGWwjsuAqC08djLE3UIf xDBy3iI0jJx3HeOX27cTOQog7mn4SHU6/Wt+T1BDElENQrTs0Z6gP4phdhMxDPpwK+h9CmU9 DHp5SW6WtoOOM31vrJTj51WVD+PaYIOqdD6MN8Qs1+0q3S9GQ7O4hto4s+mUQXPfA52plUWy 9LWJuiFmuaamg7M0NItrqI2zG2r8ptYfKU6Nq25Izanpnfds1QMyDZxMAyfTipNxy4nEtE60 rOukcVtqYxTPozowamMco+aW44vUSo2WlZrGbanxzNIyi+LUeA5a0Jya3nl+DhqQ4YVP9WK8 Uqp+i1dKDbm5F9M758/LldLAb/ErWsEvK6vT48oWpKZk9M7xlekUw34Zt0L1Qz6I/wFaNM3b CmVuZHN0cmVhbQplbmRvYmoKCjMgMCBvYmoKMTMzMwplbmRvYmoKCjUgMCBvYmoKPDwvTGVu Z3RoIDYgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgxIDI3NjMyPj4Kc3RyZWFtCnic 7b15fFRF9iheVXfpvfv2kt7SSd+kk05IQwJJICRE0gECYtg3CSaSJmlIIHsnQBQ1qIgiKjoj KqMDqKO4NyFoQPyaUUdHFGHGZb7iAiq4zAwDMw+ZcTTpd6r6ZkGdefPe7/fH+7yPfVNVp6pO VZ06Wy23G9rbOsJIj7oQh4I1jaGWJ++85UGE0JsIYUvN2nb57g/bjwN8EiFx7MqWVY2XP5hl RkgtISREVzV0rnw/P3E3QoY+hNL/XBcO1U4KTjQhlPck9DGhDgraBq5XQf4U5NPqGtvXXy+V XYNQvhryWxuaa0KfPPT6dsj/HPKXNobWt9RpN/OQ/xDyclOoMTzvtSO3QP47hAK/a2mOtG9H WTGEqo/R+pa2cMsDnb90Q/4cQtp+KMPw0I8eQJHmCccLokqt0er0BqNJMlustgS7w+lyJ3qS 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 g/r+6hU1dTQNhaMVvvC0aI1vmrx3UuWPVFfS6km+aXtRZdmipXsrg+Fp3ZOCk8p8oWkV+2bM yy+4aKxbhsbKn/cjnc2jneXTsWYU/Eh1Aa2eQccqoGMV0LFmBGewsRDT8XlL96rRlIqplfF0 H9FpQV+rE1MqptillslMeSelOK9NPAgbkj1IF6iI6n1TogYItGpM6ZhSWgU2RauM9D9HUKqc 105KSTyI9yhVEhSbfVNQoL0j0oGcZfXT4n8R+EBRewdleDwORP7VB+rKosHQtEg7QuXRrIXl 0ZL5y5buVamgtJpOKVo0WKbTlfXG+uKF2VBYRAs5bgiRlhXTMo1GQfyh/DuUlP0es4s8vw8H kzEc6iq4aHL5IgKuYJHyr9AfhO0SXR4iFTDBCA7gyGAfjGyk/NyTzncwtHcokMKHdiWNt4Im kUF2DH2gDbiq/wlHGPUtCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKMTUzNTMKZW5kb2Jq Cgo3IDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkFBQUFBK0FyaWFs TVQKL0ZsYWdzIDQKL0ZvbnRCQm94Wy02NjQgLTMyNCAyMDI3IDEwMzddL0l0YWxpY0FuZ2xl IDAKL0FzY2VudCA5MDUKL0Rlc2NlbnQgLTIxMQovQ2FwSGVpZ2h0IDEwMzcKL1N0ZW1WIDgw Ci9Gb250RmlsZTIgNSAwIFI+PgplbmRvYmoKCjggMCBvYmoKPDwvTGVuZ3RoIDM3My9GaWx0 ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxdks1ugzAMgO88RY7doYKEv1VCSC0tEof9aGwP QInpkEZAgR54+8U226QdQF8S2/qc2C+qc2X6xX+1Y1vDIrreaAvzeLctiCvceuNJJXTfLtuK /u3QTJ7vcut1XmCoTDdmmee/ubN5savYHfV4hQfPf7EabG9uYvdR1G5d36fpCwYwiwi8PBca OlfnqZmemwF8ytpX2h33y7p3KX8B7+sEQtFasko7apinpgXbmBt4WRDkIivL3AOj/52FEadc u/azsS5UutAgCFXuWDEfkUPiNECOmCkmJk4OyAlziZwSK4p/5Doh8oH3z8hHjqc6J2aJXDBf kM/MEfKFOKaYkh2wpgw4hpj9I2L2Twpk9lePyOyfJMjsn6bImz+6SfZPTsjsr7BHyf4hOkj2 D7FHyf4p1Wf/iOpv/rTP/in2Itk/iR0r9lfYr2L/GO9Ebfcf08NtL4RPiDP2MxqivVvrxoIG keYBJ6E38Dur0zhhFn3fDVi6rQplbmRzdHJlYW0KZW5kb2JqCgo5IDAgb2JqCjw8L1R5cGUv Rm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0JBQUFBQStBcmlhbE1UCi9GaXJzdENo YXIgMAovTGFzdENoYXIgMzQKL1dpZHRoc1s3NTAgNTU2IDI3NyA1NTYgMzMzIDIyMiA1NTYg Mjc3IDU1NiAzMzMgNTU2IDU1NiA1NTYgNTU2IDc3NyA1MDAKNTAwIDcyMiAyMjIgMzMzIDI3 NyA3MjIgODMzIDUwMCAzMzMgNTU2IDU1NiA1MDAgNjEwIDU1NiAyNzcgNTU2CjI3NyA3MjIg NTU2IF0KL0ZvbnREZXNjcmlwdG9yIDcgMCBSCi9Ub1VuaWNvZGUgOCAwIFIKPj4KZW5kb2Jq CgoxMCAwIG9iago8PAovRjEgOSAwIFIKPj4KZW5kb2JqCgoxMSAwIG9iago8PC9Gb250IDEw IDAgUgovUHJvY1NldFsvUERGL1RleHRdPj4KZW5kb2JqCgoxIDAgb2JqCjw8L1R5cGUvUGFn ZS9QYXJlbnQgNCAwIFIvUmVzb3VyY2VzIDExIDAgUi9NZWRpYUJveFswIDAgMTA4MCA3MjBd L0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRz IDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291cmNlcyAxMSAw IFIKL01lZGlhQm94WyAwIDAgNTk1IDg0MiBdCi9LaWRzWyAxIDAgUiBdCi9Db3VudCAxPj4K ZW5kb2JqCgoxMiAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNCAwIFIKPj4KZW5kb2Jq CgoxMyAwIG9iago8PC9BdXRob3I8RkVGRjAwNEEwMDZGMDA3MzAwNjgwMDIwMDA0MzAwNjUw MDcwMDA2NTAwNkI+Ci9DcmVhdG9yPEZFRkYwMDQ0MDA3MjAwNjEwMDc3PgovUHJvZHVjZXI8 RkVGRjAwNEYwMDcwMDA2NTAwNkUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDJFMDA2RjAw NzIwMDY3MDAyMDAwMzIwMDJFMDAzMT4KL0NyZWF0aW9uRGF0ZShEOjIwMDcwMjAxMTU1NTMz LTA2JzAwJyk+PgplbmRvYmoKCnhyZWYKMCAxNAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAw MTc5MDkgMDAwMDAgbiAKMDAwMDAwMDAxOSAwMDAwMCBuIAowMDAwMDAxNDIzIDAwMDAwIG4g CjAwMDAwMTgwNTMgMDAwMDAgbiAKMDAwMDAwMTQ0NCAwMDAwMCBuIAowMDAwMDE2ODgyIDAw MDAwIG4gCjAwMDAwMTY5MDQgMDAwMDAgbiAKMDAwMDAxNzA5MiAwMDAwMCBuIAowMDAwMDE3 NTM0IDAwMDAwIG4gCjAwMDAwMTc4MjIgMDAwMDAgbiAKMDAwMDAxNzg1NSAwMDAwMCBuIAow MDAwMDE4MTUyIDAwMDAwIG4gCjAwMDAwMTgyMDAgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXpl IDE0L1Jvb3QgMTIgMCBSCi9JbmZvIDEzIDAgUgovSUQgWyA8Q0UyM0E0QjgwOUU0RDE1NTgy QjQ2OUQ0NzQxQkMyQjQ+CjxDRTIzQTRCODA5RTREMTU1ODJCNDY5RDQ3NDFCQzJCND4gXQo+ PgpzdGFydHhyZWYKMTg0MzMKJSVFT0YK --------------000600030704050901070309 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ LARTC mailing list LARTC@mailman.ds9a.nl http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc --------------000600030704050901070309--