[01/10] batman-adv: Handle parent interfaces in a different netns

Message ID 7460918.gGjtq2HAJI@sven-edge (mailing list archive)
State RFC, archived
Headers

Commit Message

Sven Eckelmann April 29, 2016, 7:51 p.m. UTC
  On Friday 29 April 2016 14:59:21 Sven Eckelmann wrote:
> On Friday 29 April 2016 14:14:27 Andrew Lunn wrote:
> > On Fri, Apr 29, 2016 at 07:52:42AM +0200, Sven Eckelmann wrote:
> > > On Thursday 28 April 2016 22:37:19 Andrew Lunn wrote:
> > > > batman-adv tries to prevent the user from placing a batX soft
> > > > interface into another batman mesh as a hard interface. It does this
> > > > by walking up the devices list of parents and ensures they are all
> > > > none batX interfaces. iflink can point to an interface in a different
> > > > namespace, so also retrieve the parents name space when finding the
> > > > parent and use it when doing the comparison.
> > > > 
> > > > Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> > > > Acked-by: Antonio Quartulli <a@untable.cc>
> > > > ---
> > > 
> > > You are unfortunately reverting back to an older version of the patch
> > > which is harder to make compile on older kernels.
> > 
> > Hi Sven
> > 
> > Please point me at the version you would prefer.
> 
> Partially this one: https://patchwork.open-mesh.org/patch/15921/
> 
> I know that your current submission doesn't contain the compat-patches part
> (which I find rather ugly) but this version has only a single function
> handling the batadv_getlink_net and thus could be easier to create some wild
> #defines working around the compat problem on older versions. But it will
> most likely end with a warning and being a big NOP on older kernels.
> 
> It is something like (untested):
> 
>     /* WARNING dirty hack for batadv_getlink_net */
>     #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
>     	#define get_link_net get_xstats_size || 1 ||
> netdev->rtnl_link_ops->get_xstats_size #endif

Attached is the patch version of the hack. It creates following warning:

/tmp/qemu-batman/batman-adv/net/batman-adv/hard-interface.c:103:9: warning: return makes pointer from integer without a cast [-Wint-conversion]
  return netdev->rtnl_link_ops->get_link_net(netdev);
         ^

If somebody else has a good/better idea then please post it.

Kind regards,
	Sven
  

Patch

From: Sven Eckelmann <sven@narfation.org>
Date: Fri, 29 Apr 2016 21:48:55 +0200
Subject: [PATCH] get_link_net hack
---
 compat.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/compat.h b/compat.h
index 5a5f478..0644241 100644
--- a/compat.h
+++ b/compat.h
@@ -140,6 +140,13 @@  static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
 
 #endif /* < KERNEL_VERSION(3, 15, 0) */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
+
+/* WARNING for batadv_getlink_net */
+#define get_link_net get_xstats_size || 1 || netdev->rtnl_link_ops->get_xstats_size
+
+#endif /* < KERNEL_VERSION(4, 0, 0) */
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
 
 #define IFF_NO_QUEUE	0; dev->tx_queue_len = 0