int add_string_additional_data(idmef_alert_t *alert, const char *meaning, const char *ptr){ int ret; prelude_string_t *str; idmef_additional_data_t *ad; idmef_data_t *data; ret = idmef_alert_new_additional_data(alert, &ad, IDMEF_LIST_APPEND); if ( ret < 0 ) return ret; idmef_additional_data_set_type(ad, IDMEF_ADDITIONAL_DATA_TYPE_STRING); idmef_additional_data_new_data(ad, &data); ret = idmef_data_set_char_string_ref(data, ptr); if ( ret < 0) return ret; ret = idmef_additional_data_new_meaning(ad, &str); if ( ret < 0) return ret; ret = prelude_string_set_ref(str, meaning); if ( ret < 0 ) return ret; return 0; }
int idmef_additional_data_new_ptr_nodup_fast(idmef_additional_data_t **nd, idmef_additional_data_type_t type, void *ptr, size_t len) { int ret; idmef_data_type_t dtype; ret = check_type(type, ptr, len); if ( ret < 0 ) return ret; ret = idmef_additional_data_new(nd); if ( ret < 0 ) return ret; idmef_additional_data_set_type(*nd, type); dtype = idmef_additional_data_type_to_data_type(type); ret = idmef_data_set_ptr_nodup_fast(idmef_additional_data_get_data(*nd), dtype, ptr, len); if ( ret < 0 ) { idmef_additional_data_destroy(*nd); return ret; } return ret; }
/* * also copy the content of the embedded data */ int idmef_additional_data_copy_dup(idmef_additional_data_t *src, idmef_additional_data_t *dst) { int ret; ret = requiem_string_copy_dup(idmef_additional_data_get_meaning(src), idmef_additional_data_get_meaning(dst)); if ( ret < 0 ) return ret; idmef_additional_data_set_type(dst, idmef_additional_data_get_type(src)); return idmef_data_copy_dup(idmef_additional_data_get_data(src), idmef_additional_data_get_data(dst)); }
int idmef_additional_data_set_ptr_nodup_fast(idmef_additional_data_t *data, idmef_additional_data_type_t type, void *ptr, size_t len) { int ret; ret = check_type(type, ptr, len); if ( ret < 0 ) return ret; idmef_additional_data_set_type(data, type); return idmef_data_set_ptr_nodup_fast(idmef_additional_data_get_data(data), idmef_additional_data_type_to_data_type(type), ptr, len); }