Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Functions
semcheck.h File Reference
#include "dfilter-int.h"

Go to the source code of this file.

Functions

bool dfw_semcheck (dfwork_t *dfw)
 Perform semantic checking on a filter expression.
 
ftenum_t check_arithmetic (dfwork_t *dfw, stnode_t *st_node, ftenum_t logical_ftype)
 Checks arithmetic operations.
 
ftenum_t check_function (dfwork_t *dfw, stnode_t *st_node, ftenum_t logical_ftype)
 Checks if a function call is valid based on its parameters.
 
ftenum_t check_slice (dfwork_t *dfw, stnode_t *st, ftenum_t logical_ftype)
 Checks if a slice can be resolved and returns its logical field type.
 
void resolve_unparsed (dfwork_t *dfw, stnode_t *st, bool strict)
 Resolve an unparsed node in a display filter expression.
 
ftenum_t get_logical_ftype (dfwork_t *dfw, stnode_t *st_node)
 Retrieves the logical field type for a given node.
 
bool compatible_ftypes (ftenum_t a, ftenum_t b)
 Checks if two field types are compatible.
 

Detailed Description

Wireshark - Network traffic analyzer By Gerald Combs geral.nosp@m.d@wi.nosp@m.resha.nosp@m.rk.o.nosp@m.rg Copyright 2001 Gerald Combs

SPDX-License-Identifier: GPL-2.0-or-later

Function Documentation

◆ check_arithmetic()

ftenum_t check_arithmetic ( dfwork_t dfw,
stnode_t st_node,
ftenum_t  logical_ftype 
)

Checks arithmetic operations.

Parameters
dfwPointer to the current dissection work context.
st_nodePointer to the syntax tree node representing the operation.
logical_ftypeThe logical type of the operation.

◆ check_function()

ftenum_t check_function ( dfwork_t dfw,
stnode_t st_node,
ftenum_t  logical_ftype 
)

Checks if a function call is valid based on its parameters.

Validates that the number of arguments in a function call matches the expected range and calls the appropriate semantic check function for the function.

Parameters
dfwThe current state of the dissection work.
st_nodeThe syntax tree node representing the function call.
logical_ftypeThe logical type of the function.
Returns
ftenum_t The result of the semantic check.

◆ check_slice()

ftenum_t check_slice ( dfwork_t dfw,
stnode_t st,
ftenum_t  logical_ftype 
)

Checks if a slice can be resolved and returns its logical field type.

This function resolves an unparsed node and determines the logical field type of the sliced entity.

Parameters
dfwThe current dissection work context.
stThe syntax tree node to check.
logical_ftypeThe logical field type of the sliced entity.
Returns
ftenum_t The resolved logical field type or FT_NONE if not applicable.

◆ compatible_ftypes()

bool compatible_ftypes ( ftenum_t  a,
ftenum_t  b 
)

Checks if two field types are compatible.

This function determines whether two field types can be compared or used together in a dissector filter expression.

Parameters
aThe first field type to compare.
bThe second field type to compare.
Returns
true if the field types are compatible, false otherwise.

◆ dfw_semcheck()

bool dfw_semcheck ( dfwork_t dfw)

Perform semantic checking on a filter expression.

This function initiates the semantic checking process for a filter expression represented by the given dfwork_t structure. It checks the arithmetic and function calls within the expression to ensure they are semantically valid.

Parameters
dfwPointer to the dfwork_t structure containing the filter expression.
Returns
ftenum_t The result of the semantic check, indicating whether the filter is valid or not.

◆ get_logical_ftype()

ftenum_t get_logical_ftype ( dfwork_t dfw,
stnode_t st_node 
)

Retrieves the logical field type for a given node.

Determines the field type based on the type of the node and its children.

Parameters
dfwThe current working context.
st_nodeThe node to analyze.
Returns
The logical field type.

◆ resolve_unparsed()

void resolve_unparsed ( dfwork_t dfw,
stnode_t st,
bool  strict 
)

Resolve an unparsed node in a display filter expression.

This function attempts to resolve an unparsed node by converting it into a field node if possible. If resolution fails and strict mode is enabled, it raises an error; otherwise, it mutates the node to a literal.

Parameters
dfwThe current display filter work context.
stThe node to be resolved.
strictWhether to raise an error if resolution fails.