/* add data to the start of a buffer  */
void* skb_push(sk_buff *p, unsigned int len)
/* add data to the start of a buffer  */
void* skb_push(sk_buff *p, unsigned int len)
{
    p->data -= len;
    p->len += len;
    if (p->data < p->head)
        printf("%s: failed", __FUNCTION__);
    return p->data;
}