conversation: Add CE_INT

Add a plain integer conversation element type.
This commit is contained in:
Gerald Combs 2023-01-25 14:52:20 -08:00
parent 2a0a6a5256
commit 4cc337383c
3 changed files with 23 additions and 0 deletions

View File

@ -143,6 +143,7 @@ conversation_element_list_name(wmem_allocator_t *allocator, conversation_element
"string",
"uint",
"uint64",
"int",
};
char *sep = "";
wmem_strbuf_t *conv_hash_group = wmem_strbuf_new(allocator, "");
@ -195,6 +196,9 @@ static char* conversation_element_list_values(conversation_element_t *elements)
case CE_UINT64:
g_string_append_printf(value_str, "%" G_GUINT64_FORMAT, cur_el->uint64_val);
break;
case CE_INT:
g_string_append_printf(value_str, "%d", cur_el->int_val);
break;
}
}
return g_string_free(value_str, FALSE);
@ -368,6 +372,11 @@ conversation_hash_element_list(gconstpointer v)
tmp_addr.data = &element->uint64_val;
hash_val = add_address_to_hash(hash_val, &tmp_addr);
break;
case CE_INT:
tmp_addr.len = (int) sizeof(element->int_val);
tmp_addr.data = &element->int_val;
hash_val = add_address_to_hash(hash_val, &tmp_addr);
break;
case CE_CONVERSATION_TYPE:
tmp_addr.len = (int) sizeof(element->conversation_type_val);
tmp_addr.data = &element->conversation_type_val;
@ -426,6 +435,11 @@ conversation_match_element_list(gconstpointer v1, gconstpointer v2)
return FALSE;
}
break;
case CE_INT:
if (element1->int_val != element2->int_val) {
return FALSE;
}
break;
case CE_CONVERSATION_TYPE:
if (element1->conversation_type_val != element2->conversation_type_val) {
return FALSE;

View File

@ -154,6 +154,7 @@ typedef enum {
CE_STRING, /* string */
CE_UINT, /* unsigned integer not representing a port */
CE_UINT64, /* 64-bit unsigned integer */
CE_INT, /* signed integer */
} conversation_element_type;
/**
@ -186,6 +187,7 @@ typedef struct conversation_element {
const char *str_val;
unsigned int uint_val;
uint64_t uint64_val;
int int_val;
};
} conversation_element_t;

View File

@ -37,6 +37,7 @@ fill_named_table(gpointer key, gpointer value _U_, gpointer user_data)
int string_count = 1;
int uint_count = 1;
int uint64_count = 1;
int int_count = 1;
for (const conversation_element_t *cur_el = elements; ; cur_el++) {
QString title;
switch (cur_el->type) {
@ -55,6 +56,9 @@ fill_named_table(gpointer key, gpointer value _U_, gpointer user_data)
case CE_UINT64:
title = QString("UInt64 %1").arg(uint64_count++);
break;
case CE_INT:
title = QString("UInt %1").arg(int_count++);
break;
case CE_CONVERSATION_TYPE:
html_table->append(QString("<th>Endpoint</th>"));
goto title_done;
@ -86,6 +90,9 @@ title_done:
case CE_UINT64:
val = QString::number(cur_el->uint64_val);
break;
case CE_INT:
val = QString::number(cur_el->int_val);
break;
case CE_CONVERSATION_TYPE:
html_table->append(QString("<td>%1</td>").arg(QString::number(cur_el->conversation_type_val)));
goto val_done;