Refer to options whose data isn't a simple data type as "structured".
"Custom", as in "requires custom handling of the option data, collides with "custom", as in pcapng custom options.
This commit is contained in:
parent
5fbc354f86
commit
ca85c516fe
|
@ -21,7 +21,7 @@ libwiretap.so.0 libwiretap0 #MINVER#
|
|||
register_pcapng_option_handler@Base 1.99.2
|
||||
wtap_add_generated_idb@Base 3.3.0
|
||||
wtap_addrinfo_list_empty@Base 2.5.0
|
||||
wtap_block_add_custom_option@Base 2.1.2
|
||||
wtap_block_add_structured_option@Base 3.5.0
|
||||
wtap_block_add_ipv4_option@Base 2.1.2
|
||||
wtap_block_add_ipv6_option@Base 2.1.2
|
||||
wtap_block_add_string_option@Base 2.1.2
|
||||
|
@ -33,7 +33,7 @@ libwiretap.so.0 libwiretap0 #MINVER#
|
|||
wtap_block_create@Base 2.1.2
|
||||
wtap_block_foreach_option@Base 2.1.2
|
||||
wtap_block_free@Base 2.1.2
|
||||
wtap_block_get_custom_option_value@Base 2.1.2
|
||||
wtap_block_get_structured_option_value@Base 3.5.0
|
||||
wtap_block_get_ipv4_option_value@Base 2.1.2
|
||||
wtap_block_get_ipv6_option_value@Base 2.1.2
|
||||
wtap_block_get_mandatory_data@Base 2.1.2
|
||||
|
@ -44,7 +44,7 @@ libwiretap.so.0 libwiretap0 #MINVER#
|
|||
wtap_block_make_copy@Base 3.3.2
|
||||
wtap_block_remove_nth_option_instance@Base 2.2.0
|
||||
wtap_block_remove_option@Base 2.2.0
|
||||
wtap_block_set_custom_option_value@Base 2.1.2
|
||||
wtap_block_set_structured_option_value@Base 3.5.0
|
||||
wtap_block_set_ipv4_option_value@Base 2.1.2
|
||||
wtap_block_set_ipv6_option_value@Base 2.1.2
|
||||
wtap_block_set_nth_string_option_value@Base 2.1.2
|
||||
|
|
|
@ -171,7 +171,7 @@ summary_fill_in(capture_file *cf, summary_tally *st)
|
|||
for (i = 0; i < idb_info->interface_data->len; i++) {
|
||||
wtapng_if_descr = g_array_index(idb_info->interface_data, wtap_block_t, i);
|
||||
wtapng_if_descr_mand = (wtapng_if_descr_mandatory_t*)wtap_block_get_mandatory_data(wtapng_if_descr);
|
||||
if (wtap_block_get_custom_option_value(wtapng_if_descr, OPT_IDB_FILTER, (void**)&if_filter) == WTAP_OPTTYPE_SUCCESS) {
|
||||
if (wtap_block_get_structured_option_value(wtapng_if_descr, OPT_IDB_FILTER, (void**)&if_filter) == WTAP_OPTTYPE_SUCCESS) {
|
||||
iface.cfilter = g_strdup(if_filter->if_filter_str);
|
||||
} else {
|
||||
iface.cfilter = NULL;
|
||||
|
|
|
@ -1109,7 +1109,7 @@ static void erf_write_wtap_option_to_interface_tag(wtap_block_t block _U_,
|
|||
{
|
||||
wtapng_if_descr_filter_t *filter;
|
||||
tag_ptr->type = 0xF800;
|
||||
filter = (wtapng_if_descr_filter_t*)&optval->customval;
|
||||
filter = (wtapng_if_descr_filter_t*)&optval->structuredval;
|
||||
if(filter->if_filter_str) {
|
||||
tag_ptr->type = ERF_META_TAG_filter;
|
||||
tag_ptr->value = (guint8*)g_strdup(filter->if_filter_str);
|
||||
|
@ -2841,7 +2841,7 @@ static int populate_interface_info(erf_t *erf_priv, wtap *wth, union wtap_pseudo
|
|||
break;
|
||||
case ERF_META_TAG_filter:
|
||||
if_filter.if_filter_str = g_strndup((gchar*) tag.value, tag.length);
|
||||
wtap_block_add_custom_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
wtap_block_add_structured_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
g_free(if_filter.if_filter_str);
|
||||
if_info->set_flags.filter = 1;
|
||||
break;
|
||||
|
@ -2867,7 +2867,7 @@ static int populate_interface_info(erf_t *erf_priv, wtap *wth, union wtap_pseudo
|
|||
if (state->if_map->module_filter_str) {
|
||||
/* Duplicate because might use with multiple interfaces */
|
||||
if_filter.if_filter_str = state->if_map->module_filter_str;
|
||||
wtap_block_add_custom_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
wtap_block_add_structured_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
/*
|
||||
* Don't set flag because stream is more specific than module.
|
||||
*/
|
||||
|
@ -2875,7 +2875,7 @@ static int populate_interface_info(erf_t *erf_priv, wtap *wth, union wtap_pseudo
|
|||
/* TODO: display separately? Note that we could have multiple captures
|
||||
* from multiple hosts in the file */
|
||||
if_filter.if_filter_str = state->if_map->capture_filter_str;
|
||||
wtap_block_add_custom_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
wtap_block_add_structured_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3012,7 +3012,7 @@ static int populate_stream_info(erf_t *erf_priv _U_, wtap *wth, union wtap_pseud
|
|||
/* Override only if not set */
|
||||
if (!if_info->set_flags.filter) {
|
||||
if_filter.if_filter_str = g_strndup((gchar*) tag.value, tag.length);
|
||||
wtap_block_add_custom_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
wtap_block_add_structured_option(int_data, OPT_IDB_FILTER, &if_filter, sizeof if_filter);
|
||||
g_free(if_filter.if_filter_str);
|
||||
if_info->set_flags.filter = 1;
|
||||
}
|
||||
|
|
|
@ -950,7 +950,7 @@ pcapng_read_if_descr_block(wtap *wth, FILE_T fh, pcapng_block_header_t *bh,
|
|||
if_filter.if_filter_bpf_bytes = option_content+1;
|
||||
}
|
||||
/* Fails with multiple options; we silently ignore the failure */
|
||||
wtap_block_add_custom_option(wblock->block, oh.option_code, &if_filter, sizeof if_filter);
|
||||
wtap_block_add_structured_option(wblock->block, oh.option_code, &if_filter, sizeof if_filter);
|
||||
g_free(if_filter.if_filter_str);
|
||||
} else {
|
||||
pcapng_debug("pcapng_read_if_descr_block: if_filter length %u seems strange", oh.option_length);
|
||||
|
@ -4541,7 +4541,7 @@ static void compute_idb_option_size(wtap_block_t block _U_, guint option_id, wta
|
|||
break;
|
||||
case OPT_IDB_FILTER:
|
||||
{
|
||||
wtapng_if_descr_filter_t* filter = (wtapng_if_descr_filter_t*)optval->customval.data;
|
||||
wtapng_if_descr_filter_t* filter = (wtapng_if_descr_filter_t*)optval->structuredval.data;
|
||||
guint32 pad;
|
||||
if (filter->if_filter_str != NULL) {
|
||||
size = (guint32)(strlen(filter->if_filter_str) + 1) & 0xffff;
|
||||
|
@ -4631,7 +4631,7 @@ static void write_wtap_idb_option(wtap_block_t block _U_, guint option_id, wtap_
|
|||
break;
|
||||
case OPT_IDB_FILTER:
|
||||
{
|
||||
wtapng_if_descr_filter_t* filter = (wtapng_if_descr_filter_t*)optval->customval.data;
|
||||
wtapng_if_descr_filter_t* filter = (wtapng_if_descr_filter_t*)optval->structuredval.data;
|
||||
guint32 size, pad;
|
||||
if (filter->if_filter_str != NULL) {
|
||||
size = (guint32)(strlen(filter->if_filter_str) + 1) & 0xffff;
|
||||
|
|
|
@ -365,7 +365,7 @@ wtap_get_debug_if_descr(const wtap_block_t if_descr,
|
|||
line_end);
|
||||
}
|
||||
|
||||
if (wtap_block_get_custom_option_value(if_descr, OPT_IDB_FILTER, (void**)&if_filter) == WTAP_OPTTYPE_SUCCESS) {
|
||||
if (wtap_block_get_structured_option_value(if_descr, OPT_IDB_FILTER, (void**)&if_filter) == WTAP_OPTTYPE_SUCCESS) {
|
||||
g_string_append_printf(info,
|
||||
"%*cFilter string = %s%s", indent, ' ',
|
||||
if_filter->if_filter_str ? if_filter->if_filter_str : "NONE",
|
||||
|
|
|
@ -36,19 +36,19 @@ typedef struct {
|
|||
GArray *options; /**< array of known options */
|
||||
} wtap_blocktype_t;
|
||||
|
||||
typedef void *(*wtap_opttype_dup_custom_func)(void* src);
|
||||
typedef void (*wtap_opttype_free_custom_func)(void* data);
|
||||
typedef void *(*wtap_opttype_dup_structured_func)(void* src);
|
||||
typedef void (*wtap_opttype_free_structured_func)(void* data);
|
||||
|
||||
/*
|
||||
* Structure describing a type of option.
|
||||
*/
|
||||
typedef struct {
|
||||
const char *name; /**< name of option */
|
||||
const char *description; /**< human-readable description of option */
|
||||
wtap_opttype_e data_type; /**< data type of that option */
|
||||
guint flags; /**< flags for the option */
|
||||
wtap_opttype_dup_custom_func dup_func; /**< function to duplicate custom option data */
|
||||
wtap_opttype_free_custom_func free_func; /**< function to free custom option data */
|
||||
const char *name; /**< name of option */
|
||||
const char *description; /**< human-readable description of option */
|
||||
wtap_opttype_e data_type; /**< data type of that option */
|
||||
guint flags; /**< flags for the option */
|
||||
wtap_opttype_dup_structured_func dup_func; /**< function to duplicate structured option data */
|
||||
wtap_opttype_free_structured_func free_func; /**< function to free structured option data */
|
||||
} wtap_opttype_t;
|
||||
|
||||
/* Flags */
|
||||
|
@ -204,9 +204,9 @@ static void wtap_block_free_option(wtap_block_t block, wtap_option_t *opt)
|
|||
g_free(opt->value.stringval);
|
||||
break;
|
||||
|
||||
case WTAP_OPTTYPE_CUSTOM:
|
||||
opttype->free_func(opt->value.customval.data);
|
||||
g_free(opt->value.customval.data);
|
||||
case WTAP_OPTTYPE_STRUCTURED:
|
||||
opttype->free_func(opt->value.structuredval.data);
|
||||
g_free(opt->value.structuredval.data);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -298,8 +298,8 @@ wtap_block_copy(wtap_block_t dest_block, wtap_block_t src_block)
|
|||
wtap_block_add_string_option(dest_block, src_opt->option_id, src_opt->value.stringval, strlen(src_opt->value.stringval));
|
||||
break;
|
||||
|
||||
case WTAP_OPTTYPE_CUSTOM:
|
||||
wtap_block_add_custom_option(dest_block, src_opt->option_id, src_opt->value.customval.data, src_opt->value.customval.size);
|
||||
case WTAP_OPTTYPE_STRUCTURED:
|
||||
wtap_block_add_structured_option(dest_block, src_opt->option_id, src_opt->value.structuredval.data, src_opt->value.structuredval.size);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -753,50 +753,50 @@ wtap_block_get_nth_string_option_value(wtap_block_t block, guint option_id, guin
|
|||
}
|
||||
|
||||
wtap_opttype_return_val
|
||||
wtap_block_add_custom_option(wtap_block_t block, guint option_id, void *value, size_t value_size)
|
||||
wtap_block_add_structured_option(wtap_block_t block, guint option_id, void *value, size_t value_size)
|
||||
{
|
||||
wtap_opttype_return_val ret;
|
||||
wtap_option_t *opt;
|
||||
wtap_opttype_t *opttype;
|
||||
|
||||
ret = wtap_block_add_option_common(block, option_id, WTAP_OPTTYPE_CUSTOM, &opt);
|
||||
ret = wtap_block_add_option_common(block, option_id, WTAP_OPTTYPE_STRUCTURED, &opt);
|
||||
if (ret != WTAP_OPTTYPE_SUCCESS)
|
||||
return ret;
|
||||
opttype = &g_array_index(block->info->options, wtap_opttype_t, opt->option_id);
|
||||
opt->value.customval.size = (guint)value_size;
|
||||
opt->value.customval.data = opttype->dup_func(value);
|
||||
opt->value.structuredval.size = (guint)value_size;
|
||||
opt->value.structuredval.data = opttype->dup_func(value);
|
||||
return WTAP_OPTTYPE_SUCCESS;
|
||||
}
|
||||
|
||||
wtap_opttype_return_val
|
||||
wtap_block_get_custom_option_value(wtap_block_t block, guint option_id, void** value)
|
||||
wtap_block_get_structured_option_value(wtap_block_t block, guint option_id, void** value)
|
||||
{
|
||||
wtap_opttype_return_val ret;
|
||||
wtap_optval_t *optval;
|
||||
|
||||
ret = wtap_block_get_option_common(block, option_id, WTAP_OPTTYPE_CUSTOM, &optval);
|
||||
ret = wtap_block_get_option_common(block, option_id, WTAP_OPTTYPE_STRUCTURED, &optval);
|
||||
if (ret != WTAP_OPTTYPE_SUCCESS)
|
||||
return ret;
|
||||
*value = optval->customval.data;
|
||||
*value = optval->structuredval.data;
|
||||
return WTAP_OPTTYPE_SUCCESS;
|
||||
}
|
||||
|
||||
wtap_opttype_return_val
|
||||
wtap_block_set_custom_option_value(wtap_block_t block, guint option_id, void *value)
|
||||
wtap_block_set_structured_option_value(wtap_block_t block, guint option_id, void *value)
|
||||
{
|
||||
wtap_opttype_return_val ret;
|
||||
wtap_optval_t *optval;
|
||||
void *prev_value;
|
||||
|
||||
ret = wtap_block_get_option_common(block, option_id, WTAP_OPTTYPE_CUSTOM, &optval);
|
||||
ret = wtap_block_get_option_common(block, option_id, WTAP_OPTTYPE_STRUCTURED, &optval);
|
||||
if (ret != WTAP_OPTTYPE_SUCCESS)
|
||||
return ret;
|
||||
prev_value = optval->customval.data;
|
||||
prev_value = optval->structuredval.data;
|
||||
/*
|
||||
* XXX - a custom value can be a structure that points to other data,
|
||||
* but we're doing a shallow copy here.
|
||||
*/
|
||||
optval->customval.data = g_memdup(value, optval->customval.size);
|
||||
optval->structuredval.data = g_memdup(value, optval->structuredval.size);
|
||||
/* Free after memory is duplicated in case structure was manipulated with a "get then set" */
|
||||
g_free(prev_value);
|
||||
|
||||
|
@ -1081,7 +1081,7 @@ void wtap_opttypes_initialize(void)
|
|||
static wtap_opttype_t if_filter = {
|
||||
"filter",
|
||||
"IDB Filter",
|
||||
WTAP_OPTTYPE_CUSTOM,
|
||||
WTAP_OPTTYPE_STRUCTURED,
|
||||
0,
|
||||
idb_filter_dup,
|
||||
idb_filter_free
|
||||
|
|
|
@ -144,7 +144,7 @@ typedef enum {
|
|||
WTAP_OPTTYPE_STRING,
|
||||
WTAP_OPTTYPE_IPv4,
|
||||
WTAP_OPTTYPE_IPv6,
|
||||
WTAP_OPTTYPE_CUSTOM
|
||||
WTAP_OPTTYPE_STRUCTURED
|
||||
} wtap_opttype_e;
|
||||
|
||||
typedef enum {
|
||||
|
@ -156,7 +156,7 @@ typedef enum {
|
|||
WTAP_OPTTYPE_ALREADY_EXISTS = -5
|
||||
} wtap_opttype_return_val;
|
||||
|
||||
struct wtap_opttype_custom
|
||||
struct wtap_opttype_structured
|
||||
{
|
||||
void* data;
|
||||
guint size;
|
||||
|
@ -171,7 +171,7 @@ typedef union {
|
|||
guint32 ipv4val; /* network byte order */
|
||||
ws_in6_addr ipv6val;
|
||||
char *stringval;
|
||||
struct wtap_opttype_custom customval;
|
||||
struct wtap_opttype_structured structuredval;
|
||||
} wtap_optval_t;
|
||||
|
||||
/*
|
||||
|
@ -456,7 +456,7 @@ wtap_block_get_nth_string_option_value(wtap_block_t block, guint option_id, guin
|
|||
* error code otherwise
|
||||
*/
|
||||
WS_DLL_PUBLIC wtap_opttype_return_val
|
||||
wtap_block_add_custom_option(wtap_block_t block, guint option_id, void* value, size_t value_size);
|
||||
wtap_block_add_structured_option(wtap_block_t block, guint option_id, void* value, size_t value_size);
|
||||
|
||||
/** Set a "custom" option value in a block
|
||||
*
|
||||
|
@ -467,7 +467,7 @@ wtap_block_add_custom_option(wtap_block_t block, guint option_id, void* value, s
|
|||
* error code otherwise
|
||||
*/
|
||||
WS_DLL_PUBLIC wtap_opttype_return_val
|
||||
wtap_block_set_custom_option_value(wtap_block_t block, guint option_id, void* value);
|
||||
wtap_block_set_structured_option_value(wtap_block_t block, guint option_id, void* value);
|
||||
|
||||
/** Get a "custom" option value from a block
|
||||
*
|
||||
|
@ -478,7 +478,7 @@ wtap_block_set_custom_option_value(wtap_block_t block, guint option_id, void* va
|
|||
* error code otherwise
|
||||
*/
|
||||
WS_DLL_PUBLIC wtap_opttype_return_val
|
||||
wtap_block_get_custom_option_value(wtap_block_t block, guint option_id, void** value) G_GNUC_WARN_UNUSED_RESULT;
|
||||
wtap_block_get_structured_option_value(wtap_block_t block, guint option_id, void** value) G_GNUC_WARN_UNUSED_RESULT;
|
||||
|
||||
/** Remove an option from a block
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue