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); }