Annotation of embedaddon/iftop/extract.h, revision 1.1
1.1 ! misho 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: /home/pdw/vcvs/repos/iftop/extract.h,v 1.2 2003/06/06 22:42:34 pdw Exp $ (LBL)
! 22: */
! 23:
! 24: /* Network to host order macros */
! 25:
! 26: #ifdef LBL_ALIGN
! 27: #define EXTRACT_16BITS(p) \
! 28: ((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \
! 29: (u_int16_t)*((const u_int8_t *)(p) + 1))
! 30: #define EXTRACT_32BITS(p) \
! 31: ((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \
! 32: (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \
! 33: (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \
! 34: (u_int32_t)*((const u_int8_t *)(p) + 3))
! 35: #else
! 36: #define EXTRACT_16BITS(p) \
! 37: ((u_int16_t)ntohs(*(const u_int16_t *)(p)))
! 38: #define EXTRACT_32BITS(p) \
! 39: ((u_int32_t)ntohl(*(const u_int32_t *)(p)))
! 40: #endif
! 41:
! 42: #define EXTRACT_24BITS(p) \
! 43: ((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \
! 44: (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \
! 45: (u_int32_t)*((const u_int8_t *)(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_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \
! 52: (u_int16_t)*((const u_int8_t *)(p) + 0))
! 53: #define EXTRACT_LE_32BITS(p) \
! 54: ((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \
! 55: (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \
! 56: (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \
! 57: (u_int32_t)*((const u_int8_t *)(p) + 0))
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>