summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hurd.mdwn1
-rw-r--r--hurd/network.mdwn43
-rw-r--r--hurd/networking.mdwn32
-rw-r--r--hurd/settrans.mdwn37
-rw-r--r--hurd/translator.mdwn4
-rw-r--r--hurd/translator/pfinet.mdwn28
-rw-r--r--hurd/translator/pfinet/implementation.mdwn13
-rw-r--r--hurd/translator/pflocal.mdwn13
-rw-r--r--microkernel/mach/gnumach/ports/xen.mdwn2
-rw-r--r--microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn59
10 files changed, 187 insertions, 45 deletions
diff --git a/hurd.mdwn b/hurd.mdwn
index 0bdcdca8..8392abef 100644
--- a/hurd.mdwn
+++ b/hurd.mdwn
@@ -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)