]> The Tcpdump Group git mirrors - libpcap/commitdiff
TESTrun: Add more filter tests for "broadcast" and "multicast".
authorDenis Ovsienko <[email protected]>
Sun, 26 Jan 2025 14:00:54 +0000 (14:00 +0000)
committerDenis Ovsienko <[email protected]>
Thu, 30 Jan 2025 19:45:58 +0000 (19:45 +0000)
These keywords generate the instructions differently depending on the
DLT, so add more tests to cover the Q_LINK case in gen_broadcast() and
gen_multicast() completely.  Add a few aliases for "link" where it fits.

testprogs/TESTrun

index a79a18fe5a00c6e21801a29522dd37f9c4126701..304445640d2f02c49d20cbf348c90d7e1b846d60 100755 (executable)
@@ -1584,11 +1584,165 @@ my %accept_blocks = (
                        EOF
        }, # atm_metaconnect
 
                        EOF
        }, # atm_metaconnect
 
+       # Do not permutate all possible aliases for "link", just the ones that
+       # obviously make sense for the DLT.
+       arcnet_broadcast_multicast => {
+               DLT => 'ARCNET',
+               expr => 'broadcast',
+               aliases => [
+                       'multicast',
+                       'link broadcast',
+                       'link multicast',
+               ],
+               unopt => <<~'EOF',
+                       (000) ldb      [1]
+                       (001) jeq      #0x0             jt 2    jf 3
+                       (002) ret      #262144
+                       (003) ret      #0
+                       EOF
+       }, # arcnet_broadcast_multicast
+       fddi_broadcast => {
+               DLT => 'FDDI',
+               expr => 'broadcast',
+               aliases => [
+                       'fddi broadcast',
+                       'link broadcast',
+               ],
+               unopt => <<~'EOF',
+                       (000) ld       [3]
+                       (001) jeq      #0xffffffff      jt 2    jf 5
+                       (002) ldh      [1]
+                       (003) jeq      #0xffff          jt 4    jf 5
+                       (004) ret      #262144
+                       (005) ret      #0
+                       EOF
+       }, # fddi_broadcast
+       fddi_multicast => {
+               DLT => 'FDDI',
+               expr => 'multicast',
+               aliases => [
+                       'fddi multicast',
+                       'link multicast',
+               ],
+               unopt => <<~'EOF',
+                       (000) ldb      [1]
+                       (001) jset     #0x1             jt 2    jf 3
+                       (002) ret      #262144
+                       (003) ret      #0
+                       EOF
+       }, # fddi_multicast
+       ieee802_broadcast => {
+               DLT => 'IEEE802',
+               expr => 'broadcast',
+               aliases => [
+                       'tr broadcast',
+                       'link broadcast',
+               ],
+               unopt => <<~'EOF',
+                       (000) ld       [4]
+                       (001) jeq      #0xffffffff      jt 2    jf 5
+                       (002) ldh      [2]
+                       (003) jeq      #0xffff          jt 4    jf 5
+                       (004) ret      #262144
+                       (005) ret      #0
+                       EOF
+       }, # ieee802_broadcast
+       ieee802_multicast => {
+               DLT => 'IEEE802',
+               expr => 'multicast',
+               aliases => [
+                       'tr multicast',
+                       'link multicast',
+               ],
+               unopt => <<~'EOF',
+                       (000) ldb      [2]
+                       (001) jset     #0x1             jt 2    jf 3
+                       (002) ret      #262144
+                       (003) ret      #0
+                       EOF
+       }, # ieee802_multicast
+       ieee802_11_broadcast => {
+               DLT => 'IEEE802_11',
+               expr => 'broadcast',
+               aliases => [
+                       'wlan broadcast',
+                       'ether broadcast',
+                       'link broadcast',
+               ],
+               opt => <<~'EOF',
+                       (000) ldb      [0]
+                       (001) jset     #0x4             jt 14   jf 2
+                       (002) jset     #0x8             jt 3    jf 9
+                       (003) ldb      [1]
+                       (004) jset     #0x1             jt 5    jf 9
+                       (005) ld       [18]
+                       (006) jeq      #0xffffffff      jt 7    jf 14
+                       (007) ldh      [16]
+                       (008) jeq      #0xffff          jt 13   jf 14
+                       (009) ld       [6]
+                       (010) jeq      #0xffffffff      jt 11   jf 14
+                       (011) ldh      [4]
+                       (012) jeq      #0xffff          jt 13   jf 14
+                       (013) ret      #262144
+                       (014) ret      #0
+                       EOF
+       }, # ieee802_11_broadcast
+       ieee802_11_multicast => {
+               DLT => 'IEEE802_11',
+               expr => 'multicast',
+               aliases => [
+                       'wlan multicast',
+                       'ether multicast',
+                       'link multicast',
+               ],
+               opt => <<~'EOF',
+                       (000) ldb      [0]
+                       (001) jset     #0x4             jt 10   jf 2
+                       (002) jset     #0x8             jt 3    jf 7
+                       (003) ldb      [1]
+                       (004) jset     #0x1             jt 5    jf 7
+                       (005) ldb      [16]
+                       (006) jset     #0x1             jt 9    jf 10
+                       (007) ldb      [4]
+                       (008) jset     #0x1             jt 9    jf 10
+                       (009) ret      #262144
+                       (010) ret      #0
+                       EOF
+       }, # ieee802_11_multicast
+       ip_over_fc_broadcast => {
+               DLT => 'IP_OVER_FC',
+               expr => 'broadcast',
+               aliases => ['link broadcast'],
+               unopt => <<~'EOF',
+                       (000) ld       [4]
+                       (001) jeq      #0xffffffff      jt 2    jf 5
+                       (002) ldh      [2]
+                       (003) jeq      #0xffff          jt 4    jf 5
+                       (004) ret      #262144
+                       (005) ret      #0
+                       EOF
+       }, # ip_over_fc_broadcast
+       ip_over_fc_multicast => {
+               DLT => 'IP_OVER_FC',
+               expr => 'multicast',
+               aliases => ['link multicast'],
+               opt => <<~'EOF',
+                       (000) ldb      [2]
+                       (001) jset     #0x1             jt 2    jf 3
+                       (002) ret      #262144
+                       (003) ret      #0
+                       EOF
+       }, # ip_over_fc_multicast
+
+
        ether_broadcast => {
                DLT => 'EN10MB',
                snaplen => 16000,
        ether_broadcast => {
                DLT => 'EN10MB',
                snaplen => 16000,
-               expr => 'ether broadcast',
-               aliases => ['broadcast'],
+               expr => 'broadcast',
+               aliases => [
+                       'ether broadcast',
+                       'link broadcast',
+               ],
                opt => <<~'EOF',
                        (000) ld       [2]
                        (001) jeq      #0xffffffff      jt 2    jf 5
                opt => <<~'EOF',
                        (000) ld       [2]
                        (001) jeq      #0xffffffff      jt 2    jf 5
@@ -1601,8 +1755,11 @@ my %accept_blocks = (
        ether_multicast => {
                DLT => 'EN10MB',
                snaplen => 16000,
        ether_multicast => {
                DLT => 'EN10MB',
                snaplen => 16000,
-               expr => 'ether multicast',
-               aliases => ['multicast'],
+               expr => 'multicast',
+               aliases => [
+                       'ether multicast',
+                       'link multicast',
+               ],
                opt => <<~'EOF',
                        (000) ldb      [0]
                        (001) jset     #0x1             jt 2    jf 3
                opt => <<~'EOF',
                        (000) ldb      [0]
                        (001) jset     #0x1             jt 2    jf 3
@@ -5921,6 +6078,16 @@ my %reject_tests = (
                expr => 'ip6 host fe80:0:0:0:0:0:0:0:0',
                errstr => 'syntax error',
        },
                expr => 'ip6 host fe80:0:0:0:0:0:0:0:0',
                errstr => 'syntax error',
        },
+       broadcast_not_supported => {
+               DLT => 'SLIP',
+               expr => 'broadcast',
+               errstr => 'not a broadcast link',
+       },
+       multicast_not_supported => {
+               DLT => 'SLIP',
+               expr => 'multicast',
+               errstr => 'link-layer multicast filters supported only on',
+       },
 # This test has been flaky because it depends on an external effect (DNS
 # lookup), which sometimes times out.  Let's disable it until there is a good
 # way to address it.
 # This test has been flaky because it depends on an external effect (DNS
 # lookup), which sometimes times out.  Let's disable it until there is a good
 # way to address it.