View | Details | Raw Unified | Return to bug 225792 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/netinet/ip_fastfwd.c (-4 / +12 lines)
Lines 108-114 __FBSDID("$FreeBSD$"); Link Here
108
#include <machine/in_cksum.h>
108
#include <machine/in_cksum.h>
109
109
110
static struct sockaddr_in *
110
static struct sockaddr_in *
111
ip_findroute(struct route *ro, struct in_addr dest, struct mbuf *m)
111
ip_findroute(struct route *ro, struct ip *ip, struct in_addr dest,
112
               struct mbuf *m)
112
{
113
{
113
       struct sockaddr_in *dst;
114
       struct sockaddr_in *dst;
114
       struct rtentry *rt;
115
       struct rtentry *rt;
Lines 121-127 ip_findroute(struct route *ro, struct in_addr dest, struct mbuf *m) Link Here
121
       dst->sin_family = AF_INET;
122
       dst->sin_family = AF_INET;
122
       dst->sin_len = sizeof(*dst);
123
       dst->sin_len = sizeof(*dst);
123
       dst->sin_addr.s_addr = dest.s_addr;
124
       dst->sin_addr.s_addr = dest.s_addr;
124
       in_rtalloc_ign(ro, 0, M_GETFIB(m));
125
#ifdef RADIX_MPATH
126
        rtalloc_mpath_fib(&ro,
127
            ntohl(ip->ip_src.s_addr ^ ip->ip_dst.s_addr),
128
            M_GETFIB(m));
129
#else
130
        in_rtalloc_ign(&ro, 0, M_GETFIB(m));
131
#endif
132
125
133
126
       /*
134
       /*
127
        * Route there and interface still up?
135
        * Route there and interface still up?
Lines 305-311 passin: Link Here
305
       /*
313
       /*
306
        * Find route to destination.
314
        * Find route to destination.
307
        */
315
        */
308
       if ((dst = ip_findroute(&ro, dest, m)) == NULL)
316
       if ((dst = ip_findroute(&ro, ip, dest, m)) == NULL)
309
               return NULL;    /* icmp unreach already sent */
317
               return NULL;    /* icmp unreach already sent */
310
       ifp = ro.ro_rt->rt_ifp;
318
       ifp = ro.ro_rt->rt_ifp;
311
319
Lines 366-372 forwardlocal: Link Here
366
                       m->m_flags &= ~M_IP_NEXTHOP;
374
                       m->m_flags &= ~M_IP_NEXTHOP;
367
               }
375
               }
368
               RTFREE(ro.ro_rt);
376
               RTFREE(ro.ro_rt);
369
               if ((dst = ip_findroute(&ro, dest, m)) == NULL)
377
               if ((dst = ip_findroute(&ro, ip, dest, m)) == NULL)
370
                       return NULL;    /* icmp unreach already sent */
378
                       return NULL;    /* icmp unreach already sent */
371
               ifp = ro.ro_rt->rt_ifp;
379
               ifp = ro.ro_rt->rt_ifp;
372
       }
380
       }

Return to bug 225792