From 0d1947d96cfc5eca561b18ac258731e48d1e079e Mon Sep 17 00:00:00 2001 From: kn Date: Tue, 22 Nov 2022 19:28:29 +0000 Subject: [PATCH] Backout "Remove useless struct in6_ifextra" commit I committed the wrong iteration of this diff, sorry for the noise. --- sys/netinet6/in6.c | 14 +++++++++++--- sys/netinet6/in6_var.h | 7 ++++++- sys/netinet6/nd6.h | 4 ++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index 6be941b997e..3b811b7fbd2 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -1,4 +1,4 @@ -/* $OpenBSD: in6.c,v 1.253 2022/11/22 15:49:06 kn Exp $ */ +/* $OpenBSD: in6.c,v 1.254 2022/11/22 19:28:29 kn Exp $ */ /* $KAME: in6.c,v 1.372 2004/06/14 08:14:21 itojun Exp $ */ /* @@ -1601,11 +1601,19 @@ in6if_do_dad(struct ifnet *ifp) void * in6_domifattach(struct ifnet *ifp) { - return nd6_ifattach(ifp); + struct in6_ifextra *ext; + + ext = malloc(sizeof(*ext), M_IFADDR, M_WAITOK | M_ZERO); + + ext->nd_ifinfo = nd6_ifattach(ifp); + return ext; } void in6_domifdetach(struct ifnet *ifp, void *aux) { - nd6_ifdetach(aux); + struct in6_ifextra *ext = (struct in6_ifextra *)aux; + + nd6_ifdetach(ext->nd_ifinfo); + free(ext, M_IFADDR, sizeof(*ext)); } diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h index 8f95784b680..f076f7b3f55 100644 --- a/sys/netinet6/in6_var.h +++ b/sys/netinet6/in6_var.h @@ -1,4 +1,4 @@ -/* $OpenBSD: in6_var.h,v 1.76 2022/11/22 14:51:01 kn Exp $ */ +/* $OpenBSD: in6_var.h,v 1.77 2022/11/22 19:28:29 kn Exp $ */ /* $KAME: in6_var.h,v 1.55 2001/02/16 12:49:45 itojun Exp $ */ /* @@ -87,6 +87,11 @@ struct in6_addrlifetime { }; #ifdef _KERNEL +struct nd_ifinfo; +struct in6_ifextra { + struct nd_ifinfo *nd_ifinfo; +}; + struct in6_ifaddr { struct ifaddr ia_ifa; /* protocol-independent info */ #define ia_ifp ia_ifa.ifa_ifp diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h index 1ee60c94b83..85b5cef85de 100644 --- a/sys/netinet6/nd6.h +++ b/sys/netinet6/nd6.h @@ -1,4 +1,4 @@ -/* $OpenBSD: nd6.h,v 1.81 2022/11/22 14:51:01 kn Exp $ */ +/* $OpenBSD: nd6.h,v 1.82 2022/11/22 19:28:29 kn Exp $ */ /* $KAME: nd6.h,v 1.95 2002/06/08 11:31:06 itojun Exp $ */ /* @@ -94,7 +94,7 @@ struct in6_ndifreq { #include #define ND_IFINFO(ifp) \ - ((struct nd_ifinfo *)(ifp)->if_afdata[AF_INET6]) + (((struct in6_ifextra *)(ifp)->if_afdata[AF_INET6])->nd_ifinfo) struct llinfo_nd6 { TAILQ_ENTRY(llinfo_nd6) ln_list; -- 2.20.1