From owner-freebsd-net@FreeBSD.ORG Sun Oct 5 20:59:21 2014 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E1E5CEB6 for ; Sun, 5 Oct 2014 20:59:21 +0000 (UTC) Received: from mail-yh0-x230.google.com (mail-yh0-x230.google.com [IPv6:2607:f8b0:4002:c01::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A7401A26 for ; Sun, 5 Oct 2014 20:59:21 +0000 (UTC) Received: by mail-yh0-f48.google.com with SMTP id v1so1548255yhn.21 for ; Sun, 05 Oct 2014 13:59:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=PI3wM2SMc/FJhbhfAoB8gUgKNNc6b+AXC1SFFZVh/I0=; b=EiJ3cqy62Tj15141d0FOvG9SDu0srDUBUtBjC0HxoaRoTfJTI3lP5dD5nCmi8kk/8x N/wgvkLdicfT5urno8qb8lPQYaEPVjDY+QZZqi/16zPUHOR0F6m1YOZXrQHtcf7of1lM 0jTb3Rf1+X/fCi86t4aQVrBgw783DpddWjMrbShr3wC3G4holTZnqXPIjikKsEJfn91F i0nqdrum6upsa/KiHh5r2xJmKjK0vTsHlII0PYyP4gKPj1SZAFYviXnnsAxaulwSBD69 NVeuQW0UhJqs0ffHQz36n1fIeCZ9K52ml8uUNtfDR2bAWOUr59+pkww9DwvUF/2jOEBu OeXA== MIME-Version: 1.0 X-Received: by 10.236.37.36 with SMTP id x24mr30494784yha.19.1412542760813; Sun, 05 Oct 2014 13:59:20 -0700 (PDT) Received: by 10.170.75.136 with HTTP; Sun, 5 Oct 2014 13:59:20 -0700 (PDT) Date: Sun, 5 Oct 2014 23:59:20 +0300 Message-ID: Subject: [patch] ipv6 prefix lifetime is not updated when address is updated through SIOCAIFADDR_IN6 From: Guy Yur To: freebsd-net@freebsd.org Content-Type: multipart/mixed; boundary=089e0115ec327d2d550504b33de8 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Oct 2014 20:59:22 -0000 --089e0115ec327d2d550504b33de8 Content-Type: text/plain; charset=UTF-8 Hi, I am running dhcpcd 6.4.3 on 11.0-CURRENT r271879M to get an ipv6 prefix from my ISP. The prefix is received with a lifetime of 86400 seconds. dhcpcd adds an address using the prefix with pltime and vltime of 86400. Before the address expires dhcpcd refreshes it but the interface route for the prefix is still deleted after 86400 seconds. dhcpcd uses SIOCAIFADDR_IN6 to update the address and the kernel doesn't update the prefix lifetime if the prefix already exists. Since ndpr_lastupdate is also not updated the prefix will expire. The issue doesn't happen when updating lifetime using ifconfig with pltime and vltime since ifconfig removes the address before adding it (each ifconfig invocation will reset the prefix lifetime). I created a patch to update the prefix lifetimes in SIOCAIFADDR_IN6 from the added address's lifetime. If there are two addresses with same prefix but different lifetimes it means the last one added will set the prefix lifetime. Another way will be to move the check in SIOCAIFADDR_IN6 to a new function nd6_prelist_update that will call nd6_prefix_lookup. If the prefix doesn't exist, call nd6_prelist_add. If it does exist, copy lifetimes (and ndpr_flags?). Before: # netstat -rn -f inet6 WWWW:XXXX:YYYY:ZZZZ::/64 link#1 U lan0 WWWW:XXXX:YYYY:ZZZZ::1 link#1 UHS lo0 ... After more than 86400 seconds: # ifconfig -L lan0 inet6 lan0: flags=8843 metric 0 mtu 1500 options=8000b inet6 fe80::AAAA:BBBB:CCCC:DDDD%lan0 prefixlen 64 scopeid 0x1 inet6 WWWW:XXXX:YYYY:ZZZZ::1 prefixlen 64 pltime 57257 vltime 57257 nd6 options=21 # ndp -p WWWW:XXXX:YYYY:ZZZZ::/64 if=lan0 flags=L vltime=0, pltime=0, expired, ref=1 No advertising router ... # netstat -rn -f inet6 WWWW:XXXX:YYYY:ZZZZ::1 link#1 UHS lo0 ... Regards, Guy --089e0115ec327d2d550504b33de8 Content-Type: application/octet-stream; name="update_prefix_ltimes.patch" Content-Disposition: attachment; filename="update_prefix_ltimes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i0wuwjfx0 SW5kZXg6IHN5cy9uZXRpbmV0Ni9pbjYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvaW42 LmMJKHJldmlzaW9uIDI3MjU2NikKKysrIHN5cy9uZXRpbmV0Ni9pbjYuYwkod29ya2luZyBjb3B5 KQpAQCAtNjc4LDYgKzY3OCw4IEBAIGluNl9jb250cm9sKHN0cnVjdCBzb2NrZXQgKnNvLCB1X2xv bmcgY21kLCBjYWRkcl90CiAJCQkJZ290byBvdXQ7CiAJCQl9CiAJCX0KKwkJZWxzZQorCQkJbmQ2 X3ByZWZpeF91cGRhdGVfbHRpbWVzKHByLCAmcHIwKTsKIAogCQkvKiByZWxhdGUgdGhlIGFkZHJl c3MgdG8gdGhlIHByZWZpeCAqLwogCQlpZiAoaWEtPmlhNl9uZHByID09IE5VTEwpIHsKSW5kZXg6 IHN5cy9uZXRpbmV0Ni9uZDYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvbmQ2LmgJKHJl dmlzaW9uIDI3MjU2NikKKysrIHN5cy9uZXRpbmV0Ni9uZDYuaAkod29ya2luZyBjb3B5KQpAQCAt NDQ1LDYgKzQ0NSw3IEBAIGludCBuZDZfcHJlbGlzdF9hZGQoc3RydWN0IG5kX3ByZWZpeGN0bCAq LCBzdHJ1Y3QKIHZvaWQgcGZ4bGlzdF9vbmxpbmtfY2hlY2sodm9pZCk7CiBzdHJ1Y3QgbmRfZGVm cm91dGVyICpkZWZyb3V0ZXJfbG9va3VwKHN0cnVjdCBpbjZfYWRkciAqLCBzdHJ1Y3QgaWZuZXQg Kik7CiBzdHJ1Y3QgbmRfcHJlZml4ICpuZDZfcHJlZml4X2xvb2t1cChzdHJ1Y3QgbmRfcHJlZml4 Y3RsICopOworaW50IG5kNl9wcmVmaXhfdXBkYXRlX2x0aW1lcyhzdHJ1Y3QgbmRfcHJlZml4ICos IHN0cnVjdCBuZF9wcmVmaXhjdGwgKik7CiB2b2lkIHJ0Nl9mbHVzaChzdHJ1Y3QgaW42X2FkZHIg Kiwgc3RydWN0IGlmbmV0ICopOwogaW50IG5kNl9zZXRkZWZhdWx0aWZhY2UoaW50KTsKIGludCBp bjZfdG1waWZhZGQoY29uc3Qgc3RydWN0IGluNl9pZmFkZHIgKiwgaW50LCBpbnQpOwpJbmRleDog c3lzL25ldGluZXQ2L25kNl9ydHIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvbmQ2X3J0 ci5jCShyZXZpc2lvbiAyNzI1NjYpCisrKyBzeXMvbmV0aW5ldDYvbmQ2X3J0ci5jCSh3b3JraW5n IGNvcHkpCkBAIC04NTMsNiArODUzLDIxIEBAIG5kNl9wcmVmaXhfbG9va3VwKHN0cnVjdCBuZF9w cmVmaXhjdGwgKmtleSkKIH0KIAogaW50CituZDZfcHJlZml4X3VwZGF0ZV9sdGltZXMoc3RydWN0 IG5kX3ByZWZpeCAqcHIsIHN0cnVjdCBuZF9wcmVmaXhjdGwgKnByY3RsKQoreworCWludCBlcnJv cjsKKworCXByLT5uZHByX3ZsdGltZSA9IHByY3RsLT5uZHByX3ZsdGltZTsKKwlwci0+bmRwcl9w bHRpbWUgPSBwcmN0bC0+bmRwcl9wbHRpbWU7CisJaWYgKChlcnJvciA9IGluNl9pbml0X3ByZWZp eF9sdGltZXMocHIpKSAhPSAwKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKwlwci0+bmRwcl9s YXN0dXBkYXRlID0gdGltZV91cHRpbWU7CisKKwlyZXR1cm4gMDsKK30KKworaW50CiBuZDZfcHJl bGlzdF9hZGQoc3RydWN0IG5kX3ByZWZpeGN0bCAqcHIsIHN0cnVjdCBuZF9kZWZyb3V0ZXIgKmRy LAogICAgIHN0cnVjdCBuZF9wcmVmaXggKipuZXdwKQogewo= --089e0115ec327d2d550504b33de8--