mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
parent
5ff99f7d0b
commit
f3cbfa9c25
17 changed files with 147 additions and 2 deletions
16
NEWS
16
NEWS
|
@ -135,6 +135,22 @@ New Functionality
|
||||||
- The QUIC analyzer has been extended to support analyzing QUIC Version 2
|
- The QUIC analyzer has been extended to support analyzing QUIC Version 2
|
||||||
INITIAL packets (RFC 9369).
|
INITIAL packets (RFC 9369).
|
||||||
|
|
||||||
|
- Conditional directives (``@if``, ``@ifdef``, ``@ifndef``, ``@else`` and
|
||||||
|
``@endif``) can now be placed within a record's definition to conditionally
|
||||||
|
define or extend a record type's fields.
|
||||||
|
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@if ( cond )
|
||||||
|
d: double;
|
||||||
|
@else
|
||||||
|
d: count;
|
||||||
|
@endif
|
||||||
|
};
|
||||||
|
|
||||||
|
Note that generally you should prefer record extension in conditionally loaded
|
||||||
|
scripts rather than using conditional directives in the original record definition.
|
||||||
|
|
||||||
|
|
||||||
Changed Functionality
|
Changed Functionality
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -1319,9 +1319,9 @@ type_list:
|
||||||
;
|
;
|
||||||
|
|
||||||
type_decl_list:
|
type_decl_list:
|
||||||
type_decl_list type_decl
|
type_decl_list conditional_list type_decl
|
||||||
{
|
{
|
||||||
$1->push_back($2);
|
$1->push_back($3);
|
||||||
}
|
}
|
||||||
|
|
|
|
||||||
{
|
{
|
||||||
|
|
1
testing/btest/Baseline/language.at-if-record-2/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-2/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
6
testing/btest/Baseline/language.at-if-record-2/.stdout
Normal file
6
testing/btest/Baseline/language.at-if-record-2/.stdout
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[d] = [type_name=double, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[s] = [type_name=string, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record-3/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-3/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
5
testing/btest/Baseline/language.at-if-record-3/.stdout
Normal file
5
testing/btest/Baseline/language.at-if-record-3/.stdout
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[s] = [type_name=string, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record-4/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-4/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
6
testing/btest/Baseline/language.at-if-record-4/.stdout
Normal file
6
testing/btest/Baseline/language.at-if-record-4/.stdout
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[s] = [type_name=string, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[z] = [type_name=addr, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record-5/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-5/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
5
testing/btest/Baseline/language.at-if-record-5/.stdout
Normal file
5
testing/btest/Baseline/language.at-if-record-5/.stdout
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=0, optional=T],
|
||||||
|
[d] = [type_name=double, log=F, value=<uninitialized>, default_val=0.0, optional=T]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record-6/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-6/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
5
testing/btest/Baseline/language.at-if-record-6/.stdout
Normal file
5
testing/btest/Baseline/language.at-if-record-6/.stdout
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[d] = [type_name=double, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record-7/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record-7/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
5
testing/btest/Baseline/language.at-if-record-7/.stdout
Normal file
5
testing/btest/Baseline/language.at-if-record-7/.stdout
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[d] = [type_name=double, log=F, value=<uninitialized>, default_val=42.0, optional=T]
|
||||||
|
}
|
1
testing/btest/Baseline/language.at-if-record/.stderr
Normal file
1
testing/btest/Baseline/language.at-if-record/.stderr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
5
testing/btest/Baseline/language.at-if-record/.stdout
Normal file
5
testing/btest/Baseline/language.at-if-record/.stdout
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
r, {
|
||||||
|
[c] = [type_name=count, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F],
|
||||||
|
[d] = [type_name=double, log=F, value=<uninitialized>, default_val=<uninitialized>, optional=F]
|
||||||
|
}
|
85
testing/btest/language/at-if-record.zeek
Normal file
85
testing/btest/language/at-if-record.zeek
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
# @TEST-DOC: Test that @if conditionals are allowed within record definitions.
|
||||||
|
#
|
||||||
|
# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1"
|
||||||
|
# @TEST-EXEC: zeek -b %INPUT common.zeek
|
||||||
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff .stdout
|
||||||
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff .stderr
|
||||||
|
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@if ( T )
|
||||||
|
d: double;
|
||||||
|
@endif
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@if ( T )
|
||||||
|
d: double;
|
||||||
|
s: string;
|
||||||
|
@endif
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@if ( F )
|
||||||
|
d: double;
|
||||||
|
@else
|
||||||
|
s: string;
|
||||||
|
@endif
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@if ( F )
|
||||||
|
d: double;
|
||||||
|
@else
|
||||||
|
s: string;
|
||||||
|
@endif
|
||||||
|
z: addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
type r: record {};
|
||||||
|
|
||||||
|
redef record r += {
|
||||||
|
c: count &default=0;
|
||||||
|
@if ( T )
|
||||||
|
d: double &default=0.0;
|
||||||
|
@endif
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
# Pretty strange usage.
|
||||||
|
@if ( T )
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@endif
|
||||||
|
d: double;
|
||||||
|
};
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
# Even more strange.
|
||||||
|
@if ( T )
|
||||||
|
type r: record {
|
||||||
|
c: count;
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ( F )
|
||||||
|
d: double &default=1.0;;
|
||||||
|
};
|
||||||
|
@else
|
||||||
|
d: double &default=42.0;
|
||||||
|
};
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
# @TEST-START-FILE common.zeek
|
||||||
|
event zeek_init()
|
||||||
|
{
|
||||||
|
print "r", record_fields(r);
|
||||||
|
}
|
||||||
|
# @TEST-END-FILE
|
Loading…
Add table
Add a link
Reference in a new issue