Apply by doing
cd /sys
patch < sourceroute.patch
Index: netinet/ip_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ip_input.c 1998/02/01 21:46:02 1.28
+++ ip_input.c 1998/02/03 21:11:08 1.29
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_input.c,v 1.26 1997/08/09 23:36:29 millert Exp $ */
+/* $OpenBSD: ip_input.c,v 1.29 1998/02/03 21:11:08 deraadt Exp $ */
/* $NetBSD: ip_input.c,v 1.30 1996/03/16 23:53:58 christos Exp $ */
/*
@@ -744,6 +744,17 @@
*/
case IPOPT_LSRR:
case IPOPT_SSRR:
+ if (!ip_dosourceroute) {
+ char buf[4*sizeof "123"];
+
+ strcpy(buf, inet_ntoa(ip->ip_dst));
+ log(LOG_WARNING,
+ "attempted source route from %s to %s\n",
+ inet_ntoa(ip->ip_src), buf);
+ type = ICMP_UNREACH;
+ code = ICMP_UNREACH_SRCFAIL;
+ goto bad;
+ }
if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {
code = &cp[IPOPT_OFFSET] - (u_char *)ip;
goto bad;
@@ -771,18 +782,6 @@
break;
}
- if (!ip_dosourceroute) {
- char buf[4*sizeof "123"];
-
- strcpy(buf, inet_ntoa(ip->ip_dst));
- log(LOG_WARNING,
- "attempted source route from %s to %s\n",
- inet_ntoa(ip->ip_src), buf);
- type = ICMP_UNREACH;
- code = ICMP_UNREACH_SRCFAIL;
- goto bad;
- }
-
/*
* locate outgoing interface
*/
@@ -889,7 +888,7 @@
ipt->ipt_ptr += sizeof(n_time);
}
}
- if (forward) {
+ if (forward && ipforwarding) {
ip_forward(m, 1);
return (1);
}