Syed, + skb->nh.iph->saddr = [alter the saddress to this m/c] + skb->nh.iph->raddr = [ ,, router address] Are you sure, this the next hop router? + ** ip_route_output(&rt, skb->nh.iph->raddr, + skb->nh.iph->saddr, 1, 0 ) Is THIS failing instead of arp_find? If that is not the case, what does __neighbour_lookup and arp_set_predifined return? Sharad.