1 /* $NetBSD: pcap-common.h,v 1.3 2018/09/03 15:26:43 christos Exp $ */ 2 3 /* 4 * Copyright (c) 1993, 1994, 1995, 1996, 1997 5 * The Regents of the University of California. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that: (1) source code distributions 9 * retain the above copyright notice and this paragraph in its entirety, (2) 10 * distributions including binary code include the above copyright notice and 11 * this paragraph in its entirety in the documentation or other materials 12 * provided with the distribution, and (3) all advertising materials mentioning 13 * features or use of this software display the following acknowledgement: 14 * ``This product includes software developed by the University of California, 15 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 16 * the University nor the names of its contributors may be used to endorse 17 * or promote products derived from this software without specific prior 18 * written permission. 19 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 20 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 22 * 23 * pcap-common.h - common code for pcap and pcapng files 24 */ 25 26 /* 27 * We use the "receiver-makes-right" approach to byte order, 28 * because time is at a premium when we are writing the file. 29 * In other words, the pcap_file_header and pcap_pkthdr, 30 * records are written in host byte order. 31 * Note that the bytes of packet data are written out in the order in 32 * which they were received, so multi-byte fields in packets are not 33 * written in host byte order, they're written in whatever order the 34 * sending machine put them in. 35 * 36 * ntoh[ls] aren't sufficient because we might need to swap on a big-endian 37 * machine (if the file was written in little-end order). 38 */ 39 #define SWAPLONG(y) \ 40 (((((u_int)(y))&0xff)<<24) | \ 41 ((((u_int)(y))&0xff00)<<8) | \ 42 ((((u_int)(y))&0xff0000)>>8) | \ 43 ((((u_int)(y))>>24)&0xff)) 44 #define SWAPSHORT(y) \ 45 ((u_short)(((((u_int)(y))&0xff)<<8) | \ 46 ((((u_int)(y))&0xff00)>>8))) 47 48 extern int dlt_to_linktype(int dlt); 49 50 extern int linktype_to_dlt(int linktype); 51 52 extern void swap_pseudo_headers(int linktype, struct pcap_pkthdr *hdr, 53 u_char *data); 54 55 extern u_int max_snaplen_for_dlt(int dlt); 56