[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130409063342.GA3771@open-mesh.com>
Date: Tue, 9 Apr 2013 08:33:43 +0200
From: Antonio Quartulli <antonio@...n-mesh.com>
To: Stephen Hemminger <stephen@...workplumber.org>
CC: "David S. Miller" <davem@...emloft.net>,
"bridge@...ts.linux-foundation.org"
<bridge@...ts.linux-foundation.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: Re: [PATCH 1/3] if.h: add IFF_BRIDGE_RESTRICTED flag
Hi Stephen,
thank you for your reply.
On Mon, Apr 08, 2013 at 11:58:48 -0700, Stephen Hemminger wrote:
> The standard way to do this is to use netfilter. Considering the
> additional device flags and skb flag changes, I am not sure that your
> method is better.
>
The point is that netfilter would not help me in "distributing" this policy
remotely over a generic layer2 network.
Using these flags, instead, I can make other modules (e.g. batman-adv) notice
that the skb has been marked and then react using their own logic.
If netfilter (at the bridge level) could "mark" the skbs somehow then I could use
it for this purpose. But I don't think this is really possible.
Cheers,
> On Mon, Apr 8, 2013 at 10:41 AM, Antonio Quartulli
> <antonio@...n-mesh.com> wrote:
> > This new flag tells whether a network device has to be
> > considered as restricted in the new bridge forwarding logic.
> >
> > Signed-off-by: Antonio Quartulli <antonio@...n-mesh.com>
> > ---
> > include/uapi/linux/if.h | 1 +
> > net/core/dev.c | 2 +-
> > 2 files changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
> > index 1ec407b..5c3a9bd 100644
> > --- a/include/uapi/linux/if.h
> > +++ b/include/uapi/linux/if.h
> > @@ -83,6 +83,7 @@
> > #define IFF_SUPP_NOFCS 0x80000 /* device supports sending custom FCS */
> > #define IFF_LIVE_ADDR_CHANGE 0x100000 /* device supports hardware address
> > * change when it's running */
> > +#define IFF_BRIDGE_RESTRICTED 0x200000 /* device is bridge-restricted */
> >
> >
> > #define IF_GET_IFACE 0x0001 /* for querying only */
> > diff --git a/net/core/dev.c b/net/core/dev.c
> > index 3655ff9..49eafc8 100644
> > --- a/net/core/dev.c
> > +++ b/net/core/dev.c
> > @@ -4627,7 +4627,7 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags)
> >
> > dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
> > IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
> > - IFF_AUTOMEDIA)) |
> > + IFF_AUTOMEDIA | IFF_BRIDGE_RESTRICTED)) |
> > (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
> > IFF_ALLMULTI));
> >
> > --
> > 1.8.1.5
> >
--
Antonio Quartulli
..each of us alone is worth nothing..
Ernesto "Che" Guevara
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists