New stack

From KolibriOS wiki
Jump to navigation Jump to search
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)

  • Working
    • 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/IP..) sockets (POSIX compatible)
    • Blocking sockets (needs testing)
    • IPC/local sockets (needs testing)
  • Under construction
    • Simple routing
    • PPP (the kernel part)
  • TODO
    • TCP: reassembly queue, testing (timestamps, rtt, PAWS, ...), ...

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.

Currently supported network hardware

Unsupported PCI card?

If you have a PCI ethernet card which 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

FTPc

Ftpc.gif
CLI FTP client.
Uses console.obj

FTPd

Full fledged FTP daemon. Fully configureable through ini files.
Status: Basic commands work.
uses libini.obj, libio.obj and console.obj, TODO: STOR command, dont use libio, ...

IRCc

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

NetCFG

Netcfg.gif
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

Netstat.gif
This program allows you to read the status of ethernet, ipv4, icmp, arp udp and tcp.
TODO: allow user to set IP and ARP settings, and save those to .ini file.

nslookup

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

ping

Ping.gif A program to ping a remote host using the ICMP protocol
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 which might cause program to crash on loading
uses network.obj, libini.obj and console.obj

Telnet

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

TFTPc

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

VNCclient

Under construction
TODO: use blitter, update to support newer protocols, ..

Zeroconf

This program reads settings from network.ini and configures the tcp/ip stack accordingly
You may choose for a manual setup, or dhcp / link-local.
TODO: support for multiple adapters, keep listening for DHCP release packets etc.

NetSurf

Under construction
TODO: Improve front-end, ...

SocketDBG

Program that can be used for printing socket variables, usefull for debugging.

PPPoE

PPPoE dialer - unfinished

TCPserv

TCP server demo program, this program can be used with iperf client to measure performance of the stack.

Libraries

network.obj

The network library for KolibriOS, written by Clevermouse.

HTTP

HTTP client library, can be used to fetch content from the web.
Currently support HTTP/1.1 GET, POST and HEAD methods. HTTP proxy's are also supported (settings in network.ini).

Applications, old vs new

old new remarks
airc ircc IRC client (rewritten from scratch)
arpstat netstat ARP configuration utility (rewritten)
chess / may be ported
dhcp / replaced by zeroconf
dnsr nslookup Name service lookup (DNS resolver)
downloader downloader ported
ethstat / N/A
ftps ftpd FTP daemon (server)
https / may be ported, better to rewrite
icq / may be ported
ipc / may be ported
local / may be ported
mp3s / may be ported
netsendc / may be ported
netsends / may be ported
nntpc / may be ported
popc / may be ported (or replaced with liza?)
ppp / N/A (a new utility should be made)
rccc / may be ported
rccs / may be ported
remote / may be ported
smtps / may be ported
stackcfg netstat not possible to manually set ip yet (and may need better name)
telnet telnet rewritten from scratch
terminal / N/A
tftpa / may be ported
tftpc tftpc Trivial File Transer Protocol Client
VNCclient vncc ported
ym / may be ported
zeroconf zeroconf ported

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.