Builder libpcap-solaris11-sparc Build #65
Results:
Build successful
SourceStamp:
| Project | libpcap |
| Repository | https://git.tcpdump.org/libpcap |
| Branch | master |
| Revision | 730a8dbf94b65cd4b6b8f712895622c846b7eb20 |
| Got Revision | 730a8dbf94b65cd4b6b8f712895622c846b7eb20 |
| Changes | 6 changes |
BuildSlave:
unstable11sReason:
The SingleBranchScheduler scheduler named 'schedule-libpcap-solaris11-sparc' triggered this build
Steps and Logfiles:
Build Properties:
| Name | Value | Source |
|---|---|---|
| branch | master | Build |
| builddir | /export/home/buildbot/slave/libpcap-solaris11-sparc | slave |
| buildername | libpcap-solaris11-sparc | Builder |
| buildnumber | 65 | Build |
| codebase | Build | |
| got_revision | 730a8dbf94b65cd4b6b8f712895622c846b7eb20 | Git |
| project | libpcap | Build |
| repository | https://git.tcpdump.org/libpcap | Build |
| revision | 730a8dbf94b65cd4b6b8f712895622c846b7eb20 | Build |
| scheduler | schedule-libpcap-solaris11-sparc | Scheduler |
| slavename | unstable11s | BuildSlave |
| workdir | /export/home/buildbot/slave/libpcap-solaris11-sparc | slave (deprecated) |
Forced Build Properties:
| Name | Label | Value |
|---|
Responsible Users:
- Denis Ovsienkodenis@ovsienko.info
Timing:
| Start | Wed Nov 5 15:57:54 2025 |
| End | Wed Nov 5 19:14:09 2025 |
| Elapsed | 3 hrs, 16 mins, 14 secs |
All Changes:
:
Change #247686
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:38:19 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision a821648ddcea7b55484097e4db5406aefbaba100 Comments
TESTrun: Test proto-unqualified "(host|net)" better. The existing tests that mix "ip host IPV4ADDR" and "host IPV4ADDR" etc. on DLT_RAW and declare the same optimized filter program do not cover the problem space well enough. One problem with that is such blocks cannot declare an unoptimized filter program because in the unoptimized space the proto-qualified form does not contain any ARP/RARP branches, but proto-unqualified form contains them as unreachable instructions. Another problem is that this way it is impossible to verify that the proto-unqualified form matches ARP and ARP under right conditions. Thus move the proto-unqualified aliases to their own test blocks and use a DLT that supports all the implied protocols, and many others -- this way the test proves that the implicit set of protocols extends as far as it is supposed to extend, and no further. Limit the new blocks to lowercase hostnames only, and repeat a quarter (with a fixed dir qualifier) of the new blocks for DLT_RAW to cover the elimination of ARP and RARP in greater detail for the next commits. This adds the following accept test blocks: * net_ipv4addr_16bit_IP_OVER_FC (from ip_net_addr) * src_net_ipv4addr_24bit_IP_OVER_FC (from ip_src_net_addr) * dst_net_ipv4addr_8bit_IP_OVER_FC (from ip_dst_net_addr_8) * src_and_dst_net_ipv4addr_12bit_IP_OVER_FC (new) * src_and_dst_net_ipv4addr_12bit_RAW (new) * net_ipv6addr_IP_OVER_FC (from ip6_net) * src_net_ipv6addr_IP_OVER_FC (from ip6_src_net) * dst_net_ipv6addr_IP_OVER_FC (new) * src_and_dst_net_ipv6addr_IP_OVER_FC (new) * src_and_dst_net_ipv6addr_RAW (new) * net_name_EN10MB (new) * src_net_name_EN10MB (from ip_src_net_name and ip_src_net_NAME) * dst_net_name_EN10MB (from ip_dst_net_name and ip_dst_net_NAME) * src_and_dst_net_name_EN10MB (new) * src_and_dst_net_name_RAW (new) * host_ipv4addr_FDDI (from ip_host_addr) * src_host_ipv4addr_FDDI (from ip_src_host_addr) * dst_host_ipv4addr_FDDI (from ip_dst_host_addr) * src_and_dst_host_ipv4addr_FDDI (new) * src_and_dst_host_ipv4addr_RAW (new) * host_ipv6addr_IEEE802_11 (from ip6_host_addr) * src_host_ipv6addr_IEEE802_11 (from ip6_src_host_addr) * dst_host_ipv6addr_IEEE802_11 (from ip6_dst_host_addr) * src_and_dst_host_ipv6addr_IEEE802_11 (new) * src_and_dst_host_ipv6addr_RAW (new) * host_noeth_ipv4_noipv6_EN10MB (from ip_host_name/ip_host_NAME) * host_noeth_noipv4_ipv6_EN10MB (from ip6_host_name/ip6_host_NAME) * host_noeth_ipv4_ipv6_EN10MB (new) * src_host_noeth_ipv4_noipv6_EN10MB (from ip_src_host_name and ip_src_host_NAME) * src_host_noeth_noipv4_ipv6_EN10MB (from ip6_src_host_name and ip6_src_host_NAME) * src_host_noeth_ipv4_ipv6_EN10MB (new) * dst_host_noeth_ipv4_noipv6_EN10MB (from ip_dst_host_name and ip_dst_host_NAME) * dst_host_noeth_noipv4_ipv6_EN10MB (from ip6_dst_host_name and ip6_dst_host_NAME) * dst_host_noeth_ipv4_ipv6_EN10MB (new) * src_and_dst_host_noeth_ipv4_noipv6_EN10MB (new) * src_and_dst_host_noeth_noipv4_ipv6_EN10MB (new) * src_and_dst_host_noeth_ipv4_ipv6_EN10MB (new) * src_and_dst_host_noeth_ipv4_noipv6_RAW (new) * src_and_dst_host_noeth_noipv4_ipv6_RAW (new) * src_and_dst_host_noeth_ipv4_ipv6_RAW (new)
Changed files
- testprogs/TESTrun
Change #247687
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:44:08 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision e42274711bfd0ef4a7fcf4d9c0105fccd741e494 Comments
TESTrun: Run most accept tests both optimized and not. In the accept block structure make sure both "opt" and "unopt" are always _declared_ (i.e. Perl hash keys present), and introduce "optunopt" as a shorthand to _define_ (i.e. to set to something other than Perl undef) both values at once. Always require "unopt" to be _defined_ because that's the least of what can be expected from an accept test; allow "opt" to be _declared_ as undef because several accept tests cannot run optimized. Require all _defined_ results to be non-empty; require "opt" and "unopt" not to be equal if each has been defined explicitly rather than expanded from "optunopt". Convert most (505) accept blocks to define "optunopt", in the other 145 blocks define both "opt" and "unopt", in the remaining 11 blocks define "unopt" and specify "opt" as undef.
Changed files
- testprogs/TESTrun
Change #247688
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:45:07 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision 39927bb09f5f12059834d99f6268adc7ab21dbb7 Comments
Have gen_and(), gen_or() and gen_not() return the result. Also always use the result, except a few times for gen_not(). This rewrites a lot of invocations, but preserves the logic, so there are no changes to the tests.
Changed files
- gencode.c
- gencode.h
- grammar.y.in
Change #247689
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:45:07 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision 1687065d1653dd004e51c3bf16436c0d2fde915c Comments
Reduce AND/OR on a Boolean constant early. In the current implementation gen_true() produces "ld #0x0; jeq #0x0" and gen_false() produces "ld #0x1; jeq #0x0". When such a block becomes an argument of gen_and() or gen_or(), it is not quite trivial to detect the original Boolean constant behind it, so instead of potentially reducing the logical AND/OR to exactly one of its arguments the functions always combine both blocks in a generic manner. This accounts to at least a fraction of dead branches in some unoptimized filter programs. Subsequently the optimizer (if it is available for the DLT and enabled by the user) eliminates many (but not all, see GH #1022) of such no-op instructions, but it would be better not to produce them in the first place. As the earlier commits 8620df1, 8788f68 and 6ffae89 show, such reductions of a few ANDs indeed have the desired effect, but depend on specialized code outwith gen_and(). To cover all such use cases using simpler code, generalize the solution. Add another field to struct block to convey the Boolean meaning of a block (definitely true, definitely false, something else), and process that in gen_uncond(), gen_and(), gen_or() and gen_not(). This conflicts with the old style of taking the result of gen_and() and gen_or() from the second argument, so apply PCAP_WARN_UNUSED_RESULT and add comments. As the affected tests show, this has varying effect on the number of instructions: DLT_RAW "host IPV4ADDR" (-12 unopt.) DLT_RAW "net IPV4ADDR" (-16 unopt.) DLT_RAW "net NAME" (-12 unopt.) DLT_RAW "(arp|rarp) host IPV4ADDR" (-4 unopt.) DLT_EN10MB "vxlan [NUM]" (-10 unopt.) DLT_EN10MB "vxlan and vxlan" (-7 opt. and -20 unopt.) DLT_EN10MB "geneve [NUM]" (-21 opt. and -21 unopt.) DLT_EN10MB "geneve and geneve" (-42 opt. and -42 unopt.) DLT_IPV4 "ip multicast" (-1 opt. and -2 unopt.) DLT_IPV4 "ip broadcast" (-1 opt. and -2 unopt.) DLT_IPV6 "ip6 multicast" (-1 opt. and -2 unopt.) DLT_IPV6 "icmp6[NUMBER] != NUMBER" (-1 opt. and -1 unopt.) There is no change in any "host NAME" accept blocks: the conditional q.proto expansion in gen_scode() case Q_HOST eliminates both ARP and RARP already.
Changed files
- gencode.c
- gencode.h
- testprogs/TESTrun
Change #247690
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:45:07 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision 0434bf6060d1b3082074f31bf1173285cfdabef0 Comments
In gen_scode() always leave the proto qualifier intact. The only effect of the conditional override that expands Q_DEFAULT to Q_IP and Q_IPV6 (but not Q_ARP or Q_RARP) used to be absence of the ARP and RARP dead branches in the unoptimized filter program for a number of DLTs. Since this is now a particular case of the generic AND/OR reduction, remove the custom code -- this produces exactly the same filter programs, so there is no change in any tests.
Changed files
- gencode.c
Change #247691
Category libpcap Changed by Denis Ovsienko <denis@ovsienko.info> Changed at Wed 05 Nov 2025 10:45:07 Repository https://git.tcpdump.org/libpcap Project libpcap Branch master Revision 730a8dbf94b65cd4b6b8f712895622c846b7eb20 Comments
Remove the earlier IPv4/IPv6-specific AND reductions. This code now is a particular case of what gen_and() does, so there is no point in keeping it. There is no change in any tests because the expected optimizations hold as before.
Changed files
- gencode.c