From owner-freebsd-bugs@FreeBSD.ORG Wed Nov 19 23:35:29 2014 Return-Path: Delivered-To: freebsd-bugs@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 58BB72FA for ; Wed, 19 Nov 2014 23:35:29 +0000 (UTC) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 263EA8E5 for ; Wed, 19 Nov 2014 23:35:29 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id sAJNZT5B059220 for ; Wed, 19 Nov 2014 23:35:29 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 195191] New: [patch] rtadvd(8): rtadvd should retry on NET_RT_IFLIST sysctl failure like getifaddrs Date: Wed, 19 Nov 2014 23:35:29 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: guyyur@gmail.com X-Bugzilla-Status: Needs Triage X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Nov 2014 23:35:29 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=195191 Bug ID: 195191 Summary: [patch] rtadvd(8): rtadvd should retry on NET_RT_IFLIST sysctl failure like getifaddrs Product: Base System Version: 11.0-CURRENT Hardware: Any OS: Any Status: Needs Triage Severity: Affects Only Me Priority: --- Component: bin Assignee: freebsd-bugs@FreeBSD.org Reporter: guyyur@gmail.com Created attachment 149611 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=149611&action=edit Retry NET_RT_IFLIST sysctl. rtadvd exits after printing the message: rtadvd[41840]: sysctl: NET_RT_IFLIST get failed The NET_RT_IFLIST sysctl required buffer size can change between the request for the size and the request for the data. getifaddrs handles this by retrying the sysctl several times. I copied the comment and looping from lib/libc/net/getifaddrs.c to have rtadvd behave like getifaddrs. rtadvd should probably also be changed to not need to call the sysctl for every message if the required info can be obtained by other means. Issue replicated in an environment with dhcpcd for DHCPv6-PD giving an address to a lan interface and a tun interface. Restarting dhcpcd can sometimes trigger the problem. dhcpcd adds a global ipv6 addresses and routes to the interfaces triggering RTM_NEWADDR and RTM_ADD. rtadvd calls update_ifinfo on RTM_NEWADDR and RTM_ADD. The likely scenario is: dhcpcd adds an address for the lan interface. rtadvd receives RTM_NEWADDR for the lan interface. rtadvd calls the sysctl to get the required size. dhcpcd adds an address for the tun interface. size changed. rtadvd calls the sysctl to get the data size with small buffer. -- You are receiving this mail because: You are the assignee for the bug.