1335640Shselasky/*
2335640Shselasky * Copyright (c) 1993, 1994, 1995, 1996, 1997
3335640Shselasky *	The Regents of the University of California.  All rights reserved.
4335640Shselasky *
5335640Shselasky * Redistribution and use in source and binary forms, with or without
6335640Shselasky * modification, are permitted provided that: (1) source code distributions
7335640Shselasky * retain the above copyright notice and this paragraph in its entirety, (2)
8335640Shselasky * distributions including binary code include the above copyright notice and
9335640Shselasky * this paragraph in its entirety in the documentation or other materials
10335640Shselasky * provided with the distribution, and (3) all advertising materials mentioning
11335640Shselasky * features or use of this software display the following acknowledgement:
12335640Shselasky * ``This product includes software developed by the University of California,
13335640Shselasky * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
14335640Shselasky * the University nor the names of its contributors may be used to endorse
15335640Shselasky * or promote products derived from this software without specific prior
16335640Shselasky * written permission.
17335640Shselasky * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18335640Shselasky * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19335640Shselasky * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20335640Shselasky *
21335640Shselasky * pcap-common.h - common code for pcap and pcapng files
22335640Shselasky */
23335640Shselasky
24335640Shselasky/*
25335640Shselasky * We use the "receiver-makes-right" approach to byte order,
26335640Shselasky * because time is at a premium when we are writing the file.
27335640Shselasky * In other words, the pcap_file_header and pcap_pkthdr,
28335640Shselasky * records are written in host byte order.
29335640Shselasky * Note that the bytes of packet data are written out in the order in
30335640Shselasky * which they were received, so multi-byte fields in packets are not
31335640Shselasky * written in host byte order, they're written in whatever order the
32335640Shselasky * sending machine put them in.
33335640Shselasky *
34335640Shselasky * ntoh[ls] aren't sufficient because we might need to swap on a big-endian
35335640Shselasky * machine (if the file was written in little-end order).
36335640Shselasky */
37335640Shselasky#define	SWAPLONG(y) \
38356341Scy    (((((u_int)(y))&0xff)<<24) | \
39356341Scy     ((((u_int)(y))&0xff00)<<8) | \
40356341Scy     ((((u_int)(y))&0xff0000)>>8) | \
41356341Scy     ((((u_int)(y))>>24)&0xff))
42335640Shselasky#define	SWAPSHORT(y) \
43356341Scy     ((u_short)(((((u_int)(y))&0xff)<<8) | \
44356341Scy                ((((u_int)(y))&0xff00)>>8)))
45335640Shselasky
46335640Shselaskyextern int dlt_to_linktype(int dlt);
47335640Shselasky
48335640Shselaskyextern int linktype_to_dlt(int linktype);
49335640Shselasky
50335640Shselaskyextern void swap_pseudo_headers(int linktype, struct pcap_pkthdr *hdr,
51335640Shselasky    u_char *data);
52335640Shselasky
53335640Shselaskyextern u_int max_snaplen_for_dlt(int dlt);
54