Module Name: src Committed By: ozaki-r Date: Tue Apr 19 04:13:56 UTC 2016
Modified Files: src/sys/netinet: if_arp.c if_inarp.h Log Message: Constify rtentry of arpresolve We don't need to (rather shouldn't) modify rtentry in there. To generate a diff of this commit: cvs rdiff -u -r1.207 -r1.208 src/sys/netinet/if_arp.c cvs rdiff -u -r1.48 -r1.49 src/sys/netinet/if_inarp.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/if_arp.c diff -u src/sys/netinet/if_arp.c:1.207 src/sys/netinet/if_arp.c:1.208 --- src/sys/netinet/if_arp.c:1.207 Mon Apr 18 02:24:42 2016 +++ src/sys/netinet/if_arp.c Tue Apr 19 04:13:56 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arp.c,v 1.207 2016/04/18 02:24:42 ozaki-r Exp $ */ +/* $NetBSD: if_arp.c,v 1.208 2016/04/19 04:13:56 ozaki-r 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.207 2016/04/18 02:24:42 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.208 2016/04/19 04:13:56 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -685,7 +685,7 @@ arprequest(struct ifnet *ifp, * Any other value indicates an error. */ int -arpresolve(struct ifnet *ifp, struct rtentry *rt, struct mbuf *m, +arpresolve(struct ifnet *ifp, const struct rtentry *rt, struct mbuf *m, const struct sockaddr *dst, void *desten, size_t destlen) { struct llentry *la; @@ -707,18 +707,6 @@ arpresolve(struct ifnet *ifp, struct rte return 0; } - /* - * Re-send the ARP request when appropriate. - */ -#ifdef DIAGNOSTIC - if (rt->rt_expire == 0) { - /* This should never happen. (Should it? -gwr) */ - printf("%s: unresolved and rt_expire == 0\n", __func__); - /* Set expiration time to now (expired). */ - rt->rt_expire = time_uptime; - } -#endif - notfound: #ifdef IFF_STATICARP /* FreeBSD */ #define _IFF_NOARP (IFF_NOARP | IFF_STATICARP) @@ -859,17 +847,18 @@ notfound: &satocsin(dst)->sin_addr, enaddr); } else { struct sockaddr_in sin; + struct rtentry *_rt; sockaddr_in_init(&sin, &la->r_l3addr.addr4, 0); /* XXX */ - rt = rtalloc1((struct sockaddr *)&sin, 0); - if (rt == NULL) + _rt = rtalloc1((struct sockaddr *)&sin, 0); + if (_rt == NULL) goto bad; - arprequest(ifp, &satocsin(rt->rt_ifa->ifa_addr)->sin_addr, + arprequest(ifp, + &satocsin(_rt->rt_ifa->ifa_addr)->sin_addr, &satocsin(dst)->sin_addr, enaddr); - rtfree(rt); - rt = NULL; + rtfree(_rt); } return error; } Index: src/sys/netinet/if_inarp.h diff -u src/sys/netinet/if_inarp.h:1.48 src/sys/netinet/if_inarp.h:1.49 --- src/sys/netinet/if_inarp.h:1.48 Thu Apr 7 03:22:15 2016 +++ src/sys/netinet/if_inarp.h Tue Apr 19 04:13:56 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if_inarp.h,v 1.48 2016/04/07 03:22:15 christos Exp $ */ +/* $NetBSD: if_inarp.h,v 1.49 2016/04/19 04:13:56 ozaki-r Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -75,7 +75,7 @@ MALLOC_DECLARE(M_IPARP); extern struct ifqueue arpintrq; void arp_ifinit(struct ifnet *, struct ifaddr *); void arp_rtrequest(int, struct rtentry *, const struct rt_addrinfo *); -int arpresolve(struct ifnet *, struct rtentry *, struct mbuf *, +int arpresolve(struct ifnet *, const struct rtentry *, struct mbuf *, const struct sockaddr *, void *, size_t); void arpintr(void); void arprequest(struct ifnet *, const struct in_addr *, const struct in_addr *,