summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2014-04-07 10:04:17 +0000
committermpi <mpi@openbsd.org>2014-04-07 10:04:17 +0000
commit8cedb4b1d113ed97d5c280c32c29f356047eca14 (patch)
treecc14029d3461acfb7a376bef163269057e13e5d8
parentUpdate termtypes.master to upstream terminfo-20140329.src. (diff)
downloadwireguard-openbsd-8cedb4b1d113ed97d5c280c32c29f356047eca14.tar.xz
wireguard-openbsd-8cedb4b1d113ed97d5c280c32c29f356047eca14.zip
Retire kernel support for SO_DONTROUTE, this time without breaking
localhost connections. The plan is to always use the routing table for addresses and routes resolutions, so there is no future for an option that wants to bypass it. This option has never been implemented for IPv6 anyway, so let's just remove the IPv4 bits that you weren't aware of. Tested a least by lteo@, guenther@ and chrisz@, ok mikeb@, benno@
-rw-r--r--lib/libc/sys/getsockopt.213
-rw-r--r--lib/libc/sys/send.28
-rw-r--r--sys/compat/linux/linux_socket.c4
-rw-r--r--sys/kern/uipc_socket.c26
-rw-r--r--sys/netinet/in_pcb.c29
-rw-r--r--sys/netinet/ip_divert.c8
-rw-r--r--sys/netinet/ip_output.c40
-rw-r--r--sys/netinet/ip_var.h3
-rw-r--r--sys/netinet/raw_ip.c4
-rw-r--r--sys/netinet/tcp_output.c9
-rw-r--r--sys/netinet/udp_usrreq.c6
-rw-r--r--sys/netinet6/in6_src.c21
-rw-r--r--sys/netinet6/ip6_divert.c5
13 files changed, 51 insertions, 125 deletions
diff --git a/lib/libc/sys/getsockopt.2 b/lib/libc/sys/getsockopt.2
index 556ae778d73..5cb646f5479 100644
--- a/lib/libc/sys/getsockopt.2
+++ b/lib/libc/sys/getsockopt.2
@@ -1,4 +1,4 @@
-.\" $OpenBSD: getsockopt.2,v 1.45 2014/03/28 08:33:51 sthen Exp $
+.\" $OpenBSD: getsockopt.2,v 1.46 2014/04/07 10:04:17 mpi Exp $
.\" $NetBSD: getsockopt.2,v 1.7 1995/02/27 12:33:29 cgd Exp $
.\"
.\" Copyright (c) 1983, 1991, 1993
@@ -30,7 +30,7 @@
.\"
.\" @(#)getsockopt.2 8.3 (Berkeley) 4/19/94
.\"
-.Dd $Mdocdate: March 28 2014 $
+.Dd $Mdocdate: April 7 2014 $
.Dt GETSOCKOPT 2
.Os
.Sh NAME
@@ -142,7 +142,7 @@ enables duplicate address and port bindings
.It Dv SO_KEEPALIVE
enables keep connections alive
.It Dv SO_DONTROUTE
-enables routing bypass for outgoing messages
+enables routing bypass; not supported
.It Dv SO_LINGER
linger on close if data present
.It Dv SO_BROADCAST
@@ -195,11 +195,6 @@ Should the connected party fail to respond to these messages, the connection
is considered broken and processes using the socket are notified via a
.Dv SIGPIPE
signal when attempting to send data.
-.Dv SO_DONTROUTE
-indicates that outgoing messages should
-bypass the standard routing facilities.
-Instead, messages are directed to the appropriate network interface
-according to the network portion of the destination address.
.Pp
.Dv SO_LINGER
controls the action taken when unsent messages
@@ -471,6 +466,8 @@ The argument
is a file, not a socket.
.It Bq Er ENOPROTOOPT
The option is unknown at the level indicated.
+.It Bq Er EOPNOTSUPP
+The option is unsupported.
.It Bq Er EFAULT
The address pointed to by
.Fa optval
diff --git a/lib/libc/sys/send.2 b/lib/libc/sys/send.2
index 53c30094a68..93d2436bfe6 100644
--- a/lib/libc/sys/send.2
+++ b/lib/libc/sys/send.2
@@ -1,4 +1,4 @@
-.\" $OpenBSD: send.2,v 1.29 2014/03/28 08:33:51 sthen Exp $
+.\" $OpenBSD: send.2,v 1.30 2014/04/07 10:04:17 mpi Exp $
.\" $NetBSD: send.2,v 1.6 1996/01/15 01:17:18 thorpej Exp $
.\"
.\" Copyright (c) 1983, 1991, 1993
@@ -30,7 +30,7 @@
.\"
.\" @(#)send.2 8.2 (Berkeley) 2/21/94
.\"
-.Dd $Mdocdate: March 28 2014 $
+.Dd $Mdocdate: April 7 2014 $
.Dt SEND 2
.Os
.Sh NAME
@@ -99,7 +99,7 @@ parameter may include one or more of the following:
.It Dv MSG_OOB
process out-of-band data
.It Dv MSG_DONTROUTE
-bypass routing, use direct interface
+bypass routing tables, silently ignored
.It Dv MSG_NOSIGNAL
don't send
.Dv SIGPIPE
@@ -116,8 +116,6 @@ data on sockets that support this notion (e.g.,
the underlying protocol must also support
.Dq out-of-band
data.
-.Dv MSG_DONTROUTE
-is usually used only by diagnostic or routing programs.
.Dv MSG_NOSIGNAL
is used to request not to send the
.Dv SIGPIPE
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index be4a6dd24ef..7f730e5c55e 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: linux_socket.c,v 1.51 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: linux_socket.c,v 1.52 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: linux_socket.c,v 1.14 1996/04/05 00:01:50 christos Exp $ */
/*
@@ -215,8 +215,6 @@ linux_to_bsd_msg_flags(int lflags)
flags |= MSG_OOB;
if (lflags & LINUX_MSG_PEEK)
flags |= MSG_PEEK;
- if (lflags & LINUX_MSG_DONTROUTE)
- flags |= MSG_DONTROUTE;
if (lflags & LINUX_MSG_DONTWAIT)
flags |= MSG_DONTWAIT;
if (lflags & LINUX_MSG_WAITALL)
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 64239b2d8a7..f51c7c92780 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_socket.c,v 1.126 2014/03/30 21:54:48 guenther Exp $ */
+/* $OpenBSD: uipc_socket.c,v 1.127 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
/*
@@ -385,7 +385,7 @@ sosend(struct socket *so, struct mbuf *addr, struct uio *uio, struct mbuf *top,
struct mbuf *m;
long space, len, mlen, clen = 0;
quad_t resid;
- int error, s, dontroute;
+ int error, s;
int atomic = sosendallatonce(so) || top;
if (uio)
@@ -405,9 +405,6 @@ sosend(struct socket *so, struct mbuf *addr, struct uio *uio, struct mbuf *top,
error = EINVAL;
goto out;
}
- dontroute =
- (flags & MSG_DONTROUTE) && (so->so_options & SO_DONTROUTE) == 0 &&
- (so->so_proto->pr_flags & PR_ATOMIC);
if (uio && uio->uio_procp)
uio->uio_procp->p_ru.ru_msgsnd++;
if (control) {
@@ -522,8 +519,6 @@ nopages:
break;
}
} while (space > 0 && atomic);
- if (dontroute)
- so->so_options |= SO_DONTROUTE;
s = splsoftnet(); /* XXX */
if (resid <= 0)
so->so_state &= ~SS_ISSENDING;
@@ -531,8 +526,6 @@ nopages:
(flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND,
top, addr, control, curproc);
splx(s);
- if (dontroute)
- so->so_options &= ~SO_DONTROUTE;
clen = 0;
control = 0;
top = 0;
@@ -1483,7 +1476,6 @@ sosetopt(struct socket *so, int level, int optname, struct mbuf *m0)
case SO_BINDANY:
case SO_DEBUG:
case SO_KEEPALIVE:
- case SO_DONTROUTE:
case SO_USELOOPBACK:
case SO_BROADCAST:
case SO_REUSEADDR:
@@ -1500,6 +1492,15 @@ sosetopt(struct socket *so, int level, int optname, struct mbuf *m0)
so->so_options &= ~optname;
break;
+ case SO_DONTROUTE:
+ if (m == NULL || m->m_len < sizeof (int)) {
+ error = EINVAL;
+ goto bad;
+ }
+ if (*mtod(m, int *))
+ error = EOPNOTSUPP;
+ break;
+
case SO_SNDBUF:
case SO_RCVBUF:
case SO_SNDLOWAT:
@@ -1658,7 +1659,6 @@ sogetopt(struct socket *so, int level, int optname, struct mbuf **mp)
case SO_BINDANY:
case SO_USELOOPBACK:
- case SO_DONTROUTE:
case SO_DEBUG:
case SO_KEEPALIVE:
case SO_REUSEADDR:
@@ -1669,6 +1669,10 @@ sogetopt(struct socket *so, int level, int optname, struct mbuf **mp)
*mtod(m, int *) = so->so_options & optname;
break;
+ case SO_DONTROUTE:
+ *mtod(m, int *) = 0;
+ break;
+
case SO_TYPE:
*mtod(m, int *) = so->so_type;
break;
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index 4784d8248b8..a17d6a24030 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in_pcb.c,v 1.151 2014/04/06 17:13:23 chrisz Exp $ */
+/* $OpenBSD: in_pcb.c,v 1.152 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: in_pcb.c,v 1.25 1996/02/13 23:41:53 christos Exp $ */
/*
@@ -790,14 +790,12 @@ in_selectsrc(struct sockaddr_in *sin, struct route *ro, int soopts,
* If route is known or can be allocated now,
* our src addr is taken from the i/f, else punt.
*/
- if (ro->ro_rt && (!(ro->ro_rt->rt_flags & RTF_UP) ||
- (satosin(&ro->ro_dst)->sin_addr.s_addr != sin->sin_addr.s_addr ||
- soopts & SO_DONTROUTE))) {
+ if (ro->ro_rt && ((ro->ro_rt->rt_flags & RTF_UP) == 0 ||
+ (satosin(&ro->ro_dst)->sin_addr.s_addr != sin->sin_addr.s_addr))) {
RTFREE(ro->ro_rt);
ro->ro_rt = NULL;
}
- if ((soopts & SO_DONTROUTE) == 0 && /*XXX*/
- (ro->ro_rt == NULL || ro->ro_rt->rt_ifp == NULL)) {
+ if ((ro->ro_rt == NULL || ro->ro_rt->rt_ifp == NULL)) {
/* No route yet, so try to acquire one */
ro->ro_dst.sa_family = AF_INET;
ro->ro_dst.sa_len = sizeof(struct sockaddr_in);
@@ -814,26 +812,15 @@ in_selectsrc(struct sockaddr_in *sin, struct route *ro, int soopts,
}
/*
* If we found a route, use the address
- * corresponding to the outgoing interface
- * unless it is the loopback (in case a route
- * to our address on another net goes to loopback).
+ * corresponding to the outgoing interface.
*/
- if (ro->ro_rt && ro->ro_rt->rt_ifp &&
- !(ro->ro_rt->rt_ifp->if_flags & IFF_LOOPBACK))
+ if (ro->ro_rt && ro->ro_rt->rt_ifp)
ia = ifatoia(ro->ro_rt->rt_ifa);
if (ia == 0) {
- u_int16_t fport = sin->sin_port;
-
- sin->sin_port = 0;
- ia = ifatoia(ifa_ifwithdstaddr(sintosa(sin), rtableid));
- if (ia == 0)
- ia = ifatoia(ifa_ifwithnet(sintosa(sin), rtableid));
- sin->sin_port = fport;
- if (ia == 0)
- ia = TAILQ_FIRST(&in_ifaddr);
+ ia = TAILQ_FIRST(&in_ifaddr);
if (ia == 0) {
*errorp = EADDRNOTAVAIL;
- return NULL;
+ return (NULL);
}
}
return (&ia->ia_addr);
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c
index 6ac2f0688e2..d29a925c6b7 100644
--- a/sys/netinet/ip_divert.c
+++ b/sys/netinet/ip_divert.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_divert.c,v 1.18 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: ip_divert.c,v 1.19 2014/04/07 10:04:17 mpi Exp $ */
/*
* Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -180,10 +180,8 @@ divert_output(struct mbuf *m, ...)
schednetisr(NETISR_IP);
splx(s);
} else {
- error = ip_output(m, (void *)NULL, &inp->inp_route,
- ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0)
- | IP_ALLOWBROADCAST | IP_RAWOUTPUT, (void *)NULL,
- (void *)NULL);
+ error = ip_output(m, NULL, &inp->inp_route,
+ IP_ALLOWBROADCAST | IP_RAWOUTPUT, NULL, NULL);
if (error == EACCES) /* translate pf(4) error for userland */
error = EHOSTUNREACH;
}
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 03a6a782028..3c5cb18912b 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_output.c,v 1.259 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: ip_output.c,v 1.260 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: ip_output.c,v 1.28 1996/02/13 23:43:07 christos Exp $ */
/*
@@ -194,23 +194,7 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro, int flags,
ro->ro_tableid = m->m_pkthdr.rdomain;
}
- /*
- * If routing to interface only, short-circuit routing lookup.
- */
- if (flags & IP_ROUTETOIF) {
- if ((ia = ifatoia(ifa_ifwithdstaddr(sintosa(dst),
- m->m_pkthdr.rdomain))) == 0 &&
- (ia = ifatoia(ifa_ifwithnet(sintosa(dst),
- m->m_pkthdr.rdomain))) == 0) {
- ipstat.ips_noroute++;
- error = ENETUNREACH;
- goto bad;
- }
-
- ifp = ia->ia_ifp;
- mtu = ifp->if_mtu;
- ip->ip_ttl = 1;
- } else if ((IN_MULTICAST(ip->ip_dst.s_addr) ||
+ if ((IN_MULTICAST(ip->ip_dst.s_addr) ||
(ip->ip_dst.s_addr == INADDR_BROADCAST)) &&
imo != NULL && imo->imo_multicast_ifp != NULL) {
ifp = imo->imo_multicast_ifp;
@@ -360,23 +344,7 @@ reroute:
ro->ro_tableid = m->m_pkthdr.rdomain;
}
- /*
- * If routing to interface only, short-circuit routing lookup.
- */
- if (flags & IP_ROUTETOIF) {
- if ((ia = ifatoia(ifa_ifwithdstaddr(sintosa(dst),
- m->m_pkthdr.rdomain))) == 0 &&
- (ia = ifatoia(ifa_ifwithnet(sintosa(dst),
- m->m_pkthdr.rdomain))) == 0) {
- ipstat.ips_noroute++;
- error = ENETUNREACH;
- goto bad;
- }
-
- ifp = ia->ia_ifp;
- mtu = ifp->if_mtu;
- ip->ip_ttl = 1;
- } else if ((IN_MULTICAST(ip->ip_dst.s_addr) ||
+ if ((IN_MULTICAST(ip->ip_dst.s_addr) ||
(ip->ip_dst.s_addr == INADDR_BROADCAST)) &&
imo != NULL && imo->imo_multicast_ifp != NULL) {
ifp = imo->imo_multicast_ifp;
@@ -752,7 +720,7 @@ sendit:
ipstat.ips_fragmented++;
done:
- if (ro == &iproute && (flags & IP_ROUTETOIF) == 0 && ro->ro_rt)
+ if (ro == &iproute && ro->ro_rt)
RTFREE(ro->ro_rt);
return (error);
bad:
diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h
index 0d90a82969c..518eaa9adea 100644
--- a/sys/netinet/ip_var.h
+++ b/sys/netinet/ip_var.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_var.h,v 1.54 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: ip_var.h,v 1.55 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: ip_var.h,v 1.16 1996/02/13 23:43:20 christos Exp $ */
/*
@@ -140,7 +140,6 @@ struct ipq {
/* flags passed to ip_output as last parameter */
#define IP_FORWARDING 0x1 /* most of ip header exists */
#define IP_RAWOUTPUT 0x2 /* raw ip header exists */
-#define IP_ROUTETOIF SO_DONTROUTE /* bypass routing tables */
#define IP_ALLOWBROADCAST SO_BROADCAST /* can send broadcast packets */
#define IP_MTUDISC 0x0800 /* pmtu discovery, set DF */
#define IP_ROUTETOETHER 0x1000 /* ether addresses given */
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 91d22a49987..3f796d5f29e 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: raw_ip.c,v 1.69 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: raw_ip.c,v 1.70 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: raw_ip.c,v 1.25 1996/02/18 18:58:33 christos Exp $ */
/*
@@ -218,7 +218,7 @@ rip_output(struct mbuf *m, ...)
va_end(ap);
inp = sotoinpcb(so);
- flags = (so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST;
+ flags = IP_ALLOWBROADCAST;
/*
* If the user handed us a complete IP packet, use it.
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 7eec9e2d4c6..caacc1d8233 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_output.c,v 1.103 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: tcp_output.c,v 1.104 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: tcp_output.c,v 1.16 1997/06/03 16:17:09 kml Exp $ */
/*
@@ -1076,9 +1076,7 @@ send:
}
error = ip_output(m, tp->t_inpcb->inp_options,
&tp->t_inpcb->inp_route,
- (ip_mtudisc ? IP_MTUDISC : 0) |
- (so->so_options & SO_DONTROUTE),
- (void *)NULL, tp->t_inpcb);
+ (ip_mtudisc ? IP_MTUDISC : 0), NULL, tp->t_inpcb);
break;
#endif /* INET */
#ifdef INET6
@@ -1099,8 +1097,7 @@ send:
}
error = ip6_output(m, tp->t_inpcb->inp_outputopts6,
&tp->t_inpcb->inp_route6,
- (so->so_options & SO_DONTROUTE), NULL, NULL,
- tp->t_inpcb);
+ 0, NULL, NULL, tp->t_inpcb);
break;
#endif /* INET6 */
}
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 0426ae0cf4c..070f9486380 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udp_usrreq.c,v 1.177 2014/04/06 17:40:36 chrisz Exp $ */
+/* $OpenBSD: udp_usrreq.c,v 1.178 2014/04/07 10:04:17 mpi Exp $ */
/* $NetBSD: udp_usrreq.c,v 1.28 1996/03/16 23:54:03 christos Exp $ */
/*
@@ -1095,8 +1095,8 @@ udp_output(struct mbuf *m, ...)
m->m_pkthdr.rdomain = inp->inp_rtableid;
error = ip_output(m, inp->inp_options, &inp->inp_route,
- (inp->inp_socket->so_options & (SO_DONTROUTE | SO_BROADCAST))
- |IP_IPSECFLOW, inp->inp_moptions, inp, ipsecflowinfo);
+ (inp->inp_socket->so_options & SO_BROADCAST) | IP_IPSECFLOW,
+ inp->inp_moptions, inp, ipsecflowinfo);
if (error == EACCES) /* translate pf(4) error for userland */
error = EHOSTUNREACH;
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c
index 127471aa920..7ca882e4ab2 100644
--- a/sys/netinet6/in6_src.c
+++ b/sys/netinet6/in6_src.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in6_src.c,v 1.40 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: in6_src.c,v 1.41 2014/04/07 10:04:17 mpi Exp $ */
/* $KAME: in6_src.c,v 1.36 2001/02/06 04:08:17 itojun Exp $ */
/*
@@ -286,25 +286,6 @@ in6_selectsrc(struct sockaddr_in6 *dstsock, struct ip6_pktopts *opts,
if (ia6 == 0) /* xxx scope error ?*/
ia6 = ifatoia6(ro->ro_rt->rt_ifa);
}
-#if 0
- /*
- * xxx The followings are necessary? (kazu)
- * I don't think so.
- * It's for SO_DONTROUTE option in IPv4.(jinmei)
- */
- if (ia6 == 0) {
- struct sockaddr_in6 sin6 = {sizeof(sin6), AF_INET6, 0};
-
- sin6->sin6_addr = *dst;
-
- ia6 = ifatoia6(ifa_ifwithdstaddr(sin6tosa(&sin6)));
- if (ia6 == 0)
- ia6 = ifatoia6(ifa_ifwithnet(sin6tosa(&sin6)));
- if (ia6 == 0)
- return (0);
- return (&ia6->ia_addr.sin6_addr);
- }
-#endif /* 0 */
if (ia6 == 0) {
*errorp = EHOSTUNREACH; /* no route */
return (0);
diff --git a/sys/netinet6/ip6_divert.c b/sys/netinet6/ip6_divert.c
index 46b555ae124..8d41b8485e4 100644
--- a/sys/netinet6/ip6_divert.c
+++ b/sys/netinet6/ip6_divert.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip6_divert.c,v 1.19 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: ip6_divert.c,v 1.20 2014/04/07 10:04:17 mpi Exp $ */
/*
* Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -180,8 +180,7 @@ divert6_output(struct mbuf *m, ...)
splx(s);
} else {
error = ip6_output(m, NULL, &inp->inp_route6,
- ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0)
- | IP_ALLOWBROADCAST | IP_RAWOUTPUT, NULL, NULL, NULL);
+ IP_ALLOWBROADCAST | IP_RAWOUTPUT, NULL, NULL, NULL);
}
div6stat.divs_opackets++;