[PATCH] IPv6 dnat/snat support

"Tseng, Kuo-Lang" <[email protected]> Wed, 6 Feb 2008 16:14:43 -0800
Newsgroups gmane.linux.network.bridge.ebtables.devel
Message-ID <3F25FE8C477E9E4FB3D42C2FF937C08A82039A@orsmsx423.amr.corp.intel.com>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C8691E.71E7C7B2
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Two patches are attached. They add port based DNAT/SNAT feature for
changing the dest or src MAC address in MAC header of IPv6 packets.

(I couldn't get access to the ebtables cvs web interface, seems the
interface is down, so the patches were generated based on the original
ebtables-v2.0.8-2 and 2.6.18 netfilter.)

Example dnat Usage:=20

1. Port based:
ebtables -t nat -A PREROUTING --in-interface eth0 --protocol IPV6
--ip6-protocol "6" --ip6-destination-port 22 -j dnat --to-destination
00:13:20:F5:F1:28 --log-ip6

2. IP protocol-based:
ebtables -t nat -A PREROUTING --in-interface eth0 --protocol IPV6
--ip6-protocol 58 -j dnat --to-destination 00:13:20:F5:F1:28

3. IPv6:
ebtables -t nat -A PREROUTING --in-interface eth0 --protocol IPV6 -j
dnat --to-destination 00:13:20:F5:F1:28

Similar usage can be applied for snat.=20

Thanks
Kuo

>-----Original Message-----
>From: Bart De Schuymer [mailto:[email protected]]
>Sent: Friday, January 25, 2008 3:23 PM
>To: Tseng, Kuo-Lang
>Cc: [email protected]
>Subject: Re: [Ebtables-devel] IPv6 support in ebtables
>
>Op vr, 25-01-2008 te 14:27 -0800, schreef Tseng, Kuo-Lang:
>> >From: ebtables-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>> [mailto:ebtables-devel-
>> >[email protected]] On Behalf Of Tseng, Kuo-Lang
>> >Sent: Wednesday, January 23, 2008 4:11 PM
>> >Hi,
>> >
>> >I would like to find out if there is any IPv6 support in ebtables
for
>> >replacing MAC address of the Ethernet header based on TCP or UDP
port
>> id
>> >in IPv6 packets. I would appreciate it if there is anyone on this
list
>> >who knows of any prior work in ebtables to support IPv6.
>> >
>> >One such example usage I am looking for is: TCP Port based DNAT
>> >
>> >Current IPv4 Support:
>> >-p IPv4 -i peth0 --ip-proto 6 --ip-dport 22 -j dnat --to-dst
>> >0:13:20:f5:f1:1f --dnat-target ACCEPT
>> >
>> >Similar support for IPv6 packets I would like to use:
>> >-p IPv6 -i peth0 --ip-proto 6 --ip-dport 22 -j dnat --to-dst
>> >0:13:20:f5:f1:1f --dnat-target ACCEPT
>> >
>>
>> I looked at version v2.0.8-2 of ebtables user space code and bridge
>> netfilter kernel code from 2.6 and realized that v6 support is not
>> there.
>>
>> Does anyone know if anyone is working (or planning) on adding this
>> support?
>>
>> If not, I'd like to add this minimum support into ebtables for dnat
on
>> IPv6 packets and is it fine for me to send a patch for review?
>
>That's fine. I'm not sure what you mean, but dnat on the IPv6 addresses
>of course doesn't belong in ebtables.
>
>cheers,
>Bart
>


------_=_NextPart_001_01C8691E.71E7C7B2
Content-Type: application/octet-stream;
	name="ebtables-ipv6.patch"
Content-Transfer-Encoding: base64
Content-Description: ebtables-ipv6.patch
Content-Disposition: attachment;
	filename="ebtables-ipv6.patch"

ZGlmZiAtcnVOcCBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2V4dGVuc2lvbnMvZWJ0X2lwNi5jIGVi
dGFibGVzLXYyLjAuOC0yLmlwdjYvZXh0ZW5zaW9ucy9lYnRfaXA2LmMKLS0tIGVidGFibGVzLXYy
LjAuOC0yLm9yaWcvZXh0ZW5zaW9ucy9lYnRfaXA2LmMJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAw
MDAwMDAgLTA4MDAKKysrIGVidGFibGVzLXYyLjAuOC0yLmlwdjYvZXh0ZW5zaW9ucy9lYnRfaXA2
LmMJMjAwOC0wMi0wNiAxNTowMzoyMi4wMDAwMDAwMDAgLTA4MDAKQEAgLTAsMCArMSwyNjMgQEAK
Ky8qIGVidF9pcDYKKyAqIAorICogQXV0aG9yczoKKyAqIEt1by1MYW5nIFRzZW5nIDxrdW8tbGFu
Zy50c2VuZ0BpbnRlbC5jb20+CisgKiBNYW5vaGFyIENhc3RlbGlubyA8bWFub2hhci5jYXN0ZWxp
bm9AaW50ZWwuY29tPgorICoKKyAqIFN1bW1hcnk6CisgKiBUaGlzIGlzIGp1c3QgYSBtb2RpZmlj
YXRpb24gb2YgdGhlIElQdjQgY29kZSB3cml0dGVuIGJ5IAorICogQmFydCBEZSBTY2h1eW1lciA8
YmRzY2h1eW1AcGFuZG9yYS5iZT4KKyAqIHdpdGggdGhlIGNoYW5nZXMgcmVxdWlyZWQgdG8gc3Vw
cG9ydCBJUHY2CisgKgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUg
PG5ldGRiLmg+CisjaW5jbHVkZSAiLi4vaW5jbHVkZS9lYnRhYmxlc191LmgiCisjaW5jbHVkZSA8
bGludXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRfaXA2Lmg+CisKKyNkZWZpbmUgSVBfU09VUkNFICcx
JworI2RlZmluZSBJUF9ERVNUICAgJzInCisjZGVmaW5lIElQX1RDTEFTUyAnMycKKyNkZWZpbmUg
SVBfUFJPVE8gICc0JworI2RlZmluZSBJUF9TUE9SVCAgJzUnCisjZGVmaW5lIElQX0RQT1JUICAn
NicKKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0KK3sKKwl7ICJpcDYtcHJvdG9jb2wi
ICAgICAgICAgLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgSVBfUFJPVE8gIH0sCisJeyAiaXA2LXBy
b3RvIiAgICAgICAgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIElQX1BST1RPICB9LAorCXsg
ImlwNi1zb3VyY2UtcG9ydCIgICAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBJUF9TUE9SVCAg
fSwKKwl7ICJpcDYtc3BvcnQiICAgICAgICAgICAgLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgSVBf
U1BPUlQgIH0sCisJeyAiaXA2LWRlc3RpbmF0aW9uLXBvcnQiICwgcmVxdWlyZWRfYXJndW1lbnQs
IDAsIElQX0RQT1JUICB9LAorCXsgImlwNi1kcG9ydCIgICAgICAgICAgICAsIHJlcXVpcmVkX2Fy
Z3VtZW50LCAwLCBJUF9EUE9SVCAgfSwKKwl7IDAgfQorfTsKKworLyogdHJhbnNmb3JtIGEgcHJv
dG9jb2wgYW5kIHNlcnZpY2UgbmFtZSBpbnRvIGEgcG9ydCBudW1iZXIgKi8KK3N0YXRpYyB1aW50
MTZfdCBwYXJzZV9wb3J0KGNvbnN0IGNoYXIgKnByb3RvY29sLCBjb25zdCBjaGFyICpuYW1lKQor
eworCXN0cnVjdCBzZXJ2ZW50ICpzZXJ2aWNlOworCWNoYXIgKmVuZDsKKwlpbnQgcG9ydDsKKwor
CXBvcnQgPSBzdHJ0b2wobmFtZSwgJmVuZCwgMTApOworCWlmICgqZW5kICE9ICdcMCcpIHsKKwkJ
aWYgKHByb3RvY29sICYmIAorCQkgICAgKHNlcnZpY2UgPSBnZXRzZXJ2YnluYW1lKG5hbWUsIHBy
b3RvY29sKSkgIT0gTlVMTCkKKwkJCXJldHVybiBudG9ocyhzZXJ2aWNlLT5zX3BvcnQpOworCX0K
KwllbHNlIGlmIChwb3J0ID49IDAgfHwgcG9ydCA8PSAweEZGRkYpIHsKKwkJcmV0dXJuIHBvcnQ7
CisJfQorCWVidF9wcmludF9lcnJvcigiUHJvYmxlbSB3aXRoIHNwZWNpZmllZCAlcyBwb3J0ICcl
cyciLCAKKwkJCXByb3RvY29sP3Byb3RvY29sOiIiLCBuYW1lKTsKKwlyZXR1cm4gMDsKK30KKwor
c3RhdGljIHZvaWQKK3BhcnNlX3BvcnRfcmFuZ2UoY29uc3QgY2hhciAqcHJvdG9jb2wsIGNvbnN0
IGNoYXIgKnBvcnRzdHJpbmcsIHVpbnQxNl90ICpwb3J0cykKK3sKKwljaGFyICpidWZmZXI7CisJ
Y2hhciAqY3A7CisJCisJYnVmZmVyID0gc3RyZHVwKHBvcnRzdHJpbmcpOworCWlmICgoY3AgPSBz
dHJjaHIoYnVmZmVyLCAnOicpKSA9PSBOVUxMKQorCQlwb3J0c1swXSA9IHBvcnRzWzFdID0gcGFy
c2VfcG9ydChwcm90b2NvbCwgYnVmZmVyKTsKKwllbHNlIHsKKwkJKmNwID0gJ1wwJzsKKwkJY3Ar
KzsKKwkJcG9ydHNbMF0gPSBidWZmZXJbMF0gPyBwYXJzZV9wb3J0KHByb3RvY29sLCBidWZmZXIp
IDogMDsKKwkJaWYgKGVidF9lcnJvcm1zZ1swXSAhPSAnXDAnKQorCQkJcmV0dXJuOworCQlwb3J0
c1sxXSA9IGNwWzBdID8gcGFyc2VfcG9ydChwcm90b2NvbCwgY3ApIDogMHhGRkZGOworCQlpZiAo
ZWJ0X2Vycm9ybXNnWzBdICE9ICdcMCcpCisJCQlyZXR1cm47CisJCQorCQlpZiAocG9ydHNbMF0g
PiBwb3J0c1sxXSkKKwkJCWVidF9wcmludF9lcnJvcigiSW52YWxpZCBwb3J0cmFuZ2UgKG1pbiA+
IG1heCkiKTsKKwl9CisJZnJlZShidWZmZXIpOworfQorCitzdGF0aWMgdm9pZCBwcmludF9wb3J0
X3JhbmdlKHVpbnQxNl90ICpwb3J0cykKK3sKKwlpZiAocG9ydHNbMF0gPT0gcG9ydHNbMV0pCisJ
CXByaW50ZigiJWQgIiwgcG9ydHNbMF0pOworCWVsc2UKKwkJcHJpbnRmKCIlZDolZCAiLCBwb3J0
c1swXSwgcG9ydHNbMV0pOworfQorCitzdGF0aWMgdm9pZCBwcmludF9oZWxwKCkKK3sKKwlwcmlu
dGYoCisiaXA2IG9wdGlvbnM6XG4iCisiLS1pcDYtcHJvdG8gIFshXSBwcm90b2NvbCAgICAgIDog
aXB2NiBwcm90b2NvbCBzcGVjaWZpY2F0aW9uXG4iCisiLS1pcDYtc3BvcnQgIFshXSBwb3J0Wzpw
b3J0XSAgIDogdGNwL3VkcCBzb3VyY2UgcG9ydCBvciBwb3J0IHJhbmdlXG4iCisiLS1pcDYtZHBv
cnQgIFshXSBwb3J0Wzpwb3J0XSAgIDogdGNwL3VkcCBkZXN0aW5hdGlvbiBwb3J0IG9yIHBvcnQg
cmFuZ2VcbiIpOworfQorCitzdGF0aWMgdm9pZCBpbml0KHN0cnVjdCBlYnRfZW50cnlfbWF0Y2gg
Km1hdGNoKQoreworCXN0cnVjdCBlYnRfaXA2X2luZm8gKmlwaW5mbyA9IChzdHJ1Y3QgZWJ0X2lw
Nl9pbmZvICopbWF0Y2gtPmRhdGE7CisKKwlpcGluZm8tPmludmZsYWdzID0gMDsKKwlpcGluZm8t
PmJpdG1hc2sgPSAwOworfQorCisjZGVmaW5lIE9QVF9TT1VSQ0UgMHgwMQorI2RlZmluZSBPUFRf
REVTVCAgIDB4MDIKKyNkZWZpbmUgT1BUX1RDTEFTUyAweDA0CisjZGVmaW5lIE9QVF9QUk9UTyAg
MHgwOAorI2RlZmluZSBPUFRfU1BPUlQgIDB4MTAKKyNkZWZpbmUgT1BUX0RQT1JUICAweDIwCitz
dGF0aWMgaW50IHBhcnNlKGludCBjLCBjaGFyICoqYXJndiwgaW50IGFyZ2MsIGNvbnN0IHN0cnVj
dCBlYnRfdV9lbnRyeSAqZW50cnksCisgICB1bnNpZ25lZCBpbnQgKmZsYWdzLCBzdHJ1Y3QgZWJ0
X2VudHJ5X21hdGNoICoqbWF0Y2gpCit7CisJc3RydWN0IGVidF9pcDZfaW5mbyAqaXBpbmZvID0g
KHN0cnVjdCBlYnRfaXA2X2luZm8gKikoKm1hdGNoKS0+ZGF0YTsKKwljaGFyICplbmQ7CisJbG9u
ZyBpbnQgaTsKKworCXN3aXRjaCAoYykgeworCWNhc2UgSVBfU1BPUlQ6CisJY2FzZSBJUF9EUE9S
VDoKKwkJaWYgKGMgPT0gSVBfU1BPUlQpIHsKKwkJCWVidF9jaGVja19vcHRpb24yKGZsYWdzLCBP
UFRfU1BPUlQpOworCQkJaXBpbmZvLT5iaXRtYXNrIHw9IEVCVF9JUDZfU1BPUlQ7CisJCQlpZiAo
ZWJ0X2NoZWNrX2ludmVyc2UyKG9wdGFyZykpCisJCQkJaXBpbmZvLT5pbnZmbGFncyB8PSBFQlRf
SVA2X1NQT1JUOworCQl9IGVsc2UgeworCQkJZWJ0X2NoZWNrX29wdGlvbjIoZmxhZ3MsIE9QVF9E
UE9SVCk7CisJCQlpcGluZm8tPmJpdG1hc2sgfD0gRUJUX0lQNl9EUE9SVDsKKwkJCWlmIChlYnRf
Y2hlY2tfaW52ZXJzZTIob3B0YXJnKSkKKwkJCQlpcGluZm8tPmludmZsYWdzIHw9IEVCVF9JUDZf
RFBPUlQ7CisJCX0KKwkJaWYgKGMgPT0gSVBfU1BPUlQpCisJCQlwYXJzZV9wb3J0X3JhbmdlKE5V
TEwsIG9wdGFyZywgaXBpbmZvLT5zcG9ydCk7CisJCWVsc2UKKwkJCXBhcnNlX3BvcnRfcmFuZ2Uo
TlVMTCwgb3B0YXJnLCBpcGluZm8tPmRwb3J0KTsKKwkJYnJlYWs7CisKKwljYXNlIElQX1BST1RP
OgorCQllYnRfY2hlY2tfb3B0aW9uMihmbGFncywgT1BUX1BST1RPKTsKKwkJaWYgKGVidF9jaGVj
a19pbnZlcnNlMihvcHRhcmcpKQorCQkJaXBpbmZvLT5pbnZmbGFncyB8PSBFQlRfSVA2X1BST1RP
OworCQlpID0gc3RydG91bChvcHRhcmcsICZlbmQsIDEwKTsKKwkJaWYgKCplbmQgIT0gJ1wwJykg
eworCQkJc3RydWN0IHByb3RvZW50ICpwZTsKKworCQkJcGUgPSBnZXRwcm90b2J5bmFtZShvcHRh
cmcpOworCQkJaWYgKHBlID09IE5VTEwpCisJCQkJZWJ0X3ByaW50X2Vycm9yKCJVbmtub3duIHNw
ZWNpZmllZCBJUCBwcm90b2NvbCAtICVzIiwgYXJndltvcHRpbmQgLSAxXSk7CisJCQlpcGluZm8t
PnByb3RvY29sID0gcGUtPnBfcHJvdG87CisJCX0gZWxzZSB7CisJCQlpcGluZm8tPnByb3RvY29s
ID0gKHVuc2lnbmVkIGNoYXIpIGk7CisJCX0KKwkJaXBpbmZvLT5iaXRtYXNrIHw9IEVCVF9JUDZf
UFJPVE87CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsK
K30KKworc3RhdGljIHZvaWQgZmluYWxfY2hlY2soY29uc3Qgc3RydWN0IGVidF91X2VudHJ5ICpl
bnRyeSwKKyAgIGNvbnN0IHN0cnVjdCBlYnRfZW50cnlfbWF0Y2ggKm1hdGNoLCBjb25zdCBjaGFy
ICpuYW1lLAorICAgdW5zaWduZWQgaW50IGhvb2ttYXNrLCB1bnNpZ25lZCBpbnQgdGltZSkKK3sK
KwlzdHJ1Y3QgZWJ0X2lwNl9pbmZvICppcGluZm8gPSAoc3RydWN0IGVidF9pcDZfaW5mbyAqKW1h
dGNoLT5kYXRhOworCisJaWYgKGVudHJ5LT5ldGhwcm90byAhPSBFVEhfUF9JUFY2IHx8IGVudHJ5
LT5pbnZmbGFncyAmIEVCVF9JUFJPVE8pIHsKKwkJZWJ0X3ByaW50X2Vycm9yKCJGb3IgSVB2NiBm
aWx0ZXJpbmcgdGhlIHByb3RvY29sIG11c3QgYmUgIgorCQkgICAgICAgICAgICAic3BlY2lmaWVk
IGFzIElQdjYiKTsKKwl9IGVsc2UgaWYgKGlwaW5mby0+Yml0bWFzayAmIChFQlRfSVA2X1NQT1JU
fEVCVF9JUDZfRFBPUlQpICYmCisJCSghKGlwaW5mby0+Yml0bWFzayAmIEVCVF9JUDZfUFJPVE8p
IHx8CisJCWlwaW5mby0+aW52ZmxhZ3MgJiBFQlRfSVA2X1BST1RPIHx8CisJCShpcGluZm8tPnBy
b3RvY29sIT1JUFBST1RPX1RDUCAmJgorCQkgaXBpbmZvLT5wcm90b2NvbCE9SVBQUk9UT19VRFAg
JiYKKwkJIGlwaW5mby0+cHJvdG9jb2whPUlQUFJPVE9fU0NUUCAmJgorCQkgaXBpbmZvLT5wcm90
b2NvbCE9SVBQUk9UT19EQ0NQKSkpCisJCWVidF9wcmludF9lcnJvcigiRm9yIHBvcnQgZmlsdGVy
aW5nIHRoZSBJUCBwcm90b2NvbCBtdXN0IGJlICIKKwkJCQkiZWl0aGVyIDYgKHRjcCksIDE3ICh1
ZHApLCAzMyAoZGNjcCkgb3IgIgorCQkJCSIxMzIgKHNjdHApIik7Cit9CisKK3N0YXRpYyB2b2lk
IHByaW50KGNvbnN0IHN0cnVjdCBlYnRfdV9lbnRyeSAqZW50cnksCisgICBjb25zdCBzdHJ1Y3Qg
ZWJ0X2VudHJ5X21hdGNoICptYXRjaCkKK3sKKwlzdHJ1Y3QgZWJ0X2lwNl9pbmZvICppcGluZm8g
PSAoc3RydWN0IGVidF9pcDZfaW5mbyAqKW1hdGNoLT5kYXRhOworCisJaWYgKGlwaW5mby0+Yml0
bWFzayAmIEVCVF9JUDZfUFJPVE8pIHsKKwkJc3RydWN0IHByb3RvZW50ICpwZTsKKworCQlwcmlu
dGYoIi0taXA2LXByb3RvICIpOworCQlpZiAoaXBpbmZvLT5pbnZmbGFncyAmIEVCVF9JUDZfUFJP
VE8pCisJCQlwcmludGYoIiEgIik7CisJCXBlID0gZ2V0cHJvdG9ieW51bWJlcihpcGluZm8tPnBy
b3RvY29sKTsKKwkJaWYgKHBlID09IE5VTEwpIHsKKwkJCXByaW50ZigiJWQgIiwgaXBpbmZvLT5w
cm90b2NvbCk7CisJCX0gZWxzZSB7CisJCQlwcmludGYoIiVzICIsIHBlLT5wX25hbWUpOworCQl9
CisJfQorCWlmIChpcGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X1NQT1JUKSB7CisJCXByaW50Zigi
LS1pcDYtc3BvcnQgIik7CisJCWlmIChpcGluZm8tPmludmZsYWdzICYgRUJUX0lQNl9TUE9SVCkK
KwkJCXByaW50ZigiISAiKTsKKwkJcHJpbnRfcG9ydF9yYW5nZShpcGluZm8tPnNwb3J0KTsKKwl9
CisJaWYgKGlwaW5mby0+Yml0bWFzayAmIEVCVF9JUDZfRFBPUlQpIHsKKwkJcHJpbnRmKCItLWlw
Ni1kcG9ydCAiKTsKKwkJaWYgKGlwaW5mby0+aW52ZmxhZ3MgJiBFQlRfSVA2X0RQT1JUKQorCQkJ
cHJpbnRmKCIhICIpOworCQlwcmludF9wb3J0X3JhbmdlKGlwaW5mby0+ZHBvcnQpOworCX0KK30K
Kworc3RhdGljIGludCBjb21wYXJlKGNvbnN0IHN0cnVjdCBlYnRfZW50cnlfbWF0Y2ggKm0xLAor
ICAgY29uc3Qgc3RydWN0IGVidF9lbnRyeV9tYXRjaCAqbTIpCit7CisJc3RydWN0IGVidF9pcDZf
aW5mbyAqaXBpbmZvMSA9IChzdHJ1Y3QgZWJ0X2lwNl9pbmZvICopbTEtPmRhdGE7CisJc3RydWN0
IGVidF9pcDZfaW5mbyAqaXBpbmZvMiA9IChzdHJ1Y3QgZWJ0X2lwNl9pbmZvICopbTItPmRhdGE7
CisKKwlpZiAoaXBpbmZvMS0+Yml0bWFzayAhPSBpcGluZm8yLT5iaXRtYXNrKQorCQlyZXR1cm4g
MDsKKwlpZiAoaXBpbmZvMS0+aW52ZmxhZ3MgIT0gaXBpbmZvMi0+aW52ZmxhZ3MpCisJCXJldHVy
biAwOworCWlmIChpcGluZm8xLT5iaXRtYXNrICYgRUJUX0lQNl9QUk9UTykgeworCQlpZiAoaXBp
bmZvMS0+cHJvdG9jb2wgIT0gaXBpbmZvMi0+cHJvdG9jb2wpCisJCQlyZXR1cm4gMDsKKwl9CisJ
aWYgKGlwaW5mbzEtPmJpdG1hc2sgJiBFQlRfSVA2X1NQT1JUKSB7CisJCWlmIChpcGluZm8xLT5z
cG9ydFswXSAhPSBpcGluZm8yLT5zcG9ydFswXSB8fAorCQkgICBpcGluZm8xLT5zcG9ydFsxXSAh
PSBpcGluZm8yLT5zcG9ydFsxXSkKKwkJCXJldHVybiAwOworCX0KKwlpZiAoaXBpbmZvMS0+Yml0
bWFzayAmIEVCVF9JUDZfRFBPUlQpIHsKKwkJaWYgKGlwaW5mbzEtPmRwb3J0WzBdICE9IGlwaW5m
bzItPmRwb3J0WzBdIHx8CisJCSAgIGlwaW5mbzEtPmRwb3J0WzFdICE9IGlwaW5mbzItPmRwb3J0
WzFdKQorCQkJcmV0dXJuIDA7CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IGVi
dF91X21hdGNoIGlwNl9tYXRjaCA9Cit7CisJLm5hbWUJCT0gRUJUX0lQNl9NQVRDSCwKKwkuc2l6
ZQkJPSBzaXplb2Yoc3RydWN0IGVidF9pcDZfaW5mbyksCisJLmhlbHAJCT0gcHJpbnRfaGVscCwK
KwkuaW5pdAkJPSBpbml0LAorCS5wYXJzZQkJPSBwYXJzZSwKKwkuZmluYWxfY2hlY2sJPSBmaW5h
bF9jaGVjaywKKwkucHJpbnQJCT0gcHJpbnQsCisJLmNvbXBhcmUJPSBjb21wYXJlLAorCS5leHRy
YV9vcHMJPSBvcHRzLAorfTsKKwordm9pZCBfaW5pdCh2b2lkKQoreworCWVidF9yZWdpc3Rlcl9t
YXRjaCgmaXA2X21hdGNoKTsKK30KZGlmZiAtcnVOcCBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2V4
dGVuc2lvbnMvZWJ0X2xvZy5jIGVidGFibGVzLXYyLjAuOC0yLmlwdjYvZXh0ZW5zaW9ucy9lYnRf
bG9nLmMKLS0tIGVidGFibGVzLXYyLjAuOC0yLm9yaWcvZXh0ZW5zaW9ucy9lYnRfbG9nLmMJMjAw
Ny0wOS0yMSAxMDoyNzoyMC4wMDAwMDAwMDAgLTA3MDAKKysrIGVidGFibGVzLXYyLjAuOC0yLmlw
djYvZXh0ZW5zaW9ucy9lYnRfbG9nLmMJMjAwOC0wMS0zMCAxNzoyMjo1Ni4wMDAwMDAwMDAgLTA4
MDAKQEAgLTYwLDYgKzYwLDcgQEAgc3RhdGljIGludCBuYW1lX3RvX2xvZ2xldmVsKGNoYXIqIGFy
ZykKICNkZWZpbmUgTE9HX0FSUCAgICAnMycKICNkZWZpbmUgTE9HX0lQICAgICAnNCcKICNkZWZp
bmUgTE9HX0xPRyAgICAnNScKKyNkZWZpbmUgTE9HX0lQNiAgICAnNicKIHN0YXRpYyBzdHJ1Y3Qg
b3B0aW9uIG9wdHNbXSA9CiB7CiAJeyAibG9nLXByZWZpeCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAw
LCBMT0dfUFJFRklYIH0sCkBAIC02Nyw2ICs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIG9w
dHNbXSA9CiAJeyAibG9nLWFycCIgICAsIG5vX2FyZ3VtZW50ICAgICAgLCAwLCBMT0dfQVJQICAg
IH0sCiAJeyAibG9nLWlwIiAgICAsIG5vX2FyZ3VtZW50ICAgICAgLCAwLCBMT0dfSVAgICAgIH0s
CiAJeyAibG9nIiAgICAgICAsIG5vX2FyZ3VtZW50ICAgICAgLCAwLCBMT0dfTE9HICAgIH0sCisJ
eyAibG9nLWlwNiIgICAsIG5vX2FyZ3VtZW50ICAgICAgLCAwLCBMT0dfSVA2ICAgIH0sCiAJeyAw
IH0KIH07CiAKQEAgLTgxLDYgKzgzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVscCgpCiAiLS1s
b2ctcHJlZml4IHByZWZpeCA6IG1heC4gJWQgY2hhcnMuXG4iCiAiLS1sb2ctaXAgICAgICAgICAg
ICA6IHB1dCBpcCBpbmZvLiBpbiB0aGUgbG9nIGZvciBpcCBwYWNrZXRzXG4iCiAiLS1sb2ctYXJw
ICAgICAgICAgICA6IHB1dCAocilhcnAgaW5mby4gaW4gdGhlIGxvZyBmb3IgKHIpYXJwIHBhY2tl
dHNcbiIKKyItLWxvZy1pcDYgICAgICAgICAgIDogcHV0IGlwNiBpbmZvLiBpbiB0aGUgbG9nIGZv
ciBpcDYgcGFja2V0c1xuIgogCSwgRUJUX0xPR19QUkVGSVhfU0laRSAtIDEpOwogCXByaW50Zigi
bGV2ZWxzOlxuIik7CiAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykKQEAgLTEwMiw2ICsxMDUsNyBA
QCBzdGF0aWMgdm9pZCBpbml0KHN0cnVjdCBlYnRfZW50cnlfd2F0Y2hlCiAjZGVmaW5lIE9QVF9B
UlAgICAgMHgwNAogI2RlZmluZSBPUFRfSVAgICAgIDB4MDgKICNkZWZpbmUgT1BUX0xPRyAgICAw
eDEwCisjZGVmaW5lIE9QVF9JUDYgICAgMHgyMAogc3RhdGljIGludCBwYXJzZShpbnQgYywgY2hh
ciAqKmFyZ3YsIGludCBhcmdjLCBjb25zdCBzdHJ1Y3QgZWJ0X3VfZW50cnkgKmVudHJ5LAogICAg
dW5zaWduZWQgaW50ICpmbGFncywgc3RydWN0IGVidF9lbnRyeV93YXRjaGVyICoqd2F0Y2hlcikK
IHsKQEAgLTE1MSw2ICsxNTUsMTMgQEAgc3RhdGljIGludCBwYXJzZShpbnQgYywgY2hhciAqKmFy
Z3YsIGludAogCQlpZiAoZWJ0X2NoZWNrX2ludmVyc2Uob3B0YXJnKSkKIAkJCWVidF9wcmludF9l
cnJvcjIoIlVuZXhwZWN0ZWQgYCEnIGFmdGVyIC0tbG9nIik7CiAJCWJyZWFrOworCisJY2FzZSBM
T0dfSVA2OgorCQllYnRfY2hlY2tfb3B0aW9uMihmbGFncywgT1BUX0lQNik7CisJCWlmIChlYnRf
Y2hlY2tfaW52ZXJzZShvcHRhcmcpKQorCQkJZWJ0X3ByaW50X2Vycm9yMigiVW5leHBlY3RlZCBg
IScgYWZ0ZXIgLS1sb2ctaXA2Iik7CisJCWxvZ2luZm8tPmJpdG1hc2sgfD0gRUJUX0xPR19JUDY7
CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybiAwOwogCX0KQEAgLTE3NSw2ICsxODYsOCBA
QCBzdGF0aWMgdm9pZCBwcmludChjb25zdCBzdHJ1Y3QgZWJ0X3VfZW50CiAJCXByaW50ZigiIC0t
bG9nLWlwIik7CiAJaWYgKGxvZ2luZm8tPmJpdG1hc2sgJiBFQlRfTE9HX0FSUCkKIAkJcHJpbnRm
KCIgLS1sb2ctYXJwIik7CisJaWYgKGxvZ2luZm8tPmJpdG1hc2sgJiBFQlRfTE9HX0lQNikKKwkJ
cHJpbnRmKCIgLS1sb2ctaXA2Iik7CiAJcHJpbnRmKCIgIik7CiB9CiAKZGlmZiAtcnVOcCBlYnRh
Ymxlcy12Mi4wLjgtMi5vcmlnL2V4dGVuc2lvbnMvTWFrZWZpbGUgZWJ0YWJsZXMtdjIuMC44LTIu
aXB2Ni9leHRlbnNpb25zL01ha2VmaWxlCi0tLSBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2V4dGVu
c2lvbnMvTWFrZWZpbGUJMjAwNy0wOS0yMSAxMDoyNzoyMC4wMDAwMDAwMDAgLTA3MDAKKysrIGVi
dGFibGVzLXYyLjAuOC0yLmlwdjYvZXh0ZW5zaW9ucy9NYWtlZmlsZQkyMDA4LTAxLTExIDE5OjQx
OjQ3LjAwMDAwMDAwMCAtMDgwMApAQCAtMSw2ICsxLDYgQEAKICMhIC91c3IvYmluL21ha2UKIAot
RVhUX0ZVTkMrPTgwMl8zIG5hdCBhcnAgYXJwcmVwbHkgaXAgc3RhbmRhcmQgbG9nIHJlZGlyZWN0
IHZsYW4gbWFya19tIG1hcmsgXAorRVhUX0ZVTkMrPTgwMl8zIG5hdCBhcnAgYXJwcmVwbHkgaXAg
aXA2IHN0YW5kYXJkIGxvZyByZWRpcmVjdCB2bGFuIG1hcmtfbSBtYXJrIFwKICAgICAgICAgICBw
a3R0eXBlIHN0cCBhbW9uZyBsaW1pdCB1bG9nCiBFWFRfVEFCTEVTKz1maWx0ZXIgbmF0IGJyb3V0
ZQogRVhUX09CSlMrPSQoZm9yZWFjaCBULCQoRVhUX0ZVTkMpLCBleHRlbnNpb25zL2VidF8kKFQp
Lm8pCmRpZmYgLXJ1TnAgZWJ0YWJsZXMtdjIuMC44LTIub3JpZy9pbmNsdWRlL2xpbnV4L25ldGZp
bHRlcl9icmlkZ2UvZWJ0X2lwNi5oIGVidGFibGVzLXYyLjAuOC0yLmlwdjYvaW5jbHVkZS9saW51
eC9uZXRmaWx0ZXJfYnJpZGdlL2VidF9pcDYuaAotLS0gZWJ0YWJsZXMtdjIuMC44LTIub3JpZy9p
bmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0X2lwNi5oCTE5NjktMTItMzEgMTY6MDA6
MDAuMDAwMDAwMDAwIC0wODAwCisrKyBlYnRhYmxlcy12Mi4wLjgtMi5pcHY2L2luY2x1ZGUvbGlu
dXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRfaXA2LmgJMjAwOC0wMi0wMSAxNzo1Mzo1NC4wMDAwMDAw
MDAgLTA4MDAKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqICBlYnRfaXA2CisgKgorICoJQXV0aG9y
czoKKyAqIEt1by1MYW5nIFRzZW5nIDxrdW8tbGFuZy50c2VuZ0BpbnRlbC5jb20+CisgKiBNYW5v
aGFyIENhc3RlbGlubyA8bWFub2hhci5yLmNhc3RlbGlub0BpbnRlbC5jb20+CisgKgorICogIEph
biAxMSwgMjAwOAorICoKKyAqLworCisjaWZuZGVmIF9fTElOVVhfQlJJREdFX0VCVF9JUDZfSAor
I2RlZmluZSBfX0xJTlVYX0JSSURHRV9FQlRfSVA2X0gKKworI2RlZmluZSBFQlRfSVA2X1NPVVJD
RSAweDAxIC8qIE5vdCBzdXBwb3J0ZWQgY3VycmVudGx5ICovCisjZGVmaW5lIEVCVF9JUDZfREVT
VCAweDAyICAgLyogTm90IHN1cHBvcnRlZCBjdXJyZW50bHkgKi8KKyNkZWZpbmUgRUJUX0lQNl9U
Q0xBU1MgMHgwNCAvKiBOb3Qgc3VwcG9ydGVkIGN1cnJlbnRseSAqLworI2RlZmluZSBFQlRfSVA2
X1BST1RPIDB4MDgKKyNkZWZpbmUgRUJUX0lQNl9TUE9SVCAweDEwCisjZGVmaW5lIEVCVF9JUDZf
RFBPUlQgMHgyMAorI2RlZmluZSBFQlRfSVA2X01BU0sgKEVCVF9JUDZfU09VUkNFIHwgRUJUX0lQ
Nl9ERVNUIHwgRUJUX0lQNl9UQ0xBU1MgfFwKKyBFQlRfSVA2X1BST1RPIHwgRUJUX0lQNl9TUE9S
VCB8IEVCVF9JUDZfRFBPUlQgKQorI2RlZmluZSBFQlRfSVA2X01BVENIICJpcDYiCisKKy8qIHRo
ZSBzYW1lIHZhbHVlcyBhcmUgdXNlZCBmb3IgdGhlIGludmZsYWdzICovCitzdHJ1Y3QgZWJ0X2lw
Nl9pbmZvCit7CisJdWludDhfdCAgcHJvdG9jb2w7CisJdWludDhfdCAgYml0bWFzazsKKwl1aW50
OF90ICBpbnZmbGFnczsKKwl1aW50MTZfdCBzcG9ydFsyXTsKKwl1aW50MTZfdCBkcG9ydFsyXTsK
K307CisKKyNlbmRpZgpkaWZmIC1ydU5wIGVidGFibGVzLXYyLjAuOC0yLm9yaWcvaW5jbHVkZS9s
aW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidF9sb2cuaCBlYnRhYmxlcy12Mi4wLjgtMi5pcHY2L2lu
Y2x1ZGUvbGludXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRfbG9nLmgKLS0tIGVidGFibGVzLXYyLjAu
OC0yLm9yaWcvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidF9sb2cuaAkyMDA3LTA5
LTIxIDEwOjI3OjIwLjAwMDAwMDAwMCAtMDcwMAorKysgZWJ0YWJsZXMtdjIuMC44LTIuaXB2Ni9p
bmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0X2xvZy5oCTIwMDgtMDEtMjEgMTg6MzQ6
MDkuMDAwMDAwMDAwIC0wODAwCkBAIC00LDcgKzQsOCBAQAogI2RlZmluZSBFQlRfTE9HX0lQIDB4
MDEgLyogaWYgdGhlIGZyYW1lIGlzIG1hZGUgYnkgaXAsIGxvZyB0aGUgaXAgaW5mb3JtYXRpb24g
Ki8KICNkZWZpbmUgRUJUX0xPR19BUlAgMHgwMgogI2RlZmluZSBFQlRfTE9HX05GTE9HIDB4MDQK
LSNkZWZpbmUgRUJUX0xPR19NQVNLIChFQlRfTE9HX0lQIHwgRUJUX0xPR19BUlApCisjZGVmaW5l
IEVCVF9MT0dfSVA2IDB4MDgKKyNkZWZpbmUgRUJUX0xPR19NQVNLIChFQlRfTE9HX0lQIHwgRUJU
X0xPR19BUlAgfCBFQlRfTE9HX0lQNikKICNkZWZpbmUgRUJUX0xPR19QUkVGSVhfU0laRSAzMAog
I2RlZmluZSBFQlRfTE9HX1dBVENIRVIgImxvZyIKIAo=

------_=_NextPart_001_01C8691E.71E7C7B2
Content-Type: application/octet-stream;
	name="netfilter-ipv6.patch"
Content-Transfer-Encoding: base64
Content-Description: netfilter-ipv6.patch
Content-Disposition: attachment;
	filename="netfilter-ipv6.patch"

ZGlmZiAtcnVOcCBuZXRmaWx0ZXIub3JpZy9lYnRfaXA2LmMgbmV0ZmlsdGVyLmlwdjYvZWJ0X2lw
Ni5jCi0tLSBuZXRmaWx0ZXIub3JpZy9lYnRfaXA2LmMJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAw
MDAwMDAgLTA4MDAKKysrIG5ldGZpbHRlci5pcHY2L2VidF9pcDYuYwkyMDA4LTAyLTA2IDE1OjU5
OjIxLjAwMDAwMDAwMCAtMDgwMApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqICBlYnRfaXA2Cisg
KgorICoJQXV0aG9yczoKKyAqCU1hbm9oYXIgQ2FzdGVsaW5vIDxtYW5vaGFyLnIuY2FzdGVsaW5v
QGludGVsLmNvbT4KKyAqCUt1by1MYW5nIFRzZW5nIDxrdW8tbGFuZy50c2VuZ0BpbnRlbC5jb20+
CisgKgorICogU3VtbWFyeToKKyAqIFRoaXMgaXMganVzdCBhIG1vZGlmaWNhdGlvbiBvZiB0aGUg
SVB2NCBjb2RlIHdyaXR0ZW4gYnkgCisgKiBCYXJ0IERlIFNjaHV5bWVyIDxiZHNjaHV5bUBwYW5k
b3JhLmJlPgorICogd2l0aCB0aGUgY2hhbmdlcyByZXF1aXJlZCB0byBzdXBwb3J0IElQdjYKKyAq
CisgKiAgSmFuLCAyMDA4CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlcl9icmlkZ2Uv
ZWJ0YWJsZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidF9pcDYuaD4K
KyNpbmNsdWRlIDxsaW51eC9pcHY2Lmg+CisjaW5jbHVkZSA8bmV0L2lwdjYuaD4KKyNpbmNsdWRl
IDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCitzdHJ1Y3QgdGNwdWRw
aGRyIHsKKwl1aW50MTZfdCBzcmM7CisJdWludDE2X3QgZHN0OworfTsKKworc3RhdGljIGludCBl
YnRfZmlsdGVyX2lwNihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0
X2RldmljZSAqaW4sCisgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqb3V0LCBjb25zdCB2b2lk
ICpkYXRhLAorICAgdW5zaWduZWQgaW50IGRhdGFsZW4pCit7CisJc3RydWN0IGVidF9pcDZfaW5m
byAqaW5mbyA9IChzdHJ1Y3QgZWJ0X2lwNl9pbmZvICopZGF0YTsKKwlzdHJ1Y3QgaXB2NmhkciBf
aXA2aCwgKmloNjsKKworCWloNiA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIDAsIHNpemVvZihf
aXA2aCksICZfaXA2aCk7CisJaWYgKGloNiA9PSBOVUxMKQorCQlyZXR1cm4gRUJUX05PTUFUQ0g7
CisJaWYgKGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X1BST1RPKSB7CisJCXN0cnVjdCB0Y3B1ZHBo
ZHIgX3BoZHIsICpwcHRyOworCQl1aW50OF90ICpuZXh0aGRycCA9ICZpaDYtPm5leHRoZHI7CisJ
CWludCBvZmZzZXRfcGg7CisKKwkJb2Zmc2V0X3BoID0gaXB2Nl9za2lwX2V4dGhkcihza2IsIHNp
emVvZihfaXA2aCksIG5leHRoZHJwKTsKKwkJaWYgKG9mZnNldF9waCA9PSAtMSkKKwkJCXJldHVy
biBFQlRfTk9NQVRDSDsKKwkJaWYgKEZXSU5WKGluZm8tPnByb3RvY29sICE9ICpuZXh0aGRycCwg
RUJUX0lQNl9QUk9UTykpCisJCQlyZXR1cm4gRUJUX05PTUFUQ0g7CisKKwkJaWYgKCEoaW5mby0+
Yml0bWFzayAmIEVCVF9JUDZfRFBPUlQpICYmCisJCQkhKGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2
X1NQT1JUKSkKKwkJCXJldHVybiBFQlRfTUFUQ0g7CisJCXBwdHIgPSBza2JfaGVhZGVyX3BvaW50
ZXIoc2tiLCBvZmZzZXRfcGgsIHNpemVvZihfcGhkciksICZfcGhkcik7CisJCWlmIChwcHRyID09
IE5VTEwpCisJCQlyZXR1cm4gRUJUX05PTUFUQ0g7CisJCWlmIChpbmZvLT5iaXRtYXNrICYgRUJU
X0lQNl9EUE9SVCkgeworCQkJdTMyIGRzdCA9IG50b2hzKHBwdHItPmRzdCk7CisJCQlpZiAoRldJ
TlYoZHN0IDwgaW5mby0+ZHBvcnRbMF0gfHwKKwkJCSAgICAgICAgICBkc3QgPiBpbmZvLT5kcG9y
dFsxXSwKKwkJCSAgICAgICAgICBFQlRfSVA2X0RQT1JUKSkKKwkJCQlyZXR1cm4gRUJUX05PTUFU
Q0g7CisJCX0KKwkJaWYgKGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X1NQT1JUKSB7CisJCQl1MzIg
c3JjID0gbnRvaHMocHB0ci0+c3JjKTsKKwkJCWlmIChGV0lOVihzcmMgPCBpbmZvLT5zcG9ydFsw
XSB8fAorCQkJICAgICAgICAgIHNyYyA+IGluZm8tPnNwb3J0WzFdLAorCQkJICAgICAgICAgIEVC
VF9JUDZfU1BPUlQpKQorCQkJcmV0dXJuIEVCVF9OT01BVENIOworCQl9CisJCXJldHVybiBFQlRf
TUFUQ0g7CisJfQorCXJldHVybiBFQlRfTUFUQ0g7Cit9CisKK3N0YXRpYyBpbnQgZWJ0X2lwNl9j
aGVjayhjb25zdCBjaGFyICp0YWJsZW5hbWUsIHVuc2lnbmVkIGludCBob29rbWFzaywKKyAgIGNv
bnN0IHN0cnVjdCBlYnRfZW50cnkgKmUsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhbGVu
KQoreworCXN0cnVjdCBlYnRfaXA2X2luZm8gKmluZm8gPSAoc3RydWN0IGVidF9pcDZfaW5mbyAq
KWRhdGE7CisKKwlpZiAoZGF0YWxlbiAhPSBFQlRfQUxJR04oc2l6ZW9mKHN0cnVjdCBlYnRfaXA2
X2luZm8pKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGUtPmV0aHByb3RvICE9IGh0b25zKEVU
SF9QX0lQVjYpIHx8CisJICAgZS0+aW52ZmxhZ3MgJiBFQlRfSVBST1RPKQorCQlyZXR1cm4gLUVJ
TlZBTDsKKwlpZiAoaW5mby0+Yml0bWFzayAmIH5FQlRfSVA2X01BU0sgfHwgaW5mby0+aW52Zmxh
Z3MgJiB+RUJUX0lQNl9NQVNLKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoaW5mby0+Yml0bWFz
ayAmIChFQlRfSVA2X0RQT1JUIHwgRUJUX0lQNl9TUE9SVCkpIHsKKwkJaWYgKGluZm8tPmludmZs
YWdzICYgRUJUX0lQNl9QUk9UTykKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoaW5mby0+cHJv
dG9jb2wgIT0gSVBQUk9UT19UQ1AgJiYKKwkJICAgIGluZm8tPnByb3RvY29sICE9IElQUFJPVE9f
VURQICYmCisJCSAgICBpbmZvLT5wcm90b2NvbCAhPSBJUFBST1RPX1NDVFAgJiYKKwkJICAgIGlu
Zm8tPnByb3RvY29sICE9IElQUFJPVE9fRENDUCkKKwkJCSByZXR1cm4gLUVJTlZBTDsKKwl9CisJ
aWYgKGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X0RQT1JUICYmIGluZm8tPmRwb3J0WzBdID4gaW5m
by0+ZHBvcnRbMV0pCisJCXJldHVybiAtRUlOVkFMOworCWlmIChpbmZvLT5iaXRtYXNrICYgRUJU
X0lQNl9TUE9SVCAmJiBpbmZvLT5zcG9ydFswXSA+IGluZm8tPnNwb3J0WzFdKQorCQlyZXR1cm4g
LUVJTlZBTDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBlYnRfbWF0Y2ggZmlsdGVy
X2lwNiA9Cit7CisJLm5hbWUJCT0gRUJUX0lQNl9NQVRDSCwKKwkubWF0Y2gJCT0gZWJ0X2ZpbHRl
cl9pcDYsCisJLmNoZWNrCQk9IGVidF9pcDZfY2hlY2ssCisJLm1lCQk9IFRISVNfTU9EVUxFLAor
fTsKKworc3RhdGljIGludCBfX2luaXQgZWJ0X2lwNl9pbml0KHZvaWQpCit7CisJcmV0dXJuIGVi
dF9yZWdpc3Rlcl9tYXRjaCgmZmlsdGVyX2lwNik7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBl
YnRfaXA2X2Zpbmkodm9pZCkKK3sKKwllYnRfdW5yZWdpc3Rlcl9tYXRjaCgmZmlsdGVyX2lwNik7
Cit9CisKK21vZHVsZV9pbml0KGVidF9pcDZfaW5pdCk7Cittb2R1bGVfZXhpdChlYnRfaXA2X2Zp
bmkpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC1ydU5wIG5ldGZpbHRlci5vcmlnL2Vi
dF9sb2cuYyBuZXRmaWx0ZXIuaXB2Ni9lYnRfbG9nLmMKLS0tIG5ldGZpbHRlci5vcmlnL2VidF9s
b2cuYwkyMDA4LTAyLTA2IDE1OjU3OjUwLjAwMDAwMDAwMCAtMDgwMAorKysgbmV0ZmlsdGVyLmlw
djYvZWJ0X2xvZy5jCTIwMDgtMDItMDYgMTU6NTk6MjEuMDAwMDAwMDAwIC0wODAwCkBAIC0xOCw2
ICsxOCw4IEBACiAjaW5jbHVkZSA8bGludXgvaW4uaD4KICNpbmNsdWRlIDxsaW51eC9pZl9hcnAu
aD4KICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2lwdjYuaD4K
KyNpbmNsdWRlIDxsaW51eC9pbjYuaD4KIAogc3RhdGljIERFRklORV9TUElOTE9DSyhlYnRfbG9n
X2xvY2spOwogCkBAIC0xMTIsNiArMTE0LDQzIEBAIGVidF9sb2dfcGFja2V0KHVuc2lnbmVkIGlu
dCBwZiwgdW5zaWduZWQKIAkJZ290byBvdXQ7CiAJfQogCisJaWYgKChiaXRtYXNrICYgRUJUX0xP
R19JUDYpICYmIGV0aF9oZHIoc2tiKS0+aF9wcm90byA9PQorCSAgIGh0b25zKEVUSF9QX0lQVjYp
KXsKKwkJc3RydWN0IGlwdjZoZHIgX2lwaCwgKmloOworCQl1aW50OF90ICpuZXh0aGRycDsKKwkJ
aW50IG9mZnNldF9waDsKKworCQlpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIDAsIHNpemVv
ZihfaXBoKSwgJl9pcGgpOworCQlpZiAoaWggPT0gTlVMTCkgeworCQkJcHJpbnRrKCIgSU5DT01Q
TEVURSBJUHY2IGhlYWRlciIpOworCQkJZ290byBvdXQ7CisJCX0KKwkJcHJpbnRrKCIgSVB2NiBT
UkM9JXg6JXg6JXg6JXg6JXg6JXg6JXg6JXggIgorCQkgICAgICAgIklQdjYgRFNUPSV4OiV4OiV4
OiV4OiV4OiV4OiV4OiV4LCBJUHY2ICIKKwkJICAgICAgICJwcmlvcml0eT0weCUwMVgsIE5leHQg
SGVhZGVyPSVkIiwgTklQNihpaC0+c2FkZHIpLAorCQkgICAgICAgTklQNihpaC0+ZGFkZHIpLCBp
aC0+cHJpb3JpdHksIGloLT5uZXh0aGRyKTsKKwkJbmV4dGhkcnAgPSAmaWgtPm5leHRoZHI7CisJ
CW9mZnNldF9waCA9IGlwdjZfc2tpcF9leHRoZHIoc2tiLCBzaXplb2YoX2lwaCksIG5leHRoZHJw
KTsKKwkJaWYgKG9mZnNldF9waCA9PSAtMSkKKwkJCWdvdG8gb3V0OworCQlpZiAoKm5leHRoZHJw
ID09IElQUFJPVE9fVENQIHx8CisJCSAgICAqbmV4dGhkcnAgPT0gSVBQUk9UT19VRFAgfHwKKwkJ
ICAgICpuZXh0aGRycCA9PSBJUFBST1RPX1NDVFAgfHwKKwkJICAgICpuZXh0aGRycCA9PSBJUFBS
T1RPX0RDQ1ApIHsKKwkJCXN0cnVjdCB0Y3B1ZHBoZHIgX3BvcnRzLCAqcHB0cjsKKworCQkJcHB0
ciA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldF9waCwgCisJCQkJCQkgIHNpemVvZihf
cG9ydHMpLCAmX3BvcnRzKTsKKwkJCWlmIChwcHRyID09IE5VTEwpIHsKKwkJCQlwcmludGsoIiBJ
TkNPTVBMRVRFIFRDUC9VRFAgaGVhZGVyIik7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCQlwcmlu
dGsoIiBTUFQ9JXUgRFBUPSV1IiwgbnRvaHMocHB0ci0+c3JjKSwKKwkJCSAgIG50b2hzKHBwdHIt
PmRzdCkpOworCQl9CisJCWdvdG8gb3V0OworCX0KKwogCWlmICgoYml0bWFzayAmIEVCVF9MT0df
QVJQKSAmJgogCSAgICAoKGV0aF9oZHIoc2tiKS0+aF9wcm90byA9PSBodG9ucyhFVEhfUF9BUlAp
KSB8fAogCSAgICAgKGV0aF9oZHIoc2tiKS0+aF9wcm90byA9PSBodG9ucyhFVEhfUF9SQVJQKSkp
KSB7CmRpZmYgLXJ1TnAgbmV0ZmlsdGVyLm9yaWcvS2NvbmZpZyBuZXRmaWx0ZXIuaXB2Ni9LY29u
ZmlnCi0tLSBuZXRmaWx0ZXIub3JpZy9LY29uZmlnCTIwMDgtMDItMDYgMTU6NTc6NTAuMDAwMDAw
MDAwIC0wODAwCisrKyBuZXRmaWx0ZXIuaXB2Ni9LY29uZmlnCTIwMDgtMDItMDYgMTU6NTk6MjEu
MDAwMDAwMDAwIC0wODAwCkBAIC04Myw2ICs4MywxNSBAQCBjb25maWcgQlJJREdFX0VCVF9JUAog
CiAJICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJl
LCBzYXkgTi4KIAorY29uZmlnIEJSSURHRV9FQlRfSVA2CisJdHJpc3RhdGUgImVidDogSVA2IGZp
bHRlciBzdXBwb3J0IgorCWRlcGVuZHMgb24gQlJJREdFX05GX0VCVEFCTEVTCisJaGVscAorCSAg
VGhpcyBvcHRpb24gYWRkcyB0aGUgSVA2IG1hdGNoLCB3aGljaCBhbGxvd3MgYmFzaWMgSVBWNiBo
ZWFkZXIgZmllbGQKKwkgIGZpbHRlcmluZy4KKworCSAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVs
ZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBCUklER0VfRUJU
X0xJTUlUCiAJdHJpc3RhdGUgImVidDogbGltaXQgbWF0Y2ggc3VwcG9ydCIKIAlkZXBlbmRzIG9u
IEJSSURHRV9ORl9FQlRBQkxFUwpkaWZmIC1ydU5wIG5ldGZpbHRlci5vcmlnL01ha2VmaWxlIG5l
dGZpbHRlci5pcHY2L01ha2VmaWxlCi0tLSBuZXRmaWx0ZXIub3JpZy9NYWtlZmlsZQkyMDA4LTAy
LTA2IDE1OjU3OjUwLjAwMDAwMDAwMCAtMDgwMAorKysgbmV0ZmlsdGVyLmlwdjYvTWFrZWZpbGUJ
MjAwOC0wMi0wNiAxNTo1OToyMS4wMDAwMDAwMDAgLTA4MDAKQEAgLTE0LDYgKzE0LDcgQEAgb2Jq
LSQoQ09ORklHX0JSSURHRV9FQlRfODAyXzMpICs9IGVidF84MAogb2JqLSQoQ09ORklHX0JSSURH
RV9FQlRfQU1PTkcpICs9IGVidF9hbW9uZy5vCiBvYmotJChDT05GSUdfQlJJREdFX0VCVF9BUlAp
ICs9IGVidF9hcnAubwogb2JqLSQoQ09ORklHX0JSSURHRV9FQlRfSVApICs9IGVidF9pcC5vCitv
YmotJChDT05GSUdfQlJJREdFX0VCVF9JUDYpICs9IGVidF9pcDYubwogb2JqLSQoQ09ORklHX0JS
SURHRV9FQlRfTElNSVQpICs9IGVidF9saW1pdC5vCiBvYmotJChDT05GSUdfQlJJREdFX0VCVF9N
QVJLKSArPSBlYnRfbWFya19tLm8KIG9iai0kKENPTkZJR19CUklER0VfRUJUX1BLVFRZUEUpICs9
IGVidF9wa3R0eXBlLm8K

------_=_NextPart_001_01C8691E.71E7C7B2
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
------_=_NextPart_001_01C8691E.71E7C7B2
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Ebtables-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ebtables-devel

------_=_NextPart_001_01C8691E.71E7C7B2--