lwip examples

Norman Feske norman.feske at ...1...
Thu May 12 14:06:38 CEST 2011


Hi Amadeo,

even though your current issue may be related to a configuration problem
(e.g., the creation of a tap device before starting qemu, configuring
the bridge device), I want to mention that networking support is not
expected to work on the current Fiasco.OC version. There are two known
limitations (documented at
'http://genode.org/documentation/release-notes/11.02#section-7') that
currently stand in the way. One is the lacking support for dynamic
loading of the lwIP library (ok, I see that you are using a work-around
for this limitation via linking statically). But more importantly, the
Fiasco.OC version does not support Genode's signalling API yet. This
API, however, is used by the data-flow protocol used between lwIP and
the NIC driver (Genode's packet-stream interface).

That said, both limitations will be addressed by the upcoming Genode
version to be released later this month. In the meanwhile, if you want
to get hands-on-experience with using lwIP on Genode, I recommend
walking the currently well-explored path of using one of the other
kernels. In your case, I would start with Linux and eventually give OKL4
a try. From your test application's perspective, this should not make
any difference.

For further reference about using lwIP on Genode/Linux with bridging,
you may take a look at the steps described here:

  http://www.genode.org/documentation/release-notes/10.05#section-35

Cheers
Norman

On 05/12/2011 11:21 AM, Stefan Kalkowski wrote:
> Hello Amadeo,
> 
> when looking at your output it seems to me that at least the pci-driver,
> and/or timer services are missing in your configuration (normally they
> would produce some output), but gPXE's nic-driver depends on them, and
> won't run without these services. As long as the nic-driver isn't
> available your lwip-application will block while initializing the
> lwip-stack.
> 
> Please, verify that init's configuration contains at least these items:
> 
> <start name="timer">
>   <resource name="RAM" quantum="512K"/>
>   <provides> <service name="Timer"/> </provides>
> </start>
> 
> <start name="pci_drv">
>   <resource name="RAM" quantum="512K"/>
>   <provides> <service name="PCI"/> </provides>
> </start>
> 
> <start name="gpxe_nic_drv">
>   <resource name="RAM" quantum="2M"/>
>   <provides> <service name="Nic"/> </provides>
> </start>
> 
> If this doesn't help you, please post your configuration file.
> 
> Regards
> Stefan
> 
> On 05/12/2011 12:39 AM, Amadeo Cuadrado wrote:
>> Thanks Stefan for your answer. Yes, I am building lwip and libc statically.
>>
>> I am using qemu to run the .iso, basically:
>>
>> qemu -cdrom  'myiso.iso' -net nic,model=pcnet
>>
>> I have also used VBox, with same luck. This is the Nic driver I am using:
>>
>> <start name="gpxe_nic_drv">
>> 	<resource name="RAM" quantum="4M"/>
>> 	<provides><service name="Nic"/></provides>
>> </start>
>>
>> This is the output from the serial port:
>>
>> int main(): --- create local services ---
>> int main(): --- start init ---
>> int main(): transferred 431 MB to init
>> int main(): --- init created, waiting for exit condition ---
>> [init -> test-lwip_loop] void init_loopback(): init_loopback()
>> [init -> test-lwip_loop] Libc::Lwip_plugin::Lwip_plugin(): using the lwIP libc plugin
>> [init -> test-lwip_loop] void init_libc_lwip(): init_libc_lwip()
>> [init -> test-timer] --- timer test ---
>> [init -> test-lwip_loop] int server(): Create new socket ...
>> [init -> test-lwip_loop] virtual void Client::entry(): Create new socket ...
>>
>> And then it just stops there.
>>
>> What do you mean exactly about the signaling framework? Are these examples supposed to not work yet?
>>
>> Thanks,
>> Amadeo
>>
>>
>> -----Original Message-----
>> From: Stefan Kalkowski [mailto:stefan.kalkowski at ...1...] 
>> Sent: Friday, May 06, 2011 1:16 PM
>> To: genode-main at lists.sourceforge.net
>> Subject: Re: lwip examples
>>
>> Hello Amadeo,
>>
>> thank you for pointing us out to the build-problem in the linux_drivers
>> repository. We immediately fixed that problem. You can checkout the fix
>> from our subversion repository.
>>
>> With respect to your problems related to lwip. I assume that you
>> compiled lwip and libc as static libraries, as ldso and shared libraries
>> aren't supported for Genode/Fiasco.OC yet?
>>
>> Without knowing much details I would guess it's a configuration issue.
>> Could you please provide some information with respect to your
>> test-environment, like what hardware or VM you use, especially which NIC
>> you've enabled? Moreover, the init-configuration and the complete serial
>> output would be helpful.
>>
>> But even when we fix your (probably configuration-)issues it's unlikely
>> that the NIC service will work out of the box now, because it's based on
>> the signalling framework, which isn't supported yet. But we work on
>> that, and it will be supported at the latest by the upcoming release.
>> Nevertheless, the mentioned problems have nothing to do with a
>> non-functional signalling framework.
>>
>> Regards
>> Stefan
>>
>> On 05/06/2011 01:56 AM, Amadeo Cuadrado wrote:
>>> Hello,
>>>
>>>  
>>>
>>> I have not been able to run any of the lwip examples (I am using 32
>>> bits): loopback hangs in socket() call, and http_srv hangs in the
>>> lwip_nic_init() call. I am using the Nic driver from dde_gpxe, since I
>>> got compilation errors when building the linux_drivers:
>>>
>>>  
>>>
>>> .../genode/linux_drivers/src/linux26/arch/i386/lib/bitops.c: In function
>>> 'find_next_zero_bit':
>>>
>>> .../genode/linux_drivers/include/linux26-x86/asm/bitops.h:283: error:
>>> can't find a register in class 'BREG' while reloading 'asm'
>>>
>>> .../genode/linux_drivers/include/linux26-x86/asm/bitops.h:283: error:
>>> 'asm' operand has impossible constraints
>>>
>>>  
>>>
>>> Any clue what I could be missing here to make these examples work? Let
>>> me know if you need more info about my environment.
>>>
>>>  
>>>
>>> Thanks.
>>>
>>>  
>>>
>>> Amadeo
>>>
>>>  
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> WhatsUp Gold - Download Free Network Management Software
>>> The most intuitive, comprehensive, and cost-effective network 
>>> management toolset available today.  Delivers lowest initial 
>>> acquisition cost and overall TCO of any competing solution.
>>> http://p.sf.net/sfu/whatsupgold-sd
>>>
>>>
>>>
>>> _______________________________________________
>>> Genode-main mailing list
>>> Genode-main at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>
> 


-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list