xref: /minix3/external/bsd/libpcap/dist/pcap-common.h (revision d56f51ea7d8b9045e5c8e2028422523d3f9a5840)
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