diff options
Diffstat (limited to 'hurd/networking.mdwn')
-rw-r--r-- | hurd/networking.mdwn | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn index bdf9def2..2f13813a 100644 --- a/hurd/networking.mdwn +++ b/hurd/networking.mdwn @@ -9,11 +9,18 @@ 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. +For each supported `PF_*` protocol family (domain), there is a file `/servers/socket/N` +where `N` is the numeric value for the `PF_*` symbol. libc's `socket()`, +`socketpair()` and friends use `_hurd_socket_server` to open them: the latter +computes the `/servers/socket/N` path, then opens it with `__file_name_lookup`, +and returns the result. Since those paths are translated (see showtrans on +`/servers/socket/N`), it's a port to a translator which is returned. Right now +[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX` or `AF_UNIX`) `N=1`, +[[`PF_INET`|translator/pfinet]] (a.k.a `AF_INET`) `N=2` and +[[`PF_INET6`|translator/pfinet/ipv6]] (a.k.a `AF_INET6`) `N=26` are supported. + +In case of problems to find out which server is called rpctrace can be of use: +search for the output `dir_lookup ("servers/socket/N" ...)` 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 |