[Click] patchless click patches

Eddie Kohler kohler at cs.ucla.edu
Mon Jan 17 14:16:38 EST 2011


Hi Sascha,

Nice!  Thanks very much for this patch.  I've added it, with some edits 
(for instance, we need to add an inet_ctl_sock_destroy to undo the 
inet_ctl_sock_create).  Please let me know if you see any problems.

Eddie


On 11/23/10 2:42 PM, Sascha Alexander Jopen wrote:
> Hey,
>
> i managed to test click patchless with a more complex click script and
> everything runs fine. Additionally i implemented the missing
> functionality to set the fake devices ip address on more recent kernels.
> I tested the code on 2.6.35 and 2.6.32 kernels.
>
> Please find attached the required patch to set the ip address. It
> applies on top of all patches submitted by Joonwoo, including the patch
> to set the mac address. Maybe the patch needs some cleanup and testing
> for older kernels.
>
> Regards,
> Sascha
>
> On 11/17/2010 08:12 AM, Joonwoo Park wrote:
>> This is cool. Thanks so much Cliff.
>>
>> Interesting.. I'm almost using the same environment with yours but was
>> not able to reproduce oops by reconfiguring config.
>> I ran this on ubuntu 9.10 + linux 2.6.35 inside kvm virtual machine.
>> On the top of your today's branch, I also applied the patch that I
>> posted to set mac address for IP type but it shouldn't be difference I
>> think.
>>
>> If you have chance, please let me see call back trace I'll have a look.
>>
>> Joonwoo.
>>
>> On Tue, Nov 16, 2010 at 10:23 PM, Cliff Frey<cliff at meraki.com>  wrote:
>>> I'm not sure at all what the current best-guess set of patches is to make
>>> patchless fully work.  I cobbled together enough patches from the list and
>>> did very very basic testing on my machine, and came up with this branch
>>>
>>> https://github.com/clifffrey/click/tree/working-fromhost-fixincludes
>>>
>>> It roughly works for me on first, but it crashed when I reconfigured it.
>>>   I'm running ubuntu 10.10, with 2.6.35-22-generic.  It is running inside of
>>> a qemu virtual machine.
>>>
>>> Perhaps I will spend more time debugging, not sure if I'll have time soon or
>>> not.  I will keep the branch up to date with anything that I fix though.
>>>
>>> Cliff
>>>
>>> On Tue, Nov 16, 2010 at 5:29 PM, Sascha Alexander Jopen<
>>> jopen at informatik.uni-bonn.de>  wrote:
>>>
>>>> Hey,
>>>>
>>>> today i tried FromHost with your patch applied. The ethernet address is
>>>> now set as expected. I could not yet test the element because of
>>>> possible errors in my click script. I will check this tomorrow.
>>>>
>>>> I tried to fix the problem with not being able to set the ip address as
>>>> well. Since devinet_ioctl seems no longer available in recent kernels, i
>>>> tried to use inet_ioctl instead, which passes through to devinet_ioctl
>>>> for certain commands. inet_ioctl expects a struct socket as an argument
>>>> however, which i do not know how to create and bind to the correct
>>>> interface. I tried to fill in only the struct sock *sk part, obtained
>>>> through inet_ctl_sock_create, as the socket itself should never be used
>>>> by inet_ioctl. The machine crashed with a kernel panic on testing.
>>>>
>>>> Further investigation will follow. As i'm new to kernel level
>>>> programming, figuring out the problem may take some time, however.
>>>>
>>>> Sascha
>>>>
>>>>
>>>> Am 15.11.2010 22:50, schrieb Joonwoo Park:
>>>>> CC'ing Eddie.
>>>>>
>>>>> On Sun, Nov 14, 2010 at 2:32 PM, Joonwoo Park<joonwpark81 at gmail.com>
>>>> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Thanks for testing.  Can you try this patch once again?
>>>>>> It seems to me linuxmodule FromHost never allowed to set ethernet
>>>>>> address by it's argument if type is IP.
>>>>>> It has been clearing ethernet address with 0 always after parsing
>>>> argument.
>>>>>>
>>>>>> Eddie,
>>>>>> Would you mind to shed on me why FromHost is doing that?
>>>>>>
>>>>>> Thanks,
>>>>>> Joonwoo
>>>>>>
>>>>>> ---
>>>>>> diff --git a/elements/linuxmodule/fromhost.cc
>>>> b/elements/linuxmodule/fromhost.cc
>>>>>> index 8b76672..6bde049 100644
>>>>>> --- a/elements/linuxmodule/fromhost.cc
>>>>>> +++ b/elements/linuxmodule/fromhost.cc
>>>>>> @@ -205,9 +205,7 @@ FromHost::configure(Vector<String>  &conf,
>>>>>> ErrorHandler *errh)
>>>>>>      }
>>>>>>
>>>>>>      // set type
>>>>>> -    if (type == "IP")
>>>>>> -       _macaddr = EtherAddress();
>>>>>> -    else if (type != "ETHER"&&  type != "")
>>>>>> +    if (type != "ETHER"&&  type != "IP")
>>>>>>         return errh->error("bad TYPE");
>>>>>>
>>>>>>      // set up queue
>>>>>> ---
>>>>>>
>>>>>> On Sun, Nov 14, 2010 at 2:37 AM, Sascha Alexander Jopen
>>>>>> <jopen at informatik.uni-bonn.de>  wrote:
>>>>>>> Hey,
>>>>>>>
>>>>>>> thank you for the patch, Joonwoo.
>>>>>>> Now i can start the click instance without further crashes.
>>>>>>> I have problems setting the encap type and mac address of the fake
>>>>>>> device, though. Although i specified a mac address in the click script,
>>>>>>> the encap type of the tun/tap interface is UNSPEC with no mac address
>>>> set.
>>>>>>> Is it possible to set these parameters manually after the click kernel
>>>>>>> module is installed? Will click detect those changes?
>>>>>>> Not being able to set the fake interfaces ip address shouldn'z be that
>>>>>>> much of a problem, i think. Is this due to missing ioctl's in newer
>>>>>>> kernels or what is the problem here?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Sascha
>>>>>>>
>>>>>>> Am 14.11.2010 07:34, schrieb Joonwoo Park:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Can you please try attached patch to see if it works for you?
>>>>>>>> You have to revert patch 07/12 if you applied already to apply
>>>> attached patch.
>>>>>>>>
>>>>>>>> p.s I couldn't find a nice way to set ip address from kernel module
>>>>>>>> without patching kernel therefore you have to set ip address of your
>>>>>>>> device after configuring FromHost. (You won't be able to set it by
>>>>>>>> FromHost argument)
>>>>>>>> Setting ethernet address by FromHost argument should be still working.
>>>>>>>>
>>>>>>>> Joonwoo.
>>>>>>>>
>>>>>>>> On Tue, Nov 9, 2010 at 9:25 PM, Joonwoo Park<joonwpark81 at gmail.com>
>>>> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Thanks for call trace and simplified config.
>>>>>>>>> I should have allocated netdev_ops and assign it to dev->netdev_ops.
>>>>>>>>> It seem to me dev->netdev_ops is NULL.
>>>>>>>>> My bad.  I'll fix and submit new patch as soon as I have chance.
>>>>>>>>>
>>>>>>>>> Joonwoo
>>>>>>>>>
>>>>>>>>> On Tue, Nov 9, 2010 at 3:30 PM, Sascha Alexander Jopen
>>>>>>>>> <jopen at informatik.uni-bonn.de>  wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> i finally removed the mentioned 'false' requirement and the element
>>>> was
>>>>>>>>>> compiled and integrated into the kernel module. When installing the
>>>>>>>>>> module with a click script using click-install, the module crashes
>>>> with
>>>>>>>>>> a null pointer dereference, however. I didn't have the time to do
>>>>>>>>>> further tests with simpler click scripts. I will check this within
>>>> the
>>>>>>>>>> next days.
>>>>>>>>>> Attached you will find the kernel call trace for this null pointer
>>>>>>>>>> dereference. The corresponding click part:
>>>>>>>>>>
>>>>>>>>>> AddressInfo(localDevice DEVNAME:ip/24 DEVNAME:eth);
>>>>>>>>>> FromHost(fake0, localDevice:ipnet, ETHER localDevice:eth, TYPE IP)
>>>> ->  ...
>>>>>>>>>>
>>>>>>>>>> DEVNAME will be replaced by an existing network device.
>>>>>>>>>> Maybe this is sufficient for someone to detect the problem.
>>>>>>>>>>
>>>>>>>>>> Sascha
>>>>>>>>>>
>>>>>>>>>> Am 09.11.2010 22:27, schrieb Sascha Alexander Jopen:
>>>>>>>>>>> Hello,
>>>>>>>>>>>
>>>>>>>>>>> the FromHost element simply does not exist after compiling. ToHost,
>>>>>>>>>>> ToHostSniffers and ToDevice, as well as FromDevice, are compiled,
>>>>>>>>>>> FromHost not.
>>>>>>>>>>> When feeding a click script to click-install the following error is
>>>> emitted:
>>>>>>>>>>> <stdin>:144: unknown element class 'FromHost'
>>>>>>>>>>>
>>>>>>>>>>> fromhost.cc contains
>>>>>>>>>>> ELEMENT_REQUIRES(AnyDevice linuxmodule false)
>>>>>>>>>>> The 'false' requirement, may be this prevents compiling this
>>>> element?
>>>>>>>>>>>
>>>>>>>>>>> Sascha
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Am 09.11.2010 22:06, schrieb Joonwoo Park:
>>>>>>>>>>>> Hi Sascha,
>>>>>>>>>>>>
>>>>>>>>>>>> I guess I'm not quite following FromHost issue here.
>>>>>>>>>>>>
>>>>>>>>>>>> Are you having build failure or any other problem?
>>>>>>>>>>>> When I submitted patchless patches, I also built and fixes
>>>> FromHost
>>>>>>>>>>>> element and confirmed it's building.  I haven't tested element
>>>> though.
>>>>>>>>>>>> Did you apply '07/12 FromHost: netdev_ops for linux 2.6.33+'?
>>>>>>>>>>>>
>>>> http://www.mail-archive.com/click@amsterdam.lcs.mit.edu/msg04242.html
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Joonwoo
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Nov 9, 2010 at 11:42 AM, Sascha Alexander Jopen
>>>>>>>>>>>> <jopen at informatik.uni-bonn.de>  wrote:
>>>>>>>>>>>>> Hey,
>>>>>>>>>>>>>
>>>>>>>>>>>>> i compiled for a recent kernel from ubuntu, namely
>>>> 2.6.35-22-generic. I
>>>>>>>>>>>>> didn't apply your NETREG_REGISTERED patch, but it seems,
>>>> everything
>>>>>>>>>>>>> compiled fine.
>>>>>>>>>>>>> I think this patch part is included in Joonwoos "[PATCH 04/12]
>>>>>>>>>>>>> Configury: prepend net_device namespace for NETREG_REGISTERED"
>>>>>>>>>>>>> As the enum in question is part of the net_device struct,
>>>> everything
>>>>>>>>>>>>> should work as expected. Applying your patch leads to compiler
>>>> errors on
>>>>>>>>>>>>> my system.
>>>>>>>>>>>>>
>>>>>>>>>>>>> So basically i am right, that FromHost is completely missing,
>>>> currently?
>>>>>>>>>>>>> It would be nice, if someone could point me to the right
>>>> direction. What
>>>>>>>>>>>>> is the problematic part in implementing this element?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> Sascha
>>>>>>>>>>>>>
>>>>>>>>>>>>> Am 09.11.2010 19:35, schrieb Roman Chertov:
>>>>>>>>>>>>>> Sascha,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> What kernel version did you use?  It appears that for 2.6.35 and
>>>> above the
>>>>>>>>>>>>>> NETREG_REGISTERED fix is required as well.  If you start on
>>>> updating FromHost, I
>>>>>>>>>>>>>> will be glad to give you a hand.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Roman
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, 05 Nov 2010 20:02:38 +0100 Sascha Alexander Jopen
>>>>>>>>>>>>>> <jopen at informatik.uni-bonn.de>  wrote
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> i tried click patchless today. I used those patches from
>>>> Joonwoo, which
>>>>>>>>>>>>>>> didn't make it into the repository till now. Especially the
>>>> patches to
>>>>>>>>>>>>>>> fixincludes and the configure scripts were necessary.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> It seems the FromHost element is not included during build. I
>>>> know this
>>>>>>>>>>>>>>> was the last element which had to be done, but is it really
>>>> still not
>>>>>>>>>>>>>>> finished? What are the missing parts for this element to work?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> We are using click userlevel and kernel level isn't really
>>>> necessary but
>>>>>>>>>>>>>>> still nice to have. So maybe i could use some spare time to
>>>> finish the
>>>>>>>>>>>>>>> FromHost element, if there isn't that much missing.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>> Sascha Jopen
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 11/03/10 17:42, Roman Chertov wrote:
>>>>>>>>>>>>>>>> This will also require Joonwoo's PATCH1/12.  It removes
>>>> #include
>>>>>>>>>>>>>>>> <linux/autoconf.h>   from configure.in
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, 02 Nov 2010 18:44:32 -0700 "Roman Chertov"<
>>>> rchertov at cs.ucsb.edu>
>>>>>>>>>>>>>>>> wrote
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> This works on Fedora 13 running 2.6.35.8 SMP kernel.  The
>>>> second patch is
>>>>>>>>>>>>>>>>> based
>>>>>>>>>>>>>>>>> on patches 2/12 and 3/12 that Joonwoo released.  I had to add
>>>> the
>>>>>>>>>>>>>>>>> NETREG_REGISTERED patch due to scoping issues when an enum
>>>> declared in
>>>>>>>>>>>>>>>>> net_device is used.  Otherwise, the code is same as in github
>>>> master
>>>>>>>>>>>>>>>>> branch.
>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>> am not sure if there is a more elegant way to solve that
>>>> issue.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Roman
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>> click mailing list
>>>>>>>>>>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>>>>>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> click mailing list
>>>>>>>>>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>>>>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> click mailing list
>>>>>>>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> click mailing list
>>>>>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> click mailing list
>>>>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> click mailing list
>>>>>>> click at amsterdam.lcs.mit.edu
>>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>>>
>>>>>>
>>>>
>>>> _______________________________________________
>>>> click mailing list
>>>> click at amsterdam.lcs.mit.edu
>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>
>>> _______________________________________________
>>> click mailing list
>>> click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>
>>
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>
>
>
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click


More information about the click mailing list