Use 'sc_route{4,6}' directly instead of casting to the almost extinct
'struct route *'. This help fixing remaining use of 'struct route'.
ok?
Index: netinet/tcp_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_input.c,v
retrieving revision 1.325
diff -u -p -r1.325 tcp_input.c
--- netinet/tcp_input.c 20 Jul 2016 09:15:28 -0000 1.325
+++ netinet/tcp_input.c 29 Aug 2016 11:54:55 -0000
@@ -4148,7 +4148,6 @@ syn_cache_add(struct sockaddr *src, stru
int
syn_cache_respond(struct syn_cache *sc, struct mbuf *m)
{
- struct route *ro;
u_int8_t *optp;
int optlen, error;
u_int16_t tlen;
@@ -4163,12 +4162,10 @@ syn_cache_respond(struct syn_cache *sc,
switch (sc->sc_src.sa.sa_family) {
case AF_INET:
hlen = sizeof(struct ip);
- ro = &sc->sc_route4;
break;
#ifdef INET6
case AF_INET6:
hlen = sizeof(struct ip6_hdr);
- ro = (struct route *)&sc->sc_route6;
break;
#endif
default:
@@ -4379,14 +4376,14 @@ syn_cache_respond(struct syn_cache *sc,
switch (sc->sc_src.sa.sa_family) {
case AF_INET:
- error = ip_output(m, sc->sc_ipopts, ro,
+ error = ip_output(m, sc->sc_ipopts, &sc->sc_route4,
(ip_mtudisc ? IP_MTUDISC : 0), NULL, inp, 0);
break;
#ifdef INET6
case AF_INET6:
ip6->ip6_hlim = in6_selecthlim(inp);
- error = ip6_output(m, NULL /*XXX*/, (struct route_in6 *)ro, 0,
+ error = ip6_output(m, NULL /*XXX*/, &sc->sc_route6, 0,
NULL, NULL);
break;
#endif
Index: netinet/tcp_subr.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_subr.c,v
retrieving revision 1.151
diff -u -p -r1.151 tcp_subr.c
--- netinet/tcp_subr.c 7 Mar 2016 18:44:00 -0000 1.151
+++ netinet/tcp_subr.c 29 Aug 2016 11:57:12 -0000
@@ -296,7 +296,6 @@ tcp_respond(struct tcpcb *tp, caddr_t te
int tlen;
int win = 0;
struct mbuf *m = NULL;
- struct route *ro = NULL;
struct tcphdr *th;
struct ip *ip;
#ifdef INET6
@@ -311,12 +310,6 @@ tcp_respond(struct tcpcb *tp, caddr_t te
* socket/tp/pcb (tp->pf is 0), we lose.
*/
af = tp->pf;
-
- /*
- * The route/route6 distinction is meaningless
- * unless you're allocating space or passing parameters.
- */
- ro = &tp->t_inpcb->inp_route;
} else
af = (((struct ip *)template)->ip_v == 6) ? AF_INET6 : AF_INET;
@@ -404,7 +397,8 @@ tcp_respond(struct tcpcb *tp, caddr_t te
ip6->ip6_plen = tlen - sizeof(struct ip6_hdr);
ip6->ip6_plen = htons(ip6->ip6_plen);
ip6_output(m, tp ? tp->t_inpcb->inp_outputopts6 : NULL,
- (struct route_in6 *)ro, 0, NULL,
+ tp ? &tp->t_inpcb->inp_route6 : NULL,
+ 0, NULL,
tp ? tp->t_inpcb : NULL);
break;
#endif /* INET6 */
@@ -412,8 +406,11 @@ tcp_respond(struct tcpcb *tp, caddr_t te
ip->ip_len = htons(tlen);
ip->ip_ttl = ip_defttl;
ip->ip_tos = 0;
- ip_output(m, NULL, ro, ip_mtudisc ? IP_MTUDISC : 0,
- NULL, tp ? tp->t_inpcb : NULL, 0);
+ ip_output(m, NULL,
+ tp ? &tp->t_inpcb->inp_route : NULL,
+ ip_mtudisc ? IP_MTUDISC : 0, NULL,
+ tp ? tp->t_inpcb : NULL, 0);
+ break;
}
}