svn commit: r290486 - in head/sys: net netinet netinet6

Alexander V. Chernikov melifaro at FreeBSD.org
Sat Nov 7 11:12:03 UTC 2015


Author: melifaro
Date: Sat Nov  7 11:12:00 2015
New Revision: 290486
URL: https://svnweb.freebsd.org/changeset/base/290486

Log:
  Unify setting lladdr for AF_INET[6].

Modified:
  head/sys/net/if_llatbl.c
  head/sys/net/if_llatbl.h
  head/sys/netinet/if_ether.c
  head/sys/netinet/in.c
  head/sys/netinet6/in6.c
  head/sys/netinet6/nd6.c
  head/sys/netinet6/nd6_nbr.c

Modified: head/sys/net/if_llatbl.c
==============================================================================
--- head/sys/net/if_llatbl.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/net/if_llatbl.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -277,6 +277,15 @@ lltable_drop_entry_queue(struct llentry 
 	return (pkts_dropped);
 }
 
+void
+lltable_set_entry_addr(struct ifnet *ifp, struct llentry *lle,
+    const char *lladdr)
+{
+
+	bcopy(lladdr, &lle->ll_addr, ifp->if_addrlen);
+	lle->la_flags |= LLE_VALID;
+}
+
 /*
  *
  * Performes generic cleanup routines and frees lle.

Modified: head/sys/net/if_llatbl.h
==============================================================================
--- head/sys/net/if_llatbl.h	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/net/if_llatbl.h	Sat Nov  7 11:12:00 2015	(r290486)
@@ -207,6 +207,8 @@ struct llentry  *llentry_alloc(struct if
 
 /* helper functions */
 size_t lltable_drop_entry_queue(struct llentry *);
+void lltable_set_entry_addr(struct ifnet *ifp, struct llentry *lle,
+    const char *lladdr);
 
 struct llentry *lltable_alloc_entry(struct lltable *llt, u_int flags,
     const struct sockaddr *l4addr);

Modified: head/sys/netinet/if_ether.c
==============================================================================
--- head/sys/netinet/if_ether.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/netinet/if_ether.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -141,8 +141,6 @@ static void	in_arpinput(struct mbuf *);
 
 static void arp_check_update_lle(struct arphdr *ah, struct in_addr isaddr,
     struct ifnet *ifp, int bridged, struct llentry *la);
-static void arp_update_lle(struct arphdr *ah, struct ifnet *ifp,
-    struct llentry *la);
 static void arp_mark_lle_reachable(struct llentry *la);
 
 
@@ -820,7 +818,7 @@ match:
 		la = lltable_alloc_entry(LLTABLE(ifp), 0, dst);
 		if (la == NULL)
 			goto drop;
-		arp_update_lle(ah, ifp, la);
+		lltable_set_entry_addr(ifp, la, ar_sha(ah));
 
 		IF_AFDATA_WLOCK(ifp);
 		LLE_WLOCK(la);
@@ -1038,7 +1036,7 @@ arp_check_update_lle(struct arphdr *ah, 
 		}
 
 		/* Update data */
-		arp_update_lle(ah, ifp, la);
+		lltable_set_entry_addr(ifp, la, ar_sha(ah));
 
 		IF_AFDATA_WUNLOCK(ifp);
 		LLE_REMREF(la);
@@ -1070,17 +1068,6 @@ arp_check_update_lle(struct arphdr *ah, 
 		LLE_WUNLOCK(la);
 }
 
-/*
- * Updates @la fields used by fast path code.
- */
-static void
-arp_update_lle(struct arphdr *ah, struct ifnet *ifp, struct llentry *la)
-{
-
-	memcpy(&la->ll_addr, ar_sha(ah), ifp->if_addrlen);
-	la->la_flags |= LLE_VALID;
-}
-
 static void
 arp_mark_lle_reachable(struct llentry *la)
 {

Modified: head/sys/netinet/in.c
==============================================================================
--- head/sys/netinet/in.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/netinet/in.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -1258,8 +1258,8 @@ in_lltable_alloc(struct lltable *llt, u_
 	}
 	lle->la_flags = flags;
 	if ((flags & LLE_IFADDR) == LLE_IFADDR) {
-		bcopy(IF_LLADDR(ifp), &lle->ll_addr, ifp->if_addrlen);
-		lle->la_flags |= (LLE_VALID | LLE_STATIC);
+		lltable_set_entry_addr(ifp, lle, IF_LLADDR(ifp));
+		lle->la_flags |= LLE_STATIC;
 	}
 
 	return (lle);

Modified: head/sys/netinet6/in6.c
==============================================================================
--- head/sys/netinet6/in6.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/netinet6/in6.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -2261,8 +2261,8 @@ in6_lltable_alloc(struct lltable *llt, u
 	}
 	lle->la_flags = flags;
 	if ((flags & LLE_IFADDR) == LLE_IFADDR) {
-		bcopy(IF_LLADDR(ifp), &lle->ll_addr, ifp->if_addrlen);
-		lle->la_flags |= (LLE_VALID | LLE_STATIC);
+		lltable_set_entry_addr(ifp, lle, IF_LLADDR(ifp));
+		lle->la_flags |= LLE_STATIC;
 	}
 
 	if ((lle->la_flags & LLE_STATIC) != 0)

Modified: head/sys/netinet6/nd6.c
==============================================================================
--- head/sys/netinet6/nd6.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/netinet6/nd6.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -1738,10 +1738,8 @@ nd6_cache_lladdr(struct ifnet *ifp, stru
 		 * Since we already know all the data for the new entry,
 		 * fill it before insertion.
 		 */
-		if (lladdr != NULL) {
-			bcopy(lladdr, &ln->ll_addr, ifp->if_addrlen);
-			ln->la_flags |= LLE_VALID;
-		}
+		if (lladdr != NULL)
+			lltable_set_entry_addr(ifp, ln, lladdr);
 		IF_AFDATA_WLOCK(ifp);
 		LLE_WLOCK(ln);
 		/* Prefer any existing lle over newly-created one */
@@ -1799,8 +1797,7 @@ nd6_cache_lladdr(struct ifnet *ifp, stru
 		 * Record source link-layer address
 		 * XXX is it dependent to ifp->if_type?
 		 */
-		bcopy(lladdr, &ln->ll_addr, ifp->if_addrlen);
-		ln->la_flags |= LLE_VALID;
+		lltable_set_entry_addr(ifp, ln, lladdr);
 		nd6_llinfo_setstate(ln, ND6_LLINFO_STALE);
 
 		EVENTHANDLER_INVOKE(lle_event, ln, LLENTRY_RESOLVED);

Modified: head/sys/netinet6/nd6_nbr.c
==============================================================================
--- head/sys/netinet6/nd6_nbr.c	Sat Nov  7 11:08:19 2015	(r290485)
+++ head/sys/netinet6/nd6_nbr.c	Sat Nov  7 11:12:00 2015	(r290486)
@@ -765,8 +765,7 @@ nd6_na_input(struct mbuf *m, int off, in
 		/*
 		 * Record link-layer address, and update the state.
 		 */
-		bcopy(lladdr, &ln->ll_addr, ifp->if_addrlen);
-		ln->la_flags |= LLE_VALID;
+		lltable_set_entry_addr(ifp, ln, lladdr);
 		EVENTHANDLER_INVOKE(lle_event, ln, LLENTRY_RESOLVED);
 		if (is_solicited)
 			nd6_llinfo_setstate(ln, ND6_LLINFO_REACHABLE);
@@ -832,8 +831,7 @@ nd6_na_input(struct mbuf *m, int off, in
 			 * Update link-local address, if any.
 			 */
 			if (lladdr != NULL) {
-				bcopy(lladdr, &ln->ll_addr, ifp->if_addrlen);
-				ln->la_flags |= LLE_VALID;
+				lltable_set_entry_addr(ifp, ln, lladdr);
 				EVENTHANDLER_INVOKE(lle_event, ln,
 				    LLENTRY_RESOLVED);
 			}


More information about the svn-src-all mailing list