Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Sep 2010 05:05:20 +0200 (CEST)
From:      Ingo Flaschberger <if@xip.at>
To:        "Li, Qing" <qing.li@bluecoat.com>
Cc:        Qing Li <qingli@freebsd.org>, net@freebsd.org
Subject:   RE: funny ECMP
Message-ID:  <alpine.LFD.2.00.1009110504340.5369@filebunker.xip.at>
In-Reply-To: <alpine.LFD.2.00.1008262102150.15491@filebunker.xip.at>
References:  <alpine.LFD.2.00.1008230154280.29368@filebunker.xip.at> <alpine.LFD.2.00.1008240144350.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FC70@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008240223240.12708@filebunker.xip.at> <alpine.LFD.2.00.1008242005160.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FF22@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242027390.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FF79@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242102410.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F20002@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242227350.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F20038@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008261754140.15491@filebunker.xip.at> <alpine.LFD.2.00.1008262102150.15491@filebunker.xip.at>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--168430090-52481847-1284174321=:5369
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Dear Li,

attached latest version of ecmp patch.

Kind regards,
 	Ingo Flaschberger
--168430090-52481847-1284174321=:5369
Content-Type: TEXT/plain; name=mpath_patch_if_v3.txt
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.LFD.2.00.1009110505200.5369@filebunker.xip.at>
Content-Description: 
Content-Disposition: attachment; filename=mpath_patch_if_v3.txt

ZGlmZiAtciAtdSAvdXNyX2RpZmYvc3JjL3N5cy9jb250cmliL2lwZmlsdGVy
L25ldGluZXQvaXBfcG9vbC5jIC91c3Ivc3JjL3N5cy9jb250cmliL2lwZmls
dGVyL25ldGluZXQvaXBfcG9vbC5jDQotLS0gL3Vzcl9kaWZmL3NyYy9zeXMv
Y29udHJpYi9pcGZpbHRlci9uZXRpbmV0L2lwX3Bvb2wuYwkyMDA3LTEwLTE4
IDIxOjQyOjM4LjAwMDAwMDAwMCArMDAwMA0KKysrIC91c3Ivc3JjL3N5cy9j
b250cmliL2lwZmlsdGVyL25ldGluZXQvaXBfcG9vbC5jCTIwMTAtMDktMDYg
MTE6MjI6MzkuMDAwMDAwMDAwICswMDAwDQpAQCAtNjIwLDcgKzYyMCw3IEBA
DQogDQogCVJBRElYX05PREVfSEVBRF9MT0NLKGlwby0+aXBvX2hlYWQpOw0K
IAlpcG8tPmlwb19oZWFkLT5ybmhfZGVsYWRkcigmaXBlLT5pcG5fYWRkciwg
JmlwZS0+aXBuX21hc2ssDQotCQkJCSAgIGlwby0+aXBvX2hlYWQpOw0KKwkJ
CQkgICBpcG8tPmlwb19oZWFkLCBOVUxMKTsNCiAJUkFESVhfTk9ERV9IRUFE
X1VOTE9DSyhpcG8tPmlwb19oZWFkKTsNCiANCiAJaXBfcG9vbF9ub2RlX2Rl
cmVmKGlwZSk7DQpAQCAtNzUxLDcgKzc1MSw3IEBADQogCVJBRElYX05PREVf
SEVBRF9MT0NLKGlwby0+aXBvX2hlYWQpOw0KIAl3aGlsZSAoKG4gPSBpcG8t
Pmlwb19saXN0KSAhPSBOVUxMKSB7DQogCQlpcG8tPmlwb19oZWFkLT5ybmhf
ZGVsYWRkcigmbi0+aXBuX2FkZHIsICZuLT5pcG5fbWFzaywNCi0JCQkJCSAg
IGlwby0+aXBvX2hlYWQpOw0KKwkJCQkJICAgaXBvLT5pcG9faGVhZCwgTlVM
TCk7DQogDQogCQkqbi0+aXBuX3BuZXh0ID0gbi0+aXBuX25leHQ7DQogCQlp
ZiAobi0+aXBuX25leHQpDQpAQCAtOTYzLDcgKzk2Myw3IEBADQogCXN0cnVj
dCByYWRpeF9ub2RlX2hlYWQgKnJuaCA9IHA7DQogCXN0cnVjdCByYWRpeF9u
b2RlICpkOw0KIA0KLQlkID0gcm5oLT5ybmhfZGVsYWRkcihuLT5ybl9rZXks
IE5VTEwsIHJuaCk7DQorCWQgPSBybmgtPnJuaF9kZWxhZGRyKG4tPnJuX2tl
eSwgTlVMTCwgcm5oLCBOVUxMKTsNCiAJaWYgKGQgIT0gTlVMTCkgew0KIAkJ
RnJlZVMoZCwgbWF4X2tleWxlbiArIDIgKiBzaXplb2YgKCpkKSk7DQogCX0N
CmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9zeXMvY29udHJpYi9wZi9uZXQv
cGYuYyAvdXNyL3NyYy9zeXMvY29udHJpYi9wZi9uZXQvcGYuYw0KLS0tIC91
c3JfZGlmZi9zcmMvc3lzL2NvbnRyaWIvcGYvbmV0L3BmLmMJMjAxMC0wMS0y
MyAwMDozMjoxOS4wMDAwMDAwMDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMv
Y29udHJpYi9wZi9uZXQvcGYuYwkyMDEwLTA5LTA2IDExOjIyOjM5LjAwMDAw
MDAwMCArMDAwMA0KQEAgLTk5LDkgKzk5LDcgQEANCiAjaW5jbHVkZSA8bmV0
L2lmX3R5cGVzLmg+DQogI2luY2x1ZGUgPG5ldC9icGYuaD4NCiAjaW5jbHVk
ZSA8bmV0L3JvdXRlLmg+DQotI2lmbmRlZiBfX0ZyZWVCU0RfXw0KICNpbmNs
dWRlIDxuZXQvcmFkaXhfbXBhdGguaD4NCi0jZW5kaWYNCiANCiAjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L2luX3Zhci5o
Pg0KQEAgLTYxNjYsOSArNjE2NCw5IEBADQogCQkJaWYgKGtpZi0+cGZpa19p
ZnAgPT0gaWZwKQ0KIAkJCQlyZXQgPSAxOw0KICNpZmRlZiBfX0ZyZWVCU0Rf
XyAvKiBNVUxUSVBBVEhfUk9VVElORyAqLw0KLQkJCXJuID0gTlVMTDsNCisJ
CQlybiA9IHJuX21wYXRoX25leHQocm4pOyAvKiBYWFggd2FzIGJlZm9yZTog
cm4gPSBOVUxMOyAqLw0KICNlbHNlDQotCQkJcm4gPSBybl9tcGF0aF9uZXh0
KHJuKTsNCisJCQlybiA9IHJuX21wYXRoX25leHQocm4sIDApOw0KICNlbmRp
Zg0KIAkJfSB3aGlsZSAoY2hlY2tfbXBhdGggPT0gMSAmJiBybiAhPSBOVUxM
ICYmIHJldCA9PSAwKTsNCiAJfSBlbHNlDQpkaWZmIC1yIC11IC91c3JfZGlm
Zi9zcmMvc3lzL2NvbnRyaWIvcGYvbmV0L3BmX3RhYmxlLmMgL3Vzci9zcmMv
c3lzL2NvbnRyaWIvcGYvbmV0L3BmX3RhYmxlLmMNCi0tLSAvdXNyX2RpZmYv
c3JjL3N5cy9jb250cmliL3BmL25ldC9wZl90YWJsZS5jCTIwMDktMDgtMDMg
MDg6MTM6MDYuMDAwMDAwMDAwICswMDAwDQorKysgL3Vzci9zcmMvc3lzL2Nv
bnRyaWIvcGYvbmV0L3BmX3RhYmxlLmMJMjAxMC0wOS0wNiAxMToyMjozOS4w
MDAwMDAwMDAgKzAwMDANCkBAIC0xMTE0LDE3ICsxMTE0LDkgQEANCiAjZW5k
aWYNCiAJaWYgKEtFTlRSWV9ORVRXT1JLKGtlKSkgew0KIAkJcGZyX3ByZXBh
cmVfbmV0d29yaygmbWFzaywga2UtPnBmcmtlX2FmLCBrZS0+cGZya2VfbmV0
KTsNCi0jaWZkZWYgX19GcmVlQlNEX18NCi0JCXJuID0gcm5fZGVsZXRlKCZr
ZS0+cGZya2Vfc2EsICZtYXNrLCBoZWFkKTsNCi0jZWxzZQ0KIAkJcm4gPSBy
bl9kZWxldGUoJmtlLT5wZnJrZV9zYSwgJm1hc2ssIGhlYWQsIE5VTEwpOw0K
LSNlbmRpZg0KIAl9IGVsc2UNCi0jaWZkZWYgX19GcmVlQlNEX18NCi0JCXJu
ID0gcm5fZGVsZXRlKCZrZS0+cGZya2Vfc2EsIE5VTEwsIGhlYWQpOw0KLSNl
bHNlDQogCQlybiA9IHJuX2RlbGV0ZSgma2UtPnBmcmtlX3NhLCBOVUxMLCBo
ZWFkLCBOVUxMKTsNCi0jZW5kaWYNCiAJc3BseChzKTsNCiANCiAJaWYgKHJu
ID09IE5VTEwpIHsNCmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9zeXMvbmV0
L3JhZGl4LmMgL3Vzci9zcmMvc3lzL25ldC9yYWRpeC5jDQotLS0gL3Vzcl9k
aWZmL3NyYy9zeXMvbmV0L3JhZGl4LmMJMjAxMC0wNC0wMiAwNTowMjo1MC4w
MDAwMDAwMDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMvbmV0L3JhZGl4LmMJ
MjAxMC0wOS0xMSAwMTozOTo0MC4wMDAwMDAwMDAgKzAwMDANCkBAIC02MTQs
NyArNjE0LDcgQEANCiAJc3RydWN0IHJhZGl4X25vZGUgdHJlZW5vZGVzWzJd
Ow0KIHsNCiAJY2FkZHJfdCB2ID0gKGNhZGRyX3Qpdl9hcmcsIG5ldG1hc2sg
PSAoY2FkZHJfdCluX2FyZzsNCi0JcmVnaXN0ZXIgc3RydWN0IHJhZGl4X25v
ZGUgKnQsICp4ID0gMCwgKnR0Ow0KKwlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhf
bm9kZSAqdCwgKnggPSAwLCAqeHggPSAwLCAqdHQ7DQogCXN0cnVjdCByYWRp
eF9ub2RlICpzYXZlZF90dCwgKnRvcCA9IGhlYWQtPnJuaF90cmVldG9wOw0K
IAlzaG9ydCBiID0gMCwgYl9sZWFmID0gMDsNCiAJaW50IGtleWR1cGxpY2F0
ZWQ7DQpAQCAtNzIzLDEyICs3MjMsMTkgQEANCiAJCXggPSB0LT5ybl9yaWdo
dDsNCiAJLyogUHJvbW90ZSBnZW5lcmFsIHJvdXRlcyBmcm9tIGJlbG93ICov
DQogCWlmICh4LT5ybl9iaXQgPCAwKSB7DQotCSAgICBmb3IgKG1wID0gJnQt
PnJuX21rbGlzdDsgeDsgeCA9IHgtPnJuX2R1cGVka2V5KQ0KKwkgICAgZm9y
IChtcCA9ICZ0LT5ybl9ta2xpc3Q7IHg7IHh4ID0geCwgeCA9IHgtPnJuX2R1
cGVka2V5KSB7DQorCQlpZiAoeHggJiYgeHgtPnJuX21rbGlzdCAmJiB4eC0+
cm5fbWFzayA9PSB4LT5ybl9tYXNrICYmDQorCQkJCXgtPnJuX21rbGlzdCA9
PSAwKSB7DQorCQkJLyogbXVsdGlwYXRoIHJvdXRlLCBidW1wIHJlZmNvdW50
IG9uIGZpcnN0IG1rbGlzdCAqLw0KKwkJCXgtPnJuX21rbGlzdCA9IHh4LT5y
bl9ta2xpc3Q7DQorCQkJeC0+cm5fbWtsaXN0LT5ybV9yZWZzKys7DQorCQl9
DQogCQlpZiAoeC0+cm5fbWFzayAmJiAoeC0+cm5fYml0ID49IGJfbGVhZikg
JiYgeC0+cm5fbWtsaXN0ID09IDApIHsNCiAJCQkqbXAgPSBtID0gcm5fbmV3
X3JhZGl4X21hc2soeCwgMCk7DQogCQkJaWYgKG0pDQogCQkJCW1wID0gJm0t
PnJtX21rbGlzdDsNCiAJCX0NCisJICAgIH0NCiAJfSBlbHNlIGlmICh4LT5y
bl9ta2xpc3QpIHsNCiAJCS8qDQogCQkgKiBTa2lwIG92ZXIgbWFza3Mgd2hv
c2UgaW5kZXggaXMgPiB0aGF0IG9mIG5ldyBub2RlDQpAQCAtNzYwLDExICs3
NjcsMzAgQEANCiAJCQlicmVhazsNCiAJCWlmIChtLT5ybV9mbGFncyAmIFJO
Rl9OT1JNQUwpIHsNCiAJCQltbWFzayA9IG0tPnJtX2xlYWYtPnJuX21hc2s7
DQotCQkJaWYgKHR0LT5ybl9mbGFncyAmIFJORl9OT1JNQUwpIHsNCi0jaWYg
IWRlZmluZWQoUkFESVhfTVBBVEgpDQotCQkJICAgIGxvZyhMT0dfRVJSLA0K
LQkJCSAgICAgICAgIk5vbi11bmlxdWUgbm9ybWFsIHJvdXRlLCBtYXNrIG5v
dCBlbnRlcmVkXG4iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
a2V5ZHVwbGljYXRlZCkgew0KKwkJCQlpZiAobS0+cm1fbGVhZi0+cm5fcGFy
ZW50ID09IHR0KQ0KKwkJCQkJLyogbmV3IHJvdXRlIGlzIGJldHR0ZXIgKi8N
CisJCQkJCW0tPnJtX2xlYWYgPSB0dDsNCisjaWZkZWYgRElBR05PU1RJQw0K
KwkJCQllbHNlIHsNCisJCQkJCWZvciAodCA9IG0tPnJtX2xlYWY7IHQ7DQor
CQkJCQkJdCA9IHQtPnJuX2R1cGVka2V5KSB7DQorCQkJCQkJCWJyZWFrOw0K
KwkJCQkJfQ0KKwkJCQkJaWYgKHQgPT0gTlVMTCkgew0KKwkJCQkJCWxvZyhM
T0dfRVJSLCAiTm9uLXVuaXF1ZSAiDQorCQkJCQkJCSJub3JtYWwgcm91dGUg
b24gZHVwZWRrZXksICINCisJCQkJCQkJIm1hc2sgbm90IGVudGVyZWRcbiIp
Ow0KKwkJCQkJCXJldHVybiB0dDsNCisJCQkJCX0NCisJCQkJfQ0KICNlbmRp
Zg0KKwkJCQltLT5ybV9yZWZzKys7DQorCQkJCXR0LT5ybl9ta2xpc3QgPSBt
Ow0KKwkJCQlyZXR1cm4gdHQ7DQorCQkJIH0gZWxzZSBpZiAodHQtPnJuX2Zs
YWdzICYgUk5GX05PUk1BTCkgew0KKwkJCQlsb2coTE9HX0VSUiwgIk5vbi11
bmlxdWUgbm9ybWFsIHJvdXRlLCINCisJCQkJCSIgbWFzayBub3QgZW50ZXJl
ZFxuIik7DQogCQkJCXJldHVybiB0dDsNCiAJCQl9DQogCQl9IGVsc2UNCkBA
IC03ODMsOSArODA5LDEwIEBADQogfQ0KIA0KIHN0cnVjdCByYWRpeF9ub2Rl
ICoNCi1ybl9kZWxldGUodl9hcmcsIG5ldG1hc2tfYXJnLCBoZWFkKQ0KK3Ju
X2RlbGV0ZSh2X2FyZywgbmV0bWFza19hcmcsIGhlYWQsIHJuKQ0KIAl2b2lk
ICp2X2FyZywgKm5ldG1hc2tfYXJnOw0KIAlzdHJ1Y3QgcmFkaXhfbm9kZV9o
ZWFkICpoZWFkOw0KKwlzdHJ1Y3QgcmFkaXhfbm9kZSAqcm47DQogew0KIAly
ZWdpc3RlciBzdHJ1Y3QgcmFkaXhfbm9kZSAqdCwgKnAsICp4LCAqdHQ7DQog
CXN0cnVjdCByYWRpeF9tYXNrICptLCAqc2F2ZWRfbSwgKiptcDsNCkBAIC04
MTUsMTMgKzg0MiwzOCBAQA0KIAkJCWlmICgodHQgPSB0dC0+cm5fZHVwZWRr
ZXkpID09IDApDQogCQkJCXJldHVybiAoMCk7DQogCX0NCisjaWZkZWYgUkFE
SVhfTVBBVEgNCisJaWYgKHJuKSB7DQorCQl3aGlsZSAodHQgIT0gcm4pDQor
CQkJaWYgKCh0dCA9IHR0LT5ybl9kdXBlZGtleSkgPT0gMCkNCisJCQkJcmV0
dXJuICgwKTsNCisJfQ0KKyNlbmRpZg0KKwkNCiAJaWYgKHR0LT5ybl9tYXNr
ID09IDAgfHwgKHNhdmVkX20gPSBtID0gdHQtPnJuX21rbGlzdCkgPT0gMCkN
CiAJCWdvdG8gb24xOw0KIAlpZiAodHQtPnJuX2ZsYWdzICYgUk5GX05PUk1B
TCkgew0KLQkJaWYgKG0tPnJtX2xlYWYgIT0gdHQgfHwgbS0+cm1fcmVmcyA+
IDApIHsNCisJCWlmIChtLT5ybV9sZWFmICE9IHR0ICYmIG0tPnJtX3JlZnMg
PT0gMCkgew0KIAkJCWxvZyhMT0dfRVJSLCAicm5fZGVsZXRlOiBpbmNvbnNp
c3RlbnQgYW5ub3RhdGlvblxuIik7DQogCQkJcmV0dXJuIDA7ICAvKiBkYW5n
bGluZyByZWYgY291bGQgY2F1c2UgZGlzYXN0ZXIgKi8NCiAJCX0NCisJCWlm
IChtLT5ybV9sZWFmICE9IHR0KSB7DQorCQkJaWYgKC0tbS0+cm1fcmVmcyA+
PSAwKQ0KKwkJCQlnb3RvIG9uMTsNCisgICAgICAgICAgICAgICAgfQ0KKwkJ
LyogdHQgaXMgY3VycmVudGx5IHRoZSBoZWFkIG9mIHRoZSBwb3NzaWJsZSBt
dWx0aXBhdGggY2hhaW4gKi8NCisJCWlmIChtLT5ybV9yZWZzID4gMCkgew0K
KwkJCWlmICh0dC0+cm5fZHVwZWRrZXkgPT0gTlVMTCB8fA0KKwkJCSAgICB0
dC0+cm5fZHVwZWRrZXktPnJuX21rbGlzdCAhPSBtKSB7DQorCQkJCWxvZyhM
T0dfRVJSLCAicm5fZGVsZXRlOiBpbmNvbnNpc3RlbnQgIg0KKwkJCQkgICAg
ImR1cGVka2V5IGxpc3RcbiIpOw0KKwkJCQlyZXR1cm4gKDApOw0KKwkJCX0N
CisJCQltLT5ybV9sZWFmID0gdHQtPnJuX2R1cGVka2V5Ow0KKwkJCS0tbS0+
cm1fcmVmczsNCisJCQlnb3RvIG9uMTsNCisJCX0NCisJCS8qIGVsc2UgdHQg
aXMgbGFzdCBhbmQgb25seSByb3V0ZSAqLw0KIAl9IGVsc2Ugew0KIAkJaWYg
KG0tPnJtX21hc2sgIT0gdHQtPnJuX21hc2spIHsNCiAJCQlsb2coTE9HX0VS
UiwgInJuX2RlbGV0ZTogaW5jb25zaXN0ZW50IGFubm90YXRpb25cbiIpOw0K
QEAgLTg2OSwyMSArOTIxLDE3IEBADQogCQkgKi8NCiAJCWlmICh0dCA9PSBz
YXZlZF90dCkgew0KIAkJCS8qIHJlbW92ZSBmcm9tIGhlYWQgb2YgY2hhaW4g
Ki8NCi0JCQl4ID0gZHVwZWRrZXk7IHgtPnJuX3BhcmVudCA9IHQ7DQorCQkJ
eCA9IGR1cGVka2V5OyANCisJCQl4LT5ybl9wYXJlbnQgPSB0Ow0KIAkJCWlm
ICh0LT5ybl9sZWZ0ID09IHR0KQ0KIAkJCQl0LT5ybl9sZWZ0ID0geDsNCiAJ
CQllbHNlDQogCQkJCXQtPnJuX3JpZ2h0ID0geDsNCiAJCX0gZWxzZSB7DQot
CQkJLyogZmluZCBub2RlIGluIGZyb250IG9mIHR0IG9uIHRoZSBjaGFpbiAq
Lw0KLQkJCWZvciAoeCA9IHAgPSBzYXZlZF90dDsgcCAmJiBwLT5ybl9kdXBl
ZGtleSAhPSB0dDspDQotCQkJCXAgPSBwLT5ybl9kdXBlZGtleTsNCi0JCQlp
ZiAocCkgew0KLQkJCQlwLT5ybl9kdXBlZGtleSA9IHR0LT5ybl9kdXBlZGtl
eTsNCi0JCQkJaWYgKHR0LT5ybl9kdXBlZGtleSkJCS8qIHBhcmVudCAqLw0K
LQkJCQkJdHQtPnJuX2R1cGVka2V5LT5ybl9wYXJlbnQgPSBwOw0KLQkJCQkJ
CQkJLyogcGFyZW50ICovDQotCQkJfSBlbHNlIGxvZyhMT0dfRVJSLCAicm5f
ZGVsZXRlOiBjb3VsZG4ndCBmaW5kIHVzXG4iKTsNCisJCQl4ID0gc2F2ZWRf
dHQ7DQorCQkJdC0+cm5fZHVwZWRrZXkgPSB0dC0+cm5fZHVwZWRrZXk7DQor
CQkJaWYgKHR0LT5ybl9kdXBlZGtleSkNCisJCQkJdHQtPnJuX2R1cGVka2V5
LT5ybl9wYXJlbnQgPSB0Ow0KIAkJfQ0KIAkJdCA9IHR0ICsgMTsNCiAJCWlm
ICAodC0+cm5fZmxhZ3MgJiBSTkZfQUNUSVZFKSB7DQpAQCAtOTMxLDE0ICs5
NzksMjEgQEANCiAJCQkJaWYgKG0gPT0geC0+cm5fbWtsaXN0KSB7DQogCQkJ
CQlzdHJ1Y3QgcmFkaXhfbWFzayAqbW0gPSBtLT5ybV9ta2xpc3Q7DQogCQkJ
CQl4LT5ybl9ta2xpc3QgPSAwOw0KLQkJCQkJaWYgKC0tKG0tPnJtX3JlZnMp
IDwgMCkNCisJCQkJCWlmICgtLShtLT5ybV9yZWZzKSA8IDApIHsNCiAJCQkJ
CQlNS0ZyZWUobSk7DQorCQkJCQl9IGVsc2UgaWYgKG0tPnJtX2ZsYWdzICYg
Uk5GX05PUk1BTCkgew0KKwkJCQkJCS8qDQorCQkJCQkJICogZG9uJ3QgcHJv
Z3Jlc3MgYmVjYXVzZSB0aGlzDQorCQkJCQkJICogYSBtdWx0aXBhdGggcm91
dGUuIE5leHQNCisJCQkJCQkgKiByb3V0ZSB3aWxsIHVzZSB0aGUgc2FtZSBt
Lg0KKwkJCQkJCSAqLw0KKwkJCQkJCW1tID0gbTsNCisJCQkJCX0NCiAJCQkJ
CW0gPSBtbTsNCiAJCQkJfQ0KIAkJCWlmIChtKQ0KIAkJCQlsb2coTE9HX0VS
UiwNCi0JCQkJICAgICJybl9kZWxldGU6IE9ycGhhbmVkIE1hc2sgJXAgYXQg
JXBcbiIsDQotCQkJCSAgICBtLCB4KTsNCisJCQkJICAgICJybl9kZWxldGU6
IE9ycGhhbmVkIE1hc2sgJXAgYXQgJXBcbiIsIG0sIHgpOw0KIAkJfQ0KIAl9
DQogCS8qDQpAQCAtOTkwLDExICsxMDQ1LDggQEANCiAJICogcm5fc2VhcmNo
X20gaXMgc29ydC1vZi1vcGVuLWNvZGVkIGhlcmUuIFdlIGNhbm5vdCB1c2Ug
dGhlDQogCSAqIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBrZWVwIHRy
YWNrIG9mIHRoZSBsYXN0IG5vZGUgc2Vlbi4NCiAJICovDQotCS8qIHByaW50
ZigiYWJvdXQgdG8gc2VhcmNoXG4iKTsgKi8NCiAJZm9yIChybiA9IGgtPnJu
aF90cmVldG9wOyBybi0+cm5fYml0ID49IDA7ICkgew0KIAkJbGFzdCA9IHJu
Ow0KLQkJLyogcHJpbnRmKCJybl9iaXQgJWQsIHJuX2JtYXNrICV4LCB4bVty
bl9vZmZzZXRdICV4XG4iLA0KLQkJICAgICAgIHJuLT5ybl9iaXQsIHJuLT5y
bl9ibWFzaywgeG1bcm4tPnJuX29mZnNldF0pOyAqLw0KIAkJaWYgKCEocm4t
PnJuX2JtYXNrICYgeG1bcm4tPnJuX29mZnNldF0pKSB7DQogCQkJYnJlYWs7
DQogCQl9DQpAQCAtMTAwNCw3ICsxMDU2LDYgQEANCiAJCQlybiA9IHJuLT5y
bl9sZWZ0Ow0KIAkJfQ0KIAl9DQotCS8qIHByaW50ZigiZG9uZSBzZWFyY2hp
bmdcbiIpOyAqLw0KIA0KIAkvKg0KIAkgKiBUd28gY2FzZXM6IGVpdGhlciB3
ZSBzdGVwcGVkIG9mZiB0aGUgZW5kIG9mIG91ciBtYXNrLA0KQEAgLTEwMTUs
OCArMTA2Niw2IEBADQogCXJuID0gbGFzdDsNCiAJbGFzdGIgPSBybi0+cm5f
Yml0Ow0KIA0KLQkvKiBwcmludGYoInJuICVwLCBsYXN0YiAlZFxuIiwgcm4s
IGxhc3RiKTsqLw0KLQ0KIAkvKg0KIAkgKiBUaGlzIGdldHMgY29tcGxpY2F0
ZWQgYmVjYXVzZSB3ZSBtYXkgZGVsZXRlIHRoZSBub2RlDQogCSAqIHdoaWxl
IGFwcGx5aW5nIHRoZSBmdW5jdGlvbiBmIHRvIGl0LCBzbyB3ZSBuZWVkIHRv
IGNhbGN1bGF0ZQ0KQEAgLTEwMjYsNyArMTA3NSw2IEBADQogCQlybiA9IHJu
LT5ybl9sZWZ0Ow0KIA0KIAl3aGlsZSAoIXN0b3BwaW5nKSB7DQotCQkvKiBw
cmludGYoIm5vZGUgJXAgKCVkKVxuIiwgcm4sIHJuLT5ybl9iaXQpOyAqLw0K
IAkJYmFzZSA9IHJuOw0KIAkJLyogSWYgYXQgcmlnaHQgY2hpbGQgZ28gYmFj
ayB1cCwgb3RoZXJ3aXNlLCBnbyByaWdodCAqLw0KIAkJd2hpbGUgKHJuLT5y
bl9wYXJlbnQtPnJuX3JpZ2h0ID09IHJuDQpAQCAtMTAzNiw3ICsxMDg0LDYg
QEANCiAJCQkvKiBpZiB3ZW50IHVwIGJleW9uZCBsYXN0LCBzdG9wICovDQog
CQkJaWYgKHJuLT5ybl9iaXQgPD0gbGFzdGIpIHsNCiAJCQkJc3RvcHBpbmcg
PSAxOw0KLQkJCQkvKiBwcmludGYoInVwIHRvbyBmYXJcbiIpOyAqLw0KIAkJ
CQkvKg0KIAkJCQkgKiBYWFggd2Ugc2hvdWxkIGp1bXAgdG8gdGhlICdQcm9j
ZXNzIGxlYXZlcycNCiAJCQkJICogcGFydCwgYmVjYXVzZSB0aGUgdmFsdWVz
IG9mICdybicgYW5kICduZXh0Jw0KQEAgLTEwNjIsNyArMTEwOSw2IEBADQog
CQkvKiBQcm9jZXNzIGxlYXZlcyAqLw0KIAkJd2hpbGUgKChybiA9IGJhc2Up
ICE9IDApIHsNCiAJCQliYXNlID0gcm4tPnJuX2R1cGVka2V5Ow0KLQkJCS8q
IHByaW50ZigibGVhZiAlcFxuIiwgcm4pOyAqLw0KIAkJCWlmICghKHJuLT5y
bl9mbGFncyAmIFJORl9ST09UKQ0KIAkJCSAgICAmJiAoZXJyb3IgPSAoKmYp
KHJuLCB3KSkpDQogCQkJCXJldHVybiAoZXJyb3IpOw0KQEAgLTEwNzAsNyAr
MTExNiw2IEBADQogCQlybiA9IG5leHQ7DQogDQogCQlpZiAocm4tPnJuX2Zs
YWdzICYgUk5GX1JPT1QpIHsNCi0JCQkvKiBwcmludGYoInJvb3QsIHN0b3Bw
aW5nIik7ICovDQogCQkJc3RvcHBpbmcgPSAxOw0KIAkJfQ0KIA0KZGlmZiAt
ciAtdSAvdXNyX2RpZmYvc3JjL3N5cy9uZXQvcmFkaXguaCAvdXNyL3NyYy9z
eXMvbmV0L3JhZGl4LmgNCi0tLSAvdXNyX2RpZmYvc3JjL3N5cy9uZXQvcmFk
aXguaAkyMDEwLTAzLTIzIDA5OjU4OjU5LjAwMDAwMDAwMCArMDAwMA0KKysr
IC91c3Ivc3JjL3N5cy9uZXQvcmFkaXguaAkyMDEwLTA5LTA2IDExOjIyOjM5
LjAwMDAwMDAwMCArMDAwMA0KQEAgLTExNCw3ICsxMTQsNyBAQA0KIAkJKHZv
aWQgKnYsIHZvaWQgKm1hc2ssDQogCQkgICAgIHN0cnVjdCByYWRpeF9ub2Rl
X2hlYWQgKmhlYWQsIHN0cnVjdCByYWRpeF9ub2RlIG5vZGVzW10pOw0KIAlz
dHJ1Y3QJcmFkaXhfbm9kZSAqKCpybmhfZGVsYWRkcikJLyogcmVtb3ZlIGJh
c2VkIG9uIHNvY2thZGRyICovDQotCQkodm9pZCAqdiwgdm9pZCAqbWFzaywg
c3RydWN0IHJhZGl4X25vZGVfaGVhZCAqaGVhZCk7DQorCQkodm9pZCAqdiwg
dm9pZCAqbWFzaywgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqaGVhZCwgc3Ry
dWN0IHJhZGl4X25vZGUgKnJuKTsNCiAJc3RydWN0CXJhZGl4X25vZGUgKigq
cm5oX2RlbHBrdCkJLyogcmVtb3ZlIGJhc2VkIG9uIHBhY2tldCBoZHIgKi8N
CiAJCSh2b2lkICp2LCB2b2lkICptYXNrLCBzdHJ1Y3QgcmFkaXhfbm9kZV9o
ZWFkICpoZWFkKTsNCiAJc3RydWN0CXJhZGl4X25vZGUgKigqcm5oX21hdGNo
YWRkcikJLyogbG9jYXRlIGJhc2VkIG9uIHNvY2thZGRyICovDQpAQCAtMTY4
LDcgKzE2OCw3IEBADQogCSAqcm5fYWRkbWFzayh2b2lkICosIGludCwgaW50
KSwNCiAJICpybl9hZGRyb3V0ZSAodm9pZCAqLCB2b2lkICosIHN0cnVjdCBy
YWRpeF9ub2RlX2hlYWQgKiwNCiAJCQlzdHJ1Y3QgcmFkaXhfbm9kZSBbMl0p
LA0KLQkgKnJuX2RlbGV0ZSh2b2lkICosIHZvaWQgKiwgc3RydWN0IHJhZGl4
X25vZGVfaGVhZCAqKSwNCisJICpybl9kZWxldGUodm9pZCAqLCB2b2lkICos
IHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKiwgc3RydWN0IHJhZGl4X25vZGUg
KiksDQogCSAqcm5fbG9va3VwICh2b2lkICp2X2FyZywgdm9pZCAqbV9hcmcs
DQogCQkgICAgICAgIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQpLA0K
IAkgKnJuX21hdGNoKHZvaWQgKiwgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAq
KTsNCmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9zeXMvbmV0L3JhZGl4X21w
YXRoLmMgL3Vzci9zcmMvc3lzL25ldC9yYWRpeF9tcGF0aC5jDQotLS0gL3Vz
cl9kaWZmL3NyYy9zeXMvbmV0L3JhZGl4X21wYXRoLmMJMjAxMC0wNC0wMiAw
NTowMjo1MC4wMDAwMDAwMDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMvbmV0
L3JhZGl4X21wYXRoLmMJMjAxMC0wOS0wNiAxMToyMjozOS4wMDAwMDAwMDAg
KzAwMDANCkBAIC0xMjUsMzMgKzEyNSw2IEBADQogCXJldHVybiAoc3RydWN0
IHJ0ZW50cnkgKilybjsNCiB9DQogDQotLyogDQotICogZ28gdGhyb3VnaCB0
aGUgY2hhaW4gYW5kIHVubGluayAicnQiIGZyb20gdGhlIGxpc3QNCi0gKiB0
aGUgY2FsbGVyIHdpbGwgZnJlZSAicnQiDQotICovDQotaW50DQotcnRfbXBh
dGhfZGVsZHVwKHN0cnVjdCBydGVudHJ5ICpoZWFkcnQsIHN0cnVjdCBydGVu
dHJ5ICpydCkNCi17DQotICAgICAgICBzdHJ1Y3QgcmFkaXhfbm9kZSAqdCwg
KnR0Ow0KLQ0KLSAgICAgICAgaWYgKCFoZWFkcnQgfHwgIXJ0KQ0KLSAgICAg
ICAgICAgIHJldHVybiAoMCk7DQotICAgICAgICB0ID0gKHN0cnVjdCByYWRp
eF9ub2RlICopaGVhZHJ0Ow0KLSAgICAgICAgdHQgPSBybl9tcGF0aF9uZXh0
KHQpOw0KLSAgICAgICAgd2hpbGUgKHR0KSB7DQotICAgICAgICAgICAgaWYg
KHR0ID09IChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJ0KSB7DQotICAgICAgICAg
ICAgICAgIHQtPnJuX2R1cGVka2V5ID0gdHQtPnJuX2R1cGVka2V5Ow0KLSAg
ICAgICAgICAgICAgICB0dC0+cm5fZHVwZWRrZXkgPSBOVUxMOw0KLSAgICAJ
ICAgICAgICB0dC0+cm5fZmxhZ3MgJj0gflJORl9BQ1RJVkU7DQotCSAgICAg
ICAgdHRbMV0ucm5fZmxhZ3MgJj0gflJORl9BQ1RJVkU7DQotICAgICAgICAg
ICAgICAgIHJldHVybiAoMSk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAg
ICAgIHQgPSB0dDsNCi0gICAgICAgICAgICB0dCA9IHJuX21wYXRoX25leHQo
KHN0cnVjdCByYWRpeF9ub2RlICopdCk7DQotICAgICAgICB9DQotICAgICAg
ICByZXR1cm4gKDApOw0KLX0NCi0NCiAvKg0KICAqIGNoZWNrIGlmIHdlIGhh
dmUgdGhlIHNhbWUga2V5L21hc2svZ2F0ZXdheSBvbiB0aGUgdGFibGUgYWxy
ZWFkeS4NCiAgKi8NCkBAIC0yNjIsOSArMjM1LDEwIEBADQogcnRhbGxvY19t
cGF0aF9maWIoc3RydWN0IHJvdXRlICpybywgdWludDMyX3QgaGFzaCwgdV9p
bnQgZmlibnVtKQ0KIHsNCiAJc3RydWN0IHJhZGl4X25vZGUgKnJuMCwgKnJu
Ow0KLQl1X2ludDMyX3QgbjsNCisJdV9pbnQzMl90IG4gPSAwOw0KIAlzdHJ1
Y3QgcnRlbnRyeSAqcnQ7DQogCWludDY0X3Qgd2VpZ2h0Ow0KKwlpbnQ2NF90
IGxvd2VzdF93ZWlnaHQ7DQogDQogCS8qDQogCSAqIFhYWCB3ZSBkb24ndCBh
dHRlbXB0IHRvIGxvb2t1cCBjYWNoZWQgcm91dGUgYWdhaW47IHdoYXQgc2hv
dWxkDQpAQCAtMjcyLDcgKzI0Niw3IEBADQogCSAqLw0KIAlpZiAocm8tPnJv
X3J0ICYmIHJvLT5yb19ydC0+cnRfaWZwICYmIChyby0+cm9fcnQtPnJ0X2Zs
YWdzICYgUlRGX1VQKQ0KIAkgICAgJiYgUlRfTElOS19JU19VUChyby0+cm9f
cnQtPnJ0X2lmcCkpDQotCQlyZXR1cm47CQkJCSANCisJCXJldHVybjsNCiAJ
cm8tPnJvX3J0ID0gcnRhbGxvYzFfZmliKCZyby0+cm9fZHN0LCAxLCAwLCBm
aWJudW0pOw0KIA0KIAkvKiBpZiB0aGUgcm91dGUgZG9lcyBub3QgZXhpc3Qg
b3IgaXQgaXMgbm90IG11bHRpcGF0aCwgZG9uJ3QgY2FyZSAqLw0KQEAgLTI4
NSwyMCArMjU5LDM0IEBADQogDQogCS8qIGJleW9uZCBoZXJlLCB3ZSB1c2Ug
cm4gYXMgdGhlIG1hc3RlciBjb3B5ICovDQogCXJuMCA9IHJuID0gKHN0cnVj
dCByYWRpeF9ub2RlICopcm8tPnJvX3J0Ow0KLQluID0gcm5fbXBhdGhfY291
bnQocm4wKTsNCi0NCisJDQorCS8qIGZpbmQgbG93ZXN0IHdlaWdodCByb3V0
ZSAqLw0KKwlmb3IgKCBydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuLCB3ZWln
aHQgPSBydC0+cnRfcm14LnJteF93ZWlnaHQ7IHJuICE9IE5VTEw7IHJuID0g
cm5fbXBhdGhfbmV4dCggcm4pKSB7DQorCQkvKiBYWFggY2hlY2sgaWYgcm91
dGUgaXMgdXA/ICovDQorCQlydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuOw0K
KwkJaWYocnQtPnJ0X2ZsYWdzICYgUlRGX1VQKSB7IA0KKwkJCWlmICh3ZWln
aHQgPiBydC0+cnRfcm14LnJteF93ZWlnaHQpIHsNCisJCQkJd2VpZ2h0ID0g
cnQtPnJ0X3JteC5ybXhfd2VpZ2h0Ow0KKwkJCQluID0gMTsNCisJCQl9IGVs
c2UgaWYgKHdlaWdodCA9PSBydC0+cnRfcm14LnJteF93ZWlnaHQpDQorCQkJ
CW4rKzsNCisJCX0NCisJfQ0KKwlsb3dlc3Rfd2VpZ2h0ID0gd2VpZ2h0Ow0K
KwkNCisJLyogc2VsZWN0IG5vdyBvbmUgb2YgdGhlIGxvd2VzdCB3ZWlnaHQg
cm91dGVzICovDQogCS8qIGd3IHNlbGVjdGlvbiBieSBNb2R1bG8tTiBIYXNo
IChSRkMyOTkxKSBYWFggbmVlZCBpbXByb3ZlbWVudD8gKi8NCiAJaGFzaCAr
PSBoYXNoaml0dGVyOw0KIAloYXNoICU9IG47DQotCWZvciAod2VpZ2h0ID0g
YWJzKChpbnQzMl90KWhhc2gpLCBydCA9IHJvLT5yb19ydDsNCi0JICAgICB3
ZWlnaHQgPj0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0ICYmIHJuOyANCi0JICAg
ICB3ZWlnaHQgLT0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KSB7DQotCQkNCi0J
CS8qIHN0YXkgd2l0aGluIHRoZSBtdWx0aXBhdGggcm91dGVzICovDQotCQlp
ZiAocm4tPnJuX2R1cGVka2V5ICYmIHJuLT5ybl9tYXNrICE9IHJuLT5ybl9k
dXBlZGtleS0+cm5fbWFzaykNCi0JCQlicmVhazsNCi0JCXJuID0gcm4tPnJu
X2R1cGVka2V5Ow0KKwlmb3IgKCBybiA9IHJuMCwgbiA9IDA7IHJuICE9IE5V
TEw7IHJuID0gcm5fbXBhdGhfbmV4dCggcm4pKSB7DQogCQlydCA9IChzdHJ1
Y3QgcnRlbnRyeSAqKXJuOw0KKwkJaWYocnQtPnJ0X2ZsYWdzICYgUlRGX1VQ
KSB7IA0KKwkJCWlmICggcnQtPnJ0X3JteC5ybXhfd2VpZ2h0ID09IGxvd2Vz
dF93ZWlnaHQpIHsNCisJCQkJaWYgKG4gPT0gaGFzaCkNCisJCQkJCWJyZWFr
Ow0KKwkJCQluKys7DQorCQkJfQ0KKwkJfQ0KIAl9DQogCS8qIFhYWCB0cnkg
ZmlsbGluZyBydF9nd3JvdXRlIGFuZCBhdm9pZCB1bnJlYWNoYWJsZSBndyAg
Ki8NCiANCmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9zeXMvbmV0L3JvdXRl
LmMgL3Vzci9zcmMvc3lzL25ldC9yb3V0ZS5jDQotLS0gL3Vzcl9kaWZmL3Ny
Yy9zeXMvbmV0L3JvdXRlLmMJMjAxMC0wNi0xOCAwMzozMTozMy4wMDAwMDAw
MDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMvbmV0L3JvdXRlLmMJMjAxMC0w
OS0wNiAxMToyMjozOS4wMDAwMDAwMDAgKzAwMDANCkBAIC04NzUsNyArODc1
LDcgQEANCiAJICogUmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIHRyZWU7IGl0
IHNob3VsZCBiZSB0aGVyZSwNCiAJICogYnV0IHdoZW4gY2FsbGVycyBpbnZv
a2UgdXMgYmxpbmRseSBpdCBtYXkgbm90IChzaWdoKS4NCiAJICovDQotCXJu
ID0gcm5oLT5ybmhfZGVsYWRkcihydF9rZXkocnQpLCBydF9tYXNrKHJ0KSwg
cm5oKTsNCisJcm4gPSBybmgtPnJuaF9kZWxhZGRyKHJ0X2tleShydCksIHJ0
X21hc2socnQpLCBybmgsIE5VTEwpOw0KIAlpZiAocm4gPT0gTlVMTCkgew0K
IAkJZXJyb3IgPSBFU1JDSDsNCiAJCWdvdG8gYmFkOw0KQEAgLTkxMywxMTIg
KzkxMyw2IEBADQogCXJldHVybiAoZXJyb3IpOw0KIH0NCiANCi0jaWZkZWYg
UkFESVhfTVBBVEgNCi1zdGF0aWMgaW50DQotcm5fbXBhdGhfdXBkYXRlKGlu
dCByZXEsIHN0cnVjdCBydF9hZGRyaW5mbyAqaW5mbywNCi0gICAgc3RydWN0
IHJhZGl4X25vZGVfaGVhZCAqcm5oLCBzdHJ1Y3QgcnRlbnRyeSAqKnJldF9u
cnQpDQotew0KLQkvKg0KLQkgKiBpZiB3ZSBnb3QgbXVsdGlwYXRoIHJvdXRl
cywgd2UgcmVxdWlyZSB1c2VycyB0byBzcGVjaWZ5DQotCSAqIGEgbWF0Y2hp
bmcgUlRBWF9HQVRFV0FZLg0KLQkgKi8NCi0Jc3RydWN0IHJ0ZW50cnkgKnJ0
LCAqcnRvID0gTlVMTDsNCi0JcmVnaXN0ZXIgc3RydWN0IHJhZGl4X25vZGUg
KnJuOw0KLQlpbnQgZXJyb3IgPSAwOw0KLQ0KLQlybiA9IHJuaC0+cm5oX21h
dGNoYWRkcihkc3QsIHJuaCk7DQotCWlmIChybiA9PSBOVUxMKQ0KLQkJcmV0
dXJuIChFU1JDSCk7DQotCXJ0byA9IHJ0ID0gUk5UT1JUKHJuKTsNCi0JcnQg
PSBydF9tcGF0aF9tYXRjaGdhdGUocnQsIGdhdGV3YXkpOw0KLQlpZiAocnQg
PT0gTlVMTCkNCi0JCXJldHVybiAoRVNSQ0gpOw0KLQkvKg0KLQkgKiB0aGlz
IGlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hhaW4NCi0JICovDQotCWlm
IChydG8gPT0gcnQpIHsNCi0JCXJuID0gcm5fbXBhdGhfbmV4dCgoc3RydWN0
IHJhZGl4X25vZGUgKilydCk7DQotCQkvKg0KLQkJICogdGhlcmUgaXMgYW5v
dGhlciBlbnRyeSwgbm93IGl0J3MgYWN0aXZlDQotCQkgKi8NCi0JCWlmIChy
bikgew0KLQkJCXJ0byA9IFJOVE9SVChybik7DQotCQkJUlRfTE9DSyhydG8p
Ow0KLQkJCXJ0by0+cnRfZmxhZ3MgfD0gUlRGX1VQOw0KLQkJCVJUX1VOTE9D
SyhydG8pOw0KLQkJfSBlbHNlIGlmIChydC0+cnRfZmxhZ3MgJiBSVEZfR0FU
RVdBWSkgew0KLQkJCS8qDQotCQkJICogRm9yIGdhdGV3YXkgcm91dGVzLCB3
ZSBuZWVkIHRvIA0KLQkJCSAqIG1ha2Ugc3VyZSB0aGF0IHdlIHdlIGFyZSBk
ZWxldGluZw0KLQkJCSAqIHRoZSBjb3JyZWN0IGdhdGV3YXkuIA0KLQkJCSAq
IHJ0X21wYXRoX21hdGNoZ2F0ZSgpIGRvZXMgbm90IA0KLQkJCSAqIGNoZWNr
IHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgb25seQ0KLQkJCSAqIG9uZSByb3V0
ZSBpbiB0aGUgY2hhaW4uICANCi0JCQkgKi8NCi0JCQlpZiAoZ2F0ZXdheSAm
Jg0KLQkJCSAgICAocnQtPnJ0X2dhdGV3YXktPnNhX2xlbiAhPSBnYXRld2F5
LT5zYV9sZW4gfHwNCi0JCQkJbWVtY21wKHJ0LT5ydF9nYXRld2F5LCBnYXRl
d2F5LCBnYXRld2F5LT5zYV9sZW4pKSkNCi0JCQkJZXJyb3IgPSBFU1JDSDsN
Ci0JCQllbHNlIHsNCi0JCQkJLyoNCi0JCQkJICogcmVtb3ZlIGZyb20gdHJl
ZSBiZWZvcmUgcmV0dXJuaW5nIGl0DQotCQkJCSAqIHRvIHRoZSBjYWxsZXIN
Ci0JCQkJICovDQotCQkJCXJuID0gcm5oLT5ybmhfZGVsYWRkcihkc3QsIG5l
dG1hc2ssIHJuaCk7DQotCQkJCUtBU1NFUlQocnQgPT0gUk5UT1JUKHJuKSwg
KCJyYWRpeCBub2RlIGRpc2FwcGVhcmVkIikpOw0KLQkJCQlnb3RvIGd3ZGVs
ZXRlOw0KLQkJCX0NCi0JCQkNCi0JCX0NCi0JCS8qDQotCQkgKiB1c2UgdGhl
IG5vcm1hbCBkZWxldGUgY29kZSB0byByZW1vdmUNCi0JCSAqIHRoZSBmaXJz
dCBlbnRyeQ0KLQkJICovDQotCQlpZiAocmVxICE9IFJUTV9ERUxFVEUpIA0K
LQkJCWdvdG8gbm9uZGVsZXRlOw0KLQ0KLQkJZXJyb3IgPSBFTk9FTlQ7DQot
CQlnb3RvIGRvbmU7DQotCX0NCi0JCQ0KLQkvKg0KLQkgKiBpZiB0aGUgZW50
cnkgaXMgMm5kIGFuZCBvbiB1cA0KLQkgKi8NCi0JaWYgKChyZXEgPT0gUlRN
X0RFTEVURSkgJiYgIXJ0X21wYXRoX2RlbGR1cChydG8sIHJ0KSkNCi0JCXBh
bmljICgicnRyZXF1ZXN0MTogcnRfbXBhdGhfZGVsZHVwIik7DQotZ3dkZWxl
dGU6DQotCVJUX0xPQ0socnQpOw0KLQlSVF9BRERSRUYocnQpOw0KLQlpZiAo
cmVxID09IFJUTV9ERUxFVEUpIHsNCi0JCXJ0LT5ydF9mbGFncyAmPSB+UlRG
X1VQOw0KLQkJLyoNCi0JCSAqIE9uZSBtb3JlIHJ0ZW50cnkgZmxvYXRpbmcg
YXJvdW5kIHRoYXQgaXMgbm90DQotCQkgKiBsaW5rZWQgdG8gdGhlIHJvdXRp
bmcgdGFibGUuIHJ0dHJhc2ggd2lsbCBiZSBkZWNyZW1lbnRlZA0KLQkJICog
d2hlbiBSVEZSRUUocnQpIGlzIGV2ZW50dWFsbHkgY2FsbGVkLg0KLQkJICov
DQotCQlWX3J0dHJhc2grKzsNCi0JfQ0KLQkNCi1ub25kZWxldGU6DQotCWlm
IChyZXEgIT0gUlRNX0RFTEVURSkNCi0JCXBhbmljKCJ1bnJlY29nbml6ZWQg
cmVxdWVzdCAlZCIsIHJlcSk7DQotCQ0KLQ0KLQkvKg0KLQkgKiBJZiB0aGUg
Y2FsbGVyIHdhbnRzIGl0LCB0aGVuIGl0IGNhbiBoYXZlIGl0LA0KLQkgKiBi
dXQgaXQncyB1cCB0byBpdCB0byBmcmVlIHRoZSBydGVudHJ5IGFzIHdlIHdv
bid0IGJlDQotCSAqIGRvaW5nIGl0Lg0KLQkgKi8NCi0JaWYgKHJldF9ucnQp
IHsNCi0JCSpyZXRfbnJ0ID0gcnQ7DQotCQlSVF9VTkxPQ0socnQpOw0KLQl9
IGVsc2UNCi0JCVJURlJFRV9MT0NLRUQocnQpOw0KLWRvbmU6DQotCXJldHVy
biAoZXJyb3IpOw0KLX0NCi0jZW5kaWYNCi0NCiBpbnQNCiBydHJlcXVlc3Qx
X2ZpYihpbnQgcmVxLCBzdHJ1Y3QgcnRfYWRkcmluZm8gKmluZm8sIHN0cnVj
dCBydGVudHJ5ICoqcmV0X25ydCwNCiAJCQkJdV9pbnQgZmlibnVtKQ0KQEAg
LTEwNTgsMjggKzk1MiwzMCBAQA0KIA0KIAlzd2l0Y2ggKHJlcSkgew0KIAlj
YXNlIFJUTV9ERUxFVEU6DQorCSAgICAgICAgaWYgKChybiA9IHJuaC0+cm5o
X2xvb2t1cChkc3QsIG5ldG1hc2ssIHJuaCkpID09IE5VTEwpDQorCSAgICAg
ICAgICAgICAgICBzZW5kZXJyKEVTUkNIKTsNCisJCXJ0ID0gUk5UT1JUKHJu
KTsNCiAjaWZkZWYgUkFESVhfTVBBVEgNCi0JCWlmIChybl9tcGF0aF9jYXBh
YmxlKHJuaCkpIHsNCi0JCQllcnJvciA9IHJuX21wYXRoX3VwZGF0ZShyZXEs
IGluZm8sIHJuaCwgcmV0X25ydCk7DQotCQkJLyoNCi0JCQkgKiAiYmFkIiBo
b2xkcyB0cnVlIGZvciB0aGUgc3VjY2VzcyBjYXNlDQotCQkJICogYXMgd2Vs
bA0KLQkJCSAqLw0KLQkJCWlmIChlcnJvciAhPSBFTk9FTlQpDQotCQkJCWdv
dG8gYmFkOw0KLQkJCWVycm9yID0gMDsNCi0JCX0NCisgICAgICAgICAgICAg
ICAgLyoNCisgICAgICAgICAgICAgICAgICogaWYgd2UgZ290IG11bHRpcGF0
aCByb3V0ZXMsIHdlIHJlcXVpcmUgdXNlcnMgdG8gc3BlY2lmeQ0KKyAgICAg
ICAgICAgICAgICAgKiBhIG1hdGNoaW5nIFJUQVhfR0FURVdBWS4NCisgICAg
ICAgICAgICAgICAgICovDQorICAgICAgICAgICAgICAgIGlmIChybl9tcGF0
aF9jYXBhYmxlKHJuaCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBy
dCA9IHJ0X21wYXRoX21hdGNoZ2F0ZSggcnQsIGdhdGV3YXkpOw0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJuID0gKHN0cnVjdCByYWRpeF9ub2RlICop
cnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFydCkNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRlcnIoRVNSQ0gpOw0K
KyAgICAgICAgICAgICAgICB9DQogI2VuZGlmDQogCQkvKg0KIAkJICogUmVt
b3ZlIHRoZSBpdGVtIGZyb20gdGhlIHRyZWUgYW5kIHJldHVybiBpdC4NCiAJ
CSAqIENvbXBsYWluIGlmIGl0IGlzIG5vdCB0aGVyZSBhbmQgZG8gbm8gbW9y
ZSBwcm9jZXNzaW5nLg0KIAkJICovDQotCQlybiA9IHJuaC0+cm5oX2RlbGFk
ZHIoZHN0LCBuZXRtYXNrLCBybmgpOw0KKwkJcm4gPSBybmgtPnJuaF9kZWxh
ZGRyKGRzdCwgbmV0bWFzaywgcm5oLCBybik7DQogCQlpZiAocm4gPT0gTlVM
TCkNCiAJCQlzZW5kZXJyKEVTUkNIKTsNCiAJCWlmIChybi0+cm5fZmxhZ3Mg
JiAoUk5GX0FDVElWRSB8IFJORl9ST09UKSkNCiAJCQlwYW5pYyAoInJ0cmVx
dWVzdCBkZWxldGUiKTsNCi0JCXJ0ID0gUk5UT1JUKHJuKTsNCiAJCVJUX0xP
Q0socnQpOw0KIAkJUlRfQUREUkVGKHJ0KTsNCiAJCXJ0LT5ydF9mbGFncyAm
PSB+UlRGX1VQOw0KQEAgLTE0NzQsMTAgKzEzNzAsOSBAQA0KIAkJCSAgICBS
TlRPUlQocm4pLT5ydF9pZmEgIT0gaWZhIHx8DQogCQkJICAgICFzYV9lcXVh
bCgoc3RydWN0IHNvY2thZGRyICopcm4tPnJuX2tleSwgZHN0KSk7DQogCQkJ
UkFESVhfTk9ERV9IRUFEX1VOTE9DSyhybmgpOw0KLQkJCWlmIChlcnJvcikg
ew0KKwkJCWlmIChlcnJvcikNCiAJCQkJLyogdGhpcyBpcyBvbmx5IGFuIGVy
cm9yIGlmIGJhZCBvbiBBTEwgdGFibGVzICovDQogCQkJCWNvbnRpbnVlOw0K
LQkJCX0NCiAJCX0NCiAJCS8qDQogCQkgKiBEbyB0aGUgYWN0dWFsIHJlcXVl
c3QNCmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9zeXMvbmV0aW5ldC9pbi5j
IC91c3Ivc3JjL3N5cy9uZXRpbmV0L2luLmMNCi0tLSAvdXNyX2RpZmYvc3Jj
L3N5cy9uZXRpbmV0L2luLmMJMjAxMC0wOS0wNyAxMzoxMDo0Ni4wMDAwMDAw
MDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMvbmV0aW5ldC9pbi5jCTIwMTAt
MDktMTEgMDI6MjA6NTguMDAwMDAwMDAwICswMDAwDQpAQCAtMTM3NCwxMiAr
MTM3NCw0NSBAQA0KIGluX2xsdGFibGVfcnRjaGVjayhzdHJ1Y3QgaWZuZXQg
KmlmcCwgdV9pbnQgZmxhZ3MsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbDNh
ZGRyKQ0KIHsNCiAJc3RydWN0IHJ0ZW50cnkgKnJ0Ow0KKyNpZmRlZiBSQURJ
WF9NUEFUSA0KKwlpbnQ2NF90IHdlaWdodDsNCisJc3RydWN0IHJ0ZW50cnkg
KnJ0MDsNCisJaW50MzJfdCBmb3VuZCA9IDA7DQorI2VuZGlmDQogDQogCUtB
U1NFUlQobDNhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCwNCiAJICAgICgi
c2luX2ZhbWlseSAlZCIsIGwzYWRkci0+c2FfZmFtaWx5KSk7DQogDQogCS8q
IFhYWCBydGFsbG9jMSBzaG91bGQgdGFrZSBhIGNvbnN0IHBhcmFtICovDQog
CXJ0ID0gcnRhbGxvYzEoX19ERUNPTlNUKHN0cnVjdCBzb2NrYWRkciAqLCBs
M2FkZHIpLCAwLCAwKTsNCisNCisjaWZkZWYgUkFESVhfTVBBVEgNCisJcnQw
ID0gcnQ7DQorICAgICAgICBpZiAoKHJ0ICE9IE5VTEwpICYmICggcm5fbXBh
dGhfbmV4dCgoc3RydWN0IHJhZGl4X25vZGUgKilydCkgIT0gTlVMTCkpIHsN
CisJCS8qIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciwgbWF0Y2hpbmcgcm91
dGVzICovDQorCQkvKiBmaW5kIGxvd2VzdCB3ZWlnaHQgcm91dGUgKi8NCisJ
CWZvciAoIHdlaWdodCA9IHJ0LT5ydF9ybXgucm14X3dlaWdodDsgcnQgIT0g
TlVMTDsgcnQgPSAoc3RydWN0IHJ0ZW50cnkgKilybl9tcGF0aF9uZXh0KCAo
c3RydWN0IHJhZGl4X25vZGUgKilydCkpIHsNCisJCQlpZihydC0+cnRfZmxh
Z3MgJiBSVEZfVVApIHsNCisJCQkJaWYgKHdlaWdodCA+IHJ0LT5ydF9ybXgu
cm14X3dlaWdodCkNCisJCQkJCXdlaWdodCA9IHJ0LT5ydF9ybXgucm14X3dl
aWdodDsNCisJCQl9DQorCQl9DQorDQorCQkvKiBmaW5kIG5vdyBvbmUgbm9u
IGdhdGV3YXkgcm91dGUgd2l0aCBsb3dlc3Qgd2VpZ2h0ICovDQorCQlmb3Ig
KCBydCA9IHJ0MDsgcnQgIT0gTlVMTDsgcnQgPSAoc3RydWN0IHJ0ZW50cnkg
Kilybl9tcGF0aF9uZXh0KCAoc3RydWN0IHJhZGl4X25vZGUgKilydCkpIHsN
CisJCQlpZihydC0+cnRfZmxhZ3MgJiBSVEZfVVApIHsNCisJCQkJaWYgKCh3
ZWlnaHQgPT0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KSAmJiAhKHJ0LT5ydF9m
bGFncyAmIFJURl9HQVRFV0FZKSkgew0KKwkJCQkJZm91bmQgPSAxOw0KKwkJ
CQkJYnJlYWs7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQlpZiAoZm91bmQg
PT0gMCkNCisJCQlydCA9IE5VTEw7DQorCX0NCisJDQorI2VuZGlmCQ0KKw0K
IAlpZiAocnQgPT0gTlVMTCB8fCAoIShmbGFncyAmIExMRV9QVUIpICYmDQog
CQkJICAgKChydC0+cnRfZmxhZ3MgJiBSVEZfR0FURVdBWSkgfHwgDQogCQkJ
ICAgIChydC0+cnRfaWZwICE9IGlmcCkpKSkgew0KQEAgLTEzODcsMTEgKzE0
MjAsMjEgQEANCiAJCWxvZyhMT0dfSU5GTywgIklQdjQgYWRkcmVzczogXCIl
c1wiIGlzIG5vdCBvbiB0aGUgbmV0d29ya1xuIiwNCiAJCSAgICBpbmV0X250
b2EoKChjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKilsM2FkZHIpLT5zaW5f
YWRkcikpOw0KICNlbmRpZg0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwkJaWYg
KHJ0MCAhPSBOVUxMKQ0KKwkJCVJURlJFRV9MT0NLRUQocnQwKTsNCisjZWxz
ZQ0KIAkJaWYgKHJ0ICE9IE5VTEwpDQogCQkJUlRGUkVFX0xPQ0tFRChydCk7
DQorI2VuZGlmDQogCQlyZXR1cm4gKEVJTlZBTCk7DQogCX0NCisjaWZkZWYg
UkFESVhfTVBBVEgNCisJUlRGUkVFX0xPQ0tFRChydDApOw0KKyNlbHNlDQog
CVJURlJFRV9MT0NLRUQocnQpOw0KKyNlbmRpZg0KKw0KIAlyZXR1cm4gMDsN
CiB9DQogDQpAQCAtMTQyNCw3ICsxNDY3LDcgQEANCiAJaWYgKGxsZSA9PSBO
VUxMKSB7DQogI2lmZGVmIERJQUdOT1NUSUMNCiAJCWlmIChmbGFncyAmIExM
RV9ERUxFVEUpDQotCQkJbG9nKExPR19JTkZPLCAiaW50ZXJmYWNlIGFkZHJl
c3MgaXMgbWlzc2luZyBmcm9tIGNhY2hlID0gJXAgIGluIGRlbGV0ZVxuIiwg
bGxlKTsJDQorCQkJbG9nKExPR19JTkZPLCAiaW50ZXJmYWNlIGFkZHJlc3Mg
aXMgbWlzc2luZyBmcm9tIGNhY2hlID0gJXAgIGluIGRlbGV0ZVxuIiwgbGxl
KTsNCiAjZW5kaWYNCiAJCWlmICghKGZsYWdzICYgTExFX0NSRUFURSkpDQog
CQkJcmV0dXJuIChOVUxMKTsNCmRpZmYgLXIgLXUgL3Vzcl9kaWZmL3NyYy9z
eXMvbmV0aW5ldC9pcGZ3L2lwX2Z3X3RhYmxlLmMgL3Vzci9zcmMvc3lzL25l
dGluZXQvaXBmdy9pcF9md190YWJsZS5jDQotLS0gL3Vzcl9kaWZmL3NyYy9z
eXMvbmV0aW5ldC9pcGZ3L2lwX2Z3X3RhYmxlLmMJMjAxMC0wMy0yMyAwOTo1
ODo1OS4wMDAwMDAwMDAgKzAwMDANCisrKyAvdXNyL3NyYy9zeXMvbmV0aW5l
dC9pcGZ3L2lwX2Z3X3RhYmxlLmMJMjAxMC0wOS0wNiAxMToyMjozOS4wMDAw
MDAwMDAgKzAwMDANCkBAIC0xMzcsNyArMTM3LDcgQEANCiAJbWFzay5zaW5f
YWRkci5zX2FkZHIgPSBodG9ubChtbGVuID8gfigoMSA8PCAoMzIgLSBtbGVu
KSkgLSAxKSA6IDApOw0KIAlzYS5zaW5fYWRkci5zX2FkZHIgPSBhZGRyICYg
bWFzay5zaW5fYWRkci5zX2FkZHI7DQogCUlQRldfV0xPQ0soY2gpOw0KLQll
bnQgPSAoc3RydWN0IHRhYmxlX2VudHJ5ICopcm5oLT5ybmhfZGVsYWRkcigm
c2EsICZtYXNrLCBybmgpOw0KKwllbnQgPSAoc3RydWN0IHRhYmxlX2VudHJ5
ICopcm5oLT5ybmhfZGVsYWRkcigmc2EsICZtYXNrLCBybmgsIE5VTEwpOw0K
IAlpZiAoZW50ID09IE5VTEwpIHsNCiAJCUlQRldfV1VOTE9DSyhjaCk7DQog
CQlyZXR1cm4gKEVTUkNIKTsNCkBAIC0xNTQsNyArMTU0LDcgQEANCiAJc3Ry
dWN0IHRhYmxlX2VudHJ5ICplbnQ7DQogDQogCWVudCA9IChzdHJ1Y3QgdGFi
bGVfZW50cnkgKikNCi0JICAgIHJuaC0+cm5oX2RlbGFkZHIocm4tPnJuX2tl
eSwgcm4tPnJuX21hc2ssIHJuaCk7DQorCSAgICBybmgtPnJuaF9kZWxhZGRy
KHJuLT5ybl9rZXksIHJuLT5ybl9tYXNrLCBybmgsIE5VTEwpOw0KIAlpZiAo
ZW50ICE9IE5VTEwpDQogCQlmcmVlKGVudCwgTV9JUEZXX1RCTCk7DQogCXJl
dHVybiAoMCk7DQpkaWZmIC1yIC11IC91c3JfZGlmZi9zcmMvc3lzL25ldGlu
ZXQvcmF3X2lwLmMgL3Vzci9zcmMvc3lzL25ldGluZXQvcmF3X2lwLmMNCi0t
LSAvdXNyX2RpZmYvc3JjL3N5cy9uZXRpbmV0L3Jhd19pcC5jCTIwMTAtMDgt
MjcgMTg6NTA6MTIuMDAwMDAwMDAwICswMDAwDQorKysgL3Vzci9zcmMvc3lz
L25ldGluZXQvcmF3X2lwLmMJMjAxMC0wOS0xMSAwMjozNzoyNi4wMDAwMDAw
MDAgKzAwMDANCkBAIC03NTUsNiArNzU1LDggQEANCiAJCWlmIChlcnIgPT0g
MCkNCiAJCQlpYS0+aWFfZmxhZ3MgfD0gSUZBX1JPVVRFOw0KIAkJZXJyID0g
aWZhX2FkZF9sb29wYmFja19yb3V0ZSgoc3RydWN0IGlmYWRkciAqKWlhLCBz
YSk7DQorCQlpZiAoZXJyID09IDApDQorCQkgICAgICAgIGlhLT5pYV9mbGFn
cyB8PSBJRkFfUlRTRUxGOw0KIAkJaWZhX2ZyZWUoJmlhLT5pYV9pZmEpOw0K
IAkJYnJlYWs7DQogCX0NCg==

--168430090-52481847-1284174321=:5369--



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