From owner-freebsd-net@FreeBSD.ORG Mon Jan 13 15:37:11 2014 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 53F81372 for ; Mon, 13 Jan 2014 15:37:11 +0000 (UTC) Received: from mail.marples.name (unknown [IPv6:2a01:348:31:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 9CACC19D8 for ; Mon, 13 Jan 2014 15:37:10 +0000 (UTC) Received: from mail.marples.name (uberserver.marples.name [10.73.1.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.marples.name (Postfix) with ESMTPSA id 07D38A1117 for ; Mon, 13 Jan 2014 15:36:41 +0000 (GMT) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_e87c2615c7ad8fd96c87aab790f1c042" Date: Mon, 13 Jan 2014 15:36:40 +0000 From: Roy Marples To: freebsd-net@freebsd.org Subject: IPv6: report address flag changes to userland Message-ID: X-Sender: roy@marples.name User-Agent: Roundcube Webmail/0.9.5 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:37:11 -0000 --=_e87c2615c7ad8fd96c87aab790f1c042 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8; format=flowed Hi List There is zero point as I see it in announcing newly added tentative addresses to userland. It's not as if userland can actually use the address at this point. However, there is immense benefit in announcing address flag changes, such as removal of tentative, or addition of the other flags. The main benefit for this patch is so that dhcpcd(8) listen for when the kernel has completed DAD and has announced the result. dhcpcd can then react immediately instead of having to wait for the full time as dictated by the RFC. The attached patch addresses the above and was cut from FreeBSD-9 - there is a small adjustment needed for -current which is noted in the patch. The patch is based on the work I did in NetBSD a few months ago documented here: http://netbsd.2816.n7.nabble.com/PATCH-to-only-announce-RTM-NEWADDR-once-IPv6-DAD-completes-tp281110.html Comments? Roy --=_e87c2615c7ad8fd96c87aab790f1c042 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=freebsd-ipv6-tentative.diff Content-Disposition: attachment; filename=freebsd-ipv6-tentative.diff; size=8768 SW5kZXg6IHN5cy9uZXRpbmV0Ni9pbjYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvaW42 LmMJKHJldmlzaW9uIDI1NTIzNSkKKysrIHN5cy9uZXRpbmV0Ni9pbjYuYwkod29ya2luZyBjb3B5 KQpAQCAtMTQwLDggKzE0MCw5IEBACiAjZGVmaW5lIGlhNjJpZmEoaWE2KQkoJigoaWE2KS0+aWFf aWZhKSkKIAogdm9pZAotaW42X2lmYWRkbG9vcChzdHJ1Y3QgaWZhZGRyICppZmEpCitpbjZfaWZk b2xvb3Aoc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgbGxmbGFncykKIHsKKwlpbnQgYW5ub3VuY2lu ZzsKIAlzdHJ1Y3Qgc29ja2FkZHJfZGwgZ2F0ZXdheTsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42IG1h c2ssIGFkZHI7CiAJc3RydWN0IHJ0ZW50cnkgcnQ7CkBAIC0xNTEsNzMgKzE1Miw2MyBAQAogCiAJ aWEgPSBpZmEyaWE2KGlmYSk7CiAJaWZwID0gaWZhLT5pZmFfaWZwOwotCUlGX0FGREFUQV9MT0NL KGlmcCk7Ci0JaWZhLT5pZmFfcnRyZXF1ZXN0ID0gTlVMTDsKLQotCS8qIFhYWCBRTAotCSAqIHdl IG5lZWQgdG8gcmVwb3J0IHJ0X25ld2FkZHJtc2cKLQkgKi8KLQlsbiA9IGxsYV9sb29rdXAoTExU QUJMRTYoaWZwKSwgKExMRV9DUkVBVEUgfCBMTEVfSUZBRERSIHwKLQkgICAgTExFX0VYQ0xVU0lW RSksIChzdHJ1Y3Qgc29ja2FkZHIgKikmaWEtPmlhX2FkZHIpOwotCUlGX0FGREFUQV9VTkxPQ0so aWZwKTsKLQlpZiAobG4gIT0gTlVMTCkgewotCQlsbi0+bGFfZXhwaXJlID0gMDsgIC8qIGZvciBJ UHY2IHRoaXMgbWVhbnMgcGVybWFuZW50ICovCi0JCWxuLT5sbl9zdGF0ZSA9IE5ENl9MTElORk9f UkVBQ0hBQkxFOwotCQkvKgotCQkgKiBpbml0aWFsaXplIGZvciBydG1zZyBnZW5lcmF0aW9uCi0J CSAqLworCS8qIERvbid0IHJlcG9ydCBuZXcgdGVudGF0aXZlIGFkZHJlc3NlcyB0byB0aGUgcm91 dGluZyBzb2NrZXQgKi8KKwlhbm5vdW5jaW5nID0gKGxsZmxhZ3MgJiBMTEVfREVMRVRFIHx8CisJ ICAgICgoaWEtPmlhNl9mbGFncyAmIElONl9JRkZfVEVOVEFUSVZFKSA9PSAwKSk7CisJaWYgKGFu bm91bmNpbmcpIHsKKwkJbWVtY3B5KCZhZGRyLCAmaWEtPmlhX2FkZHIsIHNpemVvZihpYS0+aWFf YWRkcikpOworCQltZW1jcHkoJm1hc2ssICZpYS0+aWFfcHJlZml4bWFzaywgc2l6ZW9mKGlhLT5p YV9wcmVmaXhtYXNrKSk7CiAJCWJ6ZXJvKCZnYXRld2F5LCBzaXplb2YoZ2F0ZXdheSkpOwogCQln YXRld2F5LnNkbF9sZW4gPSBzaXplb2YoZ2F0ZXdheSk7CiAJCWdhdGV3YXkuc2RsX2ZhbWlseSA9 IEFGX0xJTks7CiAJCWdhdGV3YXkuc2RsX25sZW4gPSAwOwotCQlnYXRld2F5LnNkbF9hbGVuID0g NjsKLQkJbWVtY3B5KGdhdGV3YXkuc2RsX2RhdGEsICZsbi0+bGxfYWRkci5tYWNfYWxpZ25lZCwK LQkJICAgIHNpemVvZihsbi0+bGxfYWRkcikpOwotCQlMTEVfV1VOTE9DSyhsbik7CisJCWJ6ZXJv KCZydCwgc2l6ZW9mKHJ0KSk7CisJCXJ0LnJ0X2dhdGV3YXkgPSAoc3RydWN0IHNvY2thZGRyICop JmdhdGV3YXk7CisJCXJ0LnJ0X2ZsYWdzID0gUlRGX0hPU1QgfCBSVEZfU1RBVElDOworCQlydF9t YXNrKCZydCkgPSAoc3RydWN0IHNvY2thZGRyICopJm1hc2s7CisJCXJ0X2tleSgmcnQpID0gKHN0 cnVjdCBzb2NrYWRkciAqKSZhZGRyOwogCX0KIAotCWJ6ZXJvKCZydCwgc2l6ZW9mKHJ0KSk7Ci0J cnQucnRfZ2F0ZXdheSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmZ2F0ZXdheTsKLQltZW1jcHkoJm1h c2ssICZpYS0+aWFfcHJlZml4bWFzaywgc2l6ZW9mKGlhLT5pYV9wcmVmaXhtYXNrKSk7Ci0JbWVt Y3B5KCZhZGRyLCAmaWEtPmlhX2FkZHIsIHNpemVvZihpYS0+aWFfYWRkcikpOwotCXJ0X21hc2so JnJ0KSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmbWFzazsKLQlydF9rZXkoJnJ0KSA9IChzdHJ1Y3Qg c29ja2FkZHIgKikmYWRkcjsKLQlydC5ydF9mbGFncyA9IFJURl9VUCB8IFJURl9IT1NUIHwgUlRG X1NUQVRJQzsKLQlydF9uZXdhZGRybXNnKFJUTV9BREQsIGlmYSwgMCwgJnJ0KTsKLX0KKwlpZiAo bGxmbGFncyAmIExMRV9ERUxFVEUpIHsKKwkJbGx0YWJsZV9wcmVmaXhfZnJlZShBRl9JTkVUNiwg KHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLAorCQkgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZtYXNr LCBMTEVfU1RBVElDKTsKKwkJZ2F0ZXdheS5zZGxfYWxlbiA9IGlmcC0+aWZfYWRkcmxlbjsKKwl9 IGVsc2UgeworCQlsbGZsYWdzIHw9IExMRV9JRkFERFI7CisJCUlGX0FGREFUQV9MT0NLKGlmcCk7 CisJCWlmIChsbGZsYWdzICYgTExFX0NSRUFURSkgeworCQkJbGxmbGFncyB8PSBMTEVfRVhDTFVT SVZFOworCQkgICAgICAgIGlmYS0+aWZhX3J0cmVxdWVzdCA9IE5VTEw7IC8vIC1jdXJyZW50IHVz ZSBuZDZfcnRyZXF1ZXN0CisJCX0KKwkJbG4gPSBsbGFfbG9va3VwKExMVEFCTEU2KGlmcCksIGxs ZmxhZ3MsCisJCSAgICAoc3RydWN0IHNvY2thZGRyICopJmlhLT5pYV9hZGRyKTsKKwkJSUZfQUZE QVRBX1VOTE9DSyhpZnApOworCQlpZiAobG4gIT0gTlVMTCkgeworCQkJaWYgKGxsZmxhZ3MgJiBM TEVfQ1JFQVRFKSB7CisJCQkJbG4tPmxhX2V4cGlyZSA9IDA7ICAvKiBwZXJtYW5lbnQgKi8KKwkJ CQlsbi0+bG5fc3RhdGUgPSBORDZfTExJTkZPX1JFQUNIQUJMRTsKKwkJCX0KKwkJCWlmIChhbm5v dW5jaW5nKSB7CisJCQkJZ2F0ZXdheS5zZGxfYWxlbiA9IDY7CisJCQkJbWVtY3B5KGdhdGV3YXku c2RsX2RhdGEsCisJCQkJICAgICZsbi0+bGxfYWRkci5tYWNfYWxpZ25lZCwKKwkJCQkgICAgc2l6 ZW9mKGxuLT5sbF9hZGRyKSk7CisJCQl9CisJCQlpZiAobGxmbGFncyAmIExMRV9FWENMVVNJVkUp CisJCQkJTExFX1dVTkxPQ0sobG4pOworCQkJZWxzZQorCQkJCUxMRV9SVU5MT0NLKGxuKTsKKwkJ fQorCX0KIAotdm9pZAotaW42X2lmcmVtbG9vcChzdHJ1Y3QgaWZhZGRyICppZmEpCi17Ci0Jc3Ry dWN0IHNvY2thZGRyX2RsIGdhdGV3YXk7Ci0Jc3RydWN0IHNvY2thZGRyX2luNiBtYXNrLCBhZGRy OwotCXN0cnVjdCBydGVudHJ5IHJ0MDsKLQlzdHJ1Y3QgaW42X2lmYWRkciAqaWE7Ci0Jc3RydWN0 IGlmbmV0ICppZnA7Ci0KLQlpYSA9IGlmYTJpYTYoaWZhKTsKLQlpZnAgPSBpZmEtPmlmYV9pZnA7 Ci0JSUZfQUZEQVRBX0xPQ0soaWZwKTsKLQlsbGFfbG9va3VwKExMVEFCTEU2KGlmcCksIChMTEVf REVMRVRFIHwgTExFX0lGQUREUiksCi0JICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmaWEtPmlhX2Fk ZHIpOwotCUlGX0FGREFUQV9VTkxPQ0soaWZwKTsKLQotCS8qCi0JICogaW5pdGlhbGl6ZSBmb3Ig cnRtc2cgZ2VuZXJhdGlvbgotCSAqLwotCWJ6ZXJvKCZnYXRld2F5LCBzaXplb2YoZ2F0ZXdheSkp OwotCWdhdGV3YXkuc2RsX2xlbiA9IHNpemVvZihnYXRld2F5KTsKLQlnYXRld2F5LnNkbF9mYW1p bHkgPSBBRl9MSU5LOwotCWdhdGV3YXkuc2RsX25sZW4gPSAwOwotCWdhdGV3YXkuc2RsX2FsZW4g PSBpZnAtPmlmX2FkZHJsZW47Ci0JYnplcm8oJnJ0MCwgc2l6ZW9mKHJ0MCkpOwotCXJ0MC5ydF9n YXRld2F5ID0gKHN0cnVjdCBzb2NrYWRkciAqKSZnYXRld2F5OwotCW1lbWNweSgmbWFzaywgJmlh LT5pYV9wcmVmaXhtYXNrLCBzaXplb2YoaWEtPmlhX3ByZWZpeG1hc2spKTsKLQltZW1jcHkoJmFk ZHIsICZpYS0+aWFfYWRkciwgc2l6ZW9mKGlhLT5pYV9hZGRyKSk7Ci0JcnRfbWFzaygmcnQwKSA9 IChzdHJ1Y3Qgc29ja2FkZHIgKikmbWFzazsKLQlydF9rZXkoJnJ0MCkgPSAoc3RydWN0IHNvY2th ZGRyICopJmFkZHI7Ci0JcnQwLnJ0X2ZsYWdzID0gUlRGX0hPU1QgfCBSVEZfU1RBVElDOwotCXJ0 X25ld2FkZHJtc2coUlRNX0RFTEVURSwgaWZhLCAwLCAmcnQwKTsKKwlpZiAoYW5ub3VuY2luZykg eworCQlpZiAobGxmbGFncyAmIExMRV9ERUxFVEUpCisJCQlydF9uZXdhZGRybXNnKFJUTV9ERUxF VEUsIGlmYSwgMCwgJnJ0KTsKKwkJZWxzZSB7CisJCQlydC5ydF9mbGFncyB8PSBSVEZfVVA7CisJ CQlydF9uZXdhZGRybXNnKFJUTV9BREQsIGlmYSwgMCwgJnJ0KTsKKwkJfQorCX0KIH0KIAogaW50 CkBAIC0xMDIxLDEwICsxMDEyLDYgQEAKIAl9IGVsc2UKIAkJaWEtPmlhNl9saWZldGltZS5pYTZ0 X3ByZWZlcnJlZCA9IDA7CiAKLQkvKiByZXNldCB0aGUgaW50ZXJmYWNlIGFuZCByb3V0aW5nIHRh YmxlIGFwcHJvcHJpYXRlbHkuICovCi0JaWYgKChlcnJvciA9IGluNl9pZmluaXQoaWZwLCBpYSwg JmlmcmEtPmlmcmFfYWRkciwgaG9zdElzTmV3KSkgIT0gMCkKLQkJZ290byB1bmxpbms7Ci0KIAkv KgogCSAqIGNvbmZpZ3VyZSBhZGRyZXNzIGZsYWdzLgogCSAqLwpAQCAtMTA1MCw2ICsxMDM3LDEw IEBACiAJaWYgKE5EX0lGSU5GTyhpZnApLT5mbGFncyAmIE5ENl9JRkZfSUZESVNBQkxFRCkKIAkJ aWEtPmlhNl9mbGFncyB8PSBJTjZfSUZGX1RFTlRBVElWRTsKIAorCS8qIHJlc2V0IHRoZSBpbnRl cmZhY2UgYW5kIHJvdXRpbmcgdGFibGUgYXBwcm9wcmlhdGVseS4gKi8KKwlpZiAoKGVycm9yID0g aW42X2lmaW5pdChpZnAsIGlhLCAmaWZyYS0+aWZyYV9hZGRyLCBob3N0SXNOZXcpKSAhPSAwKQor CQlnb3RvIHVubGluazsKKwogCS8qCiAJICogV2UgYXJlIGRvbmUgaWYgd2UgaGF2ZSBzaW1wbHkg bW9kaWZpZWQgYW4gZXhpc3RpbmcgYWRkcmVzcy4KIAkgKi8KQEAgLTE4ODUsNiArMTg3Niw4IEBA CiAJLyogQWRkIG93bmFkZHIgYXMgbG9vcGJhY2sgcnRlbnRyeSwgaWYgbmVjZXNzYXJ5IChleC4g b24gcDJwIGxpbmspLiAqLwogCWlmIChuZXdob3N0KQogCQlpbjZfaWZhZGRsb29wKCYoaWEtPmlh X2lmYSkpOworCWVsc2UKKwkJbmQ2X25ld2FkZHJtc2coJihpYS0+aWFfaWZhKSk7CiAKIAlyZXR1 cm4gKGVycm9yKTsKIH0KSW5kZXg6IHN5cy9uZXRpbmV0Ni9pbjZfdmFyLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gc3lzL25ldGluZXQ2L2luNl92YXIuaAkocmV2aXNpb24gMjU1MjM1KQorKysgc3lzL25ldGlu ZXQ2L2luNl92YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzc1LDggKzc3NSw5IEBACiBpbnQJaW42 X3ByZWZpeF9hZGRfaWZpZCBfX1AoKGludCwgc3RydWN0IGluNl9pZmFkZHIgKikpOwogdm9pZAlp bjZfcHJlZml4X3JlbW92ZV9pZmlkIF9fUCgoaW50LCBzdHJ1Y3QgaW42X2lmYWRkciAqKSk7CiB2 b2lkCWluNl9wdXJnZXByZWZpeCBfX1AoKHN0cnVjdCBpZm5ldCAqKSk7Ci12b2lkCWluNl9pZnJl bWxvb3Aoc3RydWN0IGlmYWRkciAqKTsKLXZvaWQJaW42X2lmYWRkbG9vcChzdHJ1Y3QgaWZhZGRy ICopOwordm9pZAlpbjZfaWZkb2xvb3Aoc3RydWN0IGlmYWRkciAqLCBpbnQpOworI2RlZmluZQlp bjZfaWZhZGRsb29wKGlmYSkJaW42X2lmZG9sb29wKChpZmEpLCBMTEVfQ1JFQVRFKQorI2RlZmlu ZQlpbjZfaWZyZW1sb29wKGlmYSkJaW42X2lmZG9sb29wKChpZmEpLCBMTEVfREVMRVRFKQogCiBp bnQJaW42X2lzX2FkZHJfZGVwcmVjYXRlZCBfX1AoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikpOwog c3RydWN0IGlucGNiOwpJbmRleDogc3lzL25ldGluZXQ2L25kNi5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9uZXRpbmV0Ni9uZDYuYwkocmV2aXNpb24gMjU1MjM1KQorKysgc3lzL25ldGluZXQ2L25kNi5j CSh3b3JraW5nIGNvcHkpCkBAIC02MzIsNyArNjMyLDEwIEBACiAJCX0gZWxzZSBpZiAoSUZBNl9J U19ERVBSRUNBVEVEKGlhNikpIHsKIAkJCWludCBvbGRmbGFncyA9IGlhNi0+aWE2X2ZsYWdzOwog Ci0JCQlpYTYtPmlhNl9mbGFncyB8PSBJTjZfSUZGX0RFUFJFQ0FURUQ7CisJCQlpZiAoKG9sZGZs YWdzICYgSU42X0lGRl9ERVBSRUNBVEVEKSA9PSAwKSB7CisJCQkJaWE2LT5pYTZfZmxhZ3MgfD0g SU42X0lGRl9ERVBSRUNBVEVEOworCQkJCW5kNl9uZXdhZGRybXNnKChzdHJ1Y3QgaWZhZGRyICop aWE2KTsKKwkJCX0KIAogCQkJLyoKIAkJCSAqIElmIGEgdGVtcG9yYXJ5IGFkZHJlc3MgaGFzIGp1 c3QgYmVjb21lIGRlcHJlY2F0ZWQsCkBAIC02NjMsNyArNjY2LDEwIEBACiAJCQkgKiBBIG5ldyBS QSBtaWdodCBoYXZlIG1hZGUgYSBkZXByZWNhdGVkIGFkZHJlc3MKIAkJCSAqIHByZWZlcnJlZC4K IAkJCSAqLwotCQkJaWE2LT5pYTZfZmxhZ3MgJj0gfklONl9JRkZfREVQUkVDQVRFRDsKKwkJCWlm IChpYTYtPmlhNl9mbGFncyAmIElONl9JRkZfREVQUkVDQVRFRCkgeworCQkJCWlhNi0+aWE2X2Zs YWdzICY9IH5JTjZfSUZGX0RFUFJFQ0FURUQ7CisJCQkJbmQ2X25ld2FkZHJtc2coKHN0cnVjdCBp ZmFkZHIgKilpYTYpOworCQkJfQogCQl9CiAJfQogCkluZGV4OiBzeXMvbmV0aW5ldDYvbmQ2LmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc3lzL25ldGluZXQ2L25kNi5oCShyZXZpc2lvbiAyNTUyMzUpCisrKyBz eXMvbmV0aW5ldDYvbmQ2LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw2ICs0MjgsNyBAQAogdm9p ZCBuZDZfbnNfb3V0cHV0IF9fUCgoc3RydWN0IGlmbmV0ICosIGNvbnN0IHN0cnVjdCBpbjZfYWRk ciAqLAogCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqLCBzdHJ1Y3QgbGxlbnRyeSAqLCBpbnQpKTsK IGNhZGRyX3QgbmQ2X2lmcHRvbWFjIF9fUCgoc3RydWN0IGlmbmV0ICopKTsKKyNkZWZpbmUgbmQ2 X25ld2FkZHJtc2coaWZhKQlpbjZfaWZkb2xvb3AoKGlmYSksIDApCiB2b2lkIG5kNl9kYWRfc3Rh cnQgX19QKChzdHJ1Y3QgaWZhZGRyICosIGludCkpOwogdm9pZCBuZDZfZGFkX3N0b3AgX19QKChz dHJ1Y3QgaWZhZGRyICopKTsKIHZvaWQgbmQ2X2RhZF9kdXBsaWNhdGVkIF9fUCgoc3RydWN0IGlm YWRkciAqKSk7CkluZGV4OiBzeXMvbmV0aW5ldDYvbmQ2X25ici5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9uZXRpbmV0Ni9uZDZfbmJyLmMJKHJldmlzaW9uIDI1NTIzNSkKKysrIHN5cy9uZXRpbmV0Ni9u ZDZfbmJyLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMTgsMTQgKzEyMTgsMTEgQEAKIAkJCWlmYS0+ aWZhX2lmcCA/IGlmX25hbWUoaWZhLT5pZmFfaWZwKSA6ICI/Pz8iKTsKIAkJcmV0dXJuOwogCX0K LQlpZiAoaWEtPmlhNl9mbGFncyAmIElONl9JRkZfQU5ZQ0FTVCkgeworCWlmIChpYS0+aWE2X2Zs YWdzICYgSU42X0lGRl9BTllDQVNUIHx8ICFWX2lwNl9kYWRfY291bnQpIHsKIAkJaWEtPmlhNl9m bGFncyAmPSB+SU42X0lGRl9URU5UQVRJVkU7CisJCW5kNl9uZXdhZGRybXNnKGlmYSk7CiAJCXJl dHVybjsKIAl9Ci0JaWYgKCFWX2lwNl9kYWRfY291bnQpIHsKLQkJaWEtPmlhNl9mbGFncyAmPSB+ SU42X0lGRl9URU5UQVRJVkU7Ci0JCXJldHVybjsKLQl9CiAJaWYgKGlmYS0+aWZhX2lmcCA9PSBO VUxMKQogCQlwYW5pYygibmQ2X2RhZF9zdGFydDogaWZhLT5pZmFfaWZwID09IE5VTEwiKTsKIAlp ZiAoIShpZmEtPmlmYV9pZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSkgewpAQCAtMTM4Myw2ICsxMzgw LDcgQEAKIAkJCSAqIE5vIGR1cGxpY2F0ZSBhZGRyZXNzIGZvdW5kLgogCQkJICovCiAJCQlpYS0+ aWE2X2ZsYWdzICY9IH5JTjZfSUZGX1RFTlRBVElWRTsKKwkJCW5kNl9uZXdhZGRybXNnKGlmYSk7 CiAKIAkJCW5kNmxvZygoTE9HX0RFQlVHLAogCQkJICAgICIlczogREFEIGNvbXBsZXRlIGZvciAl cyAtIG5vIGR1cGxpY2F0ZXMgZm91bmRcbiIsCkBAIC0xNDMyLDYgKzE0MzAsOSBAQAogCWxvZyhM T0dfRVJSLCAiJXM6IG1hbnVhbCBpbnRlcnZlbnRpb24gcmVxdWlyZWRcbiIsCiAJICAgIGlmX25h bWUoaWZwKSk7CiAKKwkvKiBJbmZvcm0gdGhlIHJvdXRpbmcgc29ja2V0IHRoYXQgREFEIGhhcyBj b21wbGV0ZWQgKi8KKwluZDZfbmV3YWRkcm1zZyhpZmEpOworCiAJLyoKIAkgKiBJZiB0aGUgYWRk cmVzcyBpcyBhIGxpbmstbG9jYWwgYWRkcmVzcyBmb3JtZWQgZnJvbSBhbiBpbnRlcmZhY2UKIAkg KiBpZGVudGlmaWVyIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBhZGRyZXNzIHdoaWNoIGlzIHN1cHBv c2VkIHRvIGJlCkluZGV4OiBzeXMvbmV0aW5ldDYvbmQ2X3J0ci5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9uZXRpbmV0Ni9uZDZfcnRyLmMJKHJldmlzaW9uIDI1NTIzNSkKKysrIHN5cy9uZXRpbmV0Ni9u ZDZfcnRyLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1MjUsOSArMTUyNSwxNSBAQAogCQkJCQlpZmEt PmlhNl9mbGFncyAmPSB+SU42X0lGRl9ERVRBQ0hFRDsKIAkJCQkJaWZhLT5pYTZfZmxhZ3MgfD0g SU42X0lGRl9URU5UQVRJVkU7CiAJCQkJCW5kNl9kYWRfc3RhcnQoKHN0cnVjdCBpZmFkZHIgKilp ZmEsIDApOworCQkJCQkvKiBXZSB3aWxsIG5vdGlmeSB0aGUgcm91dGluZyBzb2NrZXQgb2YKKwkJ CQkJICogdGhlIERBRCByZXN1bHQsIHNvIG5vIG5lZWQgdG8KKwkJCQkJICogaGVyZSAqLwogCQkJ CX0KIAkJCX0gZWxzZSB7Ci0JCQkJaWZhLT5pYTZfZmxhZ3MgfD0gSU42X0lGRl9ERVRBQ0hFRDsK KwkJCQlpZiAoKGlmYS0+aWE2X2ZsYWdzICYgSU42X0lGRl9ERVRBQ0hFRCkgPT0gMCkgeworCQkJ CQlpZmEtPmlhNl9mbGFncyB8PSBJTjZfSUZGX0RFVEFDSEVEOworCQkJCQluZDZfbmV3YWRkcm1z Zygoc3RydWN0IGlmYWRkciAqKWlmYSk7CisJCQkJfQogCQkJfQogCQl9CiAJfQo= --=_e87c2615c7ad8fd96c87aab790f1c042--