X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=blobdiff_plain;f=README.config;h=a9d36d72a85907c2f808f67fb8443bf17753e215;hp=4c0a43ea752f6918ac007c82cd8e0c99a4042473;hb=dce21e00c38132b17ec973923f4f7d0cbf47049f;hpb=abb06ac1919fe89cc544b36b7b818af8e9cbd27d diff --git a/README.config b/README.config index 4c0a43e..a9d36d7 100644 --- a/README.config +++ b/README.config @@ -2,74 +2,97 @@ Sections - [ - ] - [] - [] usually [SERVER] - [DEFAULT] + [ - ] + [] + [] often [SERVER] + [COMMON] -Keys are looked up in that order. must not -be a valid IPv4 or IPv6 address. +Keys are looked up in that order, unless otherwise specified. + is the client's virtual address. + must be a valid DNS hostname and not look like an address. Exceptional settings: server - Specifies . - Is looked up in [SERVER] and [DEFAULT] only. + Is looked up in [SERVER] and [COMMON] only. If not specified there, it is SERVER. - password + Used by server to select the appropriate parts of the + rest of the configuration. Ignored by the client. + + secret + Looked up in the usual way, but used by client and server to + determine which possible peerings to try to set up, and which to + ignore. - Looked up in the usual way, but used by client to - determine its own s. + We define the sets of putative clients and servers, as follows: + all those, for which there is any section (even an empty one) + whose name is based on or (as applicable). + (LIMIT sections do not count.) - The client will create a local interface, and try to communicate - with the server, for Each (,) pair for - which the config search yields a password. + The server queue packets for, and accept requests from, each + putative client for which the config search yields a secret. - On the server: clients with no password are ignored. + Each client will create a local interface, and try to communicate + with the server, for each possible pair (putative server, + putative client) for which the config search yields a secret. + + ipif + Command to run to create and communicate with local network + interface. Passed to sh -c. Must speak SLIP on stdin/stdout. + The following additional interpolations aare substituted: + %(local)s %(peer)s %(rnet)s %(ifname)s + on server + on client + ["userv root ipif %(local)s,%(peer)s,%(mtu)s,slip %(rnets)s"] + + On server: applies to all clients; not looked up in + client-specific sections. + On client: may be different for different servers. Capped settings: - Values in are a cap (maximum) on those from the - other sections (including DEFAULT): + Values in [ LIMIT] and [LIMIT] are a cap (maximum) on + those from the other sections (including COMMON). max_batch_down - Size limit for response payloads (server only) [65536 bytes] + Size limit for response payloads (used by server only) + [65536 bytes; LIMIT: 262144 bytes] max_queue_time - Discard downwards packets after this long (server only) [10 s] + Discard packets after they have been queued this long waiting + for http. + On server: setting applies to downward packets, and is capped + by LIMIT values. + On client: setting applies to upward packets, and is + not affected by LIMIT values. + [10 s; LIMIT: 121 s] http_timeout - (On server) return with empty payload any http request oustanding + On server: return with empty payload any http request oustanding for this long - (On client) give up on any http request outstanding for + On client: give up on any http request outstanding for for this long plus http_timeout_grace Client's effective timeout must be at least server's (checked). - [30 s] + [30 s; LIMIT: 121] target_requests_outstanding - (On server) whenever number of outstanding requests for + On server: whenever number of outstanding requests for a client exceeds this, return oldest with empty payload - (On client) try to keep this many requests outstanding. - Must match between client and server (checked). [3] + On client: try to keep this many requests outstanding. + Must match between client and server (checked). + [3; LIMIT: 10] -Ordinary settings, used by client and server: +Ordinary settings, used by both, not client-specific: - ipif - Command to run to create and communicate with local network - interface. Passed to sh -c. Must speak SLIP on stdin/stdout. - The following additional interpolations aare substituted: - %(local)s %(peer)s %(rnet)s - on server - on client - ["userv root ipif %(local)s,%(peer)s,%(mtu)s,slip %(rnets)s"] + These are not looked up in the client-specific config sections. addrs Public IP (v4 or v6) address(es) of the server; space-separated. - (On server) mandatory; used for bind. No default. - (On client) used only to construct default url. + On server: mandatory; used for bind. No default. + On client: used only to construct default url. vnetwork Private network range (/). Must contain all @@ -87,11 +110,17 @@ Ordinary settings, used by client and server: port Public port number of the server. [80] - (On server) used for bind. - (On client) used only to construct default url. + On server: used for bind. + On client: used only to construct default url. mtu - Must match exactly. (checked) [1500 bytes] + Must match exactly. (UNCHECKED) [1500 bytes] + + ifname_server + Virtual interface name on the server. [shippo%d] + ifname_client + Virtual interface name on the client. [hippo%d] + Any %d is interpolated (by the kernel). Ordinary settings, used by client only: