buf_assign
struct iphdr *ipv4 = buf_assign(pkt, sizeof(*ipv4), scratch);
struct ipv6hdr *ipv6 = buf_assign(pkt, sizeof(*ipv6), scratch);
encap_gre_t *encap_gre = buf_assign(&pkt, sizeof(encap_gre_t), NULL);
struct tcphdr *tcp = buf_assign(pkt, sizeof(_tcp), &_tcp);
struct udphdr *udph = buf_assign(pkt, sizeof(_udp), &_udp);
encap = buf_assign(&pkt, sizeof(*encap), NULL);