Date: Tue, 16 Jan 2001 01:50:56 +0100 (CET) From: System Admin Account <admin%dyn@citylink.dinoex.sub.de> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/24365: ifconfig inet6 delete -> kernelpanic Message-ID: <200101160050.f0G0ou735410@dyn.oper.dinoex.org>
next in thread | raw e-mail | index | archive | help
>Number: 24365 >Category: kern >Synopsis: delete alias from ipv6 p-t-p iface will crash kernel >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Jan 15 17:10:00 PST 2001 >Closed-Date: >Last-Modified: >Originator: System Admin Account >Release: FreeBSD 4.2-RELEASE i386 >Organization: >Environment: kernel built with INET6 >Description: this works with loopback and p-t-p ifaces. $ ifconfig lo0 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 $ ifconfig lo0 inet6 delete ::1 -> this works as one would expect $ ifconfig lo0 inet6 delete fe80::1%lo0 -> but this one panics! Functions called: rtalloc1 from rtinit " in6_ifscrub " in6_purgeaddr " in6_control " ifioctl >How-To-Repeat: not applicable, see piece-of-code below for the failure-reason. >Fix: Thats what I have done, and what made it work here. As I have configured IPv6 just out of curiousity and have no real usage yet for it, I cannot say about side-effects, possibly with a routing daemon or such. The code obviousely considers _every_ immanent route on a loopback or p-t-p iface as a _host_route (and afaik this is true for classic IP), but the fe80::1%lo0 is some kind of cloneable route: $ netstat -r Destination Gateway Flags Netif Expire fe80::%lo0 fe80::1%lo0 Uc lo0 *** sys/netinet6/in6.c.orig Sat Jul 15 09:14:33 2000 --- sys/netinet6/in6.c Sun Jan 14 04:03:37 2001 *************** *** 1219,1227 **** { if ((ia->ia_flags & IFA_ROUTE) == 0) return; ! if (ifp->if_flags & (IFF_LOOPBACK | IFF_POINTOPOINT)) rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST); ! else rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0); ia->ia_flags &= ~IFA_ROUTE; --- 1219,1227 ---- { if ((ia->ia_flags & IFA_ROUTE) == 0) return; ! /* if (ifp->if_flags & (IFF_LOOPBACK | IFF_POINTOPOINT)) rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST); ! else */ rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0); ia->ia_flags &= ~IFA_ROUTE; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101160050.f0G0ou735410>