/* The skb has to be unshared, we'll end up calling ipxitf_send, that'll modify the packet  */
int ipxrtr_route_skb(struct sk_buff *skb)
/* The skb has to be unshared, we'll end up calling ipxitf_send, that'll modify the packet  */
int ipxrtr_route_skb(struct sk_buff *skb)
{
	struct ipxhdr *ipx = ipx_hdr(skb);
	struct ipx_route *r = ipxrtr_lookup(IPX_SKB_CB(skb)->ipx_dest_net);
	if (!r) {
		kfree_skb(skb);
		return 0;
	}
	ipxitf_hold(r->ir_intrfc);
	ipxitf_send(r->ir_intrfc, skb, r->ir_routed ?
			r->ir_router_node : ipx->ipx_dest.node);
	ipxitf_put(r->ir_intrfc);
	ipxrtr_put(r);
	return 0;
}