1 diff -ur v2.5.50/linux/net/ipv4/arp.c linux/net/ipv4/arp.c
2 --- v2.5.50/linux/net/ipv4/arp.c Tue Nov 19 00:13:40 2002
3 +++ linux/net/ipv4/arp.c Sun Dec 1 18:19:47 2002
6 static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
11 struct net_device *dev = neigh->dev;
12 u32 target = *(u32*)neigh->primary_key;
13 int probes = atomic_read(&neigh->probes);
14 + struct flowi fl = { .nl_u = { .ip4_u = { .daddr = target } },
15 + .oif = dev->ifindex };
17 - if (skb && inet_addr_type(skb->nh.iph->saddr) == RTN_LOCAL)
18 - saddr = skb->nh.iph->saddr;
20 - saddr = inet_select_addr(dev, target, RT_SCOPE_LINK);
21 + if (ip_route_output_key(&rt, &fl) < 0)
28 if ((probes -= neigh->parms->ucast_probes) < 0) {
29 if (!(neigh->nud_state&NUD_VALID))