]> The Tcpdump Group git mirrors - libpcap/commitdiff
Simplify "portrange" port swapping.
authorDenis Ovsienko <[email protected]>
Wed, 26 Mar 2025 23:30:55 +0000 (23:30 +0000)
committerDenis Ovsienko <[email protected]>
Wed, 26 Mar 2025 23:35:44 +0000 (23:35 +0000)
This generates exactly the same filter program as before.

gencode.c

index 3e80c40f69ee8dc8d0cd1539cac9a0b2df6d90e3..724a65c6b6a23e9da3adb3403bc8106dec6b9275 100644 (file)
--- a/gencode.c
+++ b/gencode.c
@@ -5913,19 +5913,8 @@ gen_portrangeatom(compiler_state_t *cstate, u_int off, bpf_u_int32 v1,
 {
        struct block *b1, *b2;
 
-       if (v1 > v2) {
-               /*
-                * Reverse the order of the ports, so v1 is the lower one.
-                */
-               bpf_u_int32 vtemp;
-
-               vtemp = v1;
-               v1 = v2;
-               v2 = vtemp;
-       }
-
-       b1 = gen_cmp_ge(cstate, OR_TRAN_IPV4, off, BPF_H, v1);
-       b2 = gen_cmp_le(cstate, OR_TRAN_IPV4, off, BPF_H, v2);
+       b1 = gen_cmp_ge(cstate, OR_TRAN_IPV4, off, BPF_H, min(v1, v2));
+       b2 = gen_cmp_le(cstate, OR_TRAN_IPV4, off, BPF_H, max(v1, v2));
 
        gen_and(b1, b2);
 
@@ -6021,19 +6010,8 @@ gen_portrangeatom6(compiler_state_t *cstate, u_int off, bpf_u_int32 v1,
 {
        struct block *b1, *b2;
 
-       if (v1 > v2) {
-               /*
-                * Reverse the order of the ports, so v1 is the lower one.
-                */
-               bpf_u_int32 vtemp;
-
-               vtemp = v1;
-               v1 = v2;
-               v2 = vtemp;
-       }
-
-       b1 = gen_cmp_ge(cstate, OR_TRAN_IPV6, off, BPF_H, v1);
-       b2 = gen_cmp_le(cstate, OR_TRAN_IPV6, off, BPF_H, v2);
+       b1 = gen_cmp_ge(cstate, OR_TRAN_IPV6, off, BPF_H, min(v1, v2));
+       b2 = gen_cmp_le(cstate, OR_TRAN_IPV6, off, BPF_H, max(v1, v2));
 
        gen_and(b1, b2);