ip_alias BUGFIX for pre-2.0.31-9

JuanJo Ciarlante (irriga@impsat1.com.ar)
Tue, 16 Sep 1997 18:48:03 -0300 (ARST)


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.

---1463809278-180279494-871675095=:677
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.3.95.970815171844.677G@kosa>

This patch is a !MUST! for a 2.0.31 (unless we want pretty arp games
when aliasing is turned on for a netdevice).

This (tested) patch fixes ip_alias ARP storms (notably on big switched
nets) caused by route lookup needed for alias netdevice switching.

ARP and routing problems related to aliasing:
Originally aliasing was doing innecesary arp lookups when trying to
do netdevice selection (after a while arp table was holding almost
every host in the bus).
This problem was fixed around 2.0.2x by restricting aliasing lookups
only to packets for us. This, in turn, broke inter-alias routing.
In 2.0.31pre6+ this changes were undone. Present patch fixes arp
storming by calling route lookups without hh generation.

Changes:
route.c : added struct device * ip_rt_dev(__u32 addr);
ip_alias.c : uses ip_rt_dev() instead of ip_rt_route()
ip_input.c : alias netdevice switching only makes sense if PACKET_HOST
Updated alias.txt
Missing ip_dynaddr.txt included.

Regards!

-- Juanjo
Yo don't need an hologram to know...
Nor you need to sell your brain to anyone.
Yo can feel it. It's Linux.

---1463809278-180279494-871675095=:677
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="net_alias-v0.50-for-2.0.31pre9.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970916184636.604F@kosa>
Content-Description:

LS0tIGxpbnV4L25ldC9pcHY0L2FycC5jLmRpc3QJV2VkIFNlcCAxMCAxMzoz
Njo1OCAxOTk3DQorKysgbGludXgvbmV0L2lwdjQvYXJwLmMJVHVlIFNlcCAx
NiAxNjo0ODozMCAxOTk3DQpAQCAtMTkyMSw2ICsxOTIxLDcgQEANCiAJew0K
IAkJLyoNCiAJCSAqCW5ldF9hbGlhc19kZXZfcngzMiByZXR1cm5zIG1haW4g
ZGV2IGlmIGl0IGZhaWxzIHRvIGZvdW5kIG90aGVyLg0KKwkJICogIAlpZiBz
dWNjZXNzZnVsLCBhbHNvIGluY3IuIGFsaWFzIHJ4IGNvdW50Lg0KIAkJICov
DQogCQlkZXYgPSBuZXRfYWxpYXNfZGV2X3J4MzIoZGV2LCBBRl9JTkVULCBz
aXAsIHRpcCk7DQogDQotLS0gbGludXgvbmV0L2lwdjQvaXBfaW5wdXQuYy5k
aXN0CVdlZCBTZXAgMTAgMTM6MzY6NTkgMTk5Nw0KKysrIGxpbnV4L25ldC9p
cHY0L2lwX2lucHV0LmMJVHVlIFNlcCAxNiAxNjo0ODozMCAxOTk3DQpAQCAt
Mjk5LDEwICsyOTksMTMgQEANCiAJICoJVHJ5IHRvIHNlbGVjdCBjbG9zZXN0
IDxzcmMsZHN0PiBhbGlhcyBkZXZpY2UsIGlmIGFueS4NCiAJICoJbmV0X2Fs
aWFzX2Rldl9yeDMyIHJldHVybnMgbWFpbiBkZXZpY2UgaWYgaXQgDQogCSAq
CWZhaWxzIHRvIGZvdW5kIG90aGVyLg0KKyAJICogIAlJZiBzdWNjZXNzZnVs
LCBhbHNvIGluY3IuIGFsaWFzIHJ4IGNvdW50Lg0KKwkgKg0KKwkgKglPbmx5
IG1ha2VzIHNlbnNlIGZvciB1bmljYXN0cyAtIFRoYW5rcyBBTksuDQogCSAq
Lw0KIA0KICNpZmRlZiBDT05GSUdfTkVUX0FMSUFTDQotCWlmIChpcGgtPmRh
ZGRyICE9IHNrYi0+ZGV2LT5wYV9hZGRyICYmIG5ldF9hbGlhc19oYXMoc2ti
LT5kZXYpKSB7DQorCWlmIChza2ItPnBrdF90eXBlID09IFBBQ0tFVF9IT1NU
ICYmIGlwaC0+ZGFkZHIgIT0gc2tiLT5kZXYtPnBhX2FkZHIgJiYgbmV0X2Fs
aWFzX2hhcyhza2ItPmRldikpIHsNCiAJCXNrYi0+ZGV2ID0gZGV2ID0gbmV0
X2FsaWFzX2Rldl9yeDMyKHNrYi0+ZGV2LCBBRl9JTkVULCBpcGgtPnNhZGRy
LCBpcGgtPmRhZGRyKTsNCiAJfQ0KICNlbmRpZg0KLS0tIGxpbnV4L2luY2x1
ZGUvbmV0L3JvdXRlLmguZGlzdAlXZWQgU2VwIDEwIDEzOjUzOjIzIDE5OTcN
CisrKyBsaW51eC9pbmNsdWRlL25ldC9yb3V0ZS5oCVR1ZSBTZXAgMTYgMTY6
NDg6MzAgMTk5Nw0KQEAgLTg1LDYgKzg1LDcgQEANCiBleHRlcm4gdm9pZAkJ
aXBfcnRfdXBkYXRlKGludCBldmVudCwgc3RydWN0IGRldmljZSAqZGV2KTsN
CiBleHRlcm4gdm9pZAkJaXBfcnRfcmVkaXJlY3QoX191MzIgc3JjLCBfX3Uz
MiBkc3QsIF9fdTMyIGd3LCBzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KIGV4dGVy
biBzdHJ1Y3QgcnRhYmxlCSppcF9ydF9zbG93X3JvdXRlKF9fdTMyIGRhZGRy
LCBpbnQgbG9jYWwsIHN0cnVjdCBkZXZpY2UgKmRldik7DQorZXh0ZXJuIHN0
cnVjdCBkZXZpY2UJKmlwX3J0X2RldihfX3UzMiBhZGRyKTsNCiBleHRlcm4g
aW50CQlydF9nZXRfaW5mbyhjaGFyICogYnVmZmVyLCBjaGFyICoqc3RhcnQs
IG9mZl90IG9mZnNldCwgaW50IGxlbmd0aCwgaW50IGR1bW15KTsNCiBleHRl
cm4gaW50CQlydF9jYWNoZV9nZXRfaW5mbyhjaGFyICpidWZmZXIsIGNoYXIg
KipzdGFydCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBpbnQgZHVtbXkp
Ow0KIGV4dGVybiBpbnQJCWlwX3J0X2lvY3RsKHVuc2lnbmVkIGludCBjbWQs
IHZvaWQgKmFyZyk7DQotLS0gbGludXgvbmV0L2lwdjQvaXBfYWxpYXMuYy5k
aXN0CVdlZCBTZXAgMTAgMTM6MzY6NTggMTk5Nw0KKysrIGxpbnV4L25ldC9p
cHY0L2lwX2FsaWFzLmMJVHVlIFNlcCAxNiAxNjo0ODozMCAxOTk3DQpAQCAt
MiwxMiArMiwxNCBAQA0KICAqCQlJUF9BTElBUyAoQUZfSU5FVCkgYWxpYXNp
bmcgbW9kdWxlLg0KICAqDQogICoNCi0gKiBWZXJzaW9uOglAKCMpaXBfYWxp
YXMuYwkwLjQzICAgMTIvMjAvOTUNCisgKiBWZXJzaW9uOglAKCMpaXBfYWxp
YXMuYwkwLjUwICAgNi8xNC85Nw0KICAqDQogICogQXV0aG9yOglKdWFuIEpv
c2UgQ2lhcmxhbnRlLCA8ampjaWFybGFAcmFpei51bmN1LmVkdS5hcj4NCiAg
Kg0KICAqIEZpeGVzOg0KICAqCUpKQwk6CWlwX2FsaWFzX2Rldl9zZWxlY3Qg
bWV0aG9kLg0KKyAqCUpKQwk6CXVzZSBpcF9ydF9kZXYgaW5zdGVhZCBvZiBp
cF9ydF9yb3V0ZSANCisgKglKSkMJOgluZXcgbm9fc2VsIHNlbWFudGljcw0K
ICAqDQogICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KICAqCW1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
DQpAQCAtNzYsMTEgKzc4LDEzIEBADQogCQkocFswXSAmIDI1NSksIChwWzFd
ICYgMjU1KSwgKHBbMl0gJiAyNTUpLCAocFszXSAmIDI1NSkpOw0KIH0NCiAN
CisvKg0KKyAqCUNhbGxlZCBieSBuZXRfYWxpYXMgbW9kdWxlIHdoZW4gbm8g
bG9jYWwgYWxpYXMgYWRkcmVzcyBoYXMgYmVlbiBoaXQsDQorICoJdG8gZmlu
ZCBvdXQgaWYgYW4gYWxpYXMgaXMgYSBiZXR0ZXIgY2FuZGlkYXRlIGZvciBo
YW5kbGluZyBnaXZlbiBhZGRyDQorICovDQogc3RydWN0IGRldmljZSAqaXBf
YWxpYXNfZGV2X3NlbGVjdChzdHJ1Y3QgbmV0X2FsaWFzX3R5cGUgKnRoaXMs
IHN0cnVjdCBkZXZpY2UgKm1haW5fZGV2LCBzdHJ1Y3Qgc29ja2FkZHIgKnNh
KQ0KIHsNCiAJX191MzIgYWRkcjsNCi0Jc3RydWN0IHJ0YWJsZSAqcnQ7DQot
CXN0cnVjdCBkZXZpY2UgKmRldj1OVUxMOw0KICAgDQogCS8qDQogCSAqCURl
ZmVuc2l2ZS4uLgkNCkBAIC0xMDIsMTMgKzEwNiwxMiBAQA0KIAkgKgluZXRf
YWxpYXMgbW9kdWxlIHdpbGwgY2hlY2sgaWYgcmV0dXJuZWQgZGV2aWNlIGlz
IG1haW5fZGV2J3MgYWxpYXMNCiAJICovDQogDQotCXJ0ID0gaXBfcnRfcm91
dGUoYWRkciwgMCwgTlVMTCk7DQotCWlmKHJ0KQ0KLQl7DQotCQlkZXY9cnQt
PnJ0X2RldjsNCi0JCWlwX3J0X3B1dChydCk7DQotCX0NCi0JcmV0dXJuIGRl
djsNCisJLyoNCisJICoJRml4ZWQgYXJwaW5nIGNhdXNlZCBieSBpbmNvcnJl
Y3RseSB1c2luZyBpcF9ydF9yb3V0ZSgpLCANCisJICoJaXBfcnRfZGV2KCkg
anVzdCByZXR1cm5zIHJvdXRpbmcgZGV2aWNlIHdpdGhvdXQgaGggZ2VuZXJh
dGlvbi4NCisJICovDQorDQorCXJldHVybiBpcF9ydF9kZXYoYWRkcik7DQog
fQ0KIA0KIC8qDQpAQCAtMTQ5LDggKzE1MiwyMyBAQA0KIA0KICNpZmRlZiBN
T0RVTEUNCiANCisvKg0KKyAqCUlmIG5vX3NlbCBpcyBzZXQsIGFsaWFzIGFz
c29jaWF0aW9uIChkZXZpY2Ugc2VsZWN0aW9uKSB3aXRoDQorICoJZm9yZWln
biBhZGRyZXNzZXMgd2lsbCBiZSBkaXNhYmxlZC4NCisgKglZb3Ugd2lsbCBn
ZXQ6DQorICoJLSBmYXN0ZXIgb3BlcmF0aW9uIGJ5IGF2b2lkaW5nIGNvbXBs
ZXRlbHkgcm91dGluZyBsb29rdXBzDQorICoJWW91IHdpbGwgbG9vc2U6DQor
ICoJLSBpbnRlci1hbGlhcyByb3V0aW5nDQorICoJLSBwcm94eWFycCBvdmVy
IGFsaWFzZXMNCisgKi8NCisNCitpbnQgbm9fc2VsID0gMDsNCisNCiBpbnQg
aW5pdF9tb2R1bGUodm9pZCkNCiB7DQorCWlmIChub19zZWwpDQorCQlpcF9h
bGlhc190eXBlLmRldl9zZWxlY3QgPSBOVUxMOw0KKw0KIAlpZiAoaXBfYWxp
YXNfaW5pdCgpICE9IDApDQogCQlyZXR1cm4gLUVJTzsNCiAJcmV0dXJuIDA7
DQotLS0gbGludXgvbmV0L2lwdjQvcm91dGUuYy5kaXN0CVdlZCBTZXAgMTAg
MTM6MzY6NTkgMTk5Nw0KKysrIGxpbnV4L25ldC9pcHY0L3JvdXRlLmMJVHVl
IFNlcCAxNiAxNjo0ODozMCAxOTk3DQpAQCAtNDYsNiArNDYsNyBAQA0KICAq
CQlBbmRpIEtsZWVuCToJRG9uJ3Qgc2VuZCBtdWx0aWNhc3QgYWRkcmVzc2Vz
IHRvDQogICoJCQkJCWtlcm5lbGQuCQ0KICAqDQorICoJSnVhbiBKb3NlIENp
YXJsYW50ZSAgICAgOglBZGRlZCBpcF9ydF9kZXYgDQogICoJCVRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3INCiAgKgkJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiAgKgkJYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2
ZXJzaW9uDQpAQCAtMTUzMyw2ICsxNTM0LDIwIEBADQogCSAqIHJlZmNudCBn
b2VzIHRvIHplcm8sIGJlY2F1c2Ugbm9ib2R5IGVsc2Ugd2lsbC4uLiAqLw0K
IAlpZiAoIHJ0ICYmIChydC0+cnRfZmxhZ3MgJiBSVEZfTk9UQ0FDSEVEKSAm
JiAoIXJ0LT5ydF9yZWZjbnQpICkNCiAJCXJ0X2ZyZWUocnQpOw0KK30NCisN
CisvKg0KKyAqCVJldHVybiByb3V0aW5nIGRldiBmb3IgZ2l2ZW4gYWRkcmVz
cy4NCisgKglDYWxsZWQgYnkgaXBfYWxpYXMgbW9kdWxlIHRvIGF2b2lkIHVz
aW5nIGlwX3J0X3JvdXRlIGFuZA0KKyAqCWdlbmVyYXRpbmcgaGhzLg0KKyAq
Lw0KK3N0cnVjdCBkZXZpY2UgKiBpcF9ydF9kZXYoX191MzIgYWRkcikNCit7
DQorCXN0cnVjdCBmaWJfbm9kZSAqZjsNCisJZiA9IGZpYl9sb29rdXAoYWRk
ciwgTlVMTCk7DQorCWlmIChmKSANCisJCXJldHVybiBmLT5maWJfaW5mby0+
ZmliX2RldjsNCisJcmV0dXJuIE5VTEw7DQogfQ0KIA0KIHN0cnVjdCBydGFi
bGUgKiBpcF9ydF9yb3V0ZShfX3UzMiBkYWRkciwgaW50IGxvY2FsLCBzdHJ1
Y3QgZGV2aWNlICpkZXYpDQotLS0gbGludXgvbmV0L25ldHN5bXMuYy5kaXN0
CVdlZCBTZXAgMTAgMTM6Mzc6MDAgMTk5Nw0KKysrIGxpbnV4L25ldC9uZXRz
eW1zLmMJVHVlIFNlcCAxNiAxNjo0ODozMCAxOTk3DQpAQCAtMTAwLDYgKzEw
MCw3IEBADQogDQogCVgoaW5pdF9ldGhlcmRldiksDQogCVgoaXBfcnRfcm91
dGUpLA0KKwlYKGlwX3J0X2RldiksDQogCVgoaWNtcF9zZW5kKSwNCiAJWChp
cF9vcHRpb25zX2NvbXBpbGUpLA0KIAlYKGlwX3J0X3B1dCksDQotLS0gbGlu
dXgvaW5jbHVkZS9uZXQvaXBfYWxpYXMuaC5kaXN0CVR1ZSBEZWMgMjYgMDE6
MDM6MDEgMTk5NQ0KKysrIGxpbnV4L2luY2x1ZGUvbmV0L2lwX2FsaWFzLmgJ
VHVlIFNlcCAxNiAxNjo0ODozMSAxOTk3DQpAQCAtMiw3ICsyLDcgQEANCiAg
KgkJSVBfQUxJQVMgKEFGX0lORVQpIGFsaWFzaW5nIGRlZmluaXRpb25zLg0K
ICAqDQogICoNCi0gKiBWZXJzaW9uOglAKCMpaXBfYWxpYXMuaAkwLjQzICAg
MTIvMjAvOTUNCisgKiBWZXJzaW9uOglAKCMpaXBfYWxpYXMuaAkwLjUwICAg
NC8yMC85Nw0KICAqDQogICogQXV0aG9yOglKdWFuIEpvc2UgQ2lhcmxhbnRl
LCA8ampjaWFybGFAcmFpei51bmN1LmVkdS5hcj4NCiAgKg0KLS0tIGxpbnV4
L0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hbGlhcy50eHQuZGlzdAlXZWQg
U2VwIDEwIDEzOjM2OjI5IDE5OTcNCisrKyBsaW51eC9Eb2N1bWVudGF0aW9u
L25ldHdvcmtpbmcvYWxpYXMudHh0CVR1ZSBTZXAgMTYgMTY6NDg6MzEgMTk5
Nw0KQEAgLTYsNiArNiw3IEBADQogICAoc3BlY2lmaWMgSVApIHN1cHBvcnQu
DQogICBGcm9tIHZlcnNpb24gMC41MCwgZHluYW1pYyBjb25maWd1cmF0aW9u
IG9mIG1heCBhbGlhcyBwZXIgZGV2aWNlIGFuZA0KICAgdHgvcnggc3RhdHMg
Zm9yIGFsaWFzZXMgYWRkZWQuDQorICBBbHNvIGZpeGVkIGludGVyLWFsaWFz
IHJvdXRpbmcgYW5kIGFycGluZyBwcm9ibGVtcy4NCiANCiBGZWF0dXJlcw0K
IC0tLS0tLS0tDQpAQCAtMzUsOSArMzYsMzggQEANCiAgICAgICMgbW9kcHJv
YmUgaXBfYWxpYXMubw0KICAgICAgDQogICAgICBBbHNvLCBkeW5hbWljIGxv
YWRpbmcgaXMgc3VwcG9ydGVkIChrZXJuZWxkKS4NCi0gICAgICAgWW91IHNo
b3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgbGluZSBpbiAvZXRjL2NvbmYubW9k
dWxlczoNCisgICAgICAgWW91IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcg
bGluZSBpbiAvZXRjL2NvbmYubW9kdWxlcyAobm90IG5lZWRlZA0KKyAgICAg
ICBmb3IgbmV3ZXIgbW9kdXRpbHMpOg0KICAgICAgICBhbGlhcyBuZXRfYWxp
YXMtMiBpcF9hbGlhcw0KIA0KKyAgTW9kdWxlIG9wdGlvbnMNCisgIC0tLS0t
LS0tLS0tLS0tDQorICBGcm9tIDAuNXggaXBfYWxpYXMgbW9kdWxlIHN1cHBv
cnRzIGEgbmV3IG9wdGlvbiAoIm5vX3NlbCIgc3ltYm9sKS4NCisgIElmIG5v
X3NlbCBpcyBzZXQgKGRlZmF1bHQgaXMgMCksIGFsaWFzIGFzc29jaWF0aW9u
IChkZXZpY2Ugc2VsZWN0aW9uKSB3aXRoDQorICBmb3JlaWduIGFkZHJlc3Nl
cyB3aWxsIGJlIGRpc2FibGVkLg0KKw0KKyAgICBZb3Ugd2lsbCBnZXQ6DQor
ICAgIC0gRmFzdGVyIG9wZXJhdGlvbiBieSBhdm9pZGluZyBjb21wbGV0ZWx5
IHJvdXRpbmcgbG9va3Vwcy4gDQorICAgICAgRHVlIHRvIHRoZSAibG9naWNh
bCBuYXR1cmUiIG9mIGFsaWFzaW5nLCBuZXRkZXZpY2UgU0VMZWN0aW9uIGNh
biBvbmx5IGJlDQorICAgICAgZG9uZSBiYXNlZCBvbiBpbmZvIGZyb20gbmV0
d29yayBsYXllci4gV2hlbiBwYWNrZXQgZHN0IGFkZHJlc3MgaXNuJ3QgDQor
ICAgICAgb25lIG9mIG15IGFkZHJlc3NlcywgSSBxdWVyeSB0aGUgcm91dGlu
ZyB0YWJsZSB0byBzZWUgd2hpY2ggbmV0ZGV2aWNlDQorICAgICAgd291bGQg
YmUgc2VsZWN0ZWQgZm9yIHBhY2tldCBfc291cmNlXyBhZGRyZXNzLiBUaGlz
IG9wdGlvbiBhdm9pZHMNCisgICAgICBkb2luZyBzbywgYW5kIHlvdSBtdXN0
IGNvbnNpZGVyIHVzaW5nIGl0IGlmIHlvdSAqb25seSogaGF2ZSBzYW1lLW5l
dA0KKyAgICAgIGFsaWFzZXMgKGNvbW1vbiB1c2FnZSkuDQorDQorICAgIFlv
dSB3aWxsIGxvb3NlOg0KKyAgICAtIEludGVyLWFsaWFzIHJvdXRpbmcNCisg
ICAgLSBQcm94eWFycCBvdmVyIGFsaWFzZXMNCisNCisgIFRvIGFjdGl2YXRl
Og0KKyAgICAjIGluc21vZCBpcF9hbGlhcy5vIG5vX3NlbD0xICANCisgICAg
ICBvcg0KKyAgICAjIG1vZHByb2JlIGlwX2FsaWFzLm8gbm9fc2VsPTENCisg
ICAgICBvcg0KKyAgICBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIC9ldGMv
Y29uZi5tb2R1bGVzOg0KKyAgICAgIG9wdGlvbnMgaXBfYWxpYXMgbm9fc2Vs
PTENCisNCisNCiBvIEFsaWFzIGNyZWF0aW9uLg0KICAgQWxpYXMgY3JlYXRp
b24gaXMgZG9uZSBieSAnbWFnaWMnIGlmYWNlIG5hbWluZzogZWcuIHRvIGNy
ZWF0ZSBhDQogICAyMDAuMS4xLjEgYWxpYXMgZm9yIGV0aDAgLi4uDQpAQCAt
ODEsOSArMTExLDkgQEANCiAgICAgIGRldmljZSAgICAgICAgICAgZmFtaWx5
IGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgZXRoMDowICAgICAgICAgICAyICAgICAgMjAwLjEuMS4xDQogICAgICAN
Ci1vIFBST0NmcyBkeW5hbWljIGNvbmZpZ3VyYXRpb24NCitvIFBST0NmcyBk
eW5hbWljIGNvbmZpZ3VyYXRpb24gKGZyb20gdjAuNTApDQogICBZb3UgY2Fu
IG5vdyBjaGFuZ2UgdGhlIG1heCBhbGlhc2VzIHBlciBkZXZpY2UgbGltaXQg
dmlhDQotICAvcHJvYy9zeXMvbmV0L2NvcmUvbmV0X2FsaWFzX21heCBlbnRy
eQ0KKyAgL3Byb2Mvc3lzL25ldC9jb3JlL25ldF9hbGlhc19tYXggZW50cnkg
KGRlZmF1bHQ9MjU2KQ0KICAgICAgIyBjYXQgL3Byb2Mvc3lzL25ldC9jb3Jl
L25ldF9hbGlhc19tYXgNCiAgICAgIDI1Ng0KICAgICAgIyBlY2hvIDEwMDAg
PiAvcHJvYy9zeXMvbmV0L2NvcmUvbmV0X2FsaWFzX21heA0KQEAgLTExMSw5
ICsxNDEsOSBAQA0KICAgRmFrZSByeC90eCBzdGF0cyBhcmUgYWNjb3VudGVk
Og0KICAgLSBUWA0KICAgICBXaGVuIHRoZSBwYWNrZXQgaXMgYGBzd2l0Y2hl
ZCcnIGZyb20gbG9naWNhbCBhbGlhcyBkZXZpY2UgdG8NCi0gICAgcGh5c2lj
YWwgZGV2aWNlLCB0eCBjb3VudGVyIGdldHMgaW5jci4NCisgICAgcGh5c2lj
YWwgZGV2aWNlLCB0eCBjb3VudGVyIGdldHMgaW5jcmVtZW50ZWQuDQogICAt
IFJYDQotICAgIFdoZW4gYW4gaW5jb21pbmcgcGFja2V0J3MgYWRkcmVzcyBl
cXVhbHMgYWxpYXMgZGV2aWNlJ3MgYWRkciBpdA0KKyAgICBXaGVuIGFuIGlu
Y29taW5nIHBhY2tldCdzIGFkZHJlc3MgZXF1YWxzIGFsaWFzIG5ldHdvcmsg
ZGV2aWNlJ3MgYWRkciBpdA0KICAgICBnZXRzIGBgc3dpdGNoZWQnJyBmcm9t
IHBoeXNpY2FsIHRvIGxvZ2ljYWwgZGV2aWNlLCByeCBjb3VudGVyIGdldHMN
CiAgICAgaW5jci4NCiAgICAgDQpAQCAtMTIyLDcgKzE1MiwyMyBAQA0KICAg
d2lsbCBOT1QgcGFzcyBkb3duIHZpYSBhbGlhcyBkZXZpY2UgKHNvLCBubyB0
eCsrIHdpbGwgb2NjdXIpLg0KICAgDQogICBBbHNvIE5PVEUgdGhhdCBjdXJy
ZW50bHkgaWZjb25maWcgZG9lcyBub3QgaGFuZGxlIHRoZSBgYDonJyBvZiBh
bGlhcyBkZXZpY2VzDQotICBuYW1lcywgYSBsaXR0bGUgcGF0Y2ggKGF0dGFj
aGVkKSBzb2x2ZXMgdGhlIHByb2JsZW0uDQorICBuYW1lcywgYSBsaXR0bGUg
cGF0Y2ggc29sdmVzIHRoZSBwcm9ibGVtOg0KKy0tLSBpZmNvbmZpZy5jLmRp
c3QJVHVlIEFwciAgNCAxNzo1ODozMiAxOTk1DQorKysrIGlmY29uZmlnLmMJ
RnJpIE9jdCAyNSAxMzoxMToyMyAxOTk2DQorQEAgLTI0Myw3ICsyNDMsMTIg
QEANCisgICAJCWJwKys7DQorICAgCWlmKHN0cm5jbXAoYnAsaWZuYW1lLHN0
cmxlbihpZm5hbWUpKT09MCAmJiBicFtzdHJsZW4oaWZuYW1lKV09PSc6JykN
CisgICAJew0KKy0gCQlicD1zdHJjaHIoYnAsJzonKTsNCisrCSAgIAkvKiAN
CisrCQkgKiAJc3RhcnQgYnAgYXQgaWZuYW1lIGVuZCB0byBwcmV2ZW50ICc6
JyBhbWJpZ3VpdHkNCisrCQkgKiAJd2l0aCBhbGlhcyBkZXZpY2VzIChlZy4g
ZXRoMDowKQ0KKysJCSAqIAkNCisrCQkgKi8NCisrCQlicCs9c3RybGVuKGlm
bmFtZSk7DQorICAJCWJwKys7DQorICAJCXNzY2FuZihicCwiJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQiLA0KKyAgCQkJJmlmZS0+c3RhdHMu
cnhfcGFja2V0cywNCiAgIA0KIFJlbGF0aW9uc2hpcCB3aXRoIG1haW4gZGV2
aWNlDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0xMzgs
NyArMTg0LDEyIEBADQogUGxlYXNlIGUtbWFpbCBtZToNCiAgICBKdWFuIEpv
c2UgQ2lhcmxhbnRlIDxpcnJpZ2FAaW1wc2F0MS5jb20uYXI+IG9yIDxqamNp
YXJsYUByYWl6LnVuY3UuZWR1LmFyPg0KICAgIA0KLQkJICAgCQkNCitBY2tu
b3dsZWRtZW50cw0KKy0tLS0tLS0tLS0tLS0tDQorU3BlY2lhbCB0aGFua3Mg
dG8gQ2xhdWRpYSBmb3IgYWxsIGhlciBsb3ZlIGFuIHBhdGllbmNlLg0KK0Fs
c28gdGhhbmtzIHRvIEFudG9uaW8gVHJldml+byA8YW50b25pb0BlY29yZC5n
b3YuYXI+IGdyZWF0IGh1bWFuIGJlaW5nIA0KK2FuZCB1bip4IGd1cnUuDQor
DQogOyBsb2NhbCB2YXJpYWJsZXM6DQogOyBtb2RlOiBpbmRlbnRlZC10ZXh0
DQogOyBtb2RlOiBhdXRvLWZpbGwNCi0tLSBsaW51eC9Eb2N1bWVudGF0aW9u
L25ldHdvcmtpbmcvaXBfZHluYWRkci50eHQuZGlzdAlUdWUgU2VwIDE2IDE4
OjE1OjQ4IDE5OTcNCisrKyBsaW51eC9Eb2N1bWVudGF0aW9uL25ldHdvcmtp
bmcvaXBfZHluYWRkci50eHQJVHVlIFNlcCAxNiAxNjo0ODozMSAxOTk3DQpA
QCAtMCwwICsxLDI5IEBADQorSVAgZHluYW1pYyBhZGRyZXNzIGhhY2stcG9y
dCB2MC4wMw0KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4N
CitUaGlzIHN0dWZmIGFsbG93cyBkaWFsZCBPTkVTSE9UIGNvbm5lY3Rpb25z
IHRvIGdldCBlc3RhYmxpc2hlZCBieQ0KK2R5bmFtaWNhbGx5IGNoYW5naW5n
IHBhY2tldCBzb3VyY2UgYWRkcmVzcyAoYW5kIHNvY2tldCdzIGlmIGxvY2Fs
IHByb2NzKS4NCitJdCBpcyBpbXBsZW1lbnRlZCBmb3IgVENQIGRpYWxkLWJv
eCBjb25uZWN0aW9ucygxKSBhbmQgSVBfTUFTUXVlcmFkaW5nKDIpLg0KKw0K
K0lmIGVuYWJsZWRbKl0gYW5kIGZvcndhcmRpbmcgaW50ZXJmYWNlIGhhcyBj
aGFuZ2VkOg0KKyAgMSkgIFNvY2tldCAoYW5kIHBhY2tldCkgc291cmNlIGFk
ZHJlc3MgaXMgcmV3cml0dGVuIE9OIFJFVFJBTlNNSVNTSU9OUw0KKyAgICAg
IHdoaWxlIGluIFNZTl9TRU5UIHN0YXRlIChkaWFsZC1ib3ggcHJvY2Vzc2Vz
KS4NCisgIDIpICBPdXQtYm91bmRlZCBNQVNRdWVyYWRlZCBzb3VyY2UgYWRk
cmVzcyBjaGFuZ2VzIE9OIE9VVFBVVCAod2hlbg0KKyAgICAgIGludGVybmFs
IGhvc3QgZG9lcyByZXRyYW5zbWlzc2lvbikgdW50aWwgYSBwYWNrZXQgZnJv
bSBvdXRzaWRlIGlzDQorICAgICAgcmVjZWl2ZWQgYnkgdGhlIHR1bm5lbC4N
CisNCitUaGlzIGlzIHNwZWNpYWxseSBoZWxwZnVsIGZvciBhdXRvIGRpYWx1
cCBsaW5rcyAoZGlhbGQpLCB3aGVyZSB0aGUNCitgYGFjdHVhbCcnIG91dGdv
aW5nIGFkZHJlc3MgaXMgdW5rbm93biBhdCB0aGUgbW9tZW50IHRoZSBsaW5r
IGlzDQorZ29pbmcgdXAuIFNvLCB0aGUgKnNhbWUqIChsb2NhbCBBTkQgbWFz
cXVlcmFkZWQpIGNvbm5lY3Rpb25zIHJlcXVlc3RzIHRoYXQNCiticmluZyB0
aGUgbGluayB1cCB3aWxsIGJlIGFibGUgdG8gZ2V0IGVzdGFibGlzaGVkLg0K
Kw0KK1sqXSBBdCBib290LCBieSBkZWZhdWx0IG5vIGFkZHJlc3MgcmV3cml0
aW5nIGlzIGF0dGVtcHRlZC4gDQorICBUbyBlbmFibGU6DQorICAgICAjIGVj
aG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9keW5hZGRyDQorICBUbyBl
bmFibGUgdmVyYm9zZSBtb2RlOg0KKyAgICAgIyBlY2hvIDIgPiAvcHJvYy9z
eXMvbmV0L2lwdjQvaXBfZHluYWRkcg0KKyAgVG8gZGlzYWJsZSAoZGVmYXVs
dCkNCisgICAgICMgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2R5
bmFkZHINCisNCitFbmpveSENCisNCistLSBKdWFuam8gIDxqamNpYXJsYUBy
YWl6LnVuY3UuZWR1LmFyPg0KLS0tIGxpbnV4L0NSRURJVFMuZGlzdAlXZWQg
U2VwIDEwIDEzOjM2OjI3IDE5OTcNCisrKyBsaW51eC9DUkVESVRTCVR1ZSBT
ZXAgMTYgMTY6NDg6MzEgMTk5Nw0KQEAgLTI0Myw2ICsyNDMsNyBAQA0KIEU6
IGlycmlnYUBpbXBzYXQxLmNvbS5hcg0KIEQ6IE5ldHdvcmsgZHJpdmVyIGFs
aWFzIHN1cHBvcnQNCiBEOiBJUCBtYXNxIGhhc2hpbmcgYW5kIGFwcCBtb2R1
bGVzDQorRDogSVAgaXBfZHluYWRkciBiaXRzIA0KIFM6IExhcyBDdWV2YXMg
MjM4NSAtIEJvIEd1ZW1lcw0KIFM6IExhcyBIZXJhcywgTWVuZG96YSBDUCA1
NTM5DQogUzogQXJnZW50aW5hDQo=
---1463809278-180279494-871675095=:677--