Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Oct 2011 01:40:21 +0400
From:      Sergey Kandaurov <pluknet@gmail.com>
To:        Devin Teske <devin.teske@fisglobal.com>
Cc:        Dave Robison <Dave.Robison@fisglobal.com>, FreeBSD amd64 <freebsd-amd64@freebsd.org>
Subject:   Re: 32-bit route(8) on amd64 host and jails
Message-ID:  <CAE-mSO%2B_hc%2BGJHYUyX6dBS6NckV=iiHRrGMYbc=AxQeqKwK2Zg@mail.gmail.com>
In-Reply-To: <CAE-mSO%2B4KKWeC6-Z3UAi70bxxEUJL5gUD0phEfNzzkDMXrA3pg@mail.gmail.com>
References:  <714EF3C9-33B0-4EF5-B52C-1E95F7F432F9@fisglobal.com> <CAE-mSO%2B4KKWeC6-Z3UAi70bxxEUJL5gUD0phEfNzzkDMXrA3pg@mail.gmail.com>

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

On 21 September 2011 16:47, Sergey Kandaurov <pluknet@gmail.com> wrote:
> On 21 September 2011 06:40, Devin Teske <devin.teske@fisglobal.com> wrote=
:
>> I'm noticing that a 32-bit route(8) shows strange behaviour while runnin=
g under an amd64 kernel (regardless of whether in the base-host -- utilizin=
g /usr/lib32/libc.so.7 -- or in a jail and/or vimage -- 32-bit in nature; r=
esults are same).
>>
>> Executable runs fine, but you can't (a) set the default route or (b) vie=
w the default route (after successfully setting it with the amd64 build, of=
 course).
>>
>> ASIDE: This is under 8.1-RELEASE.
>>
>> When attempting to set the default route, you get the following...
>>
>> root@kps0a / # route add -net default 10.10.125.99
>> route: writing to routing socket: Invalid argument
>> add net default: gateway 10.10.125.99: Invalid argument
>>
>> Meanwhile, using the amd64 version, no issues.
>>
>> When attempting to view the default route, you get the following...
>>
>> root@kps0a / # route -n get default
>> =A0 route to: default
>> destination: default
>> =A0 =A0 =A0 mask: default
>> =A0 =A0gateway: default
>> =A0 =A0 =A0flags: <UP,GATEWAY,DONE,STATIC>
>> =A0recvpipe =A0sendpipe =A0ssthresh =A0rtt,msec =A0 =A0mtu =A0 =A0 =A0 =
=A0weight =A0 =A0expire
>> =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =A0 =
=A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =A0-1316570637
>>
>> It's the "gateway: default" that's out of place.
>>
>
> Currently, FreeBSD has a poor shape of rtsocket freebsd32 compatibility,
> AFAIK only sysctl layer (sysctl_rtsock) is aware of it.
> That means when a 32bit app writes some data to a routing socket,
> kernel expects to receive it in the native ABI, and it doesn't work.

Can you please try this preliminary patch and report back?
You only need to rebuild kernel and reboot with the attached patch
to enable use of e.g. 32-bit route(8) command on amd64 kernel.
No any userland utility needs to rebuild to enable the compatibility.
Tested on 8.2 amd64 only with route get default and route delete/add.

--=20
wbr,
pluknet

--e89a8f646a1dac909804af491af9
Content-Type: text/x-patch; charset=US-ASCII; name="rtmsg32.diff"
Content-Disposition: attachment; filename="rtmsg32.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gtrp0t4t0

SW5kZXg6IHN5cy9uZXQvcnRzb2NrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldC9ydHNvY2suYwko
cmV2aXNpb24gMjI1NjcxKQorKysgc3lzL25ldC9ydHNvY2suYwkod29ya2luZyBjb3B5KQpAQCAt
NzUsNiArNzUsNyBAQCBleHRlcm4gdm9pZCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBpZmFkZHIg
KmlmYSwgaQogCiAjaWZkZWYgQ09NUEFUX0ZSRUVCU0QzMgogI2luY2x1ZGUgPHN5cy9tb3VudC5o
PgorI2luY2x1ZGUgPHN5cy9zeXNlbnQuaD4KICNpbmNsdWRlIDxjb21wYXQvZnJlZWJzZDMyL2Zy
ZWVic2QzMi5oPgogCiBzdHJ1Y3QgaWZfZGF0YTMyIHsKQEAgLTExNCw2ICsxMTUsNDIgQEAgc3Ry
dWN0IGlmX21zZ2hkcjMyIHsKIAl1aW50MTZfdCBpZm1faW5kZXg7CiAJc3RydWN0CWlmX2RhdGEz
MiBpZm1fZGF0YTsKIH07CisKK3N0cnVjdCBydF9tZXRyaWNzMzIgeworCXVpbnQzMl90CXJteF9s
b2NrczsKKwl1aW50MzJfdAlybXhfbXR1OworCXVpbnQzMl90CXJteF9ob3Bjb3VudDsKKwl1aW50
MzJfdAlybXhfZXhwaXJlOworCXVpbnQzMl90CXJteF9yZWN2cGlwZTsKKwl1aW50MzJfdAlybXhf
c2VuZHBpcGU7CisJdWludDMyX3QJcm14X3NzdGhyZXNoOworCXVpbnQzMl90CXJteF9ydHQ7CisJ
dWludDMyX3QJcm14X3J0dHZhcjsKKwl1aW50MzJfdAlybXhfcGtzZW50OworCXVpbnQzMl90CXJt
eF93ZWlnaHQ7CisJdWludDMyX3QJcm14X2ZpbGxlclszXTsKK307CisKK3N0cnVjdCBydF9tc2do
ZHIzMiB7CisJdWludDE2X3QJcnRtX21zZ2xlbjsKKwl1aW50OF90CQlydG1fdmVyc2lvbjsKKwl1
aW50OF90CQlydG1fdHlwZTsKKwl1aW50MTZfdAlydG1faW5kZXg7CisJdWludDE2X3QJcnRtX2hv
bGUxOworCXVpbnQzMl90CXJ0bV9mbGFnczsKKwl1aW50MzJfdAlydG1fYWRkcnM7CisJdWludDMy
X3QJcnRtX3BpZDsKKwl1aW50MzJfdAlydG1fc2VxOworCXVpbnQzMl90CXJ0bV9lcnJubzsKKwl1
aW50MzJfdAlydG1fZm1hc2s7CisJdWludDMyX3QJcnRtX2luaXRzOworCXN0cnVjdCBydF9tZXRy
aWNzMzIgcnRtX3JteDsKK307CisKKyNkZWZpbmUJU0FfU0laRTMyKHNhKQkJCQkJCVwKKyAgICAo
ICAoIShzYSkgfHwgKChzdHJ1Y3Qgc29ja2FkZHIgKikoc2EpKS0+c2FfbGVuID09IDApID8JXAor
CXNpemVvZihpbnQzMl90KQkJOgkJCQlcCisJMSArICggKCgoc3RydWN0IHNvY2thZGRyICopKHNh
KSktPnNhX2xlbiAtIDEpIHwgKHNpemVvZihpbnQzMl90KSAtIDEpKSkKICNlbmRpZgogCiBNQUxM
T0NfREVGSU5FKE1fUlRBQkxFLCAicm91dGV0YmwiLCAicm91dGluZyB0YWJsZXMiKTsKQEAgLTUw
MSw2ICs1MzgsMTM4IEBAIHJ0bV9nZXRfamFpbGVkKHN0cnVjdCBydF9hZGRyaW5mbyAqaW5mbywg
c3RydWN0IGlmCiAJcmV0dXJuICgwKTsKIH0KIAorI2lmZGVmIENPTVBBVF9GUkVFQlNEMzIKK3N0
YXRpYyB2b2lkCitmcmVlYnNkMzJfcnRfbWV0cmljc19pbihzdHJ1Y3QgcnRfbWV0cmljczMyICpz
cmMsIHN0cnVjdCBydF9tZXRyaWNzICpkc3QpCit7CisKKwliemVybyhkc3QsIHNpemVvZigqZHN0
KSk7CisJQ1AoKnNyYywgKmRzdCwgcm14X210dSk7CisJQ1AoKnNyYywgKmRzdCwgcm14X2V4cGly
ZSk7CisJQ1AoKnNyYywgKmRzdCwgcm14X3Brc2VudCk7CisJQ1AoKnNyYywgKmRzdCwgcm14X3dl
aWdodCk7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlYnNkMzJfcnRfbWV0cmljc19vdXQoc3RydWN0
IHJ0X21ldHJpY3MgKnNyYywgc3RydWN0IHJ0X21ldHJpY3MzMiAqZHN0KQoreworCisJYnplcm8o
ZHN0LCBzaXplb2YoKmRzdCkpOworCUNQKCpzcmMsICpkc3QsIHJteF9tdHUpOworCUNQKCpzcmMs
ICpkc3QsIHJteF9leHBpcmUpOworCUNQKCpzcmMsICpkc3QsIHJteF9wa3NlbnQpOworCUNQKCpz
cmMsICpkc3QsIHJteF93ZWlnaHQpOworfQorCitzdGF0aWMgdm9pZAorZnJlZWJzZDMyX3J0X21z
Z2hkcl9pbihzdHJ1Y3QgcnRfbXNnaGRyMzIgKnNyYywgc3RydWN0IHJ0X21zZ2hkciAqZHN0KQor
eworCisJYnplcm8oZHN0LCBzaXplb2YoKmRzdCkpOworCS8qIENQKCpzcmMsICpkc3QsIHJ0bV9t
c2dsZW4pOyAqLwkvKiB1cGRhdGVkIHNlcGFyYXRlbHkgKi8KKwlDUCgqc3JjLCAqZHN0LCBydG1f
dmVyc2lvbik7CisJQ1AoKnNyYywgKmRzdCwgcnRtX3R5cGUpOworCUNQKCpzcmMsICpkc3QsIHJ0
bV9pbmRleCk7CisJQ1AoKnNyYywgKmRzdCwgcnRtX2ZsYWdzKTsKKwlDUCgqc3JjLCAqZHN0LCBy
dG1fYWRkcnMpOworCUNQKCpzcmMsICpkc3QsIHJ0bV9waWQpOworCUNQKCpzcmMsICpkc3QsIHJ0
bV9zZXEpOworCUNQKCpzcmMsICpkc3QsIHJ0bV9lcnJubyk7CisJQ1AoKnNyYywgKmRzdCwgcnRt
X2ZtYXNrKTsKKwlDUCgqc3JjLCAqZHN0LCBydG1faW5pdHMpOworCWZyZWVic2QzMl9ydF9tZXRy
aWNzX2luKCZzcmMtPnJ0bV9ybXgsICZkc3QtPnJ0bV9ybXgpOworfQorCitzdGF0aWMgdm9pZAor
ZnJlZWJzZDMyX3J0X21zZ2hkcl9vdXQoc3RydWN0IHJ0X21zZ2hkciAqc3JjLCBzdHJ1Y3QgcnRf
bXNnaGRyMzIgKmRzdCkKK3sKKworCWJ6ZXJvKGRzdCwgc2l6ZW9mKCpkc3QpKTsKKwkvKiBDUCgq
c3JjLCAqZHN0LCBydG1fbXNnbGVuKTsgKi8JLyogdXBkYXRlZCBzZXBhcmF0ZWx5ICovCisJQ1Ao
KnNyYywgKmRzdCwgcnRtX3ZlcnNpb24pOworCUNQKCpzcmMsICpkc3QsIHJ0bV90eXBlKTsKKwlD
UCgqc3JjLCAqZHN0LCBydG1faW5kZXgpOworCUNQKCpzcmMsICpkc3QsIHJ0bV9mbGFncyk7CisJ
Q1AoKnNyYywgKmRzdCwgcnRtX2FkZHJzKTsKKwlDUCgqc3JjLCAqZHN0LCBydG1fcGlkKTsKKwlD
UCgqc3JjLCAqZHN0LCBydG1fc2VxKTsKKwlDUCgqc3JjLCAqZHN0LCBydG1fZXJybm8pOworCUNQ
KCpzcmMsICpkc3QsIHJ0bV9mbWFzayk7CisJQ1AoKnNyYywgKmRzdCwgcnRtX2luaXRzKTsKKwlm
cmVlYnNkMzJfcnRfbWV0cmljc19vdXQoJnNyYy0+cnRtX3JteCwgJmRzdC0+cnRtX3JteCk7Cit9
CisKK3N0YXRpYyBpbnQKK2ZyZWVic2QzMl9ydF9tc3BhY2VfbGVuX2luKGNhZGRyX3QgY3AsIGNh
ZGRyX3QgY3BsaW0sIGludCAqYnVmbGVuKQoreworCXN0cnVjdCBzb2NrYWRkciAqc2E7CisJaW50
IGk7CisKKwlmb3IgKGkgPSAwLCAqYnVmbGVuID0gMDsgaSA8IFJUQVhfTUFYICYmIGNwIDwgY3Bs
aW07IGkrKykgeworCQlzYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKiljcDsKKworCQlpZiAoY3AgKyBz
YS0+c2FfbGVuID4gY3BsaW0pCisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCWNwICs9IFNBX1NJWkUz
MihzYSk7CisJCSpidWZsZW4gKz0gU0FfU0laRShzYSk7CisJfQorCXJldHVybiAoMCk7Cit9CisK
K3N0YXRpYyBpbnQKK2ZyZWVic2QzMl9ydF9tc3BhY2VfbGVuX291dChjYWRkcl90IGNwLCBjYWRk
cl90IGNwbGltLCBpbnQgKmJ1ZmxlbikKK3sKKwlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworCWludCBp
OworCisJZm9yIChpID0gMCwgKmJ1ZmxlbiA9IDA7IGkgPCBSVEFYX01BWCAmJiBjcCA8IGNwbGlt
OyBpKyspIHsKKwkJc2EgPSAoc3RydWN0IHNvY2thZGRyICopY3A7CisKKwkJaWYgKGNwICsgc2Et
PnNhX2xlbiA+IGNwbGltKQorCQkJcmV0dXJuIChFSU5WQUwpOworCQljcCArPSBTQV9TSVpFKHNh
KTsKKwkJKmJ1ZmxlbiArPSBTQV9TSVpFMzIoc2EpOworCX0KKwlyZXR1cm4gKDApOworfQorCitz
dGF0aWMgaW50CitmcmVlYnNkMzJfcnRfbXNwYWNlX2luKGNhZGRyX3QgY3AsIGNhZGRyX3QgY3A2
NCwgY2FkZHJfdCBjcGxpbSkKK3sKKwlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworCWludCBpOworCisJ
Zm9yIChpID0gMDsgaSA8IFJUQVhfTUFYICYmIGNwIDwgY3BsaW07IGkrKykgeworCQlzYSA9IChz
dHJ1Y3Qgc29ja2FkZHIgKiljcDsKKworCQlpZiAoY3AgKyBzYS0+c2FfbGVuID4gY3BsaW0pCisJ
CQlyZXR1cm4gKEVJTlZBTCk7CisJCW1lbWNweShjcDY0LCBjcCwgU0FfU0laRTMyKHNhKSk7CisJ
CWNwICs9IFNBX1NJWkUzMihzYSk7CisJCWNwNjQgKz0gU0FfU0laRShzYSk7CisJfQorCXJldHVy
biAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2ZyZWVic2QzMl9ydF9tc3BhY2Vfb3V0KGNhZGRyX3Qg
Y3AsIGNhZGRyX3QgY3AzMiwgY2FkZHJfdCBjcGxpbSkKK3sKKwlzdHJ1Y3Qgc29ja2FkZHIgKnNh
OworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IFJUQVhfTUFYICYmIGNwIDwgY3BsaW07IGkr
KykgeworCQlzYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKiljcDsKKworCQlpZiAoY3AgKyBzYS0+c2Ff
bGVuID4gY3BsaW0pCisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCW1lbWNweShjcDMyLCBjcCwgU0Ff
U0laRShzYSkpOworCQljcCArPSBTQV9TSVpFKHNhKTsKKwkJY3AzMiArPSBTQV9TSVpFMzIoc2Ep
OworCX0KKwlyZXR1cm4gKDApOworfQorI2VuZGlmCisKIC8qQVJHU1VTRUQqLwogc3RhdGljIGlu
dAogcm91dGVfb3V0cHV0KHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2V0ICpzbykKQEAgLTUx
Myw3ICs2ODIsMTQgQEAgcm91dGVfb3V0cHV0KHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2V0
ICpzbykKIAlpbnQgbGVuLCBlcnJvciA9IDA7CiAJc3RydWN0IGlmbmV0ICppZnAgPSBOVUxMOwog
CXVuaW9uIHNvY2thZGRyX3VuaW9uIHNhdW47CisJc2l6ZV90IHJ0bWxlbjsKKyNpZmRlZiBDT01Q
QVRfRlJFRUJTRDMyCisJc3RydWN0IHJ0X21zZ2hkcjMyICpydG0zMiA9IE5VTEw7CisJaW50IGxl
bjMyID0gMCwgcnRfbXNwYWNlX2xlbiA9IDAsIHdyYXAzMiA9IDA7CiAKKwlpZiAoU1ZfQ1VSUFJP
Q19GTEFHKFNWX0lMUDMyKSkKKwkJd3JhcDMyID0gMTsKKyNlbmRpZgogI2RlZmluZSBzZW5kZXJy
KGUpIHsgZXJyb3IgPSBlOyBnb3RvIGZsdXNoO30KIAlpZiAobSA9PSBOVUxMIHx8ICgobS0+bV9s
ZW4gPCBzaXplb2YobG9uZykpICYmCiAJCSAgICAgICAobSA9IG1fcHVsbHVwKG0sIHNpemVvZihs
b25nKSkpID09IE5VTEwpKQpAQCAtNTIxLDE3ICs2OTcsNTAgQEAgcm91dGVfb3V0cHV0KHN0cnVj
dCBtYnVmICptLCBzdHJ1Y3Qgc29ja2V0ICpzbykKIAlpZiAoKG0tPm1fZmxhZ3MgJiBNX1BLVEhE
UikgPT0gMCkKIAkJcGFuaWMoInJvdXRlX291dHB1dCIpOwogCWxlbiA9IG0tPm1fcGt0aGRyLmxl
bjsKLQlpZiAobGVuIDwgc2l6ZW9mKCpydG0pIHx8CisKKyNpZmRlZiBDT01QQVRfRlJFRUJTRDMy
CisJaWYgKHdyYXAzMikgeworCQlydG1sZW4gPSBzaXplb2YoKnJ0bTMyKTsKKwkJbGVuMzIgPSBs
ZW47CisJfSBlbHNlCisjZW5kaWYKKwkJcnRtbGVuID0gc2l6ZW9mKCpydG0pOworCisJaWYgKGxl
biA8IHJ0bWxlbiB8fAogCSAgICBsZW4gIT0gbXRvZChtLCBzdHJ1Y3QgcnRfbXNnaGRyICopLT5y
dG1fbXNnbGVuKSB7CiAJCWluZm8ucnRpX2luZm9bUlRBWF9EU1RdID0gTlVMTDsKIAkJc2VuZGVy
cihFSU5WQUwpOwogCX0KLQlSX01hbGxvYyhydG0sIHN0cnVjdCBydF9tc2doZHIgKiwgbGVuKTsK
KworI2lmZGVmIENPTVBBVF9GUkVFQlNEMzIKKwlpZiAod3JhcDMyKSB7CisJCVJfTWFsbG9jKHJ0
bTMyLCBzdHJ1Y3QgcnRfbXNnaGRyMzIgKiwgbGVuMzIpOworCQlpZiAocnRtMzIgPT0gTlVMTCkg
eworCQkJaW5mby5ydGlfaW5mb1tSVEFYX0RTVF0gPSBOVUxMOworCQkJc2VuZGVycihFTk9CVUZT
KTsKKwkJfQorCQltX2NvcHlkYXRhKG0sIDAsIGxlbjMyLCAoY2FkZHJfdClydG0zMik7CisJCWZy
ZWVic2QzMl9ydF9tc3BhY2VfbGVuX2luKChjYWRkcl90KShydG0zMiArIDEpLCBsZW4zMiArIChj
YWRkcl90KXJ0bTMyLCAmcnRfbXNwYWNlX2xlbik7CisJCS8qIGZpeHVwIGxlbiB0byBhbGxvYyBy
dG0gb2YgbmF0aXZlIHNpemUgKi8KKwkJbGVuID0gcnRfbXNwYWNlX2xlbiArIHNpemVvZigqcnRt
KTsKKwl9CisjZW5kaWYKKwlSX1phbGxvYyhydG0sIHN0cnVjdCBydF9tc2doZHIgKiwgbGVuKTsK
IAlpZiAocnRtID09IE5VTEwpIHsKIAkJaW5mby5ydGlfaW5mb1tSVEFYX0RTVF0gPSBOVUxMOwog
CQlzZW5kZXJyKEVOT0JVRlMpOwogCX0KLQltX2NvcHlkYXRhKG0sIDAsIGxlbiwgKGNhZGRyX3Qp
cnRtKTsKKworI2lmZGVmIENPTVBBVF9GUkVFQlNEMzIKKwlpZiAod3JhcDMyKSB7CisJCWZyZWVi
c2QzMl9ydF9tc2doZHJfaW4ocnRtMzIsIHJ0bSk7CisJCWZyZWVic2QzMl9ydF9tc3BhY2VfaW4o
KGNhZGRyX3QpKHJ0bTMyICsgMSksCisJCSAgICAoY2FkZHJfdCkocnRtICsgMSksIChjYWRkcl90
KXJ0bTMyICsgbGVuMzIpOworCQlydG0tPnJ0bV9tc2dsZW4gPSBsZW47CisJfSBlbHNlCisjZW5k
aWYKKwkJbV9jb3B5ZGF0YShtLCAwLCBsZW4sIChjYWRkcl90KXJ0bSk7CisKIAlpZiAocnRtLT5y
dG1fdmVyc2lvbiAhPSBSVE1fVkVSU0lPTikgewogCQlpbmZvLnJ0aV9pbmZvW1JUQVhfRFNUXSA9
IE5VTEw7CiAJCXNlbmRlcnIoRVBST1RPTk9TVVBQT1JUKTsKQEAgLTU0Myw2ICs3NTIsMTYgQEAg
cm91dGVfb3V0cHV0KHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJaW5mby5y
dGlfaW5mb1tSVEFYX0RTVF0gPSBOVUxMOwogCQlzZW5kZXJyKEVJTlZBTCk7CiAJfQorLyoKKyAg
ICAgICAgaW50IGk7IHVpbnQxNl90ICpqOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgKiAoaW50
KXNpemVvZih1aW50MTZfdCkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgaiA9ICh1
aW50MTZfdCAqKXJ0bTsKKyAgICAgICAgICAgICAgICAgIGlmIChpICUgOCA9PSAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG4weCUwNGp4ICIsICh1aW50bWF4X3QpaSpzaXpl
b2YodWludDE2X3QpKTsKKyAgICAgICAgICAgICAgICAgIHByaW50ZigiJTA0eCAiLCBic3dhcDE2
KGpbaV0pKTsKKyAgICAgICAgfTsgcHJpbnRmKCJcbiIpOworKi8KIAlpbmZvLnJ0aV9mbGFncyA9
IHJ0bS0+cnRtX2ZsYWdzOwogCWlmIChpbmZvLnJ0aV9pbmZvW1JUQVhfRFNUXSA9PSBOVUxMIHx8
CiAJICAgIGluZm8ucnRpX2luZm9bUlRBWF9EU1RdLT5zYV9mYW1pbHkgPj0gQUZfTUFYIHx8CkBA
IC04NzcsMTIgKzEwOTYsNDEgQEAgZmx1c2g6CiAJCXJwID0gc290b3Jhd2NiKHNvKTsKIAl9CiAJ
aWYgKHJ0bSkgewotCQltX2NvcHliYWNrKG0sIDAsIHJ0bS0+cnRtX21zZ2xlbiwgKGNhZGRyX3Qp
cnRtKTsKLQkJaWYgKG0tPm1fcGt0aGRyLmxlbiA8IHJ0bS0+cnRtX21zZ2xlbikgewotCQkJbV9m
cmVlbShtKTsKLQkJCW0gPSBOVUxMOwotCQl9IGVsc2UgaWYgKG0tPm1fcGt0aGRyLmxlbiA+IHJ0
bS0+cnRtX21zZ2xlbikKLQkJCW1fYWRqKG0sIHJ0bS0+cnRtX21zZ2xlbiAtIG0tPm1fcGt0aGRy
Lmxlbik7CisjaWZkZWYgQ09NUEFUX0ZSRUVCU0QzMgorCQlpZiAod3JhcDMyKSB7CisJCQlpbnQg
cnRfbXNwYWNlX2xlbjMyOworCisJCQlmcmVlYnNkMzJfcnRfbXNwYWNlX2xlbl9vdXQoKGNhZGRy
X3QpKHJ0bSArIDEpLAorCQkJICAgIGxlbiArIChjYWRkcl90KXJ0bSwgJnJ0X21zcGFjZV9sZW4z
Mik7CisJCQlsZW4zMiA9IHJ0X21zcGFjZV9sZW4zMiArIHNpemVvZigqcnRtMzIpOworCQkJaWYg
KGxlbjMyID4gcnRtMzItPnJ0bV9tc2dsZW4pIHsKKwkJCQlzdHJ1Y3QgcnRfbXNnaGRyMzIgKm5l
d19ydG0zMjsKKwkJCQlSX01hbGxvYyhuZXdfcnRtMzIsIHN0cnVjdCBydF9tc2doZHIzMiAqLCBs
ZW4zMik7CisJCQkJaWYgKG5ld19ydG0zMiA9PSBOVUxMKQorCQkJCQlzZW5kZXJyKEVOT0JVRlMp
OworCQkJCWJjb3B5KHJ0bTMyLCBuZXdfcnRtMzIsIHJ0bTMyLT5ydG1fbXNnbGVuKTsKKwkJCQlG
cmVlKHJ0bTMyKTsgcnRtMzIgPSBuZXdfcnRtMzI7CisJCQl9CisJCQlmcmVlYnNkMzJfcnRfbXNn
aGRyX291dChydG0sIHJ0bTMyKTsKKwkJCXJ0bTMyLT5ydG1fbXNnbGVuID0gbGVuMzI7CisJCQlm
cmVlYnNkMzJfcnRfbXNwYWNlX291dCgoY2FkZHJfdCkocnRtICsgMSksCisJCQkgICAgKGNhZGRy
X3QpKHJ0bTMyICsgMSksIChjYWRkcl90KXJ0bSArIGxlbik7CisKKwkJCW1fY29weWJhY2sobSwg
MCwgcnRtMzItPnJ0bV9tc2dsZW4sIChjYWRkcl90KXJ0bTMyKTsKKwkJCWlmIChtLT5tX3BrdGhk
ci5sZW4gPCBydG0zMi0+cnRtX21zZ2xlbikgeworCQkJCW1fZnJlZW0obSk7CisJCQkJbSA9IE5V
TEw7CisJCQl9IGVsc2UgaWYgKG0tPm1fcGt0aGRyLmxlbiA+IHJ0bTMyLT5ydG1fbXNnbGVuKQor
CQkJCW1fYWRqKG0sIHJ0bTMyLT5ydG1fbXNnbGVuIC0gbS0+bV9wa3RoZHIubGVuKTsKKwkJfSBl
bHNlIHsKKyNlbmRpZgorCQkJbV9jb3B5YmFjayhtLCAwLCBydG0tPnJ0bV9tc2dsZW4sIChjYWRk
cl90KXJ0bSk7CisJCQlpZiAobS0+bV9wa3RoZHIubGVuIDwgcnRtLT5ydG1fbXNnbGVuKSB7CisJ
CQkJbV9mcmVlbShtKTsKKwkJCQltID0gTlVMTDsKKwkJCX0gZWxzZSBpZiAobS0+bV9wa3RoZHIu
bGVuID4gcnRtLT5ydG1fbXNnbGVuKQorCQkJCW1fYWRqKG0sIHJ0bS0+cnRtX21zZ2xlbiAtIG0t
Pm1fcGt0aGRyLmxlbik7CisJCX0KIAl9CiAJaWYgKG0pIHsKIAkJaWYgKHJwKSB7CkBAIC04OTgs
OCArMTE0NiwxMyBAQCBmbHVzaDoKIAkJCXJ0X2Rpc3BhdGNoKG0sIGluZm8ucnRpX2luZm9bUlRB
WF9EU1RdKTsKIAl9CiAJLyogaW5mby5ydGlfaW5mb1tSVEFYX0RTVF0gKHVzZWQgYWJvdmUpIGNh
biBwb2ludCBpbnNpZGUgb2YgcnRtICovCi0JaWYgKHJ0bSkKKwlpZiAocnRtKSB7CiAJCUZyZWUo
cnRtKTsKKyNpZmRlZiBDT01QQVRfRlJFRUJTRDMyCisJCWlmICh3cmFwMzIpCisJCQlGcmVlKHJ0
bTMyKTsKKyNlbmRpZgorCX0KICAgICB9CiAJcmV0dXJuIChlcnJvcik7CiAjdW5kZWYJc2FfZXF1
YWwK
--e89a8f646a1dac909804af491af9--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAE-mSO%2B_hc%2BGJHYUyX6dBS6NckV=iiHRrGMYbc=AxQeqKwK2Zg>