]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
[master] LPF now only uses 12-bit value from VLAN TCI for VID
authorThomas Markwalder <tmark@isc.org>
Wed, 23 Sep 2015 13:37:51 +0000 (09:37 -0400)
committerThomas Markwalder <tmark@isc.org>
Wed, 23 Sep 2015 13:37:51 +0000 (09:37 -0400)
    Merges in rt40591.

RELNOTES
common/lpf.c

index f34c82d1b3076698560dd533077c796e128469eb..39c4666dcdc09ab67a7e3bb3edb18490e8c98b6d 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -54,6 +54,13 @@ by Eric Young (eay@cryptsoft.com).
 
                        Changes since 4.3.3
 
+- The linux packet fitler code now correctly treats only least significant
+  12 bits an inbound packet's TCI value as the VLAN id (per IEEE 802.1Q).
+  Prior to this it was using the entire 16 bit value as the VLAN id and
+  incorrectly discarding packets.  Thanks to Jiri Popelka at Red Hat for
+  reporting this issue and supplying its patch.
+  [ISC-Bugs #40591]
+
 - Corrected a static analyzer warning in common/execute.c
   [ISC-Bugs #40374]
 
index 7889b6bbf6f12510533c5adae2f96eebe3e2488f..ee3820b68513774a761e30a3e925658e59210a79 100644 (file)
@@ -422,10 +422,10 @@ ssize_t receive_packet (interface, buf, len, from, hfrom)
                if (cmsg->cmsg_level == SOL_PACKET &&
                    cmsg->cmsg_type == PACKET_AUXDATA) {
                        struct tpacket_auxdata *aux = (void *)CMSG_DATA(cmsg);
-                       /* Discard packets with stripped vlan id */
-
 #ifdef VLAN_TCI_PRESENT
-                       if (aux->tp_vlan_tci != 0)
+                       /* Discard packets with stripped vlan id */
+                       /* VLAN ID is only bottom 12-bits of TCI */
+                       if (aux->tp_vlan_tci & 0x0fff)
                                return 0;
 #endif