openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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_ */