home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / tcpdumpb.zip / extract.h < prev    next >
C/C++ Source or Header  |  1996-07-16  |  2KB  |  58 lines

  1. /*
  2.  * Copyright (c) 1992, 1993, 1994, 1995, 1996
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that: (1) source code distributions
  7.  * retain the above copyright notice and this paragraph in its entirety, (2)
  8.  * distributions including binary code include the above copyright notice and
  9.  * this paragraph in its entirety in the documentation or other materials
  10.  * provided with the distribution, and (3) all advertising materials mentioning
  11.  * features or use of this software display the following acknowledgement:
  12.  * ``This product includes software developed by the University of California,
  13.  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
  14.  * the University nor the names of its contributors may be used to endorse
  15.  * or promote products derived from this software without specific prior
  16.  * written permission.
  17.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  18.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  19.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * @(#) $Header: extract.h,v 1.14 96/07/15 18:23:12 leres Exp $ (LBL)
  22.  */
  23.  
  24. /* Network to host order macros */
  25.  
  26. #ifdef LBL_ALIGN
  27. #define EXTRACT_16BITS(p) \
  28.     ((u_short)*((u_char *)(p) + 0) << 8 | \
  29.     (u_short)*((u_char *)(p) + 1))
  30. #define EXTRACT_32BITS(p) \
  31.     ((u_int32_t)*((u_char *)(p) + 0) << 24 | \
  32.     (u_int32_t)*((u_char *)(p) + 1) << 16 | \
  33.     (u_int32_t)*((u_char *)(p) + 2) << 8 | \
  34.     (u_int32_t)*((u_char *)(p) + 3))
  35. #else
  36. #define EXTRACT_16BITS(p) \
  37.     ((u_short)ntohs(*(u_short *)(p)))
  38. #define EXTRACT_32BITS(p) \
  39.     ntohl(*(u_int32_t *)(p))
  40. #endif
  41.  
  42. #define EXTRACT_24BITS(p) \
  43.     ((u_int32_t)*((u_char *)(p) + 0) << 16 | \
  44.     (u_int32_t)*((u_char *)(p) + 1) << 8 | \
  45.     (u_int32_t)*((u_char *)(p) + 2))
  46.  
  47. /* Little endian protocol host order macros */
  48.  
  49. #define EXTRACT_LE_8BITS(p) (*(p))
  50. #define EXTRACT_LE_16BITS(p) \
  51.     ((u_short)*((u_char *)(p) + 1) << 8 | \
  52.     (u_short)*((u_char *)(p) + 0))
  53. #define EXTRACT_LE_32BITS(p) \
  54.     ((u_int32_t)*((u_char *)(p) + 3) << 24 | \
  55.     (u_int32_t)*((u_char *)(p) + 2) << 16 | \
  56.     (u_int32_t)*((u_char *)(p) + 1) << 8 | \
  57.     (u_int32_t)*((u_char *)(p) + 0))
  58.