<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 21, 2021, 9:20 AM Rajiv Vaidyanathan <<a href="mailto:rajiv.vaidyanathan4@gmail.com">rajiv.vaidyanathan4@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello RTEMS community,<div><br></div><div>I found the ticket: Modular Network Stacks interesting. It would be great if someone can tell the current status of this ticket and what contributions can be done as a GSoC project. </div><div><br></div><div>In the prerequisites list given, I have experience in UNIX socket programming (in C and python), OSI model, basic Wireshark but I don't have much experience in assembly (I can read assembly but haven't written assembly code) and device drivers. It would be great if someone can guide me if I can take up this project.</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Vijay is the primary mentor for this but I can give you an outline of what there is to do.</div><div dir="auto"><br></div><div dir="auto">RTEMS historically had a 20 to 25 year old port of the FreeBSD tcpip stack. This was ipv4 only and the source was included in the main RTEMS repository. It was enabled or disabled via a configure flag. </div><div dir="auto"><br></div><div dir="auto">There is now the libbsd repository which is a port of the current FreeBSD with many features and drivers. It has a focus on what we call source transparency which means that we do not make changes to it unless I absolutely necessary and try to preserve the original source as much as possible. This makes it possible to largely update the source using scripts. We currently track the FreeBSD 12 release branch and their development version.</div><div dir="auto"><br></div><div dir="auto">With two tcp/ip stacks, it becomes necessary to be able to switch between them. This project had a first step which was to move the legacy stack into its own repository. Thanks to Vijay, you can now build RTEMS without a tcpip stack at all. Then you download and add on the tcp/ip stack of your choice - legacy or libbsd.</div><div dir="auto"><br></div><div dir="auto">But there's a third tcp/ip stack we are interested in. The lwip stack is targeted at lower memory profiles and is not as full featured as libbsd. We need an lwip RTEMS repository which includes lwip, drivers for a variety of BSPs, its own build system, tests, examples, and any services specific to lwip. Lwip as a project does not do a good job of providing a central location for device drivers so the RTEMS lwip repo will be a collection point. providing a robust set of drivers and keeping track of where they came from and maintaining Source transparency is key.</div><div dir="auto"><br></div><div dir="auto"> This arrangement allows anyone to pick from the set of stacks we support as long as they deal with the device driver.</div><div dir="auto"><br></div><div dir="auto">The GSoC project you would be proposing is the lwip part. We have a build of it from a user's application to go by for a working example of the stack. Probably completely ignore the default lwip build system and uae a waf build system (Python).</div><div dir="auto"><br></div><div dir="auto">I think this is very doable as GSoC project. Vijay already did separate the legacy stack into its own repository, we have a test case BSP, and there is a defined patter to follow.</div><div dir="auto"><br></div><div dir="auto">That's the project in a nutshell. Vijay should speak up and add on. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Thanks and regards,</div><div>Rajiv<br></div></div>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank" rel="noreferrer">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote></div></div></div>