hello , i want to know whenever kernel has to skb_push it first call that function and then assigns values to respective protocols in skbuff. is that is the way by which kernel does for every protocols? Or it can be possible to assign first values and then call skb_push? Also i want to know then where ethernet header value assigned in ip_output.c? Before pushing it is always necessary to reserve space by calling skb_reserve? then where IP header space reserved? regards, parag.