Difference between revisions of "New stack"

From KolibriOS wiki
Jump to navigation Jump to search
Line 28: Line 28:
 
**Port trunking
 
**Port trunking
 
**More network drivers
 
**More network drivers
**PPPoE ?
 
 
**SLIP network code and RS232 driver
 
**SLIP network code and RS232 driver
  

Revision as of 11:13, 10 August 2010

As you may or may not know, I (hidnplayr) am since long time working on a new network stack for KolibriOS
I will use this page as an overview of what I have done so far.

You can download an image file with pre-compiled library, applications, kernel and drivers here: http://ftp.kolibrios.org/users/hidnplayr/net.7z

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 network drivers to the kernel
    • Sending and receiving Ethernet/IPv4/UDP/ICMP/ARP packets
    • IPv4/UDP/TCP/ARP/ICMP packet generation and confirmation
    • Queuing of packets (altough queing ethernet packets is disabled ATM)
    • UDP/TCP/RAW(ICMP) sockets
    • ~Working with multiple network card's (unfortunately, some kernel functions are hardcoded to a specific device ATM)
    • POSIX compatible socket functions
  • Under construction
    • TCP code
    • RAW(IPv4) sockets + RAW ethernet sockets
    • socket functions "set socket options" and "get socket options"
    • PPPoE support
  • Future plans
    • Fragmenting IPv4 packets
    • IPC sockets
    • Port trunking
    • More network drivers
    • SLIP network code and RS232 driver

Merging with trunk

Things that need to be done before net branch will be merged with trunk:

  1. finish things currently under construction
  2. fix know bugs in drivers
  3. update netcfg and zeroconf programs for a more flexible configuration

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) (FIXME: may hang on UpUnstall procedure, sometimes loops on startup)
  • DEC21x4x: (FIXME: Working in Virtual PC, but not on real hardware)
  • PCnet32: no known bugs
  • RTL8029: no known bugs
  • RTL8139: no known bugs
  • RTL8169: Probably has a bug left with receive- or transmit descriptors (still need to find a motherboard with pci-express)
  • SIS900: (Written by clevermouse, updated by hidnplayr but untested since)
  • MTD80x: Only MTD803 aka Surecom EP-320X supported now

Work In Progress

  • i8255x (Intel eepro 100)

Planned for future

  • i8254x (Intel eepro 1000)
  • marvell yukon (i have id5005)
  • broadcom netXtreme (bcm57xx)
  • Atheros (ar81xx)

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.

ICMP

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

NetCFG

This is a program I wrote to load the drivers.
The program detects all PCI network cards in your computer, and lets you load the appropriate driver for it.
You can run it with paramters 'F' to silently load first detected card,or parameter 'A' to load all cards

Netstat

This program allows you to read some variables from the stack.

nslookup

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

SynergyC

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

Telnet

A new telnet client, based on the code of nslookup (usefull to test TCP code)
This program uses network.obj and console.obj

TFTPc

A TFTP client with a GUI.
Sending and receiving of files both work
uses libio.obj, network.obj and box_lib.obj

VNCclient

I am working on the re-make of my old VNC client

Zeroconf

This program is the newer version of what used to be 'autodhcp', it works with the new network API.

Libraries

network_lib

The network library for KolibriOS, written by Clevermouse.

I need your help!

I would really appreciate it if somebody could write some (or finish some of my) network applications,
So I can concentrate on kernel code now :),
If you are interessed please contact me at hidnplayr@kolibrios.org (or find me in #general on irc.kolibrios.org)