memptr_t buffer; struct iphdr *ip; struct iphdr *gre_ip; struct udphdr *udp; struct psdhdr *pseudo; assert(co != NULL); greoptlen = gre_opt_len(co); *size = sizeof(struct iphdr) + sizeof(struct udphdr) + sizeof(struct psdhdr) + greoptlen + rip_hdr_len(0); /* Try to reallocate packet, if necessary */ alloc_packet(*size); /* IP Header structure making a pointer to Packet. */ ip = ip_header(packet, *size, co); /* GRE Encapsulation takes place. */ gre_ip = gre_encapsulation(packet, co, sizeof(struct iphdr) + sizeof(struct udphdr) + rip_hdr_len(0)); /* UDP Header structure making a pointer to IP Header structure. */ udp = (struct udphdr *)((unsigned char *)(ip + 1) + greoptlen);
memptr_t buffer; struct iphdr *ip; struct iphdr *gre_ip; struct udphdr *udp; struct psdhdr *pseudo; assert(co != NULL); greoptlen = gre_opt_len(co); *size = sizeof(struct iphdr) + sizeof(struct udphdr) + sizeof(struct psdhdr) + greoptlen + rip_hdr_len(co->rip.auth); /* Try to reallocate packet, if necessary */ alloc_packet(*size); /* IP Header structure making a pointer to Packet. */ ip = ip_header(packet, *size, co); /* GRE Encapsulation takes place. */ gre_ip = gre_encapsulation(packet, co, sizeof(struct iphdr) + sizeof(struct udphdr) + rip_hdr_len(co->rip.auth)); /* UDP Header structure making a pointer to IP Header structure. */ udp = (struct udphdr *)((unsigned char *)(ip + 1) + greoptlen);