diff options
Diffstat (limited to 'epan/dfilter/grammar.lemon')
-rw-r--r-- | epan/dfilter/grammar.lemon | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/epan/dfilter/grammar.lemon b/epan/dfilter/grammar.lemon index 8e4a3ed331..d0b7315f11 100644 --- a/epan/dfilter/grammar.lemon +++ b/epan/dfilter/grammar.lemon @@ -166,6 +166,16 @@ atom(E) ::= IDENTIFIER(F). df_lval_free(F, FALSE); } entity(E) ::= atom(A). { E = A; } +entity(E) ::= REF_OPEN REFERENCE(F) REF_CLOSE. +{ + char *name = df_lval_value(F); + header_field_info *hfinfo = dfilter_resolve_unparsed(dfw, name); + if (hfinfo == NULL) { + dfilter_fail(dfw, "\"%s\" is not a valid protocol or protocol field.", name); + } + E = stnode_new(STTYPE_REFERENCE, hfinfo, df_lval_value(F)); + df_lval_free(F, FALSE); +} entity(E) ::= range(R). { E = R; } entity(E) ::= function(F). { E = F; } |