Module Name: src Committed By: ozaki-r Date: Mon Apr 27 02:59:44 UTC 2015
Modified Files: src/sys/netinet: dccp_usrreq.c tcp_input.c tcp_output.c tcp_subr.c src/sys/netinet6: in6_pcb.c in6_pcb.h in6_src.c udp6_output.c Log Message: Introduce in6_selecthlim_rt to consolidate an idiom for rt->rt_ifp It consolidates a scattered routine: (rt = rtcache_validate(&in6p->in6p_route)) != NULL ? rt->rt_ifp : NULL To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/netinet/dccp_usrreq.c cvs rdiff -u -r1.337 -r1.338 src/sys/netinet/tcp_input.c cvs rdiff -u -r1.180 -r1.181 src/sys/netinet/tcp_output.c cvs rdiff -u -r1.259 -r1.260 src/sys/netinet/tcp_subr.c cvs rdiff -u -r1.137 -r1.138 src/sys/netinet6/in6_pcb.c cvs rdiff -u -r1.43 -r1.44 src/sys/netinet6/in6_pcb.h cvs rdiff -u -r1.56 -r1.57 src/sys/netinet6/in6_src.c cvs rdiff -u -r1.47 -r1.48 src/sys/netinet6/udp6_output.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/netinet/dccp_usrreq.c diff -u src/sys/netinet/dccp_usrreq.c:1.4 src/sys/netinet/dccp_usrreq.c:1.5 --- src/sys/netinet/dccp_usrreq.c:1.4 Sun Apr 26 21:40:49 2015 +++ src/sys/netinet/dccp_usrreq.c Mon Apr 27 02:59:44 2015 @@ -1,5 +1,5 @@ /* $KAME: dccp_usrreq.c,v 1.67 2005/11/03 16:05:04 nishida Exp $ */ -/* $NetBSD: dccp_usrreq.c,v 1.4 2015/04/26 21:40:49 rtr Exp $ */ +/* $NetBSD: dccp_usrreq.c,v 1.5 2015/04/27 02:59:44 ozaki-r Exp $ */ /* * Copyright (c) 2003 Joacim Häggmark, Magnus Erixzon, Nils-Erik Mattsson @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.4 2015/04/26 21:40:49 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.5 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" #include "opt_dccp.h" @@ -91,7 +91,6 @@ __KERNEL_RCSID(0, "$NetBSD: dccp_usrreq. #include <sys/queue.h> #include <net/if.h> -#include <net/route.h> #include <netinet/in.h> #include <netinet/in_systm.h> @@ -2308,9 +2307,6 @@ dccp_newdccpcb(int family, void *aux) struct inpcb *inp; struct in6pcb *in6p; struct dccpcb *dp; -#ifdef INET6 - struct rtentry *rt; -#endif DCCP_DEBUG((LOG_INFO, "Creating a new dccpcb!\n")); @@ -2362,8 +2358,7 @@ dccp_newdccpcb(int family, void *aux) case PF_INET6: in6p = (struct in6pcb *)aux; dp->d_in6pcb = in6p; - rt = rtcache_validate(&in6p->in6p_route); - in6p->in6p_ip6.ip6_hlim = in6_selecthlim(in6p, (rt != NULL) ? rt->rt_ifp : NULL); + in6p->in6p_ip6.ip6_hlim = in6_selecthlim_rt(in6p); in6p->in6p_ppcb = dp; break; } Index: src/sys/netinet/tcp_input.c diff -u src/sys/netinet/tcp_input.c:1.337 src/sys/netinet/tcp_input.c:1.338 --- src/sys/netinet/tcp_input.c:1.337 Sat Mar 14 02:08:16 2015 +++ src/sys/netinet/tcp_input.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp_input.c,v 1.337 2015/03/14 02:08:16 rtr Exp $ */ +/* $NetBSD: tcp_input.c,v 1.338 2015/04/27 02:59:44 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.337 2015/03/14 02:08:16 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.338 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -174,7 +174,6 @@ __KERNEL_RCSID(0, "$NetBSD: tcp_input.c, #include <sys/cprng.h> #include <net/if.h> -#include <net/route.h> #include <net/if_types.h> #include <netinet/in.h> @@ -4797,8 +4796,7 @@ syn_cache_respond(struct syn_cache *sc, #ifdef INET6 case AF_INET6: ip6->ip6_hlim = in6_selecthlim(NULL, - (rt = rtcache_validate(ro)) != NULL ? rt->rt_ifp - : NULL); + (rt = rtcache_validate(ro)) != NULL ? rt->rt_ifp : NULL); error = ip6_output(m, NULL /*XXX*/, ro, 0, NULL, so, NULL); break; Index: src/sys/netinet/tcp_output.c diff -u src/sys/netinet/tcp_output.c:1.180 src/sys/netinet/tcp_output.c:1.181 --- src/sys/netinet/tcp_output.c:1.180 Sat Feb 14 12:57:53 2015 +++ src/sys/netinet/tcp_output.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp_output.c,v 1.180 2015/02/14 12:57:53 he Exp $ */ +/* $NetBSD: tcp_output.c,v 1.181 2015/04/27 02:59:44 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -135,7 +135,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.180 2015/02/14 12:57:53 he Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.181 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -1579,9 +1579,7 @@ timer: * setsockopt. Also, desired default hop limit might * be changed via Neighbor Discovery. */ - ip6->ip6_hlim = in6_selecthlim(tp->t_in6pcb, - (rt = rtcache_validate(ro)) != NULL ? rt->rt_ifp - : NULL); + ip6->ip6_hlim = in6_selecthlim_rt(tp->t_in6pcb); } ip6->ip6_flow |= htonl(ecn_tos << 20); /* ip6->ip6_flow = ??? (from template) */ Index: src/sys/netinet/tcp_subr.c diff -u src/sys/netinet/tcp_subr.c:1.259 src/sys/netinet/tcp_subr.c:1.260 --- src/sys/netinet/tcp_subr.c:1.259 Mon Apr 13 15:51:00 2015 +++ src/sys/netinet/tcp_subr.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp_subr.c,v 1.259 2015/04/13 15:51:00 riastradh Exp $ */ +/* $NetBSD: tcp_subr.c,v 1.260 2015/04/27 02:59:44 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tcp_subr.c,v 1.259 2015/04/13 15:51:00 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcp_subr.c,v 1.260 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -637,9 +637,6 @@ int tcp_respond(struct tcpcb *tp, struct mbuf *mtemplate, struct mbuf *m, struct tcphdr *th0, tcp_seq ack, tcp_seq seq, int flags) { -#ifdef INET6 - struct rtentry *rt; -#endif struct route *ro; int error, tlen, win = 0; int hlen; @@ -878,13 +875,9 @@ tcp_respond(struct tcpcb *tp, struct mbu th->th_sum = in6_cksum(m, IPPROTO_TCP, sizeof(struct ip6_hdr), tlen); ip6->ip6_plen = htons(tlen); - if (tp && tp->t_in6pcb) { - struct ifnet *oifp; - ro = &tp->t_in6pcb->in6p_route; - oifp = (rt = rtcache_validate(ro)) != NULL ? rt->rt_ifp - : NULL; - ip6->ip6_hlim = in6_selecthlim(tp->t_in6pcb, oifp); - } else + if (tp && tp->t_in6pcb) + ip6->ip6_hlim = in6_selecthlim_rt(tp->t_in6pcb); + else ip6->ip6_hlim = ip6_defhlim; ip6->ip6_flow &= ~IPV6_FLOWINFO_MASK; if (ip6_auto_flowlabel) { @@ -1035,9 +1028,6 @@ tcp_tcpcb_template(void) struct tcpcb * tcp_newtcpcb(int family, void *aux) { -#ifdef INET6 - struct rtentry *rt; -#endif struct tcpcb *tp; int i; @@ -1076,10 +1066,7 @@ tcp_newtcpcb(int family, void *aux) { struct in6pcb *in6p = (struct in6pcb *)aux; - in6p->in6p_ip6.ip6_hlim = in6_selecthlim(in6p, - (rt = rtcache_validate(&in6p->in6p_route)) != NULL - ? rt->rt_ifp - : NULL); + in6p->in6p_ip6.ip6_hlim = in6_selecthlim_rt(in6p); in6p->in6p_ppcb = (void *)tp; tp->t_in6pcb = in6p; Index: src/sys/netinet6/in6_pcb.c diff -u src/sys/netinet6/in6_pcb.c:1.137 src/sys/netinet6/in6_pcb.c:1.138 --- src/sys/netinet6/in6_pcb.c:1.137 Sun Apr 26 16:45:50 2015 +++ src/sys/netinet6/in6_pcb.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_pcb.c,v 1.137 2015/04/26 16:45:50 rtr Exp $ */ +/* $NetBSD: in6_pcb.c,v 1.138 2015/04/27 02:59:44 ozaki-r Exp $ */ /* $KAME: in6_pcb.c,v 1.84 2001/02/08 18:02:08 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.137 2015/04/26 16:45:50 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.138 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -426,7 +426,6 @@ in6_pcbbind(void *v, struct sockaddr_in6 int in6_pcbconnect(void *v, struct mbuf *nam, struct lwp *l) { - struct rtentry *rt; struct in6pcb *in6p = v; struct in6_addr *in6a = NULL; struct sockaddr_in6 *sin6 = mtod(nam, struct sockaddr_in6 *); @@ -526,10 +525,11 @@ in6_pcbconnect(void *v, struct mbuf *nam return (error); } } - if (ifp == NULL && (rt = rtcache_validate(&in6p->in6p_route)) != NULL) - ifp = rt->rt_ifp; - in6p->in6p_ip6.ip6_hlim = (u_int8_t)in6_selecthlim(in6p, ifp); + if (ifp != NULL) + in6p->in6p_ip6.ip6_hlim = (u_int8_t)in6_selecthlim(in6p, ifp); + else + in6p->in6p_ip6.ip6_hlim = (u_int8_t)in6_selecthlim_rt(in6p); if (in6_pcblookup_connect(in6p->in6p_table, &sin6->sin6_addr, sin6->sin6_port, Index: src/sys/netinet6/in6_pcb.h diff -u src/sys/netinet6/in6_pcb.h:1.43 src/sys/netinet6/in6_pcb.h:1.44 --- src/sys/netinet6/in6_pcb.h:1.43 Fri Apr 24 22:32:37 2015 +++ src/sys/netinet6/in6_pcb.h Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_pcb.h,v 1.43 2015/04/24 22:32:37 rtr Exp $ */ +/* $NetBSD: in6_pcb.h,v 1.44 2015/04/27 02:59:44 ozaki-r Exp $ */ /* $KAME: in6_pcb.h,v 1.45 2001/02/09 05:59:46 itojun Exp $ */ /* @@ -174,6 +174,7 @@ void in6_setsockaddr(struct in6pcb *, st /* in in6_src.c */ int in6_selecthlim(struct in6pcb *, struct ifnet *); +int in6_selecthlim_rt(struct in6pcb *); int in6_pcbsetport(struct sockaddr_in6 *, struct in6pcb *, struct lwp *); extern struct rtentry * Index: src/sys/netinet6/in6_src.c diff -u src/sys/netinet6/in6_src.c:1.56 src/sys/netinet6/in6_src.c:1.57 --- src/sys/netinet6/in6_src.c:1.56 Tue Jan 20 21:27:36 2015 +++ src/sys/netinet6/in6_src.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_src.c,v 1.56 2015/01/20 21:27:36 roy Exp $ */ +/* $NetBSD: in6_src.c,v 1.57 2015/04/27 02:59:44 ozaki-r Exp $ */ /* $KAME: in6_src.c,v 1.159 2005/10/19 01:40:32 t-momose Exp $ */ /* @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.56 2015/01/20 21:27:36 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.57 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" @@ -788,6 +788,21 @@ in6_selecthlim(struct in6pcb *in6p, stru return (ip6_defhlim); } +int +in6_selecthlim_rt(struct in6pcb *in6p) +{ + struct rtentry *rt; + + if (in6p == NULL) + return in6_selecthlim(in6p, NULL); + + rt = rtcache_validate(&in6p->in6p_route); + if (rt != NULL) + return in6_selecthlim(in6p, rt->rt_ifp); + else + return in6_selecthlim(in6p, NULL); +} + /* * Find an empty port and set it to the specified PCB. */ Index: src/sys/netinet6/udp6_output.c diff -u src/sys/netinet6/udp6_output.c:1.47 src/sys/netinet6/udp6_output.c:1.48 --- src/sys/netinet6/udp6_output.c:1.47 Fri Dec 5 18:45:37 2014 +++ src/sys/netinet6/udp6_output.c Mon Apr 27 02:59:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: udp6_output.c,v 1.47 2014/12/05 18:45:37 seanb Exp $ */ +/* $NetBSD: udp6_output.c,v 1.48 2015/04/27 02:59:44 ozaki-r Exp $ */ /* $KAME: udp6_output.c,v 1.43 2001/10/15 09:19:52 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: udp6_output.c,v 1.47 2014/12/05 18:45:37 seanb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udp6_output.c,v 1.48 2015/04/27 02:59:44 ozaki-r Exp $"); #include "opt_inet.h" @@ -80,7 +80,6 @@ __KERNEL_RCSID(0, "$NetBSD: udp6_output. #include <sys/domain.h> #include <net/if.h> -#include <net/route.h> #include <net/if_types.h> #include <netinet/in.h> @@ -115,7 +114,6 @@ udp6_output(struct in6pcb * const in6p, struct mbuf * const addr6, struct mbuf * const control, struct lwp * const l) { - struct rtentry *rt; u_int32_t ulen = m->m_pkthdr.len; u_int32_t plen = sizeof(struct udphdr) + ulen; struct ip6_hdr *ip6; @@ -358,9 +356,7 @@ udp6_output(struct in6pcb * const in6p, ip6->ip6_plen = htons((u_int16_t)plen); #endif ip6->ip6_nxt = IPPROTO_UDP; - ip6->ip6_hlim = in6_selecthlim(in6p, - (rt = rtcache_validate(&in6p->in6p_route)) != NULL - ? rt->rt_ifp : NULL); + ip6->ip6_hlim = in6_selecthlim_rt(in6p); ip6->ip6_src = *laddr; ip6->ip6_dst = *faddr;