Fixes fastroute-related panic's (pr 1541).

Apply by doing:
       cd /usr/src
       patch -p0 < 010_fastroute.patch
And then rebuild your kernel.

Index: sys/netinet/ip_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.60
diff -u -r1.60 ip_input.c
--- ip_input.c  2000/10/13 02:01:10     1.60
+++ ip_input.c  2000/12/11 04:58:20
@@ -420,6 +420,13 @@
#endif /* IPSEC */
                       return;
               }
+               if (m0 == 0) {  /* in case of 'fastroute' */
+#ifdef IPSEC
+                       if (tdbi)
+                               free (tdbi, M_TEMP);
+#endif /* IPSEC */
+                       return;
+               }
               ip = mtod(m = m0, struct ip *);
       }
#endif
Index: sys/netinet/ip_output.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_output.c,v
retrieving revision 1.83
diff -u -r1.83 ip_output.c
--- ip_output.c 2000/10/25 22:40:40     1.83
+++ ip_output.c 2000/12/11 04:58:29
@@ -557,16 +557,21 @@
                       error = EHOSTUNREACH;
                       splx(s);
                       goto done;
-                   } else {
-                       ip = mtod(m = m0, struct ip *);
-                       hlen = ip->ip_hl << 2;
                   }
+                   if (m0 == 0) { /* in case of 'fastroute' */
+                       error = 0;
+                       splx(s);
+                       goto done;
+                   }
+                   ip = mtod(m = m0, struct ip *);
+                   hlen = ip->ip_hl << 2;
               }
#endif /* IPFILTER */

               tdb = gettdb(sspi, &sdst, sproto);
               if (tdb == NULL) {
                       error = EHOSTUNREACH;
+                       splx(s);
                       m_freem(m);
                       goto done;
               }
@@ -597,8 +602,12 @@
               if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, 1, &m0)) {
                       error = EHOSTUNREACH;
                       goto done;
-               } else
-                       ip = mtod(m = m0, struct ip *);
+               }
+               if (m0 == 0) { /* in case of 'fastroute' */
+                       error = 0;
+                       goto done;
+               }
+               ip = mtod(m = m0, struct ip *);
       }
#endif
       /*