diff mbox

vlan: Make it possible to add vlan with id 4095

Message ID 20120928123258.9454.95197.stgit@localhost.localdomain
State Rejected, archived
Delegated to: David Miller
Headers show

Commit Message

Paulius Zaleckas Sept. 28, 2012, 12:32 p.m. UTC
vconfig help tells that vlan_id should be 0-4095, but fails
with 4095.

There is an off-by-one bug while evaluating vlan_id.
Fix it by evaluating against count(4096), not mask(0x0fff = 4095).

Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
---

 net/8021q/vlan.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Paulius Zaleckas Sept. 28, 2012, 1:29 p.m. UTC | #1
On 09/28/2012 03:32 PM, Paulius Zaleckas wrote:
> vconfig help tells that vlan_id should be 0-4095, but fails
> with 4095.
>
> There is an off-by-one bug while evaluating vlan_id.
> Fix it by evaluating against count(4096), not mask(0x0fff = 4095).

On the other hand 4095 is reserved by 802.1Q...

http://en.wikipedia.org/wiki/IEEE_802.1Q
VLAN Identifier (VID): a 12-bit field specifying the VLAN to which the 
frame belongs. The hexadecimal values of 0x000 and 0xFFF are reserved. 
All other values may be used as VLAN identifiers, allowing up to 4,094 
VLANs. The reserved value 0x000 indicates that the frame does not belong 
to any VLAN; in this case, the 802.1Q tag specifies only a priority and 
is referred to as a priority tag.

So maybe we should fix vconfig help?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Sept. 28, 2012, 5:44 p.m. UTC | #2
From: Paulius Zaleckas <paulius.zaleckas@gmail.com>
Date: Fri, 28 Sep 2012 15:32:58 +0300

> vconfig help tells that vlan_id should be 0-4095, but fails
> with 4095.
> 
> There is an off-by-one bug while evaluating vlan_id.
> Fix it by evaluating against count(4096), not mask(0x0fff = 4095).
> 
> Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>

Awesome, we don't need VXVLAN any more after this fix.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Dumazet Sept. 28, 2012, 5:55 p.m. UTC | #3
On Fri, 2012-09-28 at 13:44 -0400, David Miller wrote:

> 
> Awesome, we don't need VXVLAN any more after this fix.

Hey, I guess you meant to send this to G+, not netdev ;)



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jan Engelhardt Nov. 12, 2012, 6:42 p.m. UTC | #4
On Friday 2012-09-28 19:44, David Miller wrote:

>From: Paulius Zaleckas <paulius.zaleckas@gmail.com>
>Date: Fri, 28 Sep 2012 15:32:58 +0300
>
>> vconfig help tells that vlan_id should be 0-4095, but fails
>> with 4095.
>> 
>> There is an off-by-one bug while evaluating vlan_id.
>> Fix it by evaluating against count(4096), not mask(0x0fff = 4095).
>> 
>> Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
>
>Awesome, we don't need VXVLAN any more after this fix.

You mean because the special 0xfff value could indicate "here's more 
headers"? Sounds like a plan.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ben Greear Nov. 12, 2012, 7:01 p.m. UTC | #5
On 11/12/2012 10:42 AM, Jan Engelhardt wrote:
> On Friday 2012-09-28 19:44, David Miller wrote:
>
>> From: Paulius Zaleckas <paulius.zaleckas@gmail.com>
>> Date: Fri, 28 Sep 2012 15:32:58 +0300
>>
>>> vconfig help tells that vlan_id should be 0-4095, but fails
>>> with 4095.
>>>
>>> There is an off-by-one bug while evaluating vlan_id.
>>> Fix it by evaluating against count(4096), not mask(0x0fff = 4095).
>>>
>>> Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
>>
>> Awesome, we don't need VXVLAN any more after this fix.
>
> You mean because the special 0xfff value could indicate "here's more
> headers"? Sounds like a plan.

You can't just use reserved values...they are for the standards writers
in case they ever need to officially extend the 802.1q spec somehow.

If you use it for non-standard purposes, you can set up conflicts with
future standards.

Thanks,
Ben
Jan Engelhardt Nov. 12, 2012, 8:37 p.m. UTC | #6
On Monday 2012-11-12 20:01, Ben Greear wrote:
>>>
>>> Awesome, we don't need VXVLAN any more after this fix.
>>
>> You mean because the special 0xfff value could indicate "here's more
>> headers"? Sounds like a plan.
>
> You can't just use reserved values...

Indeed not; I was just implicitly thinking of the 802.1Q standard
comittee getting an impetus from the public disgust against VXVLAN to
define 0xfff with extensions that allow for e.g. stacking, making
VXVLAN redundant and obsolete. :)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 9096bcb..9e528bf 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -199,7 +199,7 @@  static int register_vlan_device(struct net_device *real_dev, u16 vlan_id)
 	char name[IFNAMSIZ];
 	int err;
 
-	if (vlan_id >= VLAN_VID_MASK)
+	if (vlan_id >= VLAN_N_VID)
 		return -ERANGE;
 
 	err = vlan_check_real_dev(real_dev, vlan_id);