diff options
-rw-r--r-- | hurd.mdwn | 1 | ||||
-rw-r--r-- | hurd/network.mdwn | 43 | ||||
-rw-r--r-- | hurd/networking.mdwn | 32 | ||||
-rw-r--r-- | hurd/settrans.mdwn | 37 | ||||
-rw-r--r-- | hurd/translator.mdwn | 4 | ||||
-rw-r--r-- | hurd/translator/pfinet.mdwn | 28 | ||||
-rw-r--r-- | hurd/translator/pfinet/implementation.mdwn | 13 | ||||
-rw-r--r-- | hurd/translator/pflocal.mdwn | 13 | ||||
-rw-r--r-- | microkernel/mach/gnumach/ports/xen.mdwn | 2 | ||||
-rw-r--r-- | microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn | 59 |
10 files changed, 187 insertions, 45 deletions
@@ -69,3 +69,4 @@ * [[IO_Path]] * [[Debugging]] * [Hurd Sourcecode Reference](http://www.htu.tugraz.at/~past/hurd/global/): Searchable and browsable index of the code. +* [[Networking]] diff --git a/hurd/network.mdwn b/hurd/network.mdwn deleted file mode 100644 index 5786b01c..00000000 --- a/hurd/network.mdwn +++ /dev/null @@ -1,43 +0,0 @@ -How to setup networking in the Hurd. - -First, make sure that Mach recognizes your hardware. <!-- If it doesn't, you can -to recompile it in most cases. [ADD LINK TO INFO ON THIS] --> - -# The `pfinet` Translator - -To configure the network, the `pfinet` (*Protocol Family Internet*) translator -must be configured. This is done using the `settrans` command to attach a -translator to a given file system node. When programs access the node by, for -example, sending an RPC, the Hurd will transparently start the server to handle -the request. - - # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \ - -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0 - -Here, `settrans` is passed several options: - -* `fg`, force any existing translator to go away. -* `ap`, make both active and passive translators. - -The active translator means that the operating system both starts the -translator immediately and passinve means that the settings are saved in the -file system node. The former also means that any error messages are sent to -`stderr`. - -The argument `/server/socket/2` is the node that the translator is to be -attached to. This is followed by the translator program to run and any -arguments to give it. - -`-a`, `-g` and `-m` are, quite obviously, the IP address, the gateway and -netmask. - -Help on settrans can be obtained by passing it the `--help` option. Help on a -specific translator can be gotten by invoking it from the command line with the -same argument, e.g.: - - # /hurd/pfinet --help - -As there can be a lot of output, consider piping this through a pager. - -Finally copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to -resolve correctly. diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn new file mode 100644 index 00000000..bc33769a --- /dev/null +++ b/hurd/networking.mdwn @@ -0,0 +1,32 @@ +[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +For each supported `PF_*` protocol family, there is a file `/servers/socket/N` +where `N` is the numberic value fo the `PF_*` symbol. Right now +[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX`) and +[[`PF_INET`|translator/pfinet]] (together with +[[`PF_INET6`|translator/pfinet/ipv6]]) are supported. + +User programs open those files, and use the `socket_create` [[RPC]] to make a +new socket. With that socket, they can use the other `socket_*` RPCs and also +the `io_*` RPCs. The `socket_*` RPCs are essentially clones of the Unix +syscalls in question. + +The only exception is `sockaddrs`, which are implemented as [[ports|libports]] +instead of the opaque data arrays they are in the syscalls. You manipulate +`sockaddr` ports with the `socket_create_address`, `socket_fabricate_address`, +and `socket_whatis_address` calls. The `sockaddr` port is then used in socket +calls like `socket_connect` and `socket_accept`. + +`PF_INET` `sockaddr` ports are manipulated with `socket_create_address` from +the usual `struct sockaddr_in`. `PF_LOCAL` `sockaddr` ports are stored by +`S_IFSOCK` filesystem nodes; you find the address associated with a node with +`ifsock_getsockaddr`. The [[file_system_server|translator]] will get a +`sockaddr` to return with `socket_fabricate_address`. diff --git a/hurd/settrans.mdwn b/hurd/settrans.mdwn new file mode 100644 index 00000000..e4383961 --- /dev/null +++ b/hurd/settrans.mdwn @@ -0,0 +1,37 @@ +[[meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software +Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +The `settrans` command is used to attach a [[translator]] (server) to a given +[[file_system_node|virtual_file_system]]. + +`settrans` is commonly used like this: + + $ settrans -fgap *NODE* *TRANSLATOR SETTING* + + * `fg`, **f**orce any existing translator to **g**o away from that node. + * `ap`, start an ***a**ctive translator*, and also establish a ***p**assive + translator* setting. + +*Active translator* means that the operating system starts the translator +immediately and *passive translator* in turn means that the settings are +instead saved in the file system node, and then, when programs access the node +by, for example, sending an [[RPC]], the Hurd will transparently start the +server to handle the request. + + +Help on settrans can be obtained by passing it the `--help` option. + +Likewise, help on a specific translator can be gotten by invoking it from the +command line with the same argument, e.g.: + + $ /hurd/pfinet --help + +As there can be a lot of output, consider piping this through a pager. diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index 3f763013..9cdd8a31 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -17,6 +17,9 @@ and [[pfinet]]) and thus translates object invocations into calls appropriate for the backing store (e.g., ext2 file system, nfs server, etc.). +A translator is usually registered with a specific file system node by using +the [[`settrans`|settrans]] command. + Translators do not require any special privilege to run. The privilege they require is simply that to access the indiviudal resources they use. @@ -41,6 +44,7 @@ See some [[examples]] about how to use translators. # Existing Translators * [[pfinet]] +* [[pflocal]] * [[hostmux]] * [[storeio]] * [[ext2fs]] diff --git a/hurd/translator/pfinet.mdwn b/hurd/translator/pfinet.mdwn index acd7b855..a8da45d7 100644 --- a/hurd/translator/pfinet.mdwn +++ b/hurd/translator/pfinet.mdwn @@ -1,4 +1,5 @@ -[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software +Foundation, Inc."]] [[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -8,4 +9,27 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU_Free_Documentation_License|/fdl]]."]]"""]] -Notes about [[IPv6]]. +To configure Internet connectivity, the `pfinet` (*Protocol Family Internet*) +[[translator]] must be configured. This is done using the +[[`settrans`|settrans]] command, for example like this: + + # settrans -fgap /servers/socket/2 /hurd/pfinet ↩ + -i eth0 -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0 + +The argument `/server/socket/2` is the node that the translator is to be +attached to. This is followed by the translator program to run and any +arguments to give it. + +There, `-i`, `-a`, `-g` and `-m` are, quite obviously, the (Mach) device to +use, the IP address, the gateway and netmask. + +--- + +To make DNS lookups work, you'll also have to properly configure the +`/etc/resolv.conf` file, for example by copying it over from your GNU/Linux +installation. + +--- + + * [[Implementation]]. + * [[IPv6]]. diff --git a/hurd/translator/pfinet/implementation.mdwn b/hurd/translator/pfinet/implementation.mdwn new file mode 100644 index 00000000..08a29280 --- /dev/null +++ b/hurd/translator/pfinet/implementation.mdwn @@ -0,0 +1,13 @@ +[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +The `pfinet` server is a hacked Linux internet implementation with a glue layer +translating between the Hurd [[RPC]]s and the middle layer of the Linux +implementation. diff --git a/hurd/translator/pflocal.mdwn b/hurd/translator/pflocal.mdwn new file mode 100644 index 00000000..c1d4ac2b --- /dev/null +++ b/hurd/translator/pflocal.mdwn @@ -0,0 +1,13 @@ +[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +The implementation of the `pflocal` server is in the `pflocal` directory, and +uses [[`libpipe`|libpipe]] (shared code with the [[named_pipe|fifo]] +implementation). diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn index 8919aa57..cdb4e2de 100644 --- a/microkernel/mach/gnumach/ports/xen.mdwn +++ b/microkernel/mach/gnumach/ports/xen.mdwn @@ -8,6 +8,8 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU_Free_Documentation_License|/fdl]]."]]"""]] +[[toc ]] + ## Xen dom0, PAE-disabled hypervisor /!\ Since GNU Mach doesn't handle PAE yet, you'll need a PAE-disabled hypervisor. diff --git a/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn index 15af862c..71a72bac 100644 --- a/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn +++ b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn @@ -8,6 +8,8 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU_Free_Documentation_License|/fdl]]."]]"""]] +[[toc ]] + The Xen dom0 infrastructure provides for a bridged networking setup using shell scripts to configure the bridging device properly and attach the domUs' virtual interfaces to the bridge. However, we've [seen @@ -44,3 +46,60 @@ e.g., the Debian testing one on Debian stable.) Make sure that only `(network-script network-dummy)` and `(vif-script vif-bridge)` are activated and all other `(network-script network-WHATEVER)`, respective `(vif-script vif-WHATEVER)` are commented out. + + +# Sample configuration files on Debian Lenny + +## /etc/xen/hurd on dom0 + + kernel = "/boot/gnumach-xen" + memory = 256 + disk = ['phy:sda5,hda,w'] + extra = "root=device:hd0" + vif = [ 'mac=00:16:3e:00:00:00, bridge=br0' ] + ramdisk = "/boot/hurd-modules" + +/dev/sda5 is an extended partition. br0 is bridge interface on dom0. + +## /etc/xen/xend-config.sxp on dom0 + + (network-script 'network-bridge netdev=br0') + (dom0-min-mem 196) + (dom0-cpus 0) + (vncpasswd '') + +## /etc/network/interfaces on dom0 + + auto br0 + iface br0 inet static + address 192.168.1.211 + network 192.168.1.0 + netmask 255.255.255.0 + broadcast 192.168.1.255 + gateway 192.168.1.1 + bridge_ports eth1 + +eth1 is the interface that is connected to the Internet on the LAN: + +## Doing settrans on domU + + settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.210 -g 192.168.1.1 -m 255.255.255.0 + +## /sbin/ifconfig on dom0 + + br0 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33 + inet addr:192.168.1.211 Bcast:192.168.1.255 Mask:255.255.255.0 + inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:14187 errors:0 dropped:0 overruns:0 frame:0 + TX packets:9214 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:936563 (914.6 KiB) TX bytes:746184 (728.6 KiB) + + eth1 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33 + inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:34339 errors:0 dropped:0 overruns:0 frame:0 + TX packets:18526 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:3019251 (2.8 MiB) TX bytes:1453672 (1.3 MiB) |