New stack: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
;This page describes the development of the new network stack for KolibriOS
;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 ([http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Fbranches%2Fnet%2F websvn])
; Since SVN #3556, the code has been merged in trunk and is now available in the english, russian spanish and italian builds of kolibrios!
;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 />
;You can find the latest source code on svn://kolibrios.org/kernel/trunk ([http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2F websvn])
;You can download an image file with pre-compiled library, applications, kernel and drivers on the [http://builds.kolibrios.org/ builds page]''<br />
;All bugs may be reported to [http://bugs.kolibrios.org KolibriOS bug tracker]
;All bugs may be reported to [http://bugs.kolibrios.org KolibriOS bug tracker]



Revision as of 19:28, 28 May 2013

This page describes the development of the new network stack for KolibriOS
Since SVN #3556, the code has been merged in trunk and is now available in the english, russian spanish and italian builds of kolibrios!
You can find the latest source code on svn://kolibrios.org/kernel/trunk (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 (TODO: rewrite timers, further implement the code of 4.4BSD)
    • Sockets code
    • network drivers (can't have enough of those, right?)
    • programs (Any help here is especially appreciated)
    • blocking sockets (should work reasonably already)
    • IPC/local sockets
  • Future plans
    • Routing
    • 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
  • DEC21x4x
  • i8254x (Intel eepro 1000)
  • MTD80x
  • PCnet32
  • r6040
  • rhine (VIA)
  • RTL8029
  • RTL8139
  • RTL8169
  • SIS900

[known bugs in network drivers]

Work In Progress

  • i8255x (Intel eepro 100)
  • 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

IRCC

New IRC client. Under construction. uses network.obj, libini.obj and box_lib.obj

NetCFG

This program is used to load the network drivers.
You can run it with parameter '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

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

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

Sourcerer is working on a Netsurf port for KolibriOS, hopefully it will work hand in hand with the new network stack, somewhere in the near future!

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.