t_util.h (1967B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: t_util.h 8 * Purpose: Useful transport macros 9 */ 10 11 #ifndef _T_UTIL_H_ 12 #define _T_UTIL_H_ 13 14 15 #define PACK_SHORT(buf, val) \ 16 do { \ 17 uint16 v2; \ 18 v2 = bcm_htons(val); \ 19 sal_memcpy(buf, &v2, sizeof(uint16)); \ 20 } while (0) 21 22 #define PACK_LONG(buf, val) \ 23 do { \ 24 uint32 v2; \ 25 v2 = bcm_htonl(val); \ 26 sal_memcpy(buf, &v2, sizeof(uint32)); \ 27 } while (0) 28 29 #define UNPACK_SHORT(buf, val) \ 30 do { \ 31 sal_memcpy(&(val), buf, sizeof(uint16)); \ 32 val = bcm_ntohs(val); \ 33 } while (0) 34 35 #define UNPACK_LONG(buf, val) \ 36 do { \ 37 sal_memcpy(&(val), buf, sizeof(uint32)); \ 38 val = bcm_ntohl(val); \ 39 } while (0) 40 41 42 #define CT_INCR_PACK_U8(_buf, _var) \ 43 *_buf++ = (_var) 44 #define CT_INCR_UNPACK_U8(_buf, _var) \ 45 _var = *_buf++ 46 47 #define CT_INCR_PACK_U16(_buf, _var) \ 48 *_buf++ = ((_var) >> 8) & 0xff; \ 49 *_buf++ = (_var) & 0xff; 50 #define CT_INCR_UNPACK_U16(_buf, _var) \ 51 _var = *_buf++ << 8; \ 52 _var |= *_buf++; 53 54 #define CT_INCR_PACK_U32(_buf, _var) \ 55 *_buf++ = ((_var) >> 24) & 0xff; \ 56 *_buf++ = ((_var) >> 16) & 0xff; \ 57 *_buf++ = ((_var) >> 8) & 0xff; \ 58 *_buf++ = (_var) & 0xff; 59 #define CT_INCR_UNPACK_U32(_buf, _var) \ 60 _var = *_buf++ << 24; \ 61 _var |= *_buf++ << 16; \ 62 _var |= *_buf++ << 8; \ 63 _var |= *_buf++; 64 65 #endif /* _T_UTIL_H_ */