= Networking in HelenOS = == Introduction == HelenOS supports TCP/IP networking with IPv4. TCP, UDP, ICMP protocols are supported. Various real and emulated Ethernet network adapters can be used (see below). One usability limitation is that DNS name resolution and DHCP are not implemented yet. == Setting up real hardware == Make sure you have a supported network adapter, otherwise no special setup is necessary. Supported network adapters: * NE 2000 (ISA) - compatible * Intel PRO/1000 (1 Gbit) * Realtek RTL8139 (100 Mbit) == Setting up virtual hardware == * [wiki:UsersGuide/RunningInQEMU#Networking QEMU] * [wiki:UsersGuide/RunningInVirtualBox#Networking VirtualBox] == Network configuration == As of now, network can be configure only manually using the `inetcfg` command. === Manual network configuration === Manual network configuration is quite easy. You can always check the current setting via the `inetcfg` command without arguments: {{{ / # inetcfg Configured addresses: 127.0.0.1/24 net/loopback v4a 1500 Static routes: None }}} Now, let's assume you want to configure HelenOS to have address 192.168.1.4. This is simply achieved by typing: {{{ / # inetcfg create 192.168.1.4/24 net/eth1 myaddr }}} `net/eth1` is one of the available links, in this case the first discovered network card. You may use the `locinfo` command to see what other links are there in the system. `myaddr` is a user-defined name given to the configured address. It is used to identify the address to other `inetcfg` commands. You may also want to configure the default gateway for your networked HelenOS system. Provided the gateway is at 192.168.1.1, type: {{{ / # inetcfg add-sr 0.0.0.0/0 192.168.1.1 default }}} Your HelenOS system is now configured for networking. Note that `inetcfg` understands also other commands that you can use to fix any potential problems with the configuration. To see the complete list, just type: {{{ / # inetcfg -h }}} == Network utilities == === Ping === {{{ ping [-r] }}} The {{{ping}}} command sends an ICMP Echo message to the specified IP address and displays the response (or timeout message). With the {{{-r}}} option it repeatedly sends the Echo message every second, until you terminate it with Ctrl-Q. == Network services == === Web server (websrv) === {{{/app/websrv}}} is a trivial web server which serves the contents of the {{{/data/web}}} directory. You need to start it manually from the command line. By default it listens on port 8080 or you can change this by starting it with the {{{-p }}} option. === Telnet server (remcons) === Is a telnet-like server. It is started automatically and listens on port 2223 and allows you to connect to the system from outside (e.g. from UN*X using the {{{telnet}}} command). It does not actually implement any Telnet protocol features (it just pipes the data through). It can only input and output text data, so pseudo-graphical applications (Tetris, Editor) and special keys won't work.