patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
82 lines
2.3 KiB
Diff
82 lines
2.3 KiB
Diff
Index: sys/netinet/ip_icmp.c
|
|
diff -u sys/netinet/ip_icmp.c:1.39.2.14 sys/netinet/ip_icmp.c:1.39.2.14.2.1
|
|
--- sys/netinet/ip_icmp.c:1.39.2.14 Mon Jan 14 01:54:35 2002
|
|
+++ sys/netinet/ip_icmp.c Mon Apr 15 12:12:05 2002
|
|
@@ -615,6 +615,8 @@
|
|
}
|
|
t = ip->ip_dst;
|
|
ip->ip_dst = ip->ip_src;
|
|
+ ro = &rt;
|
|
+ bzero(ro, sizeof(*ro));
|
|
/*
|
|
* If the incoming packet was addressed directly to us,
|
|
* use dst as the src for the reply. Otherwise (broadcast
|
|
@@ -635,8 +637,6 @@
|
|
goto match;
|
|
}
|
|
}
|
|
- ro = &rt;
|
|
- bzero(ro, sizeof(*ro));
|
|
ia = ip_rtaddr(ip->ip_dst, ro);
|
|
/* We need a route to do anything useful. */
|
|
if (ia == NULL) {
|
|
Index: sys/netinet/ip_mroute.c
|
|
diff -u sys/netinet/ip_mroute.c:1.56.2.3 sys/netinet/ip_mroute.c:1.56.2.3.2.1
|
|
--- sys/netinet/ip_mroute.c:1.56.2.3 Fri Dec 7 03:23:11 2001
|
|
+++ sys/netinet/ip_mroute.c Mon Apr 15 12:12:05 2002
|
|
@@ -1890,6 +1890,7 @@
|
|
{
|
|
struct ip_moptions imo;
|
|
int error;
|
|
+ static struct route ro;
|
|
int s = splnet();
|
|
|
|
if (vifp->v_flags & VIFF_TUNNEL) {
|
|
@@ -1908,7 +1909,7 @@
|
|
* should get rejected because they appear to come from
|
|
* the loopback interface, thus preventing looping.
|
|
*/
|
|
- error = ip_output(m, (struct mbuf *)0, NULL,
|
|
+ error = ip_output(m, (struct mbuf *)0, &ro,
|
|
IP_FORWARDING, &imo);
|
|
|
|
if (mrtdebug & DEBUG_XMIT)
|
|
Index: sys/netinet/ip_output.c
|
|
diff -u sys/netinet/ip_output.c:1.99.2.24 sys/netinet/ip_output.c:1.99.2.24.2.1
|
|
--- sys/netinet/ip_output.c:1.99.2.24 Fri Dec 28 04:08:33 2001
|
|
+++ sys/netinet/ip_output.c Mon Apr 15 12:12:05 2002
|
|
@@ -124,11 +124,11 @@
|
|
struct mbuf *m = m0;
|
|
int hlen = sizeof (struct ip);
|
|
int len, off, error = 0;
|
|
- struct route iproute;
|
|
struct sockaddr_in *dst;
|
|
struct in_ifaddr *ia = NULL;
|
|
int isbroadcast, sw_csum;
|
|
#ifdef IPSEC
|
|
+ struct route iproute;
|
|
struct socket *so = NULL;
|
|
struct secpolicy *sp = NULL;
|
|
#endif
|
|
@@ -185,6 +185,9 @@
|
|
#ifdef DIAGNOSTIC
|
|
if ((m->m_flags & M_PKTHDR) == 0)
|
|
panic("ip_output no HDR");
|
|
+ if (!ro)
|
|
+ panic("ip_output no route, proto = %d",
|
|
+ mtod(m, struct ip *)->ip_p);
|
|
#endif
|
|
if (opt) {
|
|
m = ip_insertoptions(m, opt, &len);
|
|
@@ -207,11 +210,6 @@
|
|
hlen = IP_VHL_HL(ip->ip_vhl) << 2;
|
|
}
|
|
|
|
- /* Route packet. */
|
|
- if (ro == NULL) {
|
|
- ro = &iproute;
|
|
- bzero(ro, sizeof(*ro));
|
|
- }
|
|
dst = (struct sockaddr_in *)&ro->ro_dst;
|
|
/*
|
|
* If there is a cached route,
|