# TCP/IP Networking for eCos

eCos now provides a complete TCP/IP networking stack. This package was derived from the latest stable release of OpenBSD. At this time, the networking support is considered "beta" quality although it is already fully featured and well tested within the eCos environment.

Ethernet drivers are provided for these standard supported platforms:

> - Motorola PowerPC MBX/860
> - Cirrus Logic EDB72xx

Other drivers for supported platforms are planned or underway.

#### Networking Stack Features

Since this networking package is based on the venerable BSD code, it is very complete and robust. The eCos implementation includes support for these protocols:

> - IPv4
> - UDP
> - TCP
> - ICMP
> - raw packet interface

These additional features are also present in the package. However they are not yet supported:

> - Berkeley Packet Filter
> - Multi-cast and uni-cast support, including multi-casting routing
> - IPv6

#### Provided Documentation

Since the networking package is "beta", documentation is still a bit thin. However, you will find a complete set of pages documenting the supported networking functions (user code API) here.

#### Ethernet Driver Design

Note: Currently, the networking stack only supports ethernet based networking.

The network drivers use a two-layer design. One layer is hardware independent but contains all the stack specific code. The other layer is platform dependent and communicates with the hardware independent layer via a very simple API. In this way, hardware device drivers can actually be used with other stacks, if the same API can be provided by that stack. We designed the drivers this way to encourage the development of other stacks in eCos while allowing reuse of the actual hardware specific code.

Complete documentation of the ethernet device driver and the associated API can be found in the file `net/drivers/eth/common/version/doc/driver_doc`.

#### Sample Code

Many examples using the networking support are provided. These are arranged as eCos test programs, primarily for us to verify the package, but also can serve as useful frameworks for program design. We have taken a KISS approach to building programs which use the network. A single include file `<network.h>` is all that is required to access the stack. A complete, annotated test program can be found here.