Difference between revisions of "New stack"

From KolibriOS wiki
Jump to navigation Jump to search
Line 1: Line 1:
;As you may or may not know, I (hidnplayr) am since long time working on a new network stack for KolibriOS<br>
+
;This page describes the development of the new network stack for KolibriOS
;I will use this page as an overview of what I have done so far.
+
;You can find the latest source code of this development branch on svn://kolibrios.org/kernel/branches/net ([http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Fbranches%2Fnet%2F websvn])
''You can download an image file with pre-compiled library, applications, kernel and drivers [http://builds.kolibrios.org/new-stack/ here]''<br />
+
;You can download an image file with pre-compiled library, applications, kernel and drivers on the [http://builds.kolibrios.org/new-stack/ builds page]''<br />
''If you test it, please send me a bug-report''
+
;All bugs may be reported to [http://bugs.kolibrios.org KolibriOS bug tracker]
  
 
== Kernel ==
 
== Kernel ==
Line 22: Line 22:
  
 
*;Future plans
 
*;Future plans
 +
**Routing
 
**IPC sockets
 
**IPC sockets
 
**Port trunking
 
**Port trunking
**Routing
 
 
**...
 
**...
  
Line 35: Line 35:
 
=== Working (more or less) ===
 
=== Working (more or less) ===
 
*3c90x/3c59x: only boomerang for now (may hang on UpUnstall procedure, sometimes loops on startup)
 
*3c90x/3c59x: only boomerang for now (may hang on UpUnstall procedure, sometimes loops on startup)
*DEC21x4x: Working in Virtual PC (not on most real hardware yet)
+
;I am looking for 3com vortex hardware
 +
*DEC21x4x: Working in Virtual PC (but not on most real hardware yet)
 
*PCnet32: Does not work in VmWare, works in vBox and real hardware
 
*PCnet32: Does not work in VmWare, works in vBox and real hardware
 
*RTL8029: Does not work in Qemu
 
*RTL8029: Does not work in Qemu
 
*RTL8139: no known bugs  
 
*RTL8139: no known bugs  
 
*RTL8169: no known bugs (not tested with PCI-express, initialisation takes a loooong time)
 
*RTL8169: no known bugs (not tested with PCI-express, initialisation takes a loooong time)
*SIS900: debugging in progress
 
 
*MTD80x: Only MTD803 aka Surecom EP-320X supported for now
 
*MTD80x: Only MTD803 aka Surecom EP-320X supported for now
 
*r6040: no know bugs
 
*r6040: no know bugs
  
 
=== Work In Progress ===
 
=== Work In Progress ===
 +
*SIS900: debugging in progress
 +
*i8254x (Intel eepro 1000)
 
*i8255x (Intel eepro 100)
 
*i8255x (Intel eepro 100)
 
*VIA rhine
 
*VIA rhine
Line 50: Line 52:
  
 
=== Planned for future ===
 
=== Planned for future ===
*i8254x (Intel eepro 1000)
 
 
*marvell yukon (i have id5005)
 
*marvell yukon (i have id5005)
 
*broadcom netXtreme (bcm57xx)
 
*broadcom netXtreme (bcm57xx)
Line 68: Line 69:
 
''uses libini.obj, libio.obj and console.obj''
 
''uses libini.obj, libio.obj and console.obj''
  
=== ICMP ===
+
=== ping (formerly called ICMP) ===
 
A program to ping a remote host<br />
 
A program to ping a remote host<br />
 
Only fixed packet size for now<br />
 
Only fixed packet size for now<br />
Line 74: Line 75:
  
 
=== NetCFG ===  
 
=== NetCFG ===  
This is a program I wrote to load the drivers.<br />
+
This program is used to load the network drivers.<br />
The program detects all PCI network cards in your computer, and lets you load the appropriate driver for it. <br />
+
You can run it with paramters 'F' to silently load first detected card, or parameter 'A' to load all cards. <br />
You can run it with paramters 'F' to silently load first detected card,or parameter 'A' to load all cards
+
No parameters will load the GUI.
  
 
=== Netstat ===  
 
=== Netstat ===  
This program allows you to read some variables from the stack.<br />
+
This program allows you to read the status of ethernet, ipv4, icmp, arp udp and tcp.<br />
  
 
=== nslookup ===  
 
=== nslookup ===  
Commandline DNS client from CleverMouse <br />  
+
Commandline DNS client.<br />  
 
''This program uses network.obj and console.obj''
 
''This program uses network.obj and console.obj''
  
 
=== SynergyC ===
 
=== SynergyC ===
Software KM-switch, (Synergy - client) for windows/unix/.. versions, see http://synergy2.sourceforge.net/ <br />
+
Software KM-switch, (Synergy - client) for windows/unix/.. versions, see http://synergy-foss.org <br />
 
This version is compatible with version 1.3.1<br />
 
This version is compatible with version 1.3.1<br />
Only mouse events are accepted in this first version<br />
+
Only mouse events are accepted in the current version.<br />
''There is a bug in the loading of librarys wich might cause program to crash''<br />
+
''There is a bug in the loading of libraries wich might cause program to crash on loading''<br />
 
''uses network.obj, libini.obj and console.obj''
 
''uses network.obj, libini.obj and console.obj''
  
 
=== Telnet ===   
 
=== Telnet ===   
A new telnet client, based on the code of nslookup (usefull to test TCP code)<br />
+
A simple telnet client<br />
 
''This program uses network.obj and console.obj''
 
''This program uses network.obj and console.obj''
  
 
=== TFTPc ===  
 
=== TFTPc ===  
 
A TFTP client with a GUI. <br />
 
A TFTP client with a GUI. <br />
Sending and receiving of files both work <br />
 
 
'' uses libio.obj, network.obj and box_lib.obj''
 
'' uses libio.obj, network.obj and box_lib.obj''
  
 
=== VNCclient ===
 
=== VNCclient ===
I am working on the re-make of my old VNC client
+
Under construction
  
 
=== Zeroconf ===  
 
=== Zeroconf ===  
This program is the newer version of what used to be 'autodhcp', it works with the new network API.
+
This program reads settings from zeroconf.ini and configures the tcp/ip stack accordingly <br />
 +
You may choose for a manual setup, or dhcp / link-local.
  
 
=== NetSurf ===
 
=== NetSurf ===
Line 116: Line 117:
  
 
== I need your help! ==
 
== I need your help! ==
 
+
;If you think you can help the further development of this branch in any way, please post on the forum or join the IRC channel.  
You can contact me at hidnplayr@gmail.com (or find me in #kolibrios on chat.freenode.net)
 
  
 
[[Category:Coding]]
 
[[Category:Coding]]
 
[[Category:System_documentation]]
 
[[Category:System_documentation]]

Revision as of 12:43, 30 July 2012

This page describes the development of the new network stack for KolibriOS
You can find the latest source code of this development branch on svn://kolibrios.org/kernel/branches/net (websvn)
You can download an image file with pre-compiled library, applications, kernel and drivers on the builds page
All bugs may be reported to KolibriOS bug tracker

Kernel

The old kernel functions 52 and 53 have been removed and the New_network_api has been created.
Internally, the stack has been completely rewritten (mostly from scratch)

  • What works
    • Attaching multiple network drivers/devices to the kernel
    • Sending and receiving Ethernet/IPv4/UDP/ICMP/ARP/TCP packets
    • Queuing of packets when nescessary
    • UDP/TCP/RAW(ICMP/..) sockets (POSIX compatible)
  • Under construction
    • TCP code
    • Sockets code
    • network drivers
    • programs
  • Future plans
    • Routing
    • IPC sockets
    • Port trunking
    • ...

Drivers

In net-branch, the network drivers are external drivers, as described in Writing_drivers_for_KolibriOS.

The specifications of the new network drivers can be found in the article Writing_network_drivers_for_KolibriOS.

Working (more or less)

  • 3c90x/3c59x: only boomerang for now (may hang on UpUnstall procedure, sometimes loops on startup)
I am looking for 3com vortex hardware
  • DEC21x4x: Working in Virtual PC (but not on most real hardware yet)
  • PCnet32: Does not work in VmWare, works in vBox and real hardware
  • RTL8029: Does not work in Qemu
  • RTL8139: no known bugs
  • RTL8169: no known bugs (not tested with PCI-express, initialisation takes a loooong time)
  • MTD80x: Only MTD803 aka Surecom EP-320X supported for now
  • r6040: no know bugs

Work In Progress

  • SIS900: debugging in progress
  • i8254x (Intel eepro 1000)
  • i8255x (Intel eepro 100)
  • VIA rhine
  • forcedeth

Planned for future

  • marvell yukon (i have id5005)
  • broadcom netXtreme (bcm57xx)

Unsupported PCI card?

If you have a PCI ethernet card wich is not listed above, and would like to acces internet in KolibriOS, send me the card, and I'll send you one that is supported already.

Programs

ARPcfg

This program allows you to view the ARP entries.
In future, you should be able to add and remove static entry's using this progam.

FTPd

Full fledged FTP daemon. Fully configureable through ini files. Status: Basic commands work. Program is not stable yet. uses libini.obj, libio.obj and console.obj

ping (formerly called ICMP)

A program to ping a remote host
Only fixed packet size for now
uses network.obj, libini.obj and console.obj

NetCFG

This program is used to load the network drivers.
You can run it with paramters 'F' to silently load first detected card, or parameter 'A' to load all cards.
No parameters will load the GUI.

Netstat

This program allows you to read the status of ethernet, ipv4, icmp, arp udp and tcp.

nslookup

Commandline DNS client.
This program uses network.obj and console.obj

SynergyC

Software KM-switch, (Synergy - client) for windows/unix/.. versions, see http://synergy-foss.org
This version is compatible with version 1.3.1
Only mouse events are accepted in the current version.
There is a bug in the loading of libraries wich might cause program to crash on loading
uses network.obj, libini.obj and console.obj

Telnet

A simple telnet client
This program uses network.obj and console.obj

TFTPc

A TFTP client with a GUI.
uses libio.obj, network.obj and box_lib.obj

VNCclient

Under construction

Zeroconf

This program reads settings from zeroconf.ini and configures the tcp/ip stack accordingly
You may choose for a manual setup, or dhcp / link-local.

NetSurf

I am looking for somebody with kowledge of porting C applications, to help me port the NetSurf browser to kolibrios.

Libraries

network_lib

The network library for KolibriOS, written by Clevermouse.

I need your help!

If you think you can help the further development of this branch in any way, please post on the forum or join the IRC channel.