Navigation


Changeset 1300:3f1e79e1273e in freeDiameter for include


Ignore:
Timestamp:
Aug 30, 2015, 2:11:55 AM (9 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Added new callbacks in the derived types definitions to improve value checks during message parsing. Thanks Ranjith for the suggestion.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • include/freeDiameter/libfdproto.h

    r1295 r1300  
    12591259typedef int (*dict_avpdata_encode) (void * data, union avp_value * val);
    12601260
     1261/*
     1262 * CALLBACK:    dict_avpdata_check
     1263 *
     1264 * PARAMETERS:
     1265 *   val        : Pointer to the AVP value that was received and needs to be sanity checked.
     1266 *   data      : a parameter stored in the type structure (to enable more generic check functions)
     1267 *   error_msg: upon erroneous value, a string describing the error can be returned here (it will be strcpy by caller). This description will be returned in the error message, if any.
     1268 *
     1269 * DESCRIPTION:
     1270 *   This callback can be provided with a derived type in order to improve the operation of the
     1271 *  fd_msg_parse_dict function. When this callback is present, the value of the AVP that has
     1272 * been parsed is passed to this function for finer granularity check. For example for some
     1273 * speccific AVP, the format of an OCTETSTRING value can be further checked, or the
     1274 * interger value can be verified.
     1275 *
     1276 * RETURN VALUE:
     1277 *  0           : The value is valid.
     1278 *  !0          : An error occurred, the error code is returned. It is advised to return EINVAL on incorrect val
     1279 */
     1280typedef int (*dict_avpdata_check) (void * data, union avp_value * val, char ** error_msg);
     1281
     1282
    12611283
    12621284/* Type to hold data associated to a derived AVP data type */
     
    12671289        dict_avpdata_encode      type_encode;   /* cb to convert formatted data into an AVP value (or NULL) */
    12681290        DECLARE_FD_DUMP_PROTOTYPE((*type_dump), union avp_value * val); /* cb called by fd_msg_dump_* for this type of data (if != NULL). Returned string must be freed.  */
     1291        dict_avpdata_check       type_check;
     1292        void  *                          type_check_param;
    12691293};
    12701294
     
    12931317DECLARE_FD_DUMP_PROTOTYPE(fd_dictfct_Time_dump, union avp_value * avp_value);
    12941318
     1319
     1320/* For string AVP, the following type_check function provides simple basic check for specific characters presence, e.g. use "@." for trivial email address check */
     1321int fd_dictfct_CharInOS_check(void * data, union avp_value * val, char ** error_msg);
    12951322
    12961323
Note: See TracChangeset for help on using the changeset viewer.