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>