[PATCH] random match

Aki M Laukkanen amlaukka@cc.helsinki.fi
Fri, 9 Jun 2000 01:16:19 +0300 (EET DST)


  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.

--0-758280319-960502579=:32574
Content-Type: TEXT/PLAIN; charset=US-ASCII

As I promised some days earlier, here is the simplified random match. Let
me demonstrate:

iptables -N random-drop
iptables -A random-drop -m random --prob 0.1 -j DROP
iptables -A random-drop -j ACCEPT

This would drop approximately every tenth packet. Of course you'd be
better off using a real active congestion management scheme instead of
this one. :)

Tested quickly with ping and seems to work.

-- 
D.

--0-758280319-960502579=:32574
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="iptables-libipt_random-1.1.0.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.20.0006090116190.32574@sirppi.helsinki.fi>
Content-Description: 
Content-Disposition: attachment; filename="iptables-libipt_random-1.1.0.patch"

ZGlmZiAtdXJOIC0tZXhjbHVkZT0qfiAtLWV4Y2x1ZGU9Ki5mbGMgaXB0YWJs
ZXMtMS4xLjAvZXh0ZW5zaW9ucy9NYWtlZmlsZSBpcHRhYmxlcy0xLjEuMC5u
ZXcvZXh0ZW5zaW9ucy9NYWtlZmlsZQ0KLS0tIGlwdGFibGVzLTEuMS4wL2V4
dGVuc2lvbnMvTWFrZWZpbGUJVGh1IE1hciAzMCAwODozMDo0MyAyMDAwDQor
KysgaXB0YWJsZXMtMS4xLjAubmV3L2V4dGVuc2lvbnMvTWFrZWZpbGUJRnJp
IEp1biAgOSAwMDozMTo1NSAyMDAwDQpAQCAtMSw2ICsxLDYgQEANCiAjISAv
dXNyL2Jpbi9tYWtlDQogDQotUEZfRVhUX1NMSUI6PXRjcCB1ZHAgaWNtcCBt
YWMgbGltaXQgc3RhbmRhcmQgUkVKRUNUIExPRyB1bmNsZWFuIHN0YXRlIG11
bHRpcG9ydCB0b3MgVE9TIG1hcmsgTUFSSyBvd25lciBTTkFUIEROQVQgTUFT
UVVFUkFERSBSRURJUkVDVA0KK1BGX0VYVF9TTElCOj10Y3AgdWRwIGljbXAg
bWFjIGxpbWl0IHN0YW5kYXJkIFJFSkVDVCBMT0cgdW5jbGVhbiBzdGF0ZSBt
dWx0aXBvcnQgdG9zIFRPUyBtYXJrIE1BUksgb3duZXIgU05BVCBETkFUIE1B
U1FVRVJBREUgUkVESVJFQ1QgcmFuZG9tDQogU0hBUkVEX0xJQlMrPSQoZm9y
ZWFjaCBULCQoUEZfRVhUX1NMSUIpLGV4dGVuc2lvbnMvbGliaXB0XyQoVCku
c28pDQogRVhUUkFfSU5TVEFMTFMrPSQoZm9yZWFjaCBULCAkKFBGX0VYVF9T
TElCKSwgJChERVNURElSKSQoTElCRElSKS9pcHRhYmxlcy9saWJpcHRfJChU
KS5zbykNCiANCmRpZmYgLXVyTiAtLWV4Y2x1ZGU9Kn4gLS1leGNsdWRlPSou
ZmxjIGlwdGFibGVzLTEuMS4wL2V4dGVuc2lvbnMvbGliaXB0X3JhbmRvbS5j
IGlwdGFibGVzLTEuMS4wLm5ldy9leHRlbnNpb25zL2xpYmlwdF9yYW5kb20u
Yw0KLS0tIGlwdGFibGVzLTEuMS4wL2V4dGVuc2lvbnMvbGliaXB0X3JhbmRv
bS5jCVRodSBKYW4gIDEgMDI6MDA6MDAgMTk3MA0KKysrIGlwdGFibGVzLTEu
MS4wLm5ldy9leHRlbnNpb25zL2xpYmlwdF9yYW5kb20uYwlGcmkgSnVuICA5
IDAwOjU3OjE0IDIwMDANCkBAIC0wLDAgKzEsMTM2IEBADQorLyogDQorICog
bGliaXB0X3JhbmRvbS5jIC0gc2hhcmVkIGxpYnJhcnkgYWRkLW9uIHRvIGlw
dGFibGVzIHRvIGFkZCByYW5kb20gbWF0Y2guDQorICogQ29weXJpZ2h0IChD
KSAyMDAwIEFraSBMYXVra2FuZW4gPGFtbGF1a2thQGNzLmhlbHNpbmtpLmZp
Pg0KKyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
DQorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Ki8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RyaW5n
Lmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxnZXRvcHQu
aD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPGlwdGFibGVz
Lmg+DQorI2luY2x1ZGUgPGN0eXBlLmg+DQorI2luY2x1ZGUgPGxpbnV4L25l
dGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9u
ZXRmaWx0ZXJfaXB2NC9pcHRfcmFuZG9tLmg+DQorDQorI2lmbmRlZiBUUlVF
DQorI2RlZmluZSBUUlVFIDENCisjZW5kaWYNCisjaWZuZGVmIEZBTFNFDQor
I2RlZmluZSBGQUxTRSAwDQorI2VuZGlmDQorDQorDQorc3RhdGljIHZvaWQg
aGVscF9tYXRjaCh2b2lkKQ0KK3sNCisJcHJpbnRmKA0KKyJyYW5kb20gb3B0
aW9uczpcbiINCisiLS1wcm9iPVBFUkNFTlRBR0UJcHJvYmFiaWxpdHlcbiIp
Ow0KK30NCisNCisNCitzdGF0aWMgc3RydWN0IG9wdGlvbiBtYXRjaF9vcHRz
W10gPSB7DQorCXsgInByb2IiLCAxLCAwLCAnMScgfSwNCisJeyAwIH0NCit9
Ow0KKw0KKw0KKy8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSB0YXJn
ZXQuICovDQorc3RhdGljIHZvaWQgaW5pdF9tYXRjaChzdHJ1Y3QgaXB0X2Vu
dHJ5X21hdGNoICptLCB1bnNpZ25lZCBpbnQgKm5mY2FjaGUpDQorew0KKwkq
bmZjYWNoZSB8PSBORkNfVU5LTk9XTjsNCit9DQorDQorDQorI2RlZmluZSBJ
UFRfUkFORE9NX09QVF9QUk9CIDB4MDENCisNCisvKiBGdW5jdGlvbiB3aGlj
aCBwYXJzZXMgY29tbWFuZCBvcHRpb25zOyByZXR1cm5zIHRydWUgaWYgaXQN
CisgICBhdGUgYW4gb3B0aW9uICovDQorc3RhdGljIGludCBwYXJzZV9tYXRj
aChpbnQgYywgY2hhciAqKmFyZ3YsIGludCBpbnZlcnQsIHVuc2lnbmVkIGlu
dCAqZmxhZ3MsDQorCQkgICAgICAgY29uc3Qgc3RydWN0IGlwdF9lbnRyeSAq
ZW50cnksIHVuc2lnbmVkIGludCAqbmZjYWNoZSwNCisJCSAgICAgICBzdHJ1
Y3QgaXB0X2VudHJ5X21hdGNoICoqbWF0Y2gpDQorew0KKwlzdHJ1Y3QgaXB0
X3JhbmRvbV9tYXRjaF9pbmZvICppbmZvID0gKHN0cnVjdCBpcHRfcmFuZG9t
X21hdGNoX2luZm8gKikoKm1hdGNoKS0+ZGF0YTsNCisJZG91YmxlIGQ7IGNo
YXIgKnRtcDsNCisJc3dpdGNoIChjKSB7DQorCWNhc2UgJzEnOg0KKwkJaWYg
KCpmbGFncyAmIElQVF9SQU5ET01fT1BUX1BST0IpDQorCQkJZXhpdF9lcnJv
cihQQVJBTUVURVJfUFJPQkxFTSwNCisJCQkJICAgIkNhbid0IHNwZWNpZnkg
LS1wcm9iIHR3aWNlIik7DQorDQorCQlpZiAoY2hlY2tfaW52ZXJzZShvcHRh
cmcsICZpbnZlcnQpKQ0KKwkJCWV4aXRfZXJyb3IoUEFSQU1FVEVSX1BST0JM
RU0sDQorCQkJCSAgICJVbmV4cGVjdGVkIGAhJyBhZnRlciAtLXByb2IiKTsN
CisNCisJCWQgPSBzdHJ0b2Qob3B0YXJnLCAmdG1wKTsNCisJCWlmICgqdG1w
ICE9ICdcMCcpDQorCQkJZXhpdF9lcnJvcihQQVJBTUVURVJfUFJPQkxFTSwg
IkdhcmJhZ2UgaW4gbnVtYmVyIGAlcyciLCBvcHRhcmcpOw0KKwkJaWYgKGQg
PiAxLjAgfHwgZCA8IDAuMCkNCisJCQlleGl0X2Vycm9yKFBBUkFNRVRFUl9Q
Uk9CTEVNLCAiUHJvYmFiaWxpdHkgbXVzdCBiZSBbMC4uMV06ICVzIiwgb3B0
YXJnKTsNCisJCWluZm8tPnByb2JhYmlsaXR5ID0gKHVuc2lnbmVkKSAoZCAq
IDB4ZmZmZmZmZmYpOyANCisJCSpmbGFncyB8PSBJUFRfUkFORE9NX09QVF9Q
Uk9COw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gMDsNCisJ
fQ0KKwlyZXR1cm4gMTsNCit9DQorDQorDQorLyogRmluYWwgY2hlY2s7IG5v
dGhpbmcuICovDQorc3RhdGljIHZvaWQgZmluYWxfY2hlY2tfbWF0Y2godW5z
aWduZWQgaW50IGZsYWdzKQ0KK3sNCisJaWYgKCFmbGFncykNCisJCWV4aXRf
ZXJyb3IoUEFSQU1FVEVSX1BST0JMRU0sICJNdXN0IHNwZWNpZnkgcHJvYmFi
aWxpdHkiKTsNCit9DQorDQorDQorc3RhdGljIHZvaWQgcHJpbnRfcHJvYih1
bnNpZ25lZCBwcm9iKQ0KK3sNCisJcHJpbnRmKCIlLjA0ZiAiLCAoZG91Ymxl
KSBwcm9iIC8gMHhmZmZmZmZmZik7DQorfQ0KKw0KKy8qIFByaW50cyBvdXQg
aXB0X3JhbmRvbV9tYXRjaF9pbmZvLiAqLw0KK3N0YXRpYyB2b2lkIHByaW50
X21hdGNoKGNvbnN0IHN0cnVjdCBpcHRfaXAgKmlwLA0KKwkJCWNvbnN0IHN0
cnVjdCBpcHRfZW50cnlfbWF0Y2ggKm1hdGNoLA0KKwkJCWludCBudW1lcmlj
KQ0KK3sNCisJcHJpbnRmKCJQUk9CICIpOw0KKwlwcmludF9wcm9iKCgoc3Ry
dWN0IGlwdF9yYW5kb21fbWF0Y2hfaW5mbyAqKW1hdGNoLT5kYXRhKS0+cHJv
YmFiaWxpdHkpOw0KK30NCisNCisNCisvKiBTYXZlcyBpcHRfcmFuZG9tX21h
dGNoIGluIHBhcnNhYmxlIGZvcm0gdG8gc3Rkb3V0LiAqLw0KK3N0YXRpYyB2
b2lkIHNhdmVfbWF0Y2goY29uc3Qgc3RydWN0IGlwdF9pcCAqaXAsIGNvbnN0
IHN0cnVjdCBpcHRfZW50cnlfbWF0Y2ggKm1hdGNoKQ0KK3sNCisJcHJpbnRm
KCItLXByb2IgIik7DQorCXByaW50X3Byb2IoKChzdHJ1Y3QgaXB0X3JhbmRv
bV9tYXRjaF9pbmZvICopbWF0Y2gtPmRhdGEpLT5wcm9iYWJpbGl0eSk7DQor
fQ0KKw0KKw0KKw0KK3N0cnVjdCBpcHRhYmxlc19tYXRjaCByYW5kX21hdGNo
DQorPSB7IE5VTEwsDQorICAgICJyYW5kb20iLA0KKyAgICBORVRGSUxURVJf
VkVSU0lPTiwNCisgICAgc2l6ZW9mIChzdHJ1Y3QgaXB0X3JhbmRvbV9tYXRj
aF9pbmZvKSwNCisgICAgc2l6ZW9mIChzdHJ1Y3QgaXB0X3JhbmRvbV9tYXRj
aF9pbmZvKSwNCisgICAgJmhlbHBfbWF0Y2gsDQorICAgICZpbml0X21hdGNo
LA0KKyAgICAmcGFyc2VfbWF0Y2gsDQorICAgICZmaW5hbF9jaGVja19tYXRj
aCwNCisgICAgJnByaW50X21hdGNoLA0KKyAgICAmc2F2ZV9tYXRjaCwNCisg
ICAgbWF0Y2hfb3B0cw0KK307DQorDQorDQordm9pZCBfaW5pdCh2b2lkKQ0K
K3sNCisJcmVnaXN0ZXJfbWF0Y2goJnJhbmRfbWF0Y2gpOw0KK30NCg0K
--0-758280319-960502579=:32574
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ipt_random-2.4.0-test1-ac11.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.20.0006090116191.32574@sirppi.helsinki.fi>
Content-Description: 
Content-Disposition: attachment; filename="ipt_random-2.4.0-test1-ac11.patch"

ZGlmZiAtdXJOIGxpbnV4LTIuNC4wLXRlc3QxLWFjMTEvaW5jbHVkZS9saW51
eC9uZXRmaWx0ZXJfaXB2NC9pcHRfcmFuZG9tLmggbGludXgtMi40LjAtdDEt
YWMxMS5pcHRfcmFuZG9tL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQv
aXB0X3JhbmRvbS5oDQotLS0gbGludXgtMi40LjAtdGVzdDEtYWMxMS9pbmNs
dWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwdF9yYW5kb20uaAlUaHUgSmFu
ICAxIDAyOjAwOjAwIDE5NzANCisrKyBsaW51eC0yLjQuMC10MS1hYzExLmlw
dF9yYW5kb20vaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcHRfcmFu
ZG9tLmgJRnJpIEp1biAgOSAwMDoyNTowMyAyMDAwDQpAQCAtMCwwICsxLDkg
QEANCisjaWZuZGVmIF9fSVBUX1JBTkRPTV9IX18NCisjZGVmaW5lIF9fSVBU
X1JBTkRPTV9IX18NCisNCitzdHJ1Y3QgaXB0X3JhbmRvbV9tYXRjaF9pbmZv
DQorew0KKwl1bnNpZ25lZCAJCXByb2JhYmlsaXR5Ow0KK307DQorDQorI2Vu
ZGlmIC8qIF9fSVBUX1JBTkRPTV9IX18gKi8NCmRpZmYgLXVyTiBsaW51eC0y
LjQuMC10ZXN0MS1hYzExL25ldC9pcHY0L25ldGZpbHRlci9Db25maWcuaW4g
bGludXgtMi40LjAtdDEtYWMxMS5pcHRfcmFuZG9tL25ldC9pcHY0L25ldGZp
bHRlci9Db25maWcuaW4NCi0tLSBsaW51eC0yLjQuMC10ZXN0MS1hYzExL25l
dC9pcHY0L25ldGZpbHRlci9Db25maWcuaW4JU3VuIEFwciAxNiAxOTozMzoy
NCAyMDAwDQorKysgbGludXgtMi40LjAtdDEtYWMxMS5pcHRfcmFuZG9tL25l
dC9pcHY0L25ldGZpbHRlci9Db25maWcuaW4JRnJpIEp1biAgOSAwMDoyOToy
OCAyMDAwDQpAQCAtMjAsNiArMjAsNyBAQA0KICAgZGVwX3RyaXN0YXRlICcg
IG5ldGZpbHRlciBNQVJLIG1hdGNoIHN1cHBvcnQnIENPTkZJR19JUF9ORl9N
QVRDSF9NQVJLICRDT05GSUdfSVBfTkZfSVBUQUJMRVMNCiAgIGRlcF90cmlz
dGF0ZSAnICBNdWx0aXBsZSBwb3J0IG1hdGNoIHN1cHBvcnQnIENPTkZJR19J
UF9ORl9NQVRDSF9NVUxUSVBPUlQgJENPTkZJR19JUF9ORl9JUFRBQkxFUw0K
ICAgZGVwX3RyaXN0YXRlICcgIFRPUyBtYXRjaCBzdXBwb3J0JyBDT05GSUdf
SVBfTkZfTUFUQ0hfVE9TICRDT05GSUdfSVBfTkZfSVBUQUJMRVMNCisgIGRl
cF90cmlzdGF0ZSAnICByYW5kb20gbWF0Y2ggc3VwcG9ydCcgQ09ORklHX0lQ
X05GX01BVENIX1JBTkRPTSAkQ09ORklHX0lQX05GX0lQVEFCTEVTDQogICBp
ZiBbICIkQ09ORklHX0lQX05GX0NPTk5UUkFDSyIgIT0gIm4iIF07IHRoZW4N
CiAgICAgZGVwX3RyaXN0YXRlICcgIENvbm5lY3Rpb24gc3RhdGUgbWF0Y2gg
c3VwcG9ydCcgQ09ORklHX0lQX05GX01BVENIX1NUQVRFICRDT05GSUdfSVBf
TkZfQ09OTlRSQUNLICRDT05GSUdfSVBfTkZfSVBUQUJMRVMgDQogICBmaQ0K
QEAgLTI4LDYgKzI5LDcgQEANCiAgICAgZGVwX3RyaXN0YXRlICcgIE93bmVy
IG1hdGNoIHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19JUF9ORl9N
QVRDSF9PV05FUiAkQ09ORklHX0lQX05GX0lQVEFCTEVTDQogICBmaQ0KICMg
VGhlIHRhcmdldHMNCisNCiAgIGRlcF90cmlzdGF0ZSAnICBQYWNrZXQgZmls
dGVyaW5nJyBDT05GSUdfSVBfTkZfRklMVEVSICRDT05GSUdfSVBfTkZfSVBU
QUJMRVMgDQogICBpZiBbICIkQ09ORklHX0lQX05GX0ZJTFRFUiIgIT0gIm4i
IF07IHRoZW4NCiAgICAgZGVwX3RyaXN0YXRlICcgICAgUkVKRUNUIHRhcmdl
dCBzdXBwb3J0JyBDT05GSUdfSVBfTkZfVEFSR0VUX1JFSkVDVCAkQ09ORklH
X0lQX05GX0ZJTFRFUg0KZGlmZiAtdXJOIGxpbnV4LTIuNC4wLXRlc3QxLWFj
MTEvbmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlIGxpbnV4LTIuNC4wLXQx
LWFjMTEuaXB0X3JhbmRvbS9uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUN
Ci0tLSBsaW51eC0yLjQuMC10ZXN0MS1hYzExL25ldC9pcHY0L25ldGZpbHRl
ci9NYWtlZmlsZQlTdW4gQXByIDE2IDE5OjMzOjI0IDIwMDANCisrKyBsaW51
eC0yLjQuMC10MS1hYzExLmlwdF9yYW5kb20vbmV0L2lwdjQvbmV0ZmlsdGVy
L01ha2VmaWxlCUZyaSBKdW4gIDkgMDA6NTE6NDQgMjAwMA0KQEAgLTE0OSw2
ICsxNDksMTQgQEANCiAgIGVuZGlmDQogZW5kaWYNCiANCitpZmVxICgkKENP
TkZJR19JUF9ORl9NQVRDSF9SQU5ET00pLHkpDQorT19PQkpTICs9IGlwdF9y
YW5kb20ubw0KK2Vsc2UNCisgIGlmZXEgKCQoQ09ORklHX0lQX05GX01BVENI
X1JBTkRPTSksbSkNCisgIE1fT0JKUyArPSBpcHRfcmFuZG9tLm8NCisgIGVu
ZGlmDQorZW5kaWYNCisNCiBpZmVxICgkKENPTkZJR19JUF9ORl9UQVJHRVRf
TUlSUk9SKSx5KQ0KIE9fT0JKUyArPSBpcHRfTUlSUk9SLm8NCiBlbHNlDQpk
aWZmIC11ck4gbGludXgtMi40LjAtdGVzdDEtYWMxMS9uZXQvaXB2NC9uZXRm
aWx0ZXIvaXB0X3JhbmRvbS5jIGxpbnV4LTIuNC4wLXQxLWFjMTEuaXB0X3Jh
bmRvbS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X3JhbmRvbS5jDQotLS0gbGlu
dXgtMi40LjAtdGVzdDEtYWMxMS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X3Jh
bmRvbS5jCVRodSBKYW4gIDEgMDI6MDA6MDAgMTk3MA0KKysrIGxpbnV4LTIu
NC4wLXQxLWFjMTEuaXB0X3JhbmRvbS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0
X3JhbmRvbS5jCUZyaSBKdW4gIDkgMDA6NTM6MTggMjAwMA0KQEAgLTAsMCAr
MSw3NiBAQA0KKy8qIA0KKyAqIGlwdF9yYW5kb20uYyAtIHJhbmRvbSBtYXRj
aC4NCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgQWtpIExhdWtrYW5lbiA8YW1s
YXVra2FAY3MuaGVsc2lua2kuZmk+DQorICoNCisgKiBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3INCisgKiAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLg0KKyAqLw0KKw0KKw0KKyNpbmNsdWRlIDxsaW51
eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+DQorI2lu
Y2x1ZGUgPGxpbnV4L3JhbmRvbS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pcC5o
Pg0KKyNpbmNsdWRlIDxuZXQvaWNtcC5oPg0KKyNpbmNsdWRlIDxuZXQvaXAu
aD4NCisNCitzdHJ1Y3QgaW5fZGV2aWNlOw0KKyNpbmNsdWRlIDxuZXQvcm91
dGUuaD4NCisjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFi
bGVzLmg+DQorI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlcl9pcHY0L2lwdF9y
YW5kb20uaD4NCisNCisjaWYgMQ0KKyNkZWZpbmUgREVCVUdQIHByaW50aw0K
KyNlbHNlDQorI2RlZmluZSBERUJVR1AoZm9ybWF0LCBhcmdzLi4uKQ0KKyNl
bmRpZg0KKw0KK3N0YXRpYyBpbnQgbWF0Y2goY29uc3Qgc3RydWN0IHNrX2J1
ZmYgKnNrYiwNCisJCSBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqaW4sDQor
CQkgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm91dCwNCisJCSBjb25zdCB2
b2lkICptYXRjaGluZm8sDQorCQkgaW50IG9mZnNldCwNCisJCSBjb25zdCB2
b2lkICpoZHIsDQorCQkgdV9pbnQxNl90IGRhdGFsZW4sDQorCQkgaW50ICpo
b3Rkcm9wKQ0KK3sNCisJdW5zaWduZWQgcmFuZDsNCisJY29uc3Qgc3RydWN0
IGlwdF9yYW5kb21fbWF0Y2hfaW5mbyAqaW5mbyA9IG1hdGNoaW5mbzsNCisJ
Z2V0X3JhbmRvbV9ieXRlcygmcmFuZCwgc2l6ZW9mIChyYW5kKSk7DQorCXJl
dHVybiBpbmZvLT5wcm9iYWJpbGl0eSA+IHJhbmQ7DQorfQ0KKw0KKw0KK3N0
YXRpYyBpbnQgY2hlY2tfbWF0Y2goY29uc3QgY2hhciAqdGFibGVuYW1lLA0K
KwkJICAgICAgIGNvbnN0IHN0cnVjdCBpcHRfaXAgKmlwLA0KKwkJICAgICAg
IHZvaWQgKm1hdGNoaW5mbywNCisJCSAgICAgICB1bnNpZ25lZCBpbnQgbWF0
Y2hzaXplLA0KKwkJICAgICAgIHVuc2lnbmVkIGludCBob29rX21hc2spDQor
ew0KKwlpZiAobWF0Y2hzaXplICE9IElQVF9BTElHTihzaXplb2YgKHN0cnVj
dCBpcHRfcmFuZG9tX21hdGNoX2luZm8pKSkgew0KKwkJREVCVUdQKEtFUk5f
RVJSICJyYW5kb206IG1hdGNoc2l6ZSAldSAhPSAldVxuIiwNCisJCSAgICAg
ICBtYXRjaHNpemUsIElQVF9BTElHTihzaXplb2YgKHN0cnVjdCBpcHRfcmFu
ZG9tX21hdGNoX2luZm8pKSk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwly
ZXR1cm4gMTsNCit9DQorDQorDQorc3RhdGljIHN0cnVjdCBpcHRfbWF0Y2gg
aXB0X3JhbmRvbV9tYXRjaA0KKz0geyB7IE5VTEwsIE5VTEwgfSwgInJhbmRv
bSIsIG1hdGNoLCBjaGVja19tYXRjaCwgTlVMTCwgVEhJU19NT0RVTEUgfTsN
CisNCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpDQorew0KKwlyZXR1
cm4gaXB0X3JlZ2lzdGVyX21hdGNoKCZpcHRfcmFuZG9tX21hdGNoKTsNCit9
DQorDQorc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9pZCkNCit7DQorCWlw
dF91bnJlZ2lzdGVyX21hdGNoKCZpcHRfcmFuZG9tX21hdGNoKTsNCit9DQor
DQorbW9kdWxlX2luaXQoaW5pdCk7DQorbW9kdWxlX2V4aXQoZmluaSk7DQo=
--0-758280319-960502579=:32574--