Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Nov 2005 17:04:16 -0200
From:      Thiago Damas <tdamas@gmail.com>
To:        Alexandre DELAY <alexandre.delay@free.fr>
Cc:        freebsd-pf@freebsd.org
Subject:   Re: Protocol filter capabilities
Message-ID:  <f8e3d83f0511241104t5b8fe8ev@mail.gmail.com>
In-Reply-To: <MAEBLPAGHGPMOKCBICBNGEOECIAA.alexandre.delay@free.fr>
References:  <f8e3d83f0511240547k585dd99fh@mail.gmail.com> <MAEBLPAGHGPMOKCBICBNGEOECIAA.alexandre.delay@free.fr>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_10486_33005932.1132859056435
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

  I'm sending the divert version of my program; use like this:

./p2p -b 65000 -k 65000 -e 65000 -g 65000 -i 65000

  ipfw add 100 divert 10000 tcp from 1024-65535 to any 1024-65535 via xl0
  ipfw add 60000 ip from any to any
  ipfw add 65000 pipe 1 ip from any to any via xl0 out
  ipfw add 65001 pipe 2 ip from any to any via xl0 in

  My idea is to use a stateful filter, to minimize the use of CPU
(this program runs on userland).
  Now, I'm looking at the PF code, to see where can I change.

2005/11/24, Alexandre DELAY <alexandre.delay@free.fr>:
> Well, If you want an idea, I found this:
> http://freebsd.rogness.net/snort_inline/ in the freebsd-ipfw archive.
>
> The thing is that it works with snort which is not as able as ethereal (a=
nd
> need to be subscribed) to detect application protocols.
>
> Ethereal already includes performant filters which only wait to be used.
>
> If you need help to develop around dummynet, maybe you can try to contact
> luigi who developped dummynet (http://info.iet.unipi.it/~luigi). He might=
 be
> interrested by this program.
>
> Maybe you can tell us more about your project?
>
> Cheers
>
> Alex
>
> -----Message d'origine-----
> De : owner-freebsd-pf@freebsd.org
> [mailto:owner-freebsd-pf@freebsd.org]De la part de Thiago Damas
> Envoy=E9 : jeudi 24 novembre 2005 14:47
> =C0 : freebsd-pf@freebsd.org
> Objet : Re: Protocol filter capabilities
>
>
>   I have a program that implements this, via divert socket with ipfw.
>   I think the better way to do this is with a program that listens
> with bfp/pcap, and inserts/deletes rules using ioctls in /dev/pf
>   For now, I'm trying to alter a queue, given a state, using /dev/pf,
> but it doesnt seen easy.  Altering the queue I can limit the bandwidth
> of a protocol; if I want to block the protocol, I can just delete the
> state of the firewall.
>   Have you some ideas?
>
>
> 2005/11/23, Alexandre DELAY <alexandre.delay@free.fr>:
> > hi guys,
> >
> > I am looking for an efficient way to filter different protocols, such a=
s
> > edonkey or BEEP.
> > For the moment, I think that pf doesn't support it.
> >
> > Don't you think that it would be a nice thing to be able to include suc=
h
> > "filters" from, for example, ethereal?
> > Ethereal support more than 34k different protocols. It woul be nice to =
be
> > able to choose from those filters and to apply some rules according to
> those
> > filters.
> >
> > Do you know a way to do this?
> >
> > Cheers
> >
> > Alex
> >
> > _______________________________________________
> > freebsd-pf@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-pf
> > To unsubscribe, send any mail to "freebsd-pf-unsubscribe@freebsd.org"
> >
> _______________________________________________
> freebsd-pf@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-pf
> To unsubscribe, send any mail to "freebsd-pf-unsubscribe@freebsd.org"
>
>

------=_Part_10486_33005932.1132859056435
Content-Type: application/octet-stream; name="p2p.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="p2p.c"

I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8
bmV0aW5ldC9pbl9zeXN0bS5oPgojaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgojaW5jbHVkZSA8bmV0
aW5ldC90Y3AuaD4KI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiNpbmNsdWRlIDxuZXRpbmV0L2lw
X2ljbXAuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUg
PHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0
eXBlLmg+CiNpbmNsdWRlIDxzeXMvcXVldWUuaD4KI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHN5c2xvZy5oPgoKI2RlZmluZSBUSU1FUiAxODAKI2Rl
ZmluZSBOVU1ESVZFUlQgMTAwMDAKI2RlZmluZSBTS0lQVE8gNjUwMDAKCgppbnQgdDsKY2hhciB0
ZXh0b1sxMDI0XTsKaW50IG5leHRza2lwdG87CmludCBza2lwdG9iaXR0b3JyZW50PVNLSVBUTzsK
aW50IHNraXB0b2themFhPVNLSVBUTzsKaW50IHNraXB0b2Vkb25rZXk9U0tJUFRPOwppbnQgc2tp
cHRvZ251dGVsbGE9U0tJUFRPOwppbnQgc2tpcHRvaXJjPVNLSVBUTzsKCgp1bnNpZ25lZCBpbnQK
YWxhcm0gKHVuc2lnbmVkIGludCBzZWNvbmRzKQp7CiAgc3RydWN0IGl0aW1lcnZhbCBvbGQsIG5l
dzsKICBuZXcuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDA7CiAgbmV3Lml0X2ludGVydmFsLnR2X3Nl
YyA9IDA7CiAgbmV3Lml0X3ZhbHVlLnR2X3VzZWMgPSAwOwogIG5ldy5pdF92YWx1ZS50dl9zZWMg
PSAobG9uZyBpbnQpIHNlY29uZHM7CiAgaWYgKHNldGl0aW1lciAoSVRJTUVSX1JFQUwsICZuZXcs
ICZvbGQpIDwgMCkKICAgIHJldHVybiAwOwogIGVsc2UKICAgIHJldHVybiBvbGQuaXRfdmFsdWUu
dHZfc2VjOwp9CgpzdHJ1Y3Qgc3RhaWxxaGVhZCAqaGVhZHA7CgpzdHJ1Y3QgZW50cnkgewogIFNU
QUlMUV9FTlRSWShlbnRyeSkgZW50cmllczsKICBzdHJ1Y3QgaW5fYWRkciBpcGE7CiAgc2hvcnQg
aW50IHBhOwogIHN0cnVjdCBpbl9hZGRyIGlwYjsKICBzaG9ydCBpbnQgcGI7CiAgaW50IHRzOwp9
OwoKU1RBSUxRX0hFQUQobGlzdGhlYWQsIGVudHJ5KSBoZWFkID0gU1RBSUxRX0hFQURfSU5JVElB
TElaRVIoaGVhZCk7Cgp2b2lkIGxpc3RfaW5pdCh2b2lkKSB7CiAgU1RBSUxRX0lOSVQoJmhlYWQp
Owp9CgppbnQKc2VhcmNoKHN0cnVjdCBpbl9hZGRyIGlwYSwgc2hvcnQgaW50IHBhLCBzdHJ1Y3Qg
aW5fYWRkciBpcGIsIHNob3J0IGludCBwYikgewogIHN0cnVjdCBlbnRyeSAqbnA7CiAgY2hhciBz
aXBhWzIwXSwgc2lwYlsyMF07CgogIFNUQUlMUV9GT1JFQUNIKG5wLCAmaGVhZCwgZW50cmllcykg
ewogICAgaWYoKHQgLSBucC0+dHMpID49IDIqVElNRVIgKSB7CiAgICAgIHN0cmNweShzaXBhLCBp
bmV0X250b2EobnAtPmlwYSkpOwogICAgICBzdHJjcHkoc2lwYiwgaW5ldF9udG9hKG5wLT5pcGIp
KTsKICAgICAgc3ByaW50Zih0ZXh0bywgIkZsdXhvIHJlbW92aWRvOiAlczolZCA8LT4gJXM6JWQi
LCBzaXBhLCBudG9ocyhucC0+cGEpLCBzaXBiLCBudG9ocyhucC0+cGIpKTsKICAgICAgc3lzbG9n
KExPR19JTkZPfExPR19MT0NBTDAsIHRleHRvKTsKICAgICAgU1RBSUxRX1JFTU9WRSgmaGVhZCwg
bnAsIGVudHJ5LCBlbnRyaWVzKTsKICAgICAgZnJlZShucCk7CiAgICB9CiAgICBpZigobnAtPmlw
YS5zX2FkZHIgPT0gaXBhLnNfYWRkcikgJiYgKG5wLT5pcGIuc19hZGRyID09IGlwYi5zX2FkZHIp
CiAgICAgICAmJiAobnAtPnBhID09IHBhKSAmJiAobnAtPnBiID09IHBiKSkgewogICAgICBucC0+
dHMgPSB0OwogICAgICByZXR1cm4oMSk7CiAgICB9CiAgICBpZigobnAtPmlwYS5zX2FkZHIgPT0g
aXBiLnNfYWRkcikgJiYgKG5wLT5pcGIuc19hZGRyID09IGlwYS5zX2FkZHIpCiAgICAgICAmJiAo
bnAtPnBhID09IHBiKSAmJiAobnAtPnBiID09IHBhKSkgewogICAgICBucC0+dHMgPSB0OyAKICAg
ICAgcmV0dXJuKDEpOwogICAgfQogIH0KICByZXR1cm4oMCk7Cn0KCnZvaWQgYWRkKHN0cnVjdCBp
bl9hZGRyIGlwYSwgc2hvcnQgaW50IHBhLCBzdHJ1Y3QgaW5fYWRkciBpcGIsIHNob3J0IGludCBw
YikgewogIHN0cnVjdCBlbnRyeSAqbnA7CiAgbnAgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBlbnRy
eSkpOwogIG5wLT5pcGEgPSBpcGE7CiAgbnAtPmlwYiA9IGlwYjsKICBucC0+cGEgPSBwYTsKICBu
cC0+cGIgPSBwYjsKICBucC0+dHMgPSB0OyAKICBTVEFJTFFfSU5TRVJUX1RBSUwoJmhlYWQsIG5w
LCBlbnRyaWVzKTsKfQoKdm9pZCBjYXRjaChpbnQgc2lnKSB7CiAgdCA9IHRpbWUoTlVMTCk7CiAg
c2lnbmFsKFNJR0FMUk0sIGNhdGNoKTsKICBhbGFybShUSU1FUik7Cn0KCgoKaW50CmJpdHRvcnJl
bnQoY2hhciAqbWVtLCBpbnQgbGVuKQp7CiAgY2hhcgkJc3RyaW5nICAgIFtdID0gezB4MTMsICdC
JywgJ2knLCAndCcsICdUJywgJ28nLCAncicsICdyJywgJ2UnLCAnbicsICd0JywgJyAnLCAncCcs
ICdyJywgJ28nLCAndCcsICdvJywgJ2MnLCAnbycsICdsJywgMHgwfTsKICBpZiAoc3RybGVuKHN0
cmluZykgPiBsZW4pCiAgICByZXR1cm4gKDApOwogIGlmIChzdHJuY21wKG1lbSwgc3RyaW5nLCBz
dHJsZW4oc3RyaW5nKSkgPT0gMCkKICAgIHJldHVybiAoMSk7CiAgcmV0dXJuICgwKTsKfQoKaW50
CmthemFhKGNoYXIgKm1lbSwgaW50IGxlbikKewogIGNoYXIJCXN0cmluZzEgICBbXSA9ICJHRVQg
Ly5maWxlcyI7CiAgY2hhcgkJc3RyaW5nMiAgIFtdID0gIkdFVCAvLmhhc2g9IjsKICBpZiAoKHN0
cmxlbihzdHJpbmcxKSA+IGxlbikgfHwgKHN0cmxlbihzdHJpbmcyKSA+IGxlbikpCiAgICByZXR1
cm4gKDApOwogIGlmICgoc3RybmNtcChtZW0sIHN0cmluZzEsIHN0cmxlbihzdHJpbmcxKSkgPT0g
MCkgfHwgKHN0cm5jbXAobWVtLCBzdHJpbmcyLCBzdHJsZW4oc3RyaW5nMikpID09IDApKQogICAg
cmV0dXJuICgxKTsKICByZXR1cm4gKDApOwp9CgppbnQKZWRvbmtleShjaGFyICptZW0sIGludCBs
ZW4pCnsKICBpbnQJCWk7CiAgaWYgKGxlbiA8IDcpCiAgICByZXR1cm4gKDApOwogIGlmICgoKiht
ZW0pID09IChjaGFyKTB4ZTMgfHwgKihtZW0pID09IChjaGFyKTB4YzUpICYmICgqKG1lbSArIDUp
ID09IChjaGFyKTB4MDEpKSB7CiAgICBtZW1jcHkoJmksIChtZW0gKyAxKSwgNCk7CiAgICBpZiAo
bGVuID09IChpICsgNSkpIHsKICAgICAgcmV0dXJuICgxKTsKICAgIH0KICB9CiAgcmV0dXJuICgw
KTsKfQoKaW50CmdudXRlbGxhKGNoYXIgKm1lbSwgaW50IGxlbikKewogIGNoYXIJCXN0cmluZyAg
ICBbXSA9ICJHTlVURUxMQSAiOwogIGlmIChzdHJsZW4oc3RyaW5nKSA+IGxlbikKICAgIHJldHVy
biAoMCk7CiAgaWYgKHN0cm5jbXAobWVtLCBzdHJpbmcsIHN0cmxlbihzdHJpbmcpKSA9PSAwKQog
ICAgcmV0dXJuICgxKTsKICByZXR1cm4gKDApOwp9CgppbnQKaXJjKGNoYXIgKm1lbSwgaW50IGxl
bikKewogIGNoYXIJCXN0cmluZyAgICBbXSA9ICJOT1RJQ0UgQVVUSCA6IjsKICBpZiAoc3RybGVu
KHN0cmluZykgPiBsZW4pCiAgICByZXR1cm4gKDApOwogIGlmIChzdHJuY21wKG1lbSwgc3RyaW5n
LCBzdHJsZW4oc3RyaW5nKSkgPT0gMCkKICAgIHJldHVybiAoMSk7CiAgcmV0dXJuICgwKTsKfQoK
c3RhdGljIGNoYXIgICAgKkZvcm1hdFBhY2tldChzdHJ1Y3QgaXAgKik7CgpzdGF0aWMgY2hhciAg
ICAqCkZvcm1hdFBhY2tldChzdHJ1Y3QgaXAgKmlwKQp7CiAgc3RhdGljIGNoYXIJYnVmIFsyNTZd
OwogIHN0cnVjdCB0Y3BoZHIgICp0Y3BoZHI7CiAgc3RydWN0IHVkcGhkciAgKnVkcGhkcjsKICBz
dHJ1Y3QgaWNtcCAgICAqaWNtcGhkcjsKICBjaGFyCQlzcmMgICAgICAgWzIwXTsKICBjaGFyCQlk
c3QgICAgICAgWzIwXTsKCiAgc3RyY3B5KHNyYywgaW5ldF9udG9hKGlwLT5pcF9zcmMpKTsKICBz
dHJjcHkoZHN0LCBpbmV0X250b2EoaXAtPmlwX2RzdCkpOwoKICBzd2l0Y2ggKGlwLT5pcF9wKSB7
CiAgY2FzZSBJUFBST1RPX1RDUDoKICAgIHRjcGhkciA9IChzdHJ1Y3QgdGNwaGRyICopKChjaGFy
ICopaXAgKyAoaXAtPmlwX2hsIDw8IDIpKTsKICAgIHNwcmludGYoYnVmLCAiW1RDUF0gJXM6JWQg
LT4gJXM6JWQiLAoJICAgIHNyYywKCSAgICBudG9ocyh0Y3BoZHItPnRoX3Nwb3J0KSwKCSAgICBk
c3QsCgkgICAgbnRvaHModGNwaGRyLT50aF9kcG9ydCkpOwogICAgYnJlYWs7CgogIGNhc2UgSVBQ
Uk9UT19VRFA6CiAgICB1ZHBoZHIgPSAoc3RydWN0IHVkcGhkciAqKSgoY2hhciAqKWlwICsgKGlw
LT5pcF9obCA8PCAyKSk7CiAgICBzcHJpbnRmKGJ1ZiwgIltVRFBdICVzOiVkIC0+ICVzOiVkIiwK
CSAgICBzcmMsCgkgICAgbnRvaHModWRwaGRyLT51aF9zcG9ydCksCgkgICAgZHN0LAoJICAgIG50
b2hzKHVkcGhkci0+dWhfZHBvcnQpKTsKICAgIGJyZWFrOwoKICBjYXNlIElQUFJPVE9fSUNNUDoK
ICAgIGljbXBoZHIgPSAoc3RydWN0IGljbXAgKikoKGNoYXIgKilpcCArIChpcC0+aXBfaGwgPDwg
MikpOwogICAgc3ByaW50ZihidWYsICJbSUNNUF0gJXMgLT4gJXMgJXUoJXUpIiwKCSAgICBzcmMs
CgkgICAgZHN0LAoJICAgIGljbXBoZHItPmljbXBfdHlwZSwKCSAgICBpY21waGRyLT5pY21wX2Nv
ZGUpOwogICAgYnJlYWs7CgogIGRlZmF1bHQ6CiAgICBzcHJpbnRmKGJ1ZiwgIlslZF0gJXMgLT4g
JXMgIiwgaXAtPmlwX3AsIHNyYywgZHN0KTsKICAgIGJyZWFrOwogIH0KCiAgcmV0dXJuIGJ1ZjsK
fQoKCmludApwcm9jZXNzYShjaGFyICptZW0sIGludCBsZW4pCnsKICBzdHJ1Y3QgaXAgICAgICAq
aXBzID0gKHN0cnVjdCBpcCAqKW1lbTsKICBzdHJ1Y3QgdGNwaGRyICAqdGNwcyA9IChzdHJ1Y3Qg
dGNwaGRyICopKG1lbSArIHNpemVvZihzdHJ1Y3QgaXApKTsKICBpbnQJCWRhdGFvZmZzZXQgPSAo
dGNwcy0+dGhfb2ZmIDw8IDIpICsgc2l6ZW9mKHN0cnVjdCBpcCk7CgogIGlmICgoaXBzLT5pcF92
ICE9IDQpIHx8IChpcHMtPmlwX2hsICE9IDUpIHx8IGlwcy0+aXBfcCAhPSBJUFBST1RPX1RDUCkg
ewogICAgc3lzbG9nKExPR19JTkZPfExPR19MT0NBTDAsICJwYWNrZXQgaXMgbm90IHRjcC9pcCIp
OwogICAgcmV0dXJuICgwKTsKICB9CiAgaWYoc2VhcmNoKGlwcy0+aXBfc3JjLCB0Y3BzLT50aF9z
cG9ydCwgaXBzLT5pcF9kc3QsIHRjcHMtPnRoX2Rwb3J0KSkgewogICAgcmV0dXJuKDEpOwogIH0K
ICBpZiAoKGxlbiAtIGRhdGFvZmZzZXQpID09IDApCiAgICByZXR1cm4gKDApOwogIGlmIChiaXR0
b3JyZW50KG1lbSArIGRhdGFvZmZzZXQsIChsZW4gLSBkYXRhb2Zmc2V0KSkpIHsKICAgIHNwcmlu
dGYodGV4dG8sICIlcyAtPiAlcyIsICJCaXRUb3JyZW50IiwgRm9ybWF0UGFja2V0KChzdHJ1Y3Qg
aXAgKiltZW0pKTsKICAgIHN5c2xvZyhMT0dfSU5GT3xMT0dfTE9DQUwwLCB0ZXh0byk7CiAgICBh
ZGQoaXBzLT5pcF9zcmMsIHRjcHMtPnRoX3Nwb3J0LCBpcHMtPmlwX2RzdCwgdGNwcy0+dGhfZHBv
cnQpOwogICAgbmV4dHNraXB0byA9IHNraXB0b2JpdHRvcnJlbnQ7CiAgICByZXR1cm4gKDEpOwog
IH0KICBpZiAoa2F6YWEobWVtICsgZGF0YW9mZnNldCwgKGxlbiAtIGRhdGFvZmZzZXQpKSkgewog
ICAgc3ByaW50Zih0ZXh0bywgIiVzIC0+ICVzIiwgIkthWmFBIiwgRm9ybWF0UGFja2V0KChzdHJ1
Y3QgaXAgKiltZW0pKTsKICAgIHN5c2xvZyhMT0dfSU5GT3xMT0dfTE9DQUwwLCB0ZXh0byk7CiAg
ICBhZGQoaXBzLT5pcF9zcmMsIHRjcHMtPnRoX3Nwb3J0LCBpcHMtPmlwX2RzdCwgdGNwcy0+dGhf
ZHBvcnQpOwogICAgbmV4dHNraXB0byA9IHNraXB0b2themFhOwogICAgcmV0dXJuICgxKTsKICB9
CiAgaWYgKGVkb25rZXkobWVtICsgZGF0YW9mZnNldCwgKGxlbiAtIGRhdGFvZmZzZXQpKSkgewog
ICAgc3ByaW50Zih0ZXh0bywgIiVzIC0+ICVzIiwgImVEb25rZXkiLCBGb3JtYXRQYWNrZXQoKHN0
cnVjdCBpcCAqKW1lbSkpOwogICAgc3lzbG9nKExPR19JTkZPfExPR19MT0NBTDAsIHRleHRvKTsK
ICAgIGFkZChpcHMtPmlwX3NyYywgdGNwcy0+dGhfc3BvcnQsIGlwcy0+aXBfZHN0LCB0Y3BzLT50
aF9kcG9ydCk7CiAgICBuZXh0c2tpcHRvID0gc2tpcHRvZWRvbmtleTsKICAgIHJldHVybiAoMSk7
CiAgfQogIGlmIChnbnV0ZWxsYShtZW0gKyBkYXRhb2Zmc2V0LCAobGVuIC0gZGF0YW9mZnNldCkp
KSB7CiAgICBzcHJpbnRmKHRleHRvLCAiJXMgLT4gJXMiLCAiR251dGVsbGEiLCBGb3JtYXRQYWNr
ZXQoKHN0cnVjdCBpcCAqKW1lbSkpOwogICAgc3lzbG9nKExPR19JTkZPfExPR19MT0NBTDAsIHRl
eHRvKTsKICAgIGFkZChpcHMtPmlwX3NyYywgdGNwcy0+dGhfc3BvcnQsIGlwcy0+aXBfZHN0LCB0
Y3BzLT50aF9kcG9ydCk7CiAgICBuZXh0c2tpcHRvID0gc2tpcHRvZ251dGVsbGE7CiAgICByZXR1
cm4gKDEpOwogIH0KICBpZiAoaXJjKG1lbSArIGRhdGFvZmZzZXQsIChsZW4gLSBkYXRhb2Zmc2V0
KSkpIHsKICAgIHNwcmludGYodGV4dG8sICIlcyAtPiAlcyIsICJJUkMiLCBGb3JtYXRQYWNrZXQo
KHN0cnVjdCBpcCAqKW1lbSkpOwogICAgc3lzbG9nKExPR19JTkZPfExPR19MT0NBTDAsIHRleHRv
KTsKICAgIGFkZChpcHMtPmlwX3NyYywgdGNwcy0+dGhfc3BvcnQsIGlwcy0+aXBfZHN0LCB0Y3Bz
LT50aF9kcG9ydCk7CiAgICBuZXh0c2tpcHRvID0gc2tpcHRvaXJjOwogICAgcmV0dXJuICgxKTsK
ICB9CiAgcmV0dXJuICgwKTsKfQoKaW50CnNvY2tldF9kaXZlcnRfb3BlbihpbnQgbnVtKQp7CiAg
aW50CQlmZDsKICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKCiAgaWYgKChmZCA9IHNvY2tldChQ
Rl9JTkVULCBTT0NLX1JBVywgSVBQUk9UT19ESVZFUlQpKSA9PSAtMSkgewogICAgcGVycm9yKCJz
b2NrZXQiKTsKICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICB9CiAgYWRkci5zaW5fZmFtaWx5ID0g
UEZfSU5FVDsKICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgYWRkci5zaW5f
cG9ydCA9IGh0b25zKG51bSk7CgogIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopJmFk
ZHIsIHNpemVvZihhZGRyKSkgPT0gLTEpIHsKICAgIHBlcnJvcigiYmluZCIpOwogICAgZXhpdChF
WElUX0ZBSUxVUkUpOwogIH0KICByZXR1cm4gKGZkKTsKfQoKaW50CnNvY2tldF9kaXZlcnRfY2xv
c2UoaW50IGZkKQp7CiAgY2xvc2UoZmQpOwogIHJldHVybiAoMCk7Cn0KCmludApzb2NrZXRfZGl2
ZXJ0X2dldChpbnQgZmQsIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2EsIGNoYXIgKmJ1ZiwgaW50IGJ1
ZmxlbikKewogIGludAkJbGVuICAgICAgICwgYWRkcmxlbjsKCiAgYWRkcmxlbiA9IHNpemVvZigq
c2EpOwogIGxlbiA9IHJlY3Zmcm9tKGZkLCBidWYsIGJ1ZmxlbiwgMCwKCQkgKHN0cnVjdCBzb2Nr
YWRkciAqKXNhLCAmYWRkcmxlbik7CiAgaWYgKGxlbiA9PSAtMSkKICAgIHBlcnJvcigicmVjdmZy
b20iKTsKCiAgcmV0dXJuIChsZW4pOwp9CgppbnQKc29ja2V0X2RpdmVydF9zZW5kKGludCBmZCwg
c3RydWN0IHNvY2thZGRyX2luIHNhLCBjaGFyICpidWYsIGludCBidWZsZW4sIGludCBza2lwdG8p
CnsKICBpbnQJCWxlbjsKICBpZiAoc2tpcHRvKSB7CiAgICBzYS5zaW5fcG9ydCA9IG5leHRza2lw
dG87CiAgfQogIGxlbiA9IHNlbmR0byhmZCwgYnVmLCBidWZsZW4sIDAsCgkgICAgICAgKHN0cnVj
dCBzb2NrYWRkciAqKSZzYSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwogIC8vaWYgKGxlbiAh
PSBidWZsZW4pCiAgLy9wZXJyb3IoInNlbmR0byIpOwoKICByZXR1cm4gKGxlbik7Cn0KCgppbnQK
Z29vbihpbnQgZmQpCnsKICBzdHJ1Y3Qgc29ja2FkZHJfaW4gczsKICB2b2lkICAgICAgICAgICAq
bWVtb3J5OwogIHNpemVfdAkJbGVuID0gNjU1MzU7CiAgaW50CQlsOwoKICBtZW1vcnkgPSBtYWxs
b2MobGVuICogc2l6ZW9mKGNoYXIpKTsKCiAgd2hpbGUgKDEpIHsKICAgIGwgPSBzb2NrZXRfZGl2
ZXJ0X2dldChmZCwgJnMsIG1lbW9yeSwgbGVuKTsKICAgIGlmIChwcm9jZXNzYShtZW1vcnksIGwp
KSB7CiAgICAgIHNvY2tldF9kaXZlcnRfc2VuZChmZCwgcywgbWVtb3J5LCBsLCAxKTsKICAgIH0g
ZWxzZSB7CiAgICAgIHNvY2tldF9kaXZlcnRfc2VuZChmZCwgcywgbWVtb3J5LCBsLCAwKTsKICAg
IH0KICB9CiAgcmV0dXJuICgwKTsKfQoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7
CiAgaW50CQlmZDsKICBpbnQgCQljaDsKICAKICBpZiAoZ2V0ZXVpZCgpICE9IDApIHsKICAgIGZw
cmludGYoc3RkZXJyLCAiR3Vlc3MgbWUsIHlvdSdyZSBub3cgYWxsb3dlZCB0byBydW4gbWUuXG4i
KTsKICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICB9CgogIHdoaWxlICgoY2ggPSBnZXRvcHQoYXJn
YywgYXJndiwgImI6azplOmc6aToiKSkgIT0gLTEpIHsKICAgIHN3aXRjaCAoY2gpIHsKICAgIGNh
c2UgJ2InOgogICAgCXNraXB0b2JpdHRvcnJlbnQgPSBhdG9pKG9wdGFyZyk7CiAgICAJYnJlYWs7
CiAgICBjYXNlICdrJzoKICAgIAlza2lwdG9rYXphYSA9IGF0b2kob3B0YXJnKTsKICAgIAlicmVh
azsKICAgIGNhc2UgJ2UnOgogICAgCXNraXB0b2Vkb25rZXkgPSBhdG9pKG9wdGFyZyk7CiAgICAJ
YnJlYWs7CiAgICBjYXNlICdnJzoKICAgIAlza2lwdG9nbnV0ZWxsYSA9IGF0b2kob3B0YXJnKTsK
ICAgIAlicmVhazsKICAgIGNhc2UgJ2knOgogICAgCXNraXB0b2lyYyA9IGF0b2kob3B0YXJnKTsK
ICAgIAlicmVhazsKICAgIGNhc2UgJz8nOgogICAgZGVmYXVsdDoKICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlVzbzogPHAycD4gWy1iIHJlZ3JhX2JpdHRvcnJlbnRdIFstayByZWdyYV9rYXphYV0g
Wy1lIHJlZ3JhX2Vkb25rZXldIFstZyByZWdyYV9nbnV0ZWxsYV0gWy1pIHJlZ3JhX2lyY10iKTsK
ICAgIH0KICB9CiAgYXJnYyAtPSBvcHRpbmQ7CiAgYXJndiArPSBvcHRpbmQ7CgogIGZkID0gc29j
a2V0X2RpdmVydF9vcGVuKE5VTURJVkVSVCk7CgogIGxpc3RfaW5pdCgpOwoKICBkYWVtb24oMCww
KTsKICBhbGFybShUSU1FUik7CiAgc2lnbmFsKFNJR0FMUk0sIGNhdGNoKTsKICB0ID0gdGltZShO
VUxMKTsKCiAgZ29vbihmZCk7CgogIHNvY2tldF9kaXZlcnRfY2xvc2UoZmQpOwoKICByZXR1cm4g
KEVYSVRfU1VDQ0VTUyk7Cn0K
------=_Part_10486_33005932.1132859056435--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f8e3d83f0511241104t5b8fe8ev>