/* dn_return_short - Return a short packet to its sender @skb: The packet to return  */
static int dn_return_short(struct sk_buff *skb)
/* dn_return_short - Return a short packet to its sender @skb: The packet to return  */
static int dn_return_short(struct sk_buff *skb)
{
	struct dn_skb_cb *cb;
	unsigned char *ptr;
	__le16 *src;
	__le16 *dst;
	skb_push(skb, skb->data - skb_network_header(skb));
	if ((skb = skb_unshare(skb, GFP_ATOMIC)) == NULL)
		return NET_RX_DROP;
	cb = DN_SKB_CB(skb);
	ptr = skb->data + 2;
	*ptr++ = (cb->rt_flags & ~DN_RT_F_RQR) | DN_RT_F_RTS;
	dst = (__le16 *)ptr;
	ptr += 2;
	src = (__le16 *)ptr;
	ptr += 2;
	*ptr = 0;
	swap(*src, *dst);
	skb->pkt_type = PACKET_OUTGOING;
	dn_rt_finish_output(skb, NULL, NULL);
	return NET_RX_SUCCESS;
}