lartc-request,hello!
I find a line in tbf_change() in sch_tbf.c: ptab = xchg(&q->P_tab,
ptab);
Can I consider that the pointers are exchanged between q->P_tab and
ptab? as following:
prev=q->R_tab;
q->R_tab = rtab;
rtab = prev;
Is my understanding righ?
======= 2002-03-23 12:01:00 you wrote:======>Send LARTC mailing list submissions to
> lartc@mailman.ds9a.nl
>
>To subscribe or unsubscribe via the World Wide Web, visit
> http://mailman.ds9a.nl/mailman/listinfo/lartc
>or, via email, send a message with subject or body 'help' to
> lartc-request@mailman.ds9a.nl
>
>You can reach the person managing the list at
> lartc-admin@mailman.ds9a.nl
>
>When replying, please edit your Subject line so it is more specific
>than "Re: Contents of LARTC digest..."
>
>
>Today's Topics:
>
> 1. Simple example of bandwidth management (Roberto Arcomano)
> 2. Determining tbf parameters (Alex Leyva)
> 3. Re: How to mark a device not to be used with IMQ? (Martin Devera)
> 4. Re: How to mark a device not to be used with IMQ? (Patrick McHardy)
> 5. Re: How to mark a device not to be used with IMQ? (Patrick McHardy)
>
>--__--__--
>
>Message: 1
>From: Roberto Arcomano <berto@fatamorgana.com>
>To: lartc@mailman.ds9a.nl
>Date: Fri, 22 Mar 2002 19:10:44 +0100
>Subject: [LARTC] Simple example of bandwidth management
>
>Hi all,
>I tried to configure a simple script like this:
>
>*************************************************
>#!/bin/bash
>
>SORG=10.0.0.33
>DEST=10.0.0.34
>
>ipchains -F
>ipchains -A output -s $SORG -d $DEST -j ACCEPT -m 1
>
>tc qdisc del dev eth0 root handle 1:0 cbq bandwidth 33600bps avpkt 1000
>tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 33600bps avpkt 1000
>
>tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 33600bps rate
>10000bps allot 1514 maxburst 20 avpkt 1000 prio 3
>
>tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw classid 1:1
>********************************************************
>
>My problem is that I cannot see any bandwidth reduction, I download from
>10.0.0.33 to 10.0.0.34 with same speed as before (normal ethernet speed).
>Maybe there exists some file under /proc fs to modify?
>
>Some other debug info:
>
>*******************************************************
>[root@adsl bin]# tc -d qdisc show dev eth0
>qdisc cbq 1: rate 33600bps cell 8b (bounded,isolated) prio no-transmit/8
>weight 33600bps allot 1514b
>level 1 ewma 5 avpkt 1000b maxidle 928us
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]# tc -d class show dev eth0
>class cbq 1: root rate 33600bps cell 8b (bounded,isolated) prio
no-transmit/8
>weight 33600bps allot 1514b
>level 1 ewma 5 avpkt 1000b maxidle 928us
>class cbq 1:1 parent 1: rate 10000bps cell 8b prio 3/3 weight 10000bps allot
>1514b
>level 0 ewma 5 avpkt 1000b maxidle 62298us
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]#
>[root@adsl bin]# tc filter show dev eth0
>filter parent 1: protocol ip pref 1 fw
>filter parent 1: protocol ip pref 1 fw handle 0x1 classid 1:1
>***************************************************************
>
>My system is:
>RedHat 7.2 with kernel 2.4.7-10 on Intel Celeron 300MHz - 128 MB ram
>Please let me know what I'm wronging...
>Thank you for your great support.
>Regards
>Roberto Arcomano
>
>--__--__--
>
>Message: 2
>Date: Fri, 22 Mar 2002 12:49:26 -0600 (CST)
>From: Alex Leyva <aleyva@pichon.df.gob.mx>
>To: <lartc@mailman.ds9a.nl>
>Subject: [LARTC] Determining tbf parameters
>
>Hi, im doing something like this:
>tc qdisc add $DEV parent 1:110 handle 110: estimator 1sec 8sec \
> tbf rate 1Mbit burst ??? limit ???
>
>I've been triying with diferent values for burst, limit and latency, but
>we cant understand how to determine the correct values for them.
>
>In "Short evaluation of linux token-bucket-filter queueing
discipline"
>by Kurt Wagner we learned that queue size=limit+bucket size, but we dont
>know how to determine limit, burst and latency.
>
>We found different formulas to determine the size of the bucket, the
>latency and the limit, but they doesnt work for us, because we get
>incoherent values.
>
>We have another question, what is the normal values for dropped and
>overlimit?.
>We have:
>qdisc tbf 110: dev eth1 rate 1Mbit burst 20Kb/8 mpu 0b [0001f400] limit
>40Kb lat 190.7ms
> Sent 17542230 bytes 11591 pkts (dropped 36, overlimits 35216)
>
>is this normal?.
>
>Thanks.
>
>Alex Leyva
>Gobierno del Distrito Federal
>Oficialia Mayor
>Comite Ejecutivo de Desarrollo Informatico
>Direccion de Nuevas Tecnologias
>
>
>--__--__--
>
>Message: 3
>Date: Sat, 23 Mar 2002 00:50:46 +0100 (CET)
>From: Martin Devera <devik@cdi.cz>
>To: Nils Lichtenfeld <Nils.Lichtenfeld@gmx.net>
>Cc: lartc ML <lartc@mailman.ds9a.nl>
>Subject: Re: [LARTC] How to mark a device not to be used with IMQ?
>
>> I understand what you mean... but i thought there has to be a way from
what I
>> read on the IMQ-site (http://luxik.cdi.cz/~devik/qos/imq.htm):
>>
>> --- snipp ---
>>
>> Each non-marked skb is intercepted in dev_queue_xmit and queued to IMQ
if it is
>> up. Immediately it tries to dequeue it (software pump).
>>
>> --- snapp ---
>>
>> "Each non-marked skb" <-- Thats what made me think that
there is a way to "mark"
>> a device...
>
>this is only internal mark to know whether the skb was
>already in IMQ. You could use it but you would have to
>add new user parameter to the interface structure.
>I didn't want to do it as I want the pach to be as simple
>as possible.
>devik
>
>
>--__--__--
>
>Message: 4
>Date: Sat, 23 Mar 2002 02:42:49 +0100
>From: Patrick McHardy <kaber@trash.net>
>To: Martin Devera <devik@cdi.cz>
>Cc: Nils Lichtenfeld <Nils.Lichtenfeld@gmx.net>,
> lartc ML <lartc@mailman.ds9a.nl>
>Subject: Re: [LARTC] How to mark a device not to be used with IMQ?
>
>Dies ist eine mehrteilige Nachricht im MIME-Format.
>--------------3B62B4388E04887E67394F06
>Content-Type: text/plain; charset=us-ascii
>Content-Transfer-Encoding: 7bit
>
>Martin Devera schrieb:
>>
>> > I understand what you mean... but i thought there has to be a way
from what I
>> > read on the IMQ-site (http://luxik.cdi.cz/~devik/qos/imq.htm):
>> >
>> > --- snipp ---
>> >
>> > Each non-marked skb is intercepted in dev_queue_xmit and queued to
IMQ if it is
>> > up. Immediately it tries to dequeue it (software pump).
>> >
>> > --- snapp ---
>> >
>> > "Each non-marked skb" <-- Thats what made me think
that there is a way to "mark"
>> > a device...
>>
>> this is only internal mark to know whether the skb was
>> already in IMQ. You could use it but you would have to
>> add new user parameter to the interface structure.
>> I didn't want to do it as I want the pach to be as simple
>> as possible.
>> devik
>
>Hi.
>
>The same problem was bugging me a couple of days ago so i wrote an
>iptables target which
>allows you to exclude packets from beeing enqueued to the imq device.
>The patch is tested with iptables-1.2.6a but should work with almost any
>recent version.
>After applying it you have to execute a "chmod +x
>extensions/.IMQX-test", then
>make patch-o-matic as usual.
>Martin, maybe you want to put it on your imq page ?
>
>Bye,
>Patrick
>--------------3B62B4388E04887E67394F06
>Content-Type: text/plain; charset=us-ascii;
> name="IMQX_iptables-1.2.6a.patch"
>Content-Transfer-Encoding: 7bit
>Content-Disposition: inline;
> filename="IMQX_iptables-1.2.6a.patch"
>
>diff -urN iptables-1.2.6a-clean/extensions/.IMQX-test
iptables-1.2.6a/extensions/.IMQX-test
>--- iptables-1.2.6a-clean/extensions/.IMQX-test Thu Jan 1 01:00:00 1970
>+++ iptables-1.2.6a/extensions/.IMQX-test Sat Mar 23 02:37:20 2002
>@@ -0,0 +1,3 @@
>+#!/bin/sh
>+# True if IMQX target patch is applied.
>+[ -f $KERNEL_DIR/net/ipv4/netfilter/ipt_IMQX.c ] && echo IMQX
>diff -urN iptables-1.2.6a-clean/extensions/libipt_IMQX.c
iptables-1.2.6a/extensions/libipt_IMQX.c
>--- iptables-1.2.6a-clean/extensions/libipt_IMQX.c Thu Jan 1 01:00:00 1970
>+++ iptables-1.2.6a/extensions/libipt_IMQX.c Sat Mar 23 02:37:49 2002
>@@ -0,0 +1,81 @@
>+/* Shared library add-on to iptables to add IMQX target support. */
>+#include <stdio.h>
>+#include <string.h>
>+#include <stdlib.h>
>+#include <getopt.h>
>+
>+#include <iptables.h>
>+#include <linux/netfilter_ipv4/ip_tables.h>
>+
>+/* Function which prints out usage message. */
>+static void
>+help(void)
>+{
>+ printf(
>+"IMQX target vs has no options\n",
>+NETFILTER_VERSION);
>+}
>+
>+static struct option opts[] = {
>+ { 0 }
>+};
>+
>+/* Initialize the target. */
>+static void
>+init(struct ipt_entry_target *t, unsigned int *nfcache)
>+{
>+}
>+
>+/* Function which parses command options; returns true if it
>+ ate an option */
>+static int
>+parse(int c, char **argv, int invert, unsigned int *flags,
>+ const struct ipt_entry *entry,
>+ struct ipt_entry_target **target)
>+{
>+ if (c)
>+ return 0;
>+
>+ return 1;
>+}
>+
>+static void
>+final_check(unsigned int flags)
>+{
>+}
>+
>+/* Prints out the targinfo. */
>+static void
>+print(const struct ipt_ip *ip,
>+ const struct ipt_entry_target *target,
>+ int numeric)
>+{
>+ printf("IMQX");
>+}
>+
>+/* Saves the union ipt_targinfo in parsable form to stdout. */
>+static void
>+save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
>+{
>+}
>+
>+static
>+struct iptables_target mark
>+= { NULL,
>+ "IMQX",
>+ NETFILTER_VERSION,
>+ 0,
>+ 0,
>+ &help,
>+ &init,
>+ &parse,
>+ &final_check,
>+ &print,
>+ &save,
>+ opts
>+};
>+
>+void _init(void)
>+{
>+ register_target(&mark);
>+}
>diff -urN iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch
iptables-1.2.6a/patch-o-matic/extra/IMQX.patch
>--- iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch Thu Jan 1 01:00:00
1970
>+++ iptables-1.2.6a/patch-o-matic/extra/IMQX.patch Sat Mar 23 02:37:20 2002
>@@ -0,0 +1,60 @@
>+diff -urN linux-2.4.18-clean/net/ipv4/netfilter/ipt_IMQX.c
linux-2.4.18/net/ipv4/netfilter/ipt_IMQX.c
>+--- linux-2.4.18-clean/net/ipv4/netfilter/ipt_IMQX.c Thu Jan 1 01:00:00
1970
>++++ linux-2.4.18/net/ipv4/netfilter/ipt_IMQX.c Sat Mar 23 01:48:23 2002
>+@@ -0,0 +1,56 @@
>++/* This is a module which is used for setting the from_imq field of an
skb. */
>++#include <linux/module.h>
>++#include <linux/skbuff.h>
>++#include <linux/ip.h>
>++#include <net/checksum.h>
>++
>++#include <linux/netfilter_ipv4/ip_tables.h>
>++
>++static unsigned int
>++target(struct sk_buff **pskb,
>++ unsigned int hooknum,
>++ const struct net_device *in,
>++ const struct net_device *out,
>++ const void *targinfo,
>++ void *userinfo)
>++{
>++ (*pskb)->from_imq = 1;
>++ (*pskb)->nfcache |= NFC_ALTERED;
>++
>++ return IPT_CONTINUE;
>++}
>++
>++static int
>++checkentry(const char *tablename,
>++ const struct ipt_entry *e,
>++ void *targinfo,
>++ unsigned int targinfosize,
>++ unsigned int hook_mask)
>++{
>++ if (strcmp(tablename, "mangle") != 0) {
>++ printk(KERN_WARNING "IMQX: can only be called from
\"mangle\" table, not \"s\"\n", tablename);
>++ return 0;
>++ }
>++
>++ return 1;
>++}
>++
>++static struct ipt_target ipt_imqx_reg
>++= { { NULL, NULL }, "IMQX", target, checkentry, NULL,
THIS_MODULE };
>++
>++static int __init init(void)
>++{
>++ if (ipt_register_target(&ipt_imqx_reg))
>++ return -EINVAL;
>++
>++ return 0;
>++}
>++
>++static void __exit fini(void)
>++{
>++ ipt_unregister_target(&ipt_imqx_reg);
>++}
>++
>++module_init(init);
>++module_exit(fini);
>++MODULE_LICENSE("GPL");
>diff -urN iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.config.in
iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.config.in
>--- iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.config.in Thu Jan
1 01:00:00 1970
>+++ iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.config.in Sat Mar 23
02:37:20 2002
>@@ -0,0 +1,4 @@
>+ dep_tristate ' MARK target support' CONFIG_IP_NF_TARGET_MARK
$CONFIG_IP_NF_MANGLE
>+ if [ "$CONFIG_IMQ" == "y" ]; then
>+ dep_tristate ' IMQX target support'
CONFIG_IP_NF_TARGET_IMQX $CONFIG_IP_NF_MANGLE
>+ fi
>diff -urN
iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.configure.help
iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.configure.help
>--- iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.configure.help Thu
Jan 1 01:00:00 1970
>+++ iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.configure.help Sat Mar 23
02:37:20 2002
>@@ -0,0 +1,8 @@
>+CONFIG_IP_NF_TARGET_MARK
>+IMQX target support
>+CONFIG_IP_NF_TARGET_IMQX
>+ IMQX allows you to exclude packets from beeing enqueued
>+ to the IMQ device
>+
>+ If you want to compile it as a module, say M here and read
>+ Documentation/modules.txt. If unsure, say `N'.
>diff -urN iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.help
iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.help
>--- iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.help Thu Jan 1
01:00:00 1970
>+++ iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.help Sat Mar 23 02:37:20
2002
>@@ -0,0 +1,14 @@
>+Author: Patrick McHardy <kaber@trash.net>
>+Status: working
>+
>+This patch adds IMQX (IMQ eXclude) target for excluding
>+traffic from beeing enqueued to the IMQ device.
>+
>+Usage:
>+
>+ IMQX
>+ This target excludes traffic from beeing enqueued
>+ to the IMQ device.
>+
>+Example:
>+ iptables -t mangle -A POSTROUTING -o eth0 -j IMQX
>diff -urN iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.makefile
iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.makefile
>--- iptables-1.2.6a-clean/patch-o-matic/extra/IMQX.patch.makefile Thu Jan 1
01:00:00 1970
>+++ iptables-1.2.6a/patch-o-matic/extra/IMQX.patch.makefile Sat Mar 23
02:37:20 2002
>@@ -0,0 +1,2 @@
>+obj-$(CONFIG_IP_NF_TARGET_MARK) += ipt_MARK.o
>+obj-$(CONFIG_IP_NF_TARGET_IMQX) += ipt_IMQX.o
>
>--------------3B62B4388E04887E67394F06--
>
>
>--__--__--
>
>Message: 5
>Date: Sat, 23 Mar 2002 02:49:23 +0100 (CET)
>From: Patrick McHardy <kaber@trash.net>
>To: Martin Devera <devik@cdi.cz>
>Cc: Nils Lichtenfeld <Nils.Lichtenfeld@gmx.net>,
> lartc ML <lartc@mailman.ds9a.nl>
>Subject: Re: [LARTC] How to mark a device not to be used with IMQ?
>
> This message is in MIME format. The first part should be readable text,
> while the remaining parts are likely unreadable without MIME-aware tools.
> Send mail to mime@docserver.cac.washington.edu for more info.
>
>---1463786496-272413705-1016848163=:9604
>Content-Type: TEXT/PLAIN; charset=US-ASCII
>
>Ahh stupid netscape fucked up the attachment :)
>Hope this works ..
>Bye Patrick
>
>---1463786496-272413705-1016848163=:9604
>Content-Type: TEXT/PLAIN; charset=US-ASCII;
name="IMQX_iptables-1.2.6a.patch"
>Content-Transfer-Encoding: BASE64
>Content-ID: <Pine.LNX.4.33.0203230249230.9604@ws.localnet>
>Content-Description:
>Content-Disposition: attachment;
filename="IMQX_iptables-1.2.6a.patch"
>
>ZGlmZiAtdXJOIGlwdGFibGVzLTEuMi42YS1jbGVhbi9leHRlbnNpb25zLy5J
>TVFYLXRlc3QgaXB0YWJsZXMtMS4yLjZhL2V4dGVuc2lvbnMvLklNUVgtdGVz
>dA0KLS0tIGlwdGFibGVzLTEuMi42YS1jbGVhbi9leHRlbnNpb25zLy5JTVFY
>LXRlc3QJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwDQorKysgaXB0YWJsZXMt
>MS4yLjZhL2V4dGVuc2lvbnMvLklNUVgtdGVzdAlTYXQgTWFyIDIzIDAyOjM3
>OjIwIDIwMDINCkBAIC0wLDAgKzEsMyBAQA0KKyMhL2Jpbi9zaA0KKyMgVHJ1
>ZSBpZiBJTVFYIHRhcmdldCBwYXRjaCBpcyBhcHBsaWVkLg0KK1sgLWYgJEtF
>Uk5FTF9ESVIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9JTVFYLmMgXSAmJiBl
>Y2hvIElNUVgNCmRpZmYgLXVyTiBpcHRhYmxlcy0xLjIuNmEtY2xlYW4vZXh0
>ZW5zaW9ucy9saWJpcHRfSU1RWC5jIGlwdGFibGVzLTEuMi42YS9leHRlbnNp
>b25zL2xpYmlwdF9JTVFYLmMNCi0tLSBpcHRhYmxlcy0xLjIuNmEtY2xlYW4v
>ZXh0ZW5zaW9ucy9saWJpcHRfSU1RWC5jCVRodSBKYW4gIDEgMDE6MDA6MDAg
>MTk3MA0KKysrIGlwdGFibGVzLTEuMi42YS9leHRlbnNpb25zL2xpYmlwdF9J
>TVFYLmMJU2F0IE1hciAyMyAwMjozNzo0OSAyMDAyDQpAQCAtMCwwICsxLDgx
>IEBADQorLyogU2hhcmVkIGxpYnJhcnkgYWRkLW9uIHRvIGlwdGFibGVzIHRv
>IGFkZCBJTVFYIHRhcmdldCBzdXBwb3J0LiAqLw0KKyNpbmNsdWRlIDxzdGRp
>by5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8c3RkbGli
>Lmg+DQorI2luY2x1ZGUgPGdldG9wdC5oPg0KKw0KKyNpbmNsdWRlIDxpcHRh
>Ymxlcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90
>YWJsZXMuaD4NCisNCisvKiBGdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IHVz
>YWdlIG1lc3NhZ2UuICovDQorc3RhdGljIHZvaWQNCitoZWxwKHZvaWQpDQor
>ew0KKwlwcmludGYoDQorIklNUVggdGFyZ2V0IHYlcyBoYXMgbm8gb3B0aW9u
>c1xuIiwgDQorTkVURklMVEVSX1ZFUlNJT04pOw0KK30NCisNCitzdGF0aWMg
>c3RydWN0IG9wdGlvbiBvcHRzW10gPSB7DQorCXsgMCB9DQorfTsNCisNCisv
>KiBJbml0aWFsaXplIHRoZSB0YXJnZXQuICovDQorc3RhdGljIHZvaWQNCitp
>bml0KHN0cnVjdCBpcHRfZW50cnlfdGFyZ2V0ICp0LCB1bnNpZ25lZCBpbnQg
>Km5mY2FjaGUpDQorew0KK30NCisNCisvKiBGdW5jdGlvbiB3aGljaCBwYXJz
>ZXMgY29tbWFuZCBvcHRpb25zOyByZXR1cm5zIHRydWUgaWYgaXQNCisgICBh
>dGUgYW4gb3B0aW9uICovDQorc3RhdGljIGludA0KK3BhcnNlKGludCBjLCBj
>aGFyICoqYXJndiwgaW50IGludmVydCwgdW5zaWduZWQgaW50ICpmbGFncywN
>CisgICAgICBjb25zdCBzdHJ1Y3QgaXB0X2VudHJ5ICplbnRyeSwNCisgICAg
>ICBzdHJ1Y3QgaXB0X2VudHJ5X3RhcmdldCAqKnRhcmdldCkNCit7DQorCWlm
>IChjKSANCisJCXJldHVybiAwOw0KKw0KKwlyZXR1cm4gMTsNCit9DQorDQor
>c3RhdGljIHZvaWQNCitmaW5hbF9jaGVjayh1bnNpZ25lZCBpbnQgZmxhZ3Mp
>DQorew0KK30NCisNCisvKiBQcmludHMgb3V0IHRoZSB0YXJnaW5mby4gKi8N
>CitzdGF0aWMgdm9pZA0KK3ByaW50KGNvbnN0IHN0cnVjdCBpcHRfaXAgKmlw
>LA0KKyAgICAgIGNvbnN0IHN0cnVjdCBpcHRfZW50cnlfdGFyZ2V0ICp0YXJn
>ZXQsDQorICAgICAgaW50IG51bWVyaWMpDQorew0KKwlwcmludGYoIklNUVgi
>KTsNCit9DQorDQorLyogU2F2ZXMgdGhlIHVuaW9uIGlwdF90YXJnaW5mbyBp
>biBwYXJzYWJsZSBmb3JtIHRvIHN0ZG91dC4gKi8NCitzdGF0aWMgdm9pZA0K
>K3NhdmUoY29uc3Qgc3RydWN0IGlwdF9pcCAqaXAsIGNvbnN0IHN0cnVjdCBp
>cHRfZW50cnlfdGFyZ2V0ICp0YXJnZXQpDQorew0KK30NCisNCitzdGF0aWMN
>CitzdHJ1Y3QgaXB0YWJsZXNfdGFyZ2V0IG1hcmsNCis9IHsgTlVMTCwNCisg
>ICAgIklNUVgiLA0KKyAgICBORVRGSUxURVJfVkVSU0lPTiwNCisgICAgMCwN
>CisgICAgMCwNCisgICAgJmhlbHAsDQorICAgICZpbml0LA0KKyAgICAmcGFy
>c2UsDQorICAgICZmaW5hbF9jaGVjaywNCisgICAgJnByaW50LA0KKyAgICAm
>c2F2ZSwNCisgICAgb3B0cw0KK307DQorDQordm9pZCBfaW5pdCh2b2lkKQ0K
>K3sNCisJcmVnaXN0ZXJfdGFyZ2V0KCZtYXJrKTsNCit9DQpkaWZmIC11ck4g
>aXB0YWJsZXMtMS4yLjZhLWNsZWFuL3BhdGNoLW8tbWF0aWMvZXh0cmEvSU1R
>WC5wYXRjaCBpcHRhYmxlcy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9J
>TVFYLnBhdGNoDQotLS0gaXB0YWJsZXMtMS4yLjZhLWNsZWFuL3BhdGNoLW8t
>bWF0aWMvZXh0cmEvSU1RWC5wYXRjaAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5
>NzANCisrKyBpcHRhYmxlcy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9J
>TVFYLnBhdGNoCVNhdCBNYXIgMjMgMDI6Mzc6MjAgMjAwMg0KQEAgLTAsMCAr
>MSw2MCBAQA0KK2RpZmYgLXVyTiBsaW51eC0yLjQuMTgtY2xlYW4vbmV0L2lw
>djQvbmV0ZmlsdGVyL2lwdF9JTVFYLmMgbGludXgtMi40LjE4L25ldC9pcHY0
>L25ldGZpbHRlci9pcHRfSU1RWC5jDQorLS0tIGxpbnV4LTIuNC4xOC1jbGVh
>bi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X0lNUVguYwlUaHUgSmFuICAxIDAx
>OjAwOjAwIDE5NzANCisrKysgbGludXgtMi40LjE4L25ldC9pcHY0L25ldGZp
>bHRlci9pcHRfSU1RWC5jCVNhdCBNYXIgMjMgMDE6NDg6MjMgMjAwMg0KK0BA
>IC0wLDAgKzEsNTYgQEANCisrLyogVGhpcyBpcyBhIG1vZHVsZSB3aGljaCBp
>cyB1c2VkIGZvciBzZXR0aW5nIHRoZSBmcm9tX2ltcSBmaWVsZCBvZiBhbiBz
>a2IuICovDQorKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisrI2luY2x1
>ZGUgPGxpbnV4L3NrYnVmZi5oPg0KKysjaW5jbHVkZSA8bGludXgvaXAuaD4N
>CisrI2luY2x1ZGUgPG5ldC9jaGVja3N1bS5oPg0KKysNCisrI2luY2x1ZGUg
>PGxpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oPg0KKysNCisrc3Rh
>dGljIHVuc2lnbmVkIGludA0KKyt0YXJnZXQoc3RydWN0IHNrX2J1ZmYgKipw
>c2tiLA0KKysgICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0sDQorKyAgICAg
>ICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqaW4sDQorKyAgICAgICBjb25z
>dCBzdHJ1Y3QgbmV0X2RldmljZSAqb3V0LA0KKysgICAgICAgY29uc3Qgdm9p
>ZCAqdGFyZ2luZm8sDQorKyAgICAgICB2b2lkICp1c2VyaW5mbykNCisrew0K
>KysJKCpwc2tiKS0+ZnJvbV9pbXEgPSAxOw0KKysJKCpwc2tiKS0+bmZjYWNo
>ZSB8PSBORkNfQUxURVJFRDsNCisrDQorKwlyZXR1cm4gSVBUX0NPTlRJTlVF
>Ow0KKyt9DQorKw0KKytzdGF0aWMgaW50DQorK2NoZWNrZW50cnkoY29uc3Qg
>Y2hhciAqdGFibGVuYW1lLA0KKysJICAgY29uc3Qgc3RydWN0IGlwdF9lbnRy
>eSAqZSwNCisrICAgICAgICAgICB2b2lkICp0YXJnaW5mbywNCisrICAgICAg
>ICAgICB1bnNpZ25lZCBpbnQgdGFyZ2luZm9zaXplLA0KKysgICAgICAgICAg
>IHVuc2lnbmVkIGludCBob29rX21hc2spDQorK3sNCisrCWlmIChzdHJjbXAo
>dGFibGVuYW1lLCAibWFuZ2xlIikgIT0gMCkgew0KKysJCXByaW50ayhLRVJO
>X1dBUk5JTkcgIklNUVg6IGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIFwibWFu
>Z2xlXCIgdGFibGUsIG5vdCBcIiVzXCJcbiIsIHRhYmxlbmFtZSk7DQorKwkJ
>cmV0dXJuIDA7DQorKwl9DQorKw0KKysJcmV0dXJuIDE7DQorK30NCisrDQor
>K3N0YXRpYyBzdHJ1Y3QgaXB0X3RhcmdldCBpcHRfaW1xeF9yZWcNCisrPSB7
>IHsgTlVMTCwgTlVMTCB9LCAiSU1RWCIsIHRhcmdldCwgY2hlY2tlbnRyeSwg
>TlVMTCwgVEhJU19NT0RVTEUgfTsNCisrDQorK3N0YXRpYyBpbnQgX19pbml0
>IGluaXQodm9pZCkNCisrew0KKysJaWYgKGlwdF9yZWdpc3Rlcl90YXJnZXQo
>JmlwdF9pbXF4X3JlZykpDQorKwkJcmV0dXJuIC1FSU5WQUw7DQorKw0KKysJ
>cmV0dXJuIDA7DQorK30NCisrDQorK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5p
>KHZvaWQpDQorK3sNCisrCWlwdF91bnJlZ2lzdGVyX3RhcmdldCgmaXB0X2lt
>cXhfcmVnKTsNCisrfQ0KKysNCisrbW9kdWxlX2luaXQoaW5pdCk7DQorK21v
>ZHVsZV9leGl0KGZpbmkpOw0KKytNT0RVTEVfTElDRU5TRSgiR1BMIik7DQpk
>aWZmIC11ck4gaXB0YWJsZXMtMS4yLjZhLWNsZWFuL3BhdGNoLW8tbWF0aWMv
>ZXh0cmEvSU1RWC5wYXRjaC5jb25maWcuaW4gaXB0YWJsZXMtMS4yLjZhL3Bh
>dGNoLW8tbWF0aWMvZXh0cmEvSU1RWC5wYXRjaC5jb25maWcuaW4NCi0tLSBp
>cHRhYmxlcy0xLjIuNmEtY2xlYW4vcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFY
>LnBhdGNoLmNvbmZpZy5pbglUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisr
>KyBpcHRhYmxlcy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFYLnBh
>dGNoLmNvbmZpZy5pbglTYXQgTWFyIDIzIDAyOjM3OjIwIDIwMDINCkBAIC0w
>LDAgKzEsNCBAQA0KKyAgICBkZXBfdHJpc3RhdGUgJyAgICBNQVJLIHRhcmdl
>dCBzdXBwb3J0JyBDT05GSUdfSVBfTkZfVEFSR0VUX01BUksgJENPTkZJR19J
>UF9ORl9NQU5HTEUNCisgICAgaWYgWyAiJENPTkZJR19JTVEiID09ICJ5IiBd
>OyB0aGVuDQorICAgICAgZGVwX3RyaXN0YXRlICcgICAgSU1RWCB0YXJnZXQg
>c3VwcG9ydCcgQ09ORklHX0lQX05GX1RBUkdFVF9JTVFYICRDT05GSUdfSVBf
>TkZfTUFOR0xFDQorICAgIGZpDQpkaWZmIC11ck4gaXB0YWJsZXMtMS4yLjZh
>LWNsZWFuL3BhdGNoLW8tbWF0aWMvZXh0cmEvSU1RWC5wYXRjaC5jb25maWd1
>cmUuaGVscCBpcHRhYmxlcy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9J
>TVFYLnBhdGNoLmNvbmZpZ3VyZS5oZWxwDQotLS0gaXB0YWJsZXMtMS4yLjZh
>LWNsZWFuL3BhdGNoLW8tbWF0aWMvZXh0cmEvSU1RWC5wYXRjaC5jb25maWd1
>cmUuaGVscAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisrKyBpcHRhYmxl
>cy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFYLnBhdGNoLmNvbmZp
>Z3VyZS5oZWxwCVNhdCBNYXIgMjMgMDI6Mzc6MjAgMjAwMg0KQEAgLTAsMCAr
>MSw4IEBADQorQ09ORklHX0lQX05GX1RBUkdFVF9NQVJLDQorSU1RWCB0YXJn
>ZXQgc3VwcG9ydA0KK0NPTkZJR19JUF9ORl9UQVJHRVRfSU1RWA0KKyAgSU1R
>WCBhbGxvd3MgeW91IHRvIGV4Y2x1ZGUgcGFja2V0cyBmcm9tIGJlZWluZyBl
>bnF1ZXVlZA0KKyAgdG8gdGhlIElNUSBkZXZpY2UNCisNCisgIElmIHlvdSB3
>YW50IHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5k
>IHJlYWQNCisgIERvY3VtZW50YXRpb24vbW9kdWxlcy50eHQuICBJZiB1bnN1
>cmUsIHNheSBgTicuDQpkaWZmIC11ck4gaXB0YWJsZXMtMS4yLjZhLWNsZWFu
>L3BhdGNoLW8tbWF0aWMvZXh0cmEvSU1RWC5wYXRjaC5oZWxwIGlwdGFibGVz
>LTEuMi42YS9wYXRjaC1vLW1hdGljL2V4dHJhL0lNUVgucGF0Y2guaGVscA0K
>LS0tIGlwdGFibGVzLTEuMi42YS1jbGVhbi9wYXRjaC1vLW1hdGljL2V4dHJh
>L0lNUVgucGF0Y2guaGVscAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisr
>KyBpcHRhYmxlcy0xLjIuNmEvcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFYLnBh
>dGNoLmhlbHAJU2F0IE1hciAyMyAwMjozNzoyMCAyMDAyDQpAQCAtMCwwICsx
>LDE0IEBADQorQXV0aG9yOiBQYXRyaWNrIE1jSGFyZHkgPGthYmVyQHRyYXNo
>Lm5ldD4NCitTdGF0dXM6IHdvcmtpbmcNCisNCitUaGlzIHBhdGNoIGFkZHMg
>SU1RWCAoSU1RIGVYY2x1ZGUpIHRhcmdldCBmb3IgZXhjbHVkaW5nDQordHJh
>ZmZpYyBmcm9tIGJlZWluZyBlbnF1ZXVlZCB0byB0aGUgSU1RIGRldmljZS4N
>CisNCitVc2FnZToNCisNCisgICAgSU1RWA0KKwlUaGlzIHRhcmdldCBleGNs
>dWRlcyB0cmFmZmljIGZyb20gYmVlaW5nIGVucXVldWVkDQorCXRvIHRoZSBJ
>TVEgZGV2aWNlLg0KKw0KK0V4YW1wbGU6DQorCWlwdGFibGVzIC10IG1hbmds
>ZSAtQSBQT1NUUk9VVElORyAtbyBldGgwIC1qIElNUVgNCmRpZmYgLXVyTiBp
>cHRhYmxlcy0xLjIuNmEtY2xlYW4vcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFY
>LnBhdGNoLm1ha2VmaWxlIGlwdGFibGVzLTEuMi42YS9wYXRjaC1vLW1hdGlj
>L2V4dHJhL0lNUVgucGF0Y2gubWFrZWZpbGUNCi0tLSBpcHRhYmxlcy0xLjIu
>NmEtY2xlYW4vcGF0Y2gtby1tYXRpYy9leHRyYS9JTVFYLnBhdGNoLm1ha2Vm
>aWxlCVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3MA0KKysrIGlwdGFibGVzLTEu
>Mi42YS9wYXRjaC1vLW1hdGljL2V4dHJhL0lNUVgucGF0Y2gubWFrZWZpbGUJ
>U2F0IE1hciAyMyAwMjozNzoyMCAyMDAyDQpAQCAtMCwwICsxLDIgQEANCitv
>YmotJChDT05GSUdfSVBfTkZfVEFSR0VUX01BUkspICs9IGlwdF9NQVJLLm8N
>CitvYmotJChDT05GSUdfSVBfTkZfVEFSR0VUX0lNUVgpICs9IGlwdF9JTVFY
>Lm8NCg=>---1463786496-272413705-1016848163=:9604--
>
>
>--__--__--
>
>_______________________________________________
>LARTC mailing list
>LARTC@mailman.ds9a.nl
>http://mailman.ds9a.nl/mailman/listinfo/lartc
>
>
>End of LARTC Digest
= = = = = = = = = = = = = = = = = = =
best regards!
Huang Xin Gang
hxgang@csnet4.cs.tsinghua.edu.cn
2002-05-14