<br><font size=2 face="sans-serif">Hi,</font>
<br>
<br><font size=2 face="sans-serif">I've compiled a new kernel with a patched
af_packet.c (just removed the 2 lines) and everything now works flawlessly
in the containers :-)</font>
<br>
<br><font size=2 face="sans-serif">I think someone should propose this
patch to the kernel developpers.</font>
<br>
<br><font size=2 face="sans-serif">Thanks for your help !</font>
<br>
<br>
<br><font size=2 face="sans-serif">Stéphane.</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Daniel Lezcano <daniel.lezcano@free.fr></b>
</font>
<p><font size=1 face="sans-serif">14/04/2010 13:13</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">A</font></div>
<td><font size=1 face="sans-serif">stephane.riviere@regis-dgac.net</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">lxc-users@lists.sourceforge.net</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Objet</font></div>
<td><font size=1 face="sans-serif">Re: [Lxc-users] [Network] ioctl on socket
fails in container</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>stephane.riviere@regis-dgac.net wrote:<br>
> Hi,<br>
><br>
> I'm using LXC to run Perl scripts that generate network traffic, using
the <br>
> Net::RawIP package.<br>
> The scripts work perfectly well on a "real" host, but fail
inside an LXC <br>
> container.<br>
><br>
> After a few hours of testing/debuging, the origin of the problem is
that <br>
> some basic ioctl calls on socket fails.<br>
><br>
> Net::RawIP relies on SIOCGIFADDR et SIOCGIFHWADDR to get the IP and
MAC <br>
> addresses of the network interface.<br>
><br>
> My container has 2 interfaces : 1 macvlan (normally used to generate
<br>
> traffic) and 1 bridged (to dialogue with the host and the other <br>
> containers).<br>
><br>
> In the container, these ioctl calls fail with an "Invalid argument"
on <br>
> every interface, including the loopback.<br>
><br>
><br>
> I've extracted the failing code from Net::RawIP to have a simple test
<br>
> program (code at the end of the message).<br>
> It just creates a socket and do the 2 ioctl calls on it.<br>
><br>
> My LXC configuration is based on the article of Stéphane Graber <br>
> (http://www.stgraber.org/category/lxc):<br>
><br>
> - host : Ubuntu 9.10 Desktop (2.6.31 kernel)<br>
> - containers : Ubuntu 8.04 <br>
><br>
><br>
> I really don't know what's wrong, because ifconfig relies on the same
<br>
> basic call to get interface information...<br>
><br>
> If anyone has any idea, I would greatly appreciate it :-)<br>
>   <br>
<br>
Good report, thanks ! I was able to reproduce it.<br>
<br>
The problem is coming from the kernel, the following lines are still <br>
there in the file net/packet/af_packet.c,<br>
<br>
[ ... ]<br>
               if (!net_eq(sock_net(sk),
&init_net))<br>
                    
   return -ENOIOCTLCMD;<br>
<br>
[ ... ]<br>
<br>
in the packet_ioctl function. It shouldn't. These lines mean the <br>
af_packet is not namespace aware, but I think this is no longer the case
<br>
still a long time now ... I assume just removing these two lines will <br>
fix the problem.<br>
<br>
Thanks<br>
  -- Daniel<br>
</tt></font>
<br>