Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Aug 2010 01:55:19 +0200 (CEST)
From:      Ingo Flaschberger <if@xip.at>
To:        net@freebsd.org
Subject:   Re: funny ECMP
Message-ID:  <alpine.LFD.2.00.1008240144350.12708@filebunker.xip.at>
In-Reply-To: <alpine.LFD.2.00.1008230154280.29368@filebunker.xip.at>
References:  <alpine.LFD.2.00.1008230154280.29368@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-1063431390-1282607720=:12708
Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII

Hi,

I have changed the route selection code of ecmp to
balance only between routes of the same weight.
(see attached file)

As Qing Li mentioned months ago, there are problems with static routes and 
interfaces.

Example 1:
ifconfig em1 alias 10.13.13.90/24
 	ping 10.13.13.95 ok
route add 10.13.13.0/24 10.11.11.1 -weight 2
 	ping 10.13.13.95 broken (arpresolve: can't allocate llinfo for
 				10.13.13.95)

Eaxmple 2:
route add 10.13.13.0/24 10.11.11.1 -weight 2
 	ping 10.13.13.95 ok
route add 10.13.13.0/24 10.11.11.2 -weight 3
 	ping 10.13.13.95 ok
ifconfig em1 alias 10.13.13.90/24
 	ping 10.13.13.95 broken (arpresolve: can't allocate llinfo for
 				10.13.13.95)
route delete 10.13.13.0/24 10.11.11.2
 	ping 10.13.13.95 broken
route delete 10.13.13.0/24 10.11.11.1
 	ping -> system crash

deleting the last static multipath routes seems to affect?, destroy?
the interface route.
system crashes in:
/usr/src/sys/net/route.c:370
         rn = rnh->rnh_matchaddr(dst, rnh);
         if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) {
                 newrt = rt = RNTORT(rn);
here ->         RT_LOCK(newrt);
                 RT_ADDREF(newrt);
                 if (needlock)

Kind regards,
 	Ingo Flaschberger

--168430090-1063431390-1282607720=:12708
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=radix_mpath.c
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.LFD.2.00.1008240155190.12708@filebunker.xip.at>
Content-Description: 
Content-Disposition: attachment; filename=radix_mpath.c

LyoNCiAqIENvcHlyaWdodCAoQykgMjAwMSBXSURFIFByb2plY3QuDQogKiBB
bGwgcmlnaHRzIHJlc2VydmVkLg0KICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dA0KICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogKiBhcmUgbWV0Og0K
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4NCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlDQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
Lg0KICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCiAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQ0KICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQNCiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwNCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUDQogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQog
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4N
CiAqIFRIRSBBVVRIT1JTIERPIE5PVCBHVUFSQU5URUUgVEhBVCBUSElTIFNP
RlRXQVJFIERPRVMgTk9UIElORlJJTkdFDQogKiBBTlkgT1RIRVJTJyBJTlRF
TExFQ1RVQUwgUFJPUEVSVElFUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUlMNCiAqIEJFIExJQUJMRSBGT1IgQU5ZIElORlJJTkdFTUVOVCBPRiBB
TlkgT1RIRVJTJyBJTlRFTExFQ1RVQUwNCiAqIFBST1BFUlRJRVMuDQogKi8N
Cg0KI2luY2x1ZGUgPHN5cy9jZGVmcy5oPg0KX19GQlNESUQoIiRGcmVlQlNE
OiBzcmMvc3lzL25ldC9yYWRpeF9tcGF0aC5jLHYgMS4xMC4yLjIgMjAxMC8w
NC8wMiAwNTowMjo1MCBxaW5nbGkgRXhwICQiKTsNCg0KI2luY2x1ZGUgIm9w
dF9pbmV0LmgiDQojaW5jbHVkZSAib3B0X2luZXQ2LmgiDQoNCiNpbmNsdWRl
IDxzeXMvcGFyYW0uaD4NCiNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCiNpbmNs
dWRlIDxzeXMvbWFsbG9jLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0K
I2luY2x1ZGUgPHN5cy9kb21haW4uaD4NCiNpbmNsdWRlIDxzeXMvc3lzbG9n
Lmg+DQojaW5jbHVkZSA8bmV0L3JhZGl4Lmg+DQojaW5jbHVkZSA8bmV0L3Jh
ZGl4X21wYXRoLmg+DQojaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQojaW5jbHVk
ZSA8bmV0L2lmLmg+DQojaW5jbHVkZSA8bmV0L2lmX3Zhci5oPg0KDQovKg0K
ICogZ2l2ZSBzb21lIGppdHRlciB0byBoYXNoLCB0byBhdm9pZCBzeW5jaHJv
bml6YXRpb24gYmV0d2VlbiByb3V0ZXJzDQogKi8NCnN0YXRpYyB1aW50MzJf
dCBoYXNoaml0dGVyOw0KDQppbnQNCnJuX21wYXRoX2NhcGFibGUoc3RydWN0
IHJhZGl4X25vZGVfaGVhZCAqcm5oKQ0Kew0KDQoJcmV0dXJuIHJuaC0+cm5o
X211bHRpcGF0aDsNCn0NCg0Kc3RydWN0IHJhZGl4X25vZGUgKg0Kcm5fbXBh
dGhfbmV4dChzdHJ1Y3QgcmFkaXhfbm9kZSAqcm4pDQp7DQoJc3RydWN0IHJh
ZGl4X25vZGUgKm5leHQ7DQoNCglpZiAoIXJuLT5ybl9kdXBlZGtleSkNCgkJ
cmV0dXJuIE5VTEw7DQoJbmV4dCA9IHJuLT5ybl9kdXBlZGtleTsNCglpZiAo
cm4tPnJuX21hc2sgPT0gbmV4dC0+cm5fbWFzaykNCgkJcmV0dXJuIG5leHQ7
DQoJZWxzZQ0KCQlyZXR1cm4gTlVMTDsNCn0NCg0KdWludDMyX3QNCnJuX21w
YXRoX2NvdW50KHN0cnVjdCByYWRpeF9ub2RlICpybikNCnsNCgl1aW50MzJf
dCBpID0gMDsNCglzdHJ1Y3QgcnRlbnRyeSAqcnQ7DQoJDQoJd2hpbGUgKHJu
ICE9IE5VTEwpIHsNCgkJcnQgPSAoc3RydWN0IHJ0ZW50cnkgKilybjsNCgkJ
aSArPSBydC0+cnRfcm14LnJteF93ZWlnaHQ7DQoJCXJuID0gcm5fbXBhdGhf
bmV4dChybik7DQoJfQ0KCXJldHVybiAoaSk7DQp9DQoNCnN0cnVjdCBydGVu
dHJ5ICoNCnJ0X21wYXRoX21hdGNoZ2F0ZShzdHJ1Y3QgcnRlbnRyeSAqcnQs
IHN0cnVjdCBzb2NrYWRkciAqZ2F0ZSkNCnsNCglzdHJ1Y3QgcmFkaXhfbm9k
ZSAqcm47DQoNCglpZiAoIXJuX21wYXRoX25leHQoKHN0cnVjdCByYWRpeF9u
b2RlICopcnQpKSB7DQoJCXByaW50ZigicnRfbXBhdGhfbWF0Y2hnYXRlOiBu
byBuZXh0XG4iKTsNCgkJcmV0dXJuIHJ0Ow0KCX0NCg0KCWlmICghZ2F0ZSkg
ew0KCQlwcmludGYoInJ0X21wYXRoX21hdGNoZ2F0ZTogbnVsbFxuIik7DQoJ
CXJldHVybiBOVUxMOw0KCX0NCg0KCS8qIGJleW9uZCBoZXJlLCB3ZSB1c2Ug
cm4gYXMgdGhlIG1hc3RlciBjb3B5ICovDQoJcm4gPSAoc3RydWN0IHJhZGl4
X25vZGUgKilydDsNCglkbyB7DQoJCXJ0ID0gKHN0cnVjdCBydGVudHJ5ICop
cm47DQoJCS8qDQoJCSAqIHdlIGFyZSByZW1vdmluZyBhbiBhZGRyZXNzIGFs
aWFzIHRoYXQgaGFzIA0KCQkgKiB0aGUgc2FtZSBwcmVmaXggYXMgYW5vdGhl
ciBhZGRyZXNzDQoJCSAqIHdlIG5lZWQgdG8gY29tcGFyZSB0aGUgaW50ZXJm
YWNlIGFkZHJlc3MgYmVjYXVzZQ0KCQkgKiBydF9nYXRld2F5IGlzIGEgc3Bl
Y2lhbCBzb2NrYWRkX2RsIHN0cnVjdHVyZQ0KCQkgKi8NCgkJaWYgKHJ0LT5y
dF9nYXRld2F5LT5zYV9mYW1pbHkgPT0gQUZfTElOSykgew0KCQkJcHJpbnRm
KCJydF9tcGF0aF9tYXRjaGdhdGU6IGRvMVxuIik7DQoJCQlpZiAoIW1lbWNt
cChydC0+cnRfaWZhLT5pZmFfYWRkciwgZ2F0ZSwgZ2F0ZS0+c2FfbGVuKSkg
ew0KCQkJCXByaW50ZigicnRfbXBhdGhfbWF0Y2hnYXRlOiBkbzJcbiIpOw0K
CQkJCWJyZWFrOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJcHJpbnRmKCJydF9t
cGF0aF9tYXRjaGdhdGU6IGRvM1xuIik7DQoJCQlpZiAocnQtPnJ0X2dhdGV3
YXktPnNhX2xlbiA9PSBnYXRlLT5zYV9sZW4gJiYNCgkJCSAgICAhbWVtY21w
KHJ0LT5ydF9nYXRld2F5LCBnYXRlLCBnYXRlLT5zYV9sZW4pKSB7DQoJCQkg
ICAgCXByaW50ZigicnRfbXBhdGhfbWF0Y2hnYXRlOiBkbzRcbiIpOw0KCQkJ
CWJyZWFrOw0KCQkJfQ0KCQl9DQoJfSB3aGlsZSAoKHJuID0gcm5fbXBhdGhf
bmV4dChybikpICE9IE5VTEwpOw0KDQoJcHJpbnRmKCJydF9tcGF0aF9tYXRj
aGdhdGU6IHJldHVyblxuIik7DQoJcmV0dXJuIChzdHJ1Y3QgcnRlbnRyeSAq
KXJuOw0KfQ0KDQovKiANCiAqIGdvIHRocm91Z2ggdGhlIGNoYWluIGFuZCB1
bmxpbmsgInJ0IiBmcm9tIHRoZSBsaXN0DQogKiB0aGUgY2FsbGVyIHdpbGwg
ZnJlZSAicnQiDQogKi8NCmludA0KcnRfbXBhdGhfZGVsZHVwKHN0cnVjdCBy
dGVudHJ5ICpoZWFkcnQsIHN0cnVjdCBydGVudHJ5ICpydCkNCnsNCiAgICAg
ICAgc3RydWN0IHJhZGl4X25vZGUgKnQsICp0dDsNCg0KICAgICAgICBpZiAo
IWhlYWRydCB8fCAhcnQpDQogICAgICAgICAgICByZXR1cm4gKDApOw0KICAg
ICAgICB0ID0gKHN0cnVjdCByYWRpeF9ub2RlICopaGVhZHJ0Ow0KICAgICAg
ICB0dCA9IHJuX21wYXRoX25leHQodCk7DQogICAgICAgIHdoaWxlICh0dCkg
ew0KICAgICAgICAgICAgaWYgKHR0ID09IChzdHJ1Y3QgcmFkaXhfbm9kZSAq
KXJ0KSB7DQogICAgICAgICAgICAgICAgdC0+cm5fZHVwZWRrZXkgPSB0dC0+
cm5fZHVwZWRrZXk7DQogICAgICAgICAgICAgICAgdHQtPnJuX2R1cGVka2V5
ID0gTlVMTDsNCiAgICAJICAgICAgICB0dC0+cm5fZmxhZ3MgJj0gflJORl9B
Q1RJVkU7DQoJICAgICAgICB0dFsxXS5ybl9mbGFncyAmPSB+Uk5GX0FDVElW
RTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKDEpOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgdCA9IHR0Ow0KICAgICAgICAgICAgdHQgPSBybl9t
cGF0aF9uZXh0KChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXQpOw0KICAgICAgICB9
DQogICAgICAgIHJldHVybiAoMCk7DQp9DQoNCi8qDQogKiBjaGVjayBpZiB3
ZSBoYXZlIHRoZSBzYW1lIGtleS9tYXNrL2dhdGV3YXkgb24gdGhlIHRhYmxl
IGFscmVhZHkuDQogKi8NCmludA0KcnRfbXBhdGhfY29uZmxpY3Qoc3RydWN0
IHJhZGl4X25vZGVfaGVhZCAqcm5oLCBzdHJ1Y3QgcnRlbnRyeSAqcnQsDQog
ICAgc3RydWN0IHNvY2thZGRyICpuZXRtYXNrKQ0Kew0KCXN0cnVjdCByYWRp
eF9ub2RlICpybiwgKnJuMTsNCglzdHJ1Y3QgcnRlbnRyeSAqcnQxOw0KCWNo
YXIgKnAsICpxLCAqZXE7DQoJaW50IHNhbWUsIGwsIHNraXA7DQoNCglybiA9
IChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJ0Ow0KCXJuMSA9IHJuaC0+cm5oX2xv
b2t1cChydF9rZXkocnQpLCBuZXRtYXNrLCBybmgpOw0KCWlmICghcm4xIHx8
IHJuMS0+cm5fZmxhZ3MgJiBSTkZfUk9PVCkNCgkJcmV0dXJuIDA7DQoNCgkv
Kg0KCSAqIHVubGlrZSBvdGhlciBmdW5jdGlvbnMgd2UgaGF2ZSBpbiB0aGlz
IGZpbGUsIHdlIGhhdmUgdG8gY2hlY2sNCgkgKiBhbGwga2V5L21hc2svZ2F0
ZXdheSBhcyBybmhfbG9va3VwIGNhbiBtYXRjaCBsZXNzIHNwZWNpZmljIGVu
dHJ5Lg0KCSAqLw0KCXJ0MSA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuMTsNCg0K
CS8qIGNvbXBhcmUga2V5LiAqLw0KCWlmIChydF9rZXkocnQxKS0+c2FfbGVu
ICE9IHJ0X2tleShydCktPnNhX2xlbiB8fA0KCSAgICBiY21wKHJ0X2tleShy
dDEpLCBydF9rZXkocnQpLCBydF9rZXkocnQxKS0+c2FfbGVuKSkNCgkJZ290
byBkaWZmZXJlbnQ7DQoNCgkvKiBrZXkgd2FzIHRoZSBzYW1lLiAgY29tcGFy
ZSBuZXRtYXNrLiAgaGFpcnkuLi4gKi8NCglpZiAocnRfbWFzayhydDEpICYm
IG5ldG1hc2spIHsNCgkJc2tpcCA9IHJuaC0+cm5oX3RyZWV0b3AtPnJuX29m
ZnNldDsNCgkJaWYgKHJ0X21hc2socnQxKS0+c2FfbGVuID4gbmV0bWFzay0+
c2FfbGVuKSB7DQoJCQkvKg0KCQkJICogYXMgcnRfbWFzayhydDEpIGlzIG1h
ZGUgb3B0aW1hbCBieSByYWRpeC5jLA0KCQkJICogdGhlcmUgbXVzdCBiZSBz
b21lIDEtYml0cyBvbiBydF9tYXNrKHJ0MSkNCgkJCSAqIGFmdGVyIG5ldG1h
c2stPnNhX2xlbi4gIHRoZXJlZm9yZSwgaW4NCgkJCSAqIHRoaXMgY2FzZSwg
dGhlIGVudHJpZXMgYXJlIGRpZmZlcmVudC4NCgkJCSAqLw0KCQkJaWYgKHJ0
X21hc2socnQxKS0+c2FfbGVuID4gc2tpcCkNCgkJCQlnb3RvIGRpZmZlcmVu
dDsNCgkJCWVsc2Ugew0KCQkJCS8qIG5vIGJpdHMgdG8gY29tcGFyZSwgaS5l
LiBzYW1lKi8NCgkJCQlnb3RvIG1hc2ttYXRjaGVkOw0KCQkJfQ0KCQl9DQoN
CgkJbCA9IHJ0X21hc2socnQxKS0+c2FfbGVuOw0KCQlpZiAoc2tpcCA+IGwp
IHsNCgkJCS8qIG5vIGJpdHMgdG8gY29tcGFyZSwgaS5lLiBzYW1lICovDQoJ
CQlnb3RvIG1hc2ttYXRjaGVkOw0KCQl9DQoJCXAgPSAoY2hhciAqKXJ0X21h
c2socnQxKTsNCgkJcSA9IChjaGFyICopbmV0bWFzazsNCgkJaWYgKGJjbXAo
cCArIHNraXAsIHEgKyBza2lwLCBsIC0gc2tpcCkpDQoJCQlnb3RvIGRpZmZl
cmVudDsNCgkJLyoNCgkJICogbmVlZCB0byBnbyB0aHJvdWdoIGFsbCB0aGUg
Yml0LCBhcyBuZXRtYXNrIGlzIG5vdA0KCQkgKiBvcHRpbWFsIGFuZCBjYW4g
Y29udGFpbiB0cmFpbGluZyAwcw0KCQkgKi8NCgkJZXEgPSAoY2hhciAqKW5l
dG1hc2sgKyBuZXRtYXNrLT5zYV9sZW47DQoJCXEgKz0gbDsNCgkJc2FtZSA9
IDE7DQoJCXdoaWxlIChlcSA+IHEpDQoJCQlpZiAoKnErKykgew0KCQkJCXNh
bWUgPSAwOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQlpZiAoIXNhbWUpDQoJCQln
b3RvIGRpZmZlcmVudDsNCgl9IGVsc2UgaWYgKCFydF9tYXNrKHJ0MSkgJiYg
IW5ldG1hc2spDQoJCTsgLyogbm8gbWFzayB0byBjb21wYXJlLCBpLmUuIHNh
bWUgKi8NCgllbHNlIHsNCgkJLyogb25lIGhhcyBtYXNrIGFuZCB0aGUgb3Ro
ZXIgZG9lcyBub3QsIGRpZmZlcmVudCAqLw0KCQlnb3RvIGRpZmZlcmVudDsN
Cgl9DQoNCm1hc2ttYXRjaGVkOg0KDQoJLyoga2V5L21hc2sgd2VyZSB0aGUg
c2FtZS4gIGNvbXBhcmUgZ2F0ZXdheSBmb3IgYWxsIG11bHRpcGF0aHMgKi8N
CglkbyB7DQoJCXJ0MSA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuMTsNCg0KCQkv
KiBzYW5pdHk6IG5vIHVzZSBpbiBjb21wYXJpbmcgdGhlIHNhbWUgdGhpbmcg
Ki8NCgkJaWYgKHJuMSA9PSBybikNCgkJCWNvbnRpbnVlOw0KICAgICAgICAN
CgkJaWYgKHJ0MS0+cnRfZ2F0ZXdheS0+c2FfZmFtaWx5ID09IEFGX0xJTksp
IHsNCgkJCWlmIChydDEtPnJ0X2lmYS0+aWZhX2FkZHItPnNhX2xlbiAhPSBy
dC0+cnRfaWZhLT5pZmFfYWRkci0+c2FfbGVuIHx8DQoJCQkgICAgYmNtcChy
dDEtPnJ0X2lmYS0+aWZhX2FkZHIsIHJ0LT5ydF9pZmEtPmlmYV9hZGRyLCAN
CgkJCSAgICBydDEtPnJ0X2lmYS0+aWZhX2FkZHItPnNhX2xlbikpDQoJCQkJ
Y29udGludWU7DQoJCX0gZWxzZSB7DQoJCQlpZiAocnQxLT5ydF9nYXRld2F5
LT5zYV9sZW4gIT0gcnQtPnJ0X2dhdGV3YXktPnNhX2xlbiB8fA0KCQkJICAg
IGJjbXAocnQxLT5ydF9nYXRld2F5LCBydC0+cnRfZ2F0ZXdheSwNCgkJCSAg
ICBydDEtPnJ0X2dhdGV3YXktPnNhX2xlbikpDQoJCQkJY29udGludWU7DQoJ
CX0NCg0KCQkvKiBhbGwga2V5L21hc2svZ2F0ZXdheSBhcmUgdGhlIHNhbWUu
ICBjb25mbGljdGluZyBlbnRyeS4gKi8NCgkJcmV0dXJuIEVFWElTVDsNCgl9
IHdoaWxlICgocm4xID0gcm5fbXBhdGhfbmV4dChybjEpKSAhPSBOVUxMKTsN
Cg0KZGlmZmVyZW50Og0KCXJldHVybiAwOw0KfQ0KDQp2b2lkDQpydGFsbG9j
X21wYXRoX2ZpYihzdHJ1Y3Qgcm91dGUgKnJvLCB1aW50MzJfdCBoYXNoLCB1
X2ludCBmaWJudW0pDQp7DQoJc3RydWN0IHJhZGl4X25vZGUgKnJuMCwgKnJu
Ow0KCS8vdV9pbnQzMl90IG47DQoJc3RydWN0IHJ0ZW50cnkgKnJ0Ow0KCWlu
dDY0X3Qgd2VpZ2h0Ow0KCWludDY0X3QgbG93ZXN0X3dlaWdodDsNCgl1X2lu
dDMyX3QgY291bnQ7DQoNCgkvKg0KCSAqIFhYWCB3ZSBkb24ndCBhdHRlbXB0
IHRvIGxvb2t1cCBjYWNoZWQgcm91dGUgYWdhaW47IHdoYXQgc2hvdWxkDQoJ
ICogYmUgZG9uZSBmb3Igc2VuZHRvKDMpIGNhc2U/DQoJICovDQoJaWYgKHJv
LT5yb19ydCAmJiByby0+cm9fcnQtPnJ0X2lmcCAmJiAocm8tPnJvX3J0LT5y
dF9mbGFncyAmIFJURl9VUCkNCgkgICAgJiYgUlRfTElOS19JU19VUChyby0+
cm9fcnQtPnJ0X2lmcCkpIHsNCgkgICAgCXByaW50ZigiY2FjaGVkIHJvdXRl
XG4iKTsNCgkJcmV0dXJuOw0KCX0JIA0KCXJvLT5yb19ydCA9IHJ0YWxsb2Mx
X2ZpYigmcm8tPnJvX2RzdCwgMSwgMCwgZmlibnVtKTsNCg0KCS8qIGlmIHRo
ZSByb3V0ZSBkb2VzIG5vdCBleGlzdCBvciBpdCBpcyBub3QgbXVsdGlwYXRo
LCBkb24ndCBjYXJlICovDQoJaWYgKHJvLT5yb19ydCA9PSBOVUxMKSB7DQoJ
CXByaW50ZigiZG9lcyBub3QgZXhpc3RcbiIpOw0KCQlyZXR1cm47DQoJfQ0K
CWlmIChybl9tcGF0aF9uZXh0KChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJvLT5y
b19ydCkgPT0gTlVMTCkgew0KCQlSVF9VTkxPQ0socm8tPnJvX3J0KTsNCgkJ
Ly9wcmludGYoIm5vIG11bHRpcGF0aFxuIik7DQoJCXJldHVybjsNCgl9DQoJ
DQoJLy8gY2hlY2sgaWYgdGhpcyBhIGRpcmVjdCBjb25uZWN0ZWQgaW50ZXJm
YWNlIG9yIGhvc3Qgcm91dGUgLyBubyBnYXRld2F5IHJvdXRlDQoJLyoNCglp
ZiAoIChyby0+cm9fcnQtPnJ0X2ZsYWdzICYgUlRGX0dBVEVXQVkpID09IDAp
IHsNCgkJcmV0dXJuOw0KCX0qLw0KDQoJLyogYmV5b25kIGhlcmUsIHdlIHVz
ZSBybiBhcyB0aGUgbWFzdGVyIGNvcHkgKi8NCglybjAgPSBybiA9IChzdHJ1
Y3QgcmFkaXhfbm9kZSAqKXJvLT5yb19ydDsNCgkvL24gPSBybl9tcGF0aF9j
b3VudChybjApOw0KCQ0KCS8qIGZpbmQgbG93ZXN0IHdlaWdodCByb3V0ZSAq
Lw0KCWNvdW50ID0gMDsNCglmb3IgKCBydCA9IChzdHJ1Y3QgcnRlbnRyeSAq
KXJuLCB3ZWlnaHQgPSBydC0+cnRfcm14LnJteF93ZWlnaHQ7IHJuICE9IE5V
TEw7IHJuID0gcm5fbXBhdGhfbmV4dCggcm4pKSB7DQoJCS8qIFhYWCBjaGVj
ayBpZiByb3V0ZSBpcyB1cD8gKi8NCgkJcnQgPSAoc3RydWN0IHJ0ZW50cnkg
KilybjsNCgkJcHJpbnRmKCJ3ZWlnaHQ6ICVsZFxuIiwgd2VpZ2h0KTsNCgkJ
aWYgKHdlaWdodCA+IHJ0LT5ydF9ybXgucm14X3dlaWdodCkgew0KCQkJd2Vp
Z2h0ID0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0Ow0KCQkJY291bnQgPSAxOw0K
CQkJcHJpbnRmKCJ3ZWlnaHQ6IG5ld1xuIik7DQoJCX0gZWxzZSBpZiAod2Vp
Z2h0ID09IHJ0LT5ydF9ybXgucm14X3dlaWdodCkgew0KCQkJY291bnQrKzsN
CgkJCXByaW50Zigid2VpZ2h0OiBjb3VudCAlZFxuIiwgY291bnQpOw0KCQl9
DQoJfQ0KCWxvd2VzdF93ZWlnaHQgPSB3ZWlnaHQ7DQoJDQoJcHJpbnRmKCJs
b3dlc3Qgd2VpZ2h0OiAlbGRcbiIsIHdlaWdodCk7DQoJDQoJLy8gc2VsZWN0
IG5vdyBvbmUgb2YgdGhlIGxvd2VzdCB3ZWlnaHQgcm91dGVzDQoJaGFzaCAr
PSBoYXNoaml0dGVyOw0KCWhhc2ggJT0gY291bnQ7DQoJcm4gPSBybjA7DQoJ
cHJpbnRmKCJjb3VudDogJWRcbiIsIGNvdW50KTsNCglwcmludGYoImhhc2g6
ICVkXG4iLCBoYXNoKTsNCglmb3IgKCBjb3VudCA9IDA7IHJuICE9IE5VTEw7
IHJuID0gcm5fbXBhdGhfbmV4dCggcm4pKSB7DQoJCXJ0ID0gKHN0cnVjdCBy
dGVudHJ5ICopcm47DQoJCWlmICggcnQtPnJ0X3JteC5ybXhfd2VpZ2h0ID09
IGxvd2VzdF93ZWlnaHQpIHsNCgkJCWlmIChjb3VudCA9PSBoYXNoKSB7DQoJ
CQkJcHJpbnRmKCJ3ZWlnaHQ6IGNvdW50ID09IGhhc2hcbiIpOw0KCQkJCWJy
ZWFrOw0KCQkJfQ0KCQkJY291bnQrKzsNCgkJfQ0KCX0NCglwcmludGYoInNl
bGN0ZWQgd2VpZ2h0OiAlbGRcbiIsIHJ0LT5ydF9ybXgucm14X3dlaWdodCk7
DQoNCgkNCgkvKiBndyBzZWxlY3Rpb24gaGFzIGZhaWxlZCAtIHRoZXJlIG11
c3QgYmUgb25seSB6ZXJvIHdlaWdodCByb3V0ZXMgKi8NCglpZiAoIXJuKSB7
DQoJCVJUX1VOTE9DSyhyby0+cm9fcnQpOw0KCQlyby0+cm9fcnQgPSBOVUxM
Ow0KCQlwcmludGYoImdhdGV3YXkgc2VsZWN0aW9uIGZhaWxlZFxuIik7DQoJ
CXJldHVybjsNCgl9DQoJaWYgKHJvLT5yb19ydCAhPSBydCkgew0KCQlSVEZS
RUVfTE9DS0VEKHJvLT5yb19ydCk7DQoJCXJvLT5yb19ydCA9IChzdHJ1Y3Qg
cnRlbnRyeSAqKXJuOw0KCQlSVF9MT0NLKHJvLT5yb19ydCk7DQoJCVJUX0FE
RFJFRihyby0+cm9fcnQpOw0KDQoJfSANCglSVF9VTkxPQ0socm8tPnJvX3J0
KTsNCn0NCg0KZXh0ZXJuIGludAlpbjZfaW5pdGhlYWQodm9pZCAqKmhlYWQs
IGludCBvZmYpOw0KZXh0ZXJuIGludAlpbl9pbml0aGVhZCh2b2lkICoqaGVh
ZCwgaW50IG9mZik7DQoNCiNpZmRlZiBJTkVUDQppbnQNCnJuNF9tcGF0aF9p
bml0aGVhZCh2b2lkICoqaGVhZCwgaW50IG9mZikNCnsNCglzdHJ1Y3QgcmFk
aXhfbm9kZV9oZWFkICpybmg7DQoNCgloYXNoaml0dGVyID0gYXJjNHJhbmRv
bSgpOw0KCWlmIChpbl9pbml0aGVhZChoZWFkLCBvZmYpID09IDEpIHsNCgkJ
cm5oID0gKHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKikqaGVhZDsNCgkJcm5o
LT5ybmhfbXVsdGlwYXRoID0gMTsNCgkJcmV0dXJuIDE7DQoJfSBlbHNlDQoJ
CXJldHVybiAwOw0KfQ0KI2VuZGlmDQoNCiNpZmRlZiBJTkVUNg0KaW50DQpy
bjZfbXBhdGhfaW5pdGhlYWQodm9pZCAqKmhlYWQsIGludCBvZmYpDQp7DQoJ
c3RydWN0IHJhZGl4X25vZGVfaGVhZCAqcm5oOw0KDQoJaGFzaGppdHRlciA9
IGFyYzRyYW5kb20oKTsNCglpZiAoaW42X2luaXRoZWFkKGhlYWQsIG9mZikg
PT0gMSkgew0KCQlybmggPSAoc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqKSpo
ZWFkOw0KCQlybmgtPnJuaF9tdWx0aXBhdGggPSAxOw0KCQlyZXR1cm4gMTsN
Cgl9IGVsc2UNCgkJcmV0dXJuIDA7DQp9DQoNCiNlbmRpZg0K

--168430090-1063431390-1282607720=:12708--



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