netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: fix checking boundary of valid vlan id
@ 2012-12-30  6:28 akong
  2012-12-30  6:39 ` Amos Kong
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: akong @ 2012-12-30  6:28 UTC (permalink / raw)
  To: netdev; +Cc: davem

From: Amos Kong <akong@redhat.com>

4096 is not a valid vlan id.

Signed-off-by: Amos Kong <akong@redhat.com>
---
 net/bridge/netfilter/ebt_vlan.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/bridge/netfilter/ebt_vlan.c b/net/bridge/netfilter/ebt_vlan.c
index eae67bf..b279ec0 100644
--- a/net/bridge/netfilter/ebt_vlan.c
+++ b/net/bridge/netfilter/ebt_vlan.c
@@ -121,8 +121,8 @@ static int ebt_vlan_mt_check(const struct xt_mtchk_param *par)
 	 * if_vlan.h: VLAN_N_VID 4096. */
 	if (GET_BITMASK(EBT_VLAN_ID)) {
 		if (!!info->id) { /* if id!=0 => check vid range */
-			if (info->id > VLAN_N_VID) {
-				pr_debug("id %d is out of range (1-4096)\n",
+			if (info->id >= VLAN_N_VID) {
+				pr_debug("id %d is out of range (1-4095)\n",
 					 info->id);
 				return -EINVAL;
 			}
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-30  6:28 [PATCH] net: fix checking boundary of valid vlan id akong
@ 2012-12-30  6:39 ` Amos Kong
  2012-12-30  7:40 ` David Miller
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Amos Kong @ 2012-12-30  6:39 UTC (permalink / raw)
  To: netdev; +Cc: davem

On Sun, Dec 30, 2012 at 02:28:51PM +0800, akong@redhat.com wrote:
> From: Amos Kong <akong@redhat.com>
> 
> 4096 is not a valid vlan id.
> 
> Signed-off-by: Amos Kong <akong@redhat.com>
> ---
>  net/bridge/netfilter/ebt_vlan.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/bridge/netfilter/ebt_vlan.c b/net/bridge/netfilter/ebt_vlan.c
> index eae67bf..b279ec0 100644
> --- a/net/bridge/netfilter/ebt_vlan.c
> +++ b/net/bridge/netfilter/ebt_vlan.c
> @@ -121,8 +121,8 @@ static int ebt_vlan_mt_check(const struct xt_mtchk_param *par)
>  	 * if_vlan.h: VLAN_N_VID 4096. */
>  	if (GET_BITMASK(EBT_VLAN_ID)) {
>  		if (!!info->id) { /* if id!=0 => check vid range */
> -			if (info->id > VLAN_N_VID) {
> -				pr_debug("id %d is out of range (1-4096)\n",
> +			if (info->id >= VLAN_N_VID) {
> +				pr_debug("id %d is out of range (1-4095)\n",

Hi David,

4095 is reserved, treat it as invalid here?

   			if (info->id >= VLAN_N_VID - 1) {
   				pr_debug("id %d is out of range (1-4094)\n",


>  					 info->id);
>  				return -EINVAL;
>  			}
> -- 
> 1.7.11.7

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-30  6:28 [PATCH] net: fix checking boundary of valid vlan id akong
  2012-12-30  6:39 ` Amos Kong
@ 2012-12-30  7:40 ` David Miller
  2012-12-30 12:25 ` Florian Westphal
  2013-01-03  0:39 ` Pablo Neira Ayuso
  3 siblings, 0 replies; 9+ messages in thread
From: David Miller @ 2012-12-30  7:40 UTC (permalink / raw)
  To: akong; +Cc: netdev


Please send netfilter patches to the netfilter developers
at netfilter-devel@vger.kernel.org

Thanks.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-30  6:28 [PATCH] net: fix checking boundary of valid vlan id akong
  2012-12-30  6:39 ` Amos Kong
  2012-12-30  7:40 ` David Miller
@ 2012-12-30 12:25 ` Florian Westphal
  2012-12-31 11:36   ` Glen Turner
  2013-01-03  0:39 ` Pablo Neira Ayuso
  3 siblings, 1 reply; 9+ messages in thread
From: Florian Westphal @ 2012-12-30 12:25 UTC (permalink / raw)
  To: akong; +Cc: netdev, davem

akong@redhat.com <akong@redhat.com> wrote:
> From: Amos Kong <akong@redhat.com>
> 
> 4096 is not a valid vlan id.

True.

But why shouldn't users be allowed to check for frames
with reserved value?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-30 12:25 ` Florian Westphal
@ 2012-12-31 11:36   ` Glen Turner
  2012-12-31 17:12     ` Benny Amorsen
  0 siblings, 1 reply; 9+ messages in thread
From: Glen Turner @ 2012-12-31 11:36 UTC (permalink / raw)
  To: Florian Westphal; +Cc: akong, netdev, davem


On 30/12/2012, at 10:55 PM, Florian Westphal wrote:

> akong@redhat.com <akong@redhat.com> wrote:
>> From: Amos Kong <akong@redhat.com>
>> 
>> 4096 is not a valid vlan id.
> 
> True.
> 
> But why shouldn't users be allowed to check for frames
> with reserved value


It may be a valid VLAN ID, or it may not. The meaning of FFF is reserved for vendor use, which doesn't preclude a vendor using it as a (non-interoperable) VLAN identifier. Many vendor's products treat 4096 as they do any other VID.

It's up to Linux if it cares to treat 4096 as a VLAN or as something else.

In any case, Florian's point is good: an ethernet-layer firewall should be able to trigger on any value of VID, and particularly one which should not be seen from some vendor's gear.

-glen

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-31 11:36   ` Glen Turner
@ 2012-12-31 17:12     ` Benny Amorsen
  2012-12-31 22:30       ` Glen Turner
  0 siblings, 1 reply; 9+ messages in thread
From: Benny Amorsen @ 2012-12-31 17:12 UTC (permalink / raw)
  To: Glen Turner; +Cc: Florian Westphal, akong, netdev, davem

Glen Turner <gdt@gdt.id.au> writes:

> It may be a valid VLAN ID, or it may not. The meaning of FFF is
> reserved for vendor use, which doesn't preclude a vendor using it as a
> (non-interoperable) VLAN identifier. Many vendor's products treat 4096
> as they do any other VID.

I may be missing something vital, but 4096 is 0x1000 not 0xFFF? 4095 is
reserved and 0 means "treat as if the packet was untagged". 4096 is
impossible, there are only 12 bit and the encoding is AFAIK bog standard
binary.


/Benny

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-31 17:12     ` Benny Amorsen
@ 2012-12-31 22:30       ` Glen Turner
  0 siblings, 0 replies; 9+ messages in thread
From: Glen Turner @ 2012-12-31 22:30 UTC (permalink / raw)
  To: Benny Amorsen; +Cc: Florian Westphal, akong, netdev, davem


On 01/01/2013, at 3:42 AM, Benny Amorsen wrote:

> Glen Turner <gdt@gdt.id.au> writes:
> 
>> It may be a valid VLAN ID, or it may not. The meaning of FFF is
>> reserved for vendor use, which doesn't preclude a vendor using it as a
>> (non-interoperable) VLAN identifier. Many vendor's products treat 4096
>> as they do any other VID.
> 
> I may be missing something vital, but 4096 is 0x1000 not 0xFFF? 4095 is
> reserved and 0 means "treat as if the packet was untagged". 4096 is
> impossible, there are only 12 bit and the encoding is AFAIK bog standard
> binary.

Yep, I've failed at hex math. 0xfff = 4095 is the maximal VID value, and is the one reserved for vendor use.
Which means that the patch checking values 1 to 4095 is correct.

My apologies,
glen

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2012-12-30  6:28 [PATCH] net: fix checking boundary of valid vlan id akong
                   ` (2 preceding siblings ...)
  2012-12-30 12:25 ` Florian Westphal
@ 2013-01-03  0:39 ` Pablo Neira Ayuso
  2013-01-03 20:06   ` Ben Hutchings
  3 siblings, 1 reply; 9+ messages in thread
From: Pablo Neira Ayuso @ 2013-01-03  0:39 UTC (permalink / raw)
  To: akong; +Cc: netdev, davem, Netfilter Development Mailing list

On Sun, Dec 30, 2012 at 02:28:51PM +0800, akong@redhat.com wrote:
> From: Amos Kong <akong@redhat.com>
> 
> 4096 is not a valid vlan id.
> 
> Signed-off-by: Amos Kong <akong@redhat.com>
> ---
>  net/bridge/netfilter/ebt_vlan.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/bridge/netfilter/ebt_vlan.c b/net/bridge/netfilter/ebt_vlan.c
> index eae67bf..b279ec0 100644
> --- a/net/bridge/netfilter/ebt_vlan.c
> +++ b/net/bridge/netfilter/ebt_vlan.c
> @@ -121,8 +121,8 @@ static int ebt_vlan_mt_check(const struct xt_mtchk_param *par)
>  	 * if_vlan.h: VLAN_N_VID 4096. */
>  	if (GET_BITMASK(EBT_VLAN_ID)) {
>  		if (!!info->id) { /* if id!=0 => check vid range */
> -			if (info->id > VLAN_N_VID) {
> -				pr_debug("id %d is out of range (1-4096)\n",
> +			if (info->id >= VLAN_N_VID) {
> +				pr_debug("id %d is out of range (1-4095)\n",

Someone may forge frames including reserved VLAN ids.

People can use ebtables to drop invalid frames, this is a firewalling
utility after all ;-). I'm not taking these, sorry.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] net: fix checking boundary of valid vlan id
  2013-01-03  0:39 ` Pablo Neira Ayuso
@ 2013-01-03 20:06   ` Ben Hutchings
  0 siblings, 0 replies; 9+ messages in thread
From: Ben Hutchings @ 2013-01-03 20:06 UTC (permalink / raw)
  To: Pablo Neira Ayuso
  Cc: akong, netdev, davem, Netfilter Development Mailing list

On Thu, 2013-01-03 at 01:39 +0100, Pablo Neira Ayuso wrote:
> On Sun, Dec 30, 2012 at 02:28:51PM +0800, akong@redhat.com wrote:
> > From: Amos Kong <akong@redhat.com>
> > 
> > 4096 is not a valid vlan id.
> > 
> > Signed-off-by: Amos Kong <akong@redhat.com>
> > ---
> >  net/bridge/netfilter/ebt_vlan.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/net/bridge/netfilter/ebt_vlan.c b/net/bridge/netfilter/ebt_vlan.c
> > index eae67bf..b279ec0 100644
> > --- a/net/bridge/netfilter/ebt_vlan.c
> > +++ b/net/bridge/netfilter/ebt_vlan.c
> > @@ -121,8 +121,8 @@ static int ebt_vlan_mt_check(const struct xt_mtchk_param *par)
> >  	 * if_vlan.h: VLAN_N_VID 4096. */
> >  	if (GET_BITMASK(EBT_VLAN_ID)) {
> >  		if (!!info->id) { /* if id!=0 => check vid range */
> > -			if (info->id > VLAN_N_VID) {
> > -				pr_debug("id %d is out of range (1-4096)\n",
> > +			if (info->id >= VLAN_N_VID) {
> > +				pr_debug("id %d is out of range (1-4095)\n",
> 
> Someone may forge frames including reserved VLAN ids.

They may find it difficult to fit the value 4096 into a 12-bit field,
though.

Ben.

> People can use ebtables to drop invalid frames, this is a firewalling
> utility after all ;-). I'm not taking these, sorry.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-01-03 20:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-30  6:28 [PATCH] net: fix checking boundary of valid vlan id akong
2012-12-30  6:39 ` Amos Kong
2012-12-30  7:40 ` David Miller
2012-12-30 12:25 ` Florian Westphal
2012-12-31 11:36   ` Glen Turner
2012-12-31 17:12     ` Benny Amorsen
2012-12-31 22:30       ` Glen Turner
2013-01-03  0:39 ` Pablo Neira Ayuso
2013-01-03 20:06   ` Ben Hutchings

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).