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 *,