1*1b8adde7SWilliam Kucharski #ifndef _IP_H 2*1b8adde7SWilliam Kucharski #define _IP_H 3*1b8adde7SWilliam Kucharski 4*1b8adde7SWilliam Kucharski /* We need 'uint16_t' */ 5*1b8adde7SWilliam Kucharski #include "types.h" 6*1b8adde7SWilliam Kucharski /* We need 'in_addr' */ 7*1b8adde7SWilliam Kucharski #include "in.h" 8*1b8adde7SWilliam Kucharski 9*1b8adde7SWilliam Kucharski struct iphdr { 10*1b8adde7SWilliam Kucharski uint8_t verhdrlen; 11*1b8adde7SWilliam Kucharski uint8_t service; 12*1b8adde7SWilliam Kucharski uint16_t len; 13*1b8adde7SWilliam Kucharski uint16_t ident; 14*1b8adde7SWilliam Kucharski uint16_t frags; 15*1b8adde7SWilliam Kucharski uint8_t ttl; 16*1b8adde7SWilliam Kucharski uint8_t protocol; 17*1b8adde7SWilliam Kucharski uint16_t chksum; 18*1b8adde7SWilliam Kucharski in_addr src; 19*1b8adde7SWilliam Kucharski in_addr dest; 20*1b8adde7SWilliam Kucharski }; 21*1b8adde7SWilliam Kucharski 22*1b8adde7SWilliam Kucharski extern void build_ip_hdr(unsigned long __destip, int __ttl, int __protocol, 23*1b8adde7SWilliam Kucharski int __option_len, int __len, const void * __buf); 24*1b8adde7SWilliam Kucharski 25*1b8adde7SWilliam Kucharski extern int ip_transmit(int __len, const void * __buf); 26*1b8adde7SWilliam Kucharski 27*1b8adde7SWilliam Kucharski extern uint16_t ipchksum(const void * __data, unsigned long __length); 28*1b8adde7SWilliam Kucharski 29*1b8adde7SWilliam Kucharski extern uint16_t add_ipchksums(unsigned long __offset, uint16_t __sum, 30*1b8adde7SWilliam Kucharski uint16_t __new); 31*1b8adde7SWilliam Kucharski 32*1b8adde7SWilliam Kucharski 33*1b8adde7SWilliam Kucharski 34*1b8adde7SWilliam Kucharski 35*1b8adde7SWilliam Kucharski 36*1b8adde7SWilliam Kucharski #endif /* _IP_H */ 37