1*d56f51eaSDavid van Moolenbroek /* $NetBSD: pcap-common.h,v 1.2 2014/11/19 19:33:30 christos Exp $ */ 2*d56f51eaSDavid van Moolenbroek 3*d56f51eaSDavid van Moolenbroek 4*d56f51eaSDavid van Moolenbroek /* 5*d56f51eaSDavid van Moolenbroek * We use the "receiver-makes-right" approach to byte order, 6*d56f51eaSDavid van Moolenbroek * because time is at a premium when we are writing the file. 7*d56f51eaSDavid van Moolenbroek * In other words, the pcap_file_header and pcap_pkthdr, 8*d56f51eaSDavid van Moolenbroek * records are written in host byte order. 9*d56f51eaSDavid van Moolenbroek * Note that the bytes of packet data are written out in the order in 10*d56f51eaSDavid van Moolenbroek * which they were received, so multi-byte fields in packets are not 11*d56f51eaSDavid van Moolenbroek * written in host byte order, they're written in whatever order the 12*d56f51eaSDavid van Moolenbroek * sending machine put them in. 13*d56f51eaSDavid van Moolenbroek * 14*d56f51eaSDavid van Moolenbroek * ntoh[ls] aren't sufficient because we might need to swap on a big-endian 15*d56f51eaSDavid van Moolenbroek * machine (if the file was written in little-end order). 16*d56f51eaSDavid van Moolenbroek */ 17*d56f51eaSDavid van Moolenbroek #define SWAPLONG(y) \ 18*d56f51eaSDavid van Moolenbroek ((((y)&0xff)<<24) | (((y)&0xff00)<<8) | (((y)&0xff0000)>>8) | (((y)>>24)&0xff)) 19*d56f51eaSDavid van Moolenbroek #define SWAPSHORT(y) \ 20*d56f51eaSDavid van Moolenbroek ( (((y)&0xff)<<8) | ((u_short)((y)&0xff00)>>8) ) 21*d56f51eaSDavid van Moolenbroek 22*d56f51eaSDavid van Moolenbroek extern int dlt_to_linktype(int dlt); 23*d56f51eaSDavid van Moolenbroek 24*d56f51eaSDavid van Moolenbroek extern int linktype_to_dlt(int linktype); 25*d56f51eaSDavid van Moolenbroek 26*d56f51eaSDavid van Moolenbroek extern void swap_pseudo_headers(int linktype, struct pcap_pkthdr *hdr, 27*d56f51eaSDavid van Moolenbroek u_char *data); 28