wireshark/epan/dfilter/sttype-string.c
João Valverde b10db887ce dfilter: Remove unparsed syntax type and RHS literal bias
This removes unparsed name resolution during the semantic
check because it feels like a hack to work around limitations
in the language syntax, that should be solved at the lexical
level instead.

We were interpreting unparsed differently on the LHS and RHS.
Now an unparsed value is always a field if it matches a
registered field name (this matches the implementation in 3.6
and before).

This requires tightening a bit the allowed filter names for
protocols to avoid some common and potentially weird conflicting
cases.

Incidentally this extends set grammar to accept all entities.
That is experimental and may be reverted in the future.
2022-07-02 11:18:20 +01:00

89 lines
1.4 KiB
C

/*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 2001 Gerald Combs
*
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "syntax-tree.h"
#include <wsutil/str_util.h>
static gpointer
string_dup(gconstpointer string)
{
return g_strdup(string);
}
static void
string_free(gpointer value)
{
g_free(value);
}
static char *
string_tostr(const void *data, gboolean pretty _U_)
{
return g_strdup(data);
}
static gpointer
gstring_dup(gconstpointer value)
{
const GString *gs = value;
return g_string_new_len(gs->str, gs->len);
}
static void
gstring_free(gpointer value)
{
g_string_free(value, TRUE);
}
static char *
gstring_tostr(const void *value, gboolean pretty _U_)
{
const GString *gs = value;
return ws_escape_string_len(NULL, gs->str, gs->len, false);
}
void
sttype_register_string(void)
{
static sttype_t string_type = {
STTYPE_STRING,
"STRING",
NULL,
gstring_free,
gstring_dup,
gstring_tostr
};
static sttype_t literal_type = {
STTYPE_LITERAL,
"LITERAL",
NULL,
string_free,
string_dup,
string_tostr
};
sttype_register(&string_type);
sttype_register(&literal_type);
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 8
* tab-width: 8
* indent-tabs-mode: t
* End:
*
* vi: set shiftwidth=8 tabstop=8 noexpandtab:
* :indentSize=8:tabSize=8:noTabs=false:
*/