Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Jul 2000 10:54:08 +0900
From:      itojun@iijlab.net
To:        sam@inf.enst.fr
Cc:        bugs@freebsd.org
Subject:   kern/17909
Message-ID:  <26451.962762048@coconut.itojun.org>

next in thread | raw e-mail | index | archive | help
	about this problem: http://www.FreeBSD.org/cgi/query-pr.cgi?pr=17909
	does the patch (against latest freebsd-current) solve the problem?

itojun


Index: if.c
===================================================================
RCS file: /home/ncvs/src/sys/net/if.c,v
retrieving revision 1.90
diff -c -r1.90 if.c
*** if.c	2000/06/30 16:38:24	1.90
--- if.c	2000/07/05 01:51:19
***************
*** 63,68 ****
--- 63,70 ----
  #include <netinet/in_var.h>
  #ifdef INET6
  #include <machine/clock.h> /* XXX: temporal workaround for fxp issue */
+ #include <netinet6/in6_var.h>
+ #include <netinet6/in6_ifattach.h>
  #endif
  #endif
  
***************
*** 260,278 ****
  		}
  #endif /* INET */
  #ifdef INET6
- 		/* XXX: Ugly!! ad hoc just for INET6 */
  		if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_INET6) {
! 			struct in6_aliasreq ifr;
! 
! 			bzero(&ifr, sizeof(ifr));
! 			ifr.ifra_addr =
! 				*((struct sockaddr_in6 *)ifa->ifa_addr);
! 			if (ifa->ifa_dstaddr)
! 				ifr.ifra_dstaddr =
! 				    *((struct sockaddr_in6 *)ifa->ifa_dstaddr);
! 			if (in6_control(NULL, SIOCDIFADDR_IN6, (caddr_t)&ifr,
! 					ifp, NULL) == 0)
! 				continue;
  		}
  #endif /* INET6 */
  		TAILQ_REMOVE(&ifp->if_addrhead, ifa, ifa_link);
--- 262,271 ----
  		}
  #endif /* INET */
  #ifdef INET6
  		if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_INET6) {
! 			in6_purgeaddr(ifa, ifp);
! 			/* ifp_addrhead is already updated */
! 			continue;
  		}
  #endif /* INET6 */
  		TAILQ_REMOVE(&ifp->if_addrhead, ifa, ifa_link);
***************
*** 290,295 ****
--- 283,293 ----
  			continue;
  		(void) rnh->rnh_walktree(rnh, if_rtdel, ifp);
  	}
+ 
+ #ifdef INET6
+ 	/* nuke all IPv6 kernel structs related to ifp */
+ 	in6_ifdetach(ifp);
+ #endif
  
  	TAILQ_REMOVE(&ifnet, ifp, if_link);
  	splx(s);


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?26451.962762048>