Changeset 638:9448cba86673 in freeDiameter for extensions/dbg_interactive/dictionary.i
- Timestamp:
- Dec 17, 2010, 6:41:19 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/dbg_interactive/dictionary.i
r637 r638 242 242 fd_log_debug("] '%.*s%s'\n", n, $self->data, n == LEN_MAX ? "..." : ""); 243 243 } 244 } 244 %cstring_output_allocate_size(char ** outbuffer, size_t * outlen, free(*$1)); 245 void as_str ( char ** outbuffer, size_t * outlen ) { 246 char * b; 247 if (!$self->len) { 248 *outlen = 0; 249 *outbuffer = NULL; 250 return; 251 } 252 b = malloc($self->len); 253 if (!b) { 254 DI_ERROR_MALLOC; 255 return; 256 } 257 memcpy(b, $self->data, $self->len); 258 *outlen = $self->len; 259 *outbuffer = b; 260 } 261 } 262 263 264 /* Allow constructors with parameters for the dict_*_data */ 265 %extend dict_vendor_data { 266 dict_vendor_data(uint32_t id = 0, char * name = NULL) { 267 struct dict_vendor_data * d = (struct dict_vendor_data *)calloc(1, sizeof(struct dict_vendor_data)); 268 if (!d) { 269 DI_ERROR_MALLOC; 270 return NULL; 271 } 272 d->vendor_id = id; 273 if (name) { 274 d->vendor_name = strdup(name); 275 if (!d->vendor_name) { 276 DI_ERROR_MALLOC; 277 free(d); 278 return NULL; 279 } 280 } 281 return d; 282 } 283 } 284 285 %extend dict_application_data { 286 dict_application_data(uint32_t id = 0, char * name = NULL) { 287 struct dict_application_data * d = (struct dict_application_data *)calloc(1, sizeof(struct dict_application_data)); 288 if (!d) { 289 DI_ERROR_MALLOC; 290 return NULL; 291 } 292 d->application_id = id; 293 if (name) { 294 d->application_name = strdup(name); 295 if (!d->application_name) { 296 DI_ERROR_MALLOC; 297 free(d); 298 return NULL; 299 } 300 } 301 return d; 302 } 303 } 304 305 %extend dict_type_data { 306 dict_type_data(enum dict_avp_basetype base = 0, char * name = NULL) { 307 struct dict_type_data * d = (struct dict_type_data *)calloc(1, sizeof(struct dict_type_data)); 308 if (!d) { 309 DI_ERROR_MALLOC; 310 return NULL; 311 } 312 d->type_base = base; 313 if (name) { 314 d->type_name = strdup(name); 315 if (!d->type_name) { 316 DI_ERROR_MALLOC; 317 free(d); 318 return NULL; 319 } 320 } 321 return d; 322 } 323 } 324 325 %extend dict_enumval_data { 326 dict_enumval_data(char * name = NULL, uint32_t v = 0) { 327 struct dict_enumval_data * d = (struct dict_enumval_data *)calloc(1, sizeof(struct dict_enumval_data)); 328 if (!d) { 329 DI_ERROR_MALLOC; 330 return NULL; 331 } 332 if (name) { 333 d->enum_name = strdup(name); 334 if (!d->enum_name) { 335 DI_ERROR_MALLOC; 336 free(d); 337 return NULL; 338 } 339 } 340 d->enum_value.u32 = v; 341 return d; 342 } 343 } 344 345 %extend dict_avp_data { 346 dict_avp_data(uint32_t code = 0, char * name = NULL, enum dict_avp_basetype basetype = 0, uint32_t vendor = 0, int mandatory=0) { 347 struct dict_avp_data * d = (struct dict_avp_data *)calloc(1, sizeof(struct dict_avp_data)); 348 if (!d) { 349 DI_ERROR_MALLOC; 350 return NULL; 351 } 352 if (name) { 353 d->avp_name = strdup(name); 354 if (!d->avp_name) { 355 DI_ERROR_MALLOC; 356 free(d); 357 return NULL; 358 } 359 } 360 d->avp_code = code; 361 d->avp_basetype = basetype; 362 d->avp_vendor = vendor; 363 if (vendor) { 364 d->avp_flag_val |= AVP_FLAG_VENDOR; 365 d->avp_flag_mask |= AVP_FLAG_VENDOR; 366 } 367 d->avp_flag_mask |= AVP_FLAG_MANDATORY; 368 if (mandatory) 369 d->avp_flag_val |= AVP_FLAG_MANDATORY; 370 return d; 371 } 372 } 373 374 %extend dict_cmd_data { 375 dict_cmd_data(uint32_t code = 0, char * name = NULL, int request = 1) { 376 struct dict_cmd_data * d = (struct dict_cmd_data *)calloc(1, sizeof(struct dict_cmd_data)); 377 if (!d) { 378 DI_ERROR_MALLOC; 379 return NULL; 380 } 381 if (name) { 382 d->cmd_name = strdup(name); 383 if (!d->cmd_name) { 384 DI_ERROR_MALLOC; 385 free(d); 386 return NULL; 387 } 388 } 389 d->cmd_code = code; 390 d->cmd_flag_mask = CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE; 391 d->cmd_flag_val = CMD_FLAG_PROXIABLE | ( request ? CMD_FLAG_REQUEST : 0 ); 392 return d; 393 } 394 } 395 396 %extend dict_rule_data { 397 dict_rule_data(struct dict_object *avp = NULL, enum rule_position pos = 0, int min = -1, int max = -1 ) { 398 struct dict_rule_data * d = (struct dict_rule_data *)calloc(1, sizeof(struct dict_rule_data)); 399 if (!d) { 400 DI_ERROR_MALLOC; 401 return NULL; 402 } 403 d->rule_avp = avp; 404 d->rule_position = pos; 405 d->rule_order = 1; 406 d->rule_min = min; 407 d->rule_max = max; 408 return d; 409 } 410 } 411
Note: See TracChangeset
for help on using the changeset viewer.