Module Name: src Committed By: roy Date: Mon Sep 14 15:09:57 UTC 2020
Modified Files: src/sys/net: if_llatbl.h nd.c nd.h src/sys/netinet: if_arp.c src/sys/netinet6: nd6.c Log Message: nd: Name l3addr union of llentry and use in-place of nd_addr. Probably makes more sense and makes nd.h less messy. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/net/if_llatbl.h cvs rdiff -u -r1.1 -r1.2 src/sys/net/nd.c src/sys/net/nd.h cvs rdiff -u -r1.295 -r1.296 src/sys/netinet/if_arp.c cvs rdiff -u -r1.272 -r1.273 src/sys/netinet6/nd6.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if_llatbl.h diff -u src/sys/net/if_llatbl.h:1.17 src/sys/net/if_llatbl.h:1.18 --- src/sys/net/if_llatbl.h:1.17 Thu Jul 18 06:47:10 2019 +++ src/sys/net/if_llatbl.h Mon Sep 14 15:09:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_llatbl.h,v 1.17 2019/07/18 06:47:10 ozaki-r Exp $ */ +/* $NetBSD: if_llatbl.h,v 1.18 2020/09/14 15:09:57 roy Exp $ */ /* * Copyright (c) 2004 Luigi Rizzo, Alessandro Cerri. All rights reserved. * Copyright (c) 2004-2008 Qing Li. All rights reserved. @@ -63,7 +63,7 @@ extern krwlock_t lltable_rwlock; */ struct llentry { LIST_ENTRY(llentry) lle_next; - union { + union l3addr { struct in_addr addr4; struct in6_addr addr6; } r_l3addr; @@ -86,7 +86,7 @@ struct llentry { uint16_t la_asked; uint16_t la_preempt; uint16_t ln_byhint; - int16_t ln_state; /* IPv6 has ND6_LLINFO_NOSTATE == -2 */ + int16_t ln_state; /* ND_LLINFO_NOSTATE == -2 */ uint16_t ln_router; time_t ln_ntick; int lle_refcnt; Index: src/sys/net/nd.c diff -u src/sys/net/nd.c:1.1 src/sys/net/nd.c:1.2 --- src/sys/net/nd.c:1.1 Fri Sep 11 14:59:22 2020 +++ src/sys/net/nd.c Mon Sep 14 15:09:57 2020 @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nd.c,v 1.1 2020/09/11 14:59:22 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd.c,v 1.2 2020/09/14 15:09:57 roy Exp $"); #include <sys/callout.h> #include <sys/mbuf.h> @@ -57,7 +57,7 @@ nd_timer(void *arg) struct psref psref; struct mbuf *m = NULL; bool send_ns = false, missed = false; - union nd_addr taddr, *daddrp = NULL; + union l3addr taddr, *daddrp = NULL; SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); LLE_WLOCK(ln); @@ -158,7 +158,7 @@ nd_timer(void *arg) if (send_ns) { uint8_t lladdr[255], *lladdrp; - union nd_addr src, *psrc; + union l3addr src, *psrc; nd_set_timer(ln, ND_TIMER_RETRANS); if (ln->ln_state > ND_LLINFO_INCOMPLETE && @@ -353,7 +353,7 @@ nd_resolve(struct llentry *ln, const str */ if (!ND_IS_LLINFO_PERMANENT(ln) && ln->ln_asked == 0) { struct psref psref; - union nd_addr dst, src, *psrc; + union l3addr dst, src, *psrc; ln->ln_asked++; nd_set_timer(ln, ND_TIMER_RETRANS); Index: src/sys/net/nd.h diff -u src/sys/net/nd.h:1.1 src/sys/net/nd.h:1.2 --- src/sys/net/nd.h:1.1 Fri Sep 11 14:59:22 2020 +++ src/sys/net/nd.h Mon Sep 14 15:09:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: nd.h,v 1.1 2020/09/11 14:59:22 roy Exp $ */ +/* $NetBSD: nd.h,v 1.2 2020/09/14 15:09:57 roy Exp $ */ /* * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -65,12 +65,6 @@ ((MIN_RANDOM_FACTOR * (x >> 10)) + (cprng_fast32() & \ ((MAX_RANDOM_FACTOR - MIN_RANDOM_FACTOR) * (x >> 10)))) -#include <netinet/in.h> -union nd_addr { - struct in_addr nd_addr4; - struct in6_addr nd_addr6; -}; - struct nd_domain { int nd_family; int nd_delay; /* delay first probe time in seconds */ @@ -81,10 +75,10 @@ struct nd_domain { bool (*nd_nud_enabled)(struct ifnet *); unsigned int (*nd_reachable)(struct ifnet *); /* msec */ unsigned int (*nd_retrans)(struct ifnet *); /* msec */ - union nd_addr *(*nd_holdsrc)(struct llentry *, union nd_addr *); - void (*nd_output)(struct ifnet *, const union nd_addr *, - const union nd_addr *, const uint8_t *, const union nd_addr *); - void (*nd_missed)(struct ifnet *, const union nd_addr *, struct mbuf *); + union l3addr *(*nd_holdsrc)(struct llentry *, union l3addr *); + void (*nd_output)(struct ifnet *, const union l3addr *, + const union l3addr *, const uint8_t *, const union l3addr *); + void (*nd_missed)(struct ifnet *, const union l3addr *, struct mbuf *); void (*nd_free)(struct llentry *, int); }; Index: src/sys/netinet/if_arp.c diff -u src/sys/netinet/if_arp.c:1.295 src/sys/netinet/if_arp.c:1.296 --- src/sys/netinet/if_arp.c:1.295 Fri Sep 11 15:16:00 2020 +++ src/sys/netinet/if_arp.c Mon Sep 14 15:09:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arp.c,v 1.295 2020/09/11 15:16:00 roy Exp $ */ +/* $NetBSD: if_arp.c,v 1.296 2020/09/14 15:09:57 roy Exp $ */ /* * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.295 2020/09/11 15:16:00 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.296 2020/09/14 15:09:57 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -141,10 +141,10 @@ static int arp_perform_nud = 1; static bool arp_nud_enabled(struct ifnet *); static unsigned int arp_llinfo_reachable(struct ifnet *); static unsigned int arp_llinfo_retrans(struct ifnet *); -static union nd_addr *arp_llinfo_holdsrc(struct llentry *, union nd_addr *); -static void arp_llinfo_output(struct ifnet *, const union nd_addr *, - const union nd_addr *, const uint8_t *, const union nd_addr *); -static void arp_llinfo_missed(struct ifnet *, const union nd_addr *, +static union l3addr *arp_llinfo_holdsrc(struct llentry *, union l3addr *); +static void arp_llinfo_output(struct ifnet *, const union l3addr *, + const union l3addr *, const uint8_t *, const union l3addr *); +static void arp_llinfo_missed(struct ifnet *, const union l3addr *, struct mbuf *); static void arp_free(struct llentry *, int); @@ -1305,8 +1305,8 @@ arp_llinfo_retrans(__unused struct ifnet * and stores it in @src. * Returns pointer to @src (if hold queue is not empty) or NULL. */ -static union nd_addr * -arp_llinfo_holdsrc(struct llentry *ln, union nd_addr *src) +static union l3addr * +arp_llinfo_holdsrc(struct llentry *ln, union l3addr *src) { struct ip *ip; @@ -1319,7 +1319,7 @@ arp_llinfo_holdsrc(struct llentry *ln, u ip = mtod(ln->ln_hold, struct ip *); /* XXX pullup? */ if (sizeof(*ip) < ln->ln_hold->m_len) - src->nd_addr4 = ip->ip_src; + src->addr4 = ip->ip_src; else src = NULL; @@ -1327,20 +1327,20 @@ arp_llinfo_holdsrc(struct llentry *ln, u } static void -arp_llinfo_output(struct ifnet *ifp, __unused const union nd_addr *daddr, - const union nd_addr *taddr, const uint8_t *tlladdr, - const union nd_addr *hsrc) +arp_llinfo_output(struct ifnet *ifp, __unused const union l3addr *daddr, + const union l3addr *taddr, const uint8_t *tlladdr, + const union l3addr *hsrc) { - struct in_addr tip = taddr->nd_addr4, sip = zeroin_addr; + struct in_addr tip = taddr->addr4, sip = zeroin_addr; const uint8_t *slladdr = CLLADDR(ifp->if_sadl); if (hsrc != NULL) { struct in_ifaddr *ia; struct psref psref; - ia = in_get_ia_on_iface_psref(hsrc->nd_addr4, ifp, &psref); + ia = in_get_ia_on_iface_psref(hsrc->addr4, ifp, &psref); if (ia != NULL) { - sip = hsrc->nd_addr4; + sip = hsrc->addr4; ia4_release(ia, &psref); } } @@ -1373,7 +1373,8 @@ arp_llinfo_output(struct ifnet *ifp, __u static void -arp_llinfo_missed(struct ifnet *ifp, const union nd_addr *taddr, struct mbuf *m) +arp_llinfo_missed(struct ifnet *ifp, const union l3addr *taddr, + struct mbuf *m) { struct in_addr mdaddr = zeroin_addr; struct sockaddr_in dsin, tsin; @@ -1395,7 +1396,7 @@ arp_llinfo_missed(struct ifnet *ifp, con } else sa = NULL; - sockaddr_in_init(&tsin, &taddr->nd_addr4, 0); + sockaddr_in_init(&tsin, &taddr->addr4, 0); rt_clonedmsg(RTM_MISS, sa, sintosa(&tsin), NULL, ifp); } Index: src/sys/netinet6/nd6.c diff -u src/sys/netinet6/nd6.c:1.272 src/sys/netinet6/nd6.c:1.273 --- src/sys/netinet6/nd6.c:1.272 Fri Sep 11 15:03:33 2020 +++ src/sys/netinet6/nd6.c Mon Sep 14 15:09:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: nd6.c,v 1.272 2020/09/11 15:03:33 roy Exp $ */ +/* $NetBSD: nd6.c,v 1.273 2020/09/14 15:09:57 roy Exp $ */ /* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.272 2020/09/11 15:03:33 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.273 2020/09/14 15:09:57 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -107,10 +107,10 @@ static void nd6_free(struct llentry *, i static bool nd6_nud_enabled(struct ifnet *); static unsigned int nd6_llinfo_reachable(struct ifnet *); static unsigned int nd6_llinfo_retrans(struct ifnet *); -static union nd_addr *nd6_llinfo_holdsrc(struct llentry *, union nd_addr *); -static void nd6_llinfo_output(struct ifnet *, const union nd_addr *, - const union nd_addr *, const uint8_t *, const union nd_addr *); -static void nd6_llinfo_missed(struct ifnet *, const union nd_addr *, +static union l3addr *nd6_llinfo_holdsrc(struct llentry *, union l3addr *); +static void nd6_llinfo_output(struct ifnet *, const union l3addr *, + const union l3addr *, const uint8_t *, const union l3addr *); +static void nd6_llinfo_missed(struct ifnet *, const union l3addr *, struct mbuf *); static void nd6_timer(void *); static void nd6_timer_work(struct work *, void *); @@ -367,23 +367,23 @@ nd6_llinfo_get_holdsrc(struct llentry *l return src; } -static union nd_addr * -nd6_llinfo_holdsrc(struct llentry *ln, union nd_addr *src) +static union l3addr * +nd6_llinfo_holdsrc(struct llentry *ln, union l3addr *src) { - if (nd6_llinfo_get_holdsrc(ln, &src->nd_addr6) == NULL) + if (nd6_llinfo_get_holdsrc(ln, &src->addr6) == NULL) return NULL; return src; } static void -nd6_llinfo_output(struct ifnet *ifp, const union nd_addr *daddr, - const union nd_addr *taddr, __unused const uint8_t *tlladdr, - const union nd_addr *hsrc) +nd6_llinfo_output(struct ifnet *ifp, const union l3addr *daddr, + const union l3addr *taddr, __unused const uint8_t *tlladdr, + const union l3addr *hsrc) { - nd6_ns_output(ifp, &daddr->nd_addr6, &taddr->nd_addr6, - &hsrc->nd_addr6, NULL); + nd6_ns_output(ifp, &daddr->addr6, &taddr->addr6, + &hsrc->addr6, NULL); } static bool @@ -411,7 +411,7 @@ nd6_llinfo_retrans(struct ifnet *ifp) } static void -nd6_llinfo_missed(struct ifnet *ifp, const union nd_addr *taddr, struct mbuf *m) +nd6_llinfo_missed(struct ifnet *ifp, const union l3addr *taddr, struct mbuf *m) { struct in6_addr mdaddr6 = zeroin6_addr; struct sockaddr_in6 dsin6, tsin6; @@ -426,7 +426,7 @@ nd6_llinfo_missed(struct ifnet *ifp, con } else sa = NULL; - sockaddr_in6_init(&tsin6, &taddr->nd_addr6, 0, 0, 0); + sockaddr_in6_init(&tsin6, &taddr->addr6, 0, 0, 0); rt_clonedmsg(RTM_MISS, sa, sin6tosa(&tsin6), NULL, ifp); }