Diff for /libelwix/inc/elwix/avar.h between versions 1.10.42.2 and 1.12.2.2

version 1.10.42.2, 2019/08/16 15:29:51 version 1.12.2.2, 2022/01/24 17:07:24
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004 - 2019Copyright 2004 - 2022
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 304  typedef struct __packed { Line 304  typedef struct __packed {
                                                                 AIT_SET_STR((_vl), \                                                                  AIT_SET_STR((_vl), \
                                                                                 AIT_GET_STR((_v))); \                                                                                  AIT_GET_STR((_v))); \
                                                                 break; \                                                                  break; \
                                                         case data: \  
                                                                 AIT_SET_DATA((_vl), \  
                                                                                 AIT_GET_DATA((_v)), \  
                                                                                 AIT_LEN((_v))); \  
                                                                 break; \  
                                                         default: \                                                          default: \
                                                                 break; \                                                                  break; \
                                                 } \                                                  } \
                                         } while (0)                                          } while (0)
   /* Additional helper macro, which can help about copy data variables */
   #define AIT_COPY_DATA(_vl, _v)          do { AIT_COPY_VAL((_vl), (_v)); \
                                                   if (AIT_TYPE((_vl)) == data) \
                                                           AIT_SET_DATA((_vl), AIT_GET_DATA((_v)), \
                                                                           AIT_LEN((_v))); \
                                           } while (0)
   
 #define AIT_VAL_INITIALIZER(_vl)        { .val_type = empty, { .val_opt = 0 }, \  #define AIT_VAL_INITIALIZER(_vl)        { .val_type = empty, { .val_opt = 0 }, \
                                                 .val_key = 0, .val_len = 0, \                                                  .val_key = 0, .val_len = 0, \
Line 331  typedef struct __packed { Line 332  typedef struct __packed {
                                                                 if (!__val->val_in && \                                                                  if (!__val->val_in && \
                                                                                 __val->val.buffer) \                                                                                  __val->val.buffer) \
                                                                         e_free(__val->val.buffer); \                                                                          e_free(__val->val.buffer); \
                                                                   __val->val.buffer = NULL; \
                                                                 break; \                                                                  break; \
                                                         case string: \                                                          case string: \
                                                                 if (!__val->val_in && \                                                                  if (!__val->val_in && \
                                                                                 __val->val.string) \                                                                                  __val->val.string) \
                                                                         e_free(__val->val.string); \                                                                          e_free(__val->val.string); \
                                                                   __val->val.string = NULL; \
                                                                 break; \                                                                  break; \
                                                         case data: \  
                                                                 if (!__val->val_in) \  
                                                                         memset(__val->val_data, 0, \  
                                                                                         AIT_LEN(__val)); \  
                                                                 break; \  
                                                         default: \                                                          default: \
                                                                 break; \                                                                  break; \
                                                 } \                                                  } \
                                                 __val->val_type = empty; \                                                  __val->val_type = empty; \
                                                 __val->val_opt ^= __val->val_opt; \                                                  __val->val_opt ^= __val->val_opt; \
                                                 __val->val.net ^= __val->val.net; \  
                                                 AIT_LEN(__val) = 0; \                                                  AIT_LEN(__val) = 0; \
                                                 AIT_KEY(__val) = 0; \                                                  AIT_KEY(__val) = 0; \
                                         } while (0)                                          } while (0)
Line 356  typedef struct __packed { Line 353  typedef struct __packed {
                                                 switch (AIT_TYPE(__val)) { \                                                  switch (AIT_TYPE(__val)) { \
                                                         case buffer: \                                                          case buffer: \
                                                         case string: \                                                          case string: \
                                                                   assert(!__val->val_in); \
                                                                 if (__val->val.buffer) \                                                                  if (__val->val.buffer) \
                                                                         memset(__val->val.buffer, 0, \                                                                          memset(__val->val.buffer, 0, \
                                                                                 AIT_LEN(__val)); \                                                                                  AIT_LEN(__val)); \
Line 379  typedef struct __packed { Line 377  typedef struct __packed {
  * @vars = Variable array   * @vars = Variable array
  * return: -1 error, 0 nothing done or >0 size of marshaled data   * return: -1 error, 0 nothing done or >0 size of marshaled data
  */   */
int ait_vars2buffer(unsigned char * __restrict buf, int buflen, int ait_vars2buffer(unsigned char * __restrict buf, int buflen, array_t * __restrict vars);
                array_t * __restrict vars); 
 /*  /*
  * ait_buffer2vars() - De-marshaling data from buffer to array with variables   * ait_buffer2vars() - De-marshaling data from buffer to array with variables
  *   *
Line 393  int ait_vars2buffer(unsigned char * __restrict buf, in Line 390  int ait_vars2buffer(unsigned char * __restrict buf, in
  */   */
 array_t *ait_buffer2vars(unsigned char * __restrict buf, int buflen, int vnum, int zcpy);  array_t *ait_buffer2vars(unsigned char * __restrict buf, int buflen, int vnum, int zcpy);
 /*  /*
    * ait_vars2tlv() - Marshaling data from array with variables to TLV buffer
    *
    * @buf = Buffer, If =NULL then we return only needed buffer size
    * @buflen = Size of buffer
    * @vars = Variable array
    * return: -1 error, 0 nothing done or >0 size of marshaled data
    */
   int ait_vars2tlv(u_char * __restrict buf, int buflen, array_t * __restrict vars);
   /*
    * ait_tlv2vars() - De-marshaling data from TLV buffer to array with variables
    *
    * @buf = Buffer
    * @buflen = Size of buffer
    * return: =NULL error, !=NULL allocated variable array, after use must free with ait_freeVars()
    */
   array_t *ait_tlv2vars(u_char * __restrict buf, int buflen);
   /*
  * ait_vars2map() - Marshaling data from array with variables to memory map   * ait_vars2map() - Marshaling data from array with variables to memory map
  *   *
  * @buf = Buffer   * @buf = Buffer
Line 413  int ait_vars2map(unsigned char * __restrict buf, int b Line 427  int ait_vars2map(unsigned char * __restrict buf, int b
  */   */
 array_t *ait_map2vars(unsigned char * __restrict buf, int buflen, int vnum, int zcpy);  array_t *ait_map2vars(unsigned char * __restrict buf, int buflen, int vnum, int zcpy);
   
   /*
    * ait_array2vars() - Build array with variables from Null Terminated String Array
    *
    * @args = Null-terminated array with strings
    * @dn = Convert numbers from strings to numbers into variables
    * return: =NULL error, !=NULL allocated variable array, after use must free with ait_freeVars()
    */
   array_t *ait_array2vars(const char **args, int dn);
   
 /*  /*
  * ait_allocVar() - Allocate memory for variable   * ait_allocVar() - Allocate memory for variable

Removed from v.1.10.42.2  
changed lines
  Added in v.1.12.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>