udp, util: Break out send_nak function
[secnet] / secnet.8
CommitLineData
3ca86f6d
RK
1.TH secnet 8
2
3.SH NAME
4secnet \- VPN router daemon
5
6.SH SYNOPSIS
7\fBsecnet\fR [\fIOPTIONS\fR]
8
9.SH DESCRIPTION
10\fBsecnet\fR allows virtual private networks to be constructed
11spanning multiple separate sites.
12
13.SH OPTIONS
14.TP
15.B --verbose\fR, \fB-v
16Enable extra diagnostics.
17.TP
18.B --nowarnings\fR, \fB-w
19Suppress warnings.
20.TP
21.B --help
22Display usage message.
23.TP
24.B --version
25Display version string.
26.TP
27.B --nodetach\fR, \fB-n
28Don't go into background.
29The default behaviour is to become a daemon during startup.
30.TP
31.B --silent\fR, \fB--quiet\fR, \fB-f
32Suppress error messages.
33.TP
34.B --debug\fR, \fB-d
35Enable debug messages.
36.TP
37.B --config\fR, \fB-c \fIPATH
38Specify configuration file.
39The default is \fI/etc/secnet/secnet.conf\fR.
40.TP
41.B --just-check-config\fR, \fB-j
42Check configuration and exit.
43.TP
44.B --sites-key\fR, \fB-s \fIKEY
45Configuration file key defining active sites.
46The default is \fBsites\fR.
47
48.SH "CONFIGURATION FILE"
49.SS Overview
50The default configuration file is \fI/etc/secnet/secnet.conf\fR.
51This can be overridden with the \fB--config\fR option.
52.PP
53The configuration file defines a dictionary (a mapping from keys to
54values) of configuration information for secnet.
55It is recursive in nature, i.e. values may themselves include dictionaries.
56Any node in the nested structure thus defined can be identified by a
57\fIpath\fR, which is the sequence of keys necessary to reach it from
58the root, separated by "/" characters.
59See \fBPaths\fR below for how this is used.
60.PP
61Furthermore, when a key is looked up in a dictionary, if it cannot be
62found, it is sought in the parent dictionary, and so on back to the
63root.
64For instance, each \fIsite\fR must contain the \fBresolver\fR key, but
65in a typical configuration there is no value in having different
66resolvers for each site.
67Therefore \fBresolver\fR is defined at the root and thus automatically
68incorporated into all sites.
69.SS Whitespace
70Whitespace, including newlines, is ignored except to the extent that
71it bounds other symbols.
72.PP
73Comment begin with "#" and continues to the end of the line.
74Comments are ignored.
75.SS Inclusion
76A file may be recursively included into the configuration file using a
77line of the form:
78.IP
79\fBinclude \fIPATH
80.PP
81This is handled at a higher level than the main parser and so
82precludes the possibility of using the string \fBinclude\fR for any
83other purpose.
84.\" check if this is true. it's probably a bug!
85.SS Assignments
86The configuration file contains one or more assigments.
87Each assignment is written:
88.IP
89\fIkey\fR [\fB=\fR] \fIlist\fR\fB;\fR
90.PP
91i.e. the equals sign is optional.
92The semicolon is mandatory in all contexts.
93.PP
94Keys start with a letter or "_" and continue with any numbers of
95letters, digits, "_" and "-".
96.PP
97Each \fIkey\fR is a list of one or more \fIvalues\fR, separated by commas.
98Possible values types are \fIboolean\fR, \fIstring\fR, \fInumber\fR,
99\fIdictionary\fR, \fIpath\fR and \fIclosure evaluation\fR.
100.\" This man page draws a distinction between a closure (the thing
101.\" evaluated) and a closure evaluation (the closure plus is
102.\" arguments).
103.SS "Strings"
104Strings are contained within "double quotes".
105There is (currently) no escape syntax and no way to include quotes
106inside strings.
107.PP
108Example:
109.nf
110 filename "/var/log/secnet";
111.fi
112.SS "Numbers"
113Numbers are encoded in decimal and do not include a sign.
114Numbers must lie in the range 0 to 4294967295.
115.PP
116Example:
117.nf
118 mtu 1400;
119.fi
120.SS "Dictionaries"
121.\" In conffile.y dictionaries can be preceded by a search path, but
122.\" this is not implemented elsewhere, so not documented here.
123Dictionaries consist of one or more assignments, in the same syntax as
124given above, enclosed in "{" and "}".
125.PP
126Example:
127.nf
128 system {
129 userid "secnet";
130 pidfile "/var/run/secnet.pid";
131 };
132.fi
133.SS "Paths"
134Paths allow a key already defined in the configuration to be aliased.
135.PP
136Paths consist of a sequence of keys separated by "/".
137If the path starts with a "/" then it is an \fIabsolute path\fR and
138the search starts at the root of the configuration.
139Otherwise it is a \fIrelative path\fR and starts in the containing
140dictionary or in any of its parents, down to and including the root.
141If there is more than one match, the one furthest from the root "wins".
142.PP
143The value of a path is the list assigned to the key it refers to.
144Lists are flattened; for example if a key is defined as a list of two
145paths, and each of those refers to a list of two integers, the
146original key is therefore defined to be a list of four integers, not
147a list consisting of two lists.
148.PP
149It is not possible to refer to a \fIlater\fR key using a path.
150.PP
151Example:
152.nf
153 vpn {
154 test {
155 kakajou vpn-data/test/kakajou/kakajou;
156 araminta vpn-data/test/araminta/araminta;
157 deodand vpn-data/test/deodand/deodand;
158 all-sites kakajou,araminta,deodand;
159 };
160 };
161 all-sites vpn/test/all-sites;
162.fi
163.PP
164Here, each of \fBvpn/test/kakajou\fR, \fBvpn/test/araminta\fR and
165\fBvpn/test/deodand\fR are defined as aliases to values defined
166elsewhere.
167\fBvpn/tests/all-sites\fR is defined as the list of all three of those
168values, and \fBall-sites\fR is then defined to be an alias for that.
169.SS "Booleans"
170The (single-element) paths \fBfalse\fR, \fBno\fR and \fBnowise\fR are
171predefined and refer to a boolean false value.
172Similarly \fBtrue\fR, \fByes\fR and \fBverily\fR point at a boolean
173true value.
174.PP
175In all six cases, variants with just the first letter capitalized, and
176with all letters capitalized, are also provided.
177.PP
178Example:
179.nf
180 random randomfile("/dev/urandom",no);
181.fi
182.SS "Closure Evaluation"
183Closure evaluation uses the following syntax:
184.IP
185\fICLOSURE \fB( \fIARGUMENTS \fB)
186.PP
187\fICLOSURE\fR may be a path referring to a closure, or may itself be a
188closure evaluation.
189.PP
190\fIARGUMENTS\fR is a list of zero or more values, separated by commas.
191As a shortcut, if the arguments consist of a single dictionary, the
192parentheses may be ommitted:
193.IP
194\fICLOSURE \fB{ \fR... \fB}
195.PP
196Example:
197.nf
198 sites map(site, vpn/test/all-sites);
199.fi
200.PP
201When a closure is evaluated it returns a value (a list, much as above)
202and may also have side effects (which may be immediate or may be
203deferred to some later phase of execution).
204A list of built-in closures is given below.
205.SS "Mandatory Keys"
206Two keys are mandatory.
207\fBsystem\fR must be a dictionary in which the following keys can be
208looked up:
209.TP
210.B log
211A \fIlog closure\fR; see the \fBlogfile\fR documentation below.
212The destination for log messages.
213Mandatory.
214.TP
215.B userid
216A string.
217The userid to run as after dropping privilege.
218Optional.
219.TP
220.B pidfile
221A string.
222The path to write a pidfile.
223Optional.
224.PP
225\fBsites\fR should be a list of \fIsite closures\fR; see the \fBsite\fR documentation below.
226This defines the collection of tunnel endpoints that \fBsecnet\fR will
227communicate with.
228.PP
229Recall the recursive lookup logic described in \fBOverview\fR above:
230if (for instance) \fBlog\fR is defined in the top level dictionary but
231not in \fBsystem\fR, it will nevertheless be found when looked up in
232the latter.
233
234.SH CLOSURES
235\fBsecnet\fR contains a collection of built-in closures
236with names (i.e. single-element paths) given below.
237.PP
238Most of them return anonymous closures of various types,
239which are described contextually.
240
241.SS adns
242\fBadns(\fIDICT\fB)\fR => \fIresolver closure\fR
243.TP
244.I DICT
245This either be empty or contain the single key \fBconfig\fR, with a
246string value giving configuration to supply to ADNS.
247This might be read from a file using \fBreadfile\fR.
248.PP
249A \fIresolver closure\fR is a means of converting hostnames into
250network addresses.
251
252.SS diffie-hellman
253.PP
254\fBdiffie-hellman(\fIMODULUS\fB, \fIGENERATOR\fR[\fB, \fICHECK\fR]\fB)\fR => \fIdh closure\fR
255.TP
256.I MODULUS
257String.
258The prime modulus \fIp\fR in hex.
259.TP
260.I GENERATOR
261String.
262The generator \fIg\fR in hex.
263.TP
264.I CHECK
265Boolean.
266If \fBtrue\fR (the default) then check if \fIp\fR is prime.
267.PP
268A \fIdh closure\fR defines a group to be used for key exchange.
269The same group must be used by all sites in the VPN.
270
271.SS logfile
272\fBlogfile(\fIDICT\fB)\fR => \fIlog closure\fR
273.PP
274Valid keys in the \fIDICT\fR argument are:
275.TP
276.B filename
277The path to log to.
278.TP
279.B class
280A list of strings defining which classes of message to log.
281The possible message classes are \fBdebug-config\fR,
282\fBdebug-phase\fR, \fBdebug\fR, \fBinfo\fR, \fBnotice\fR,
283\fBwarning\fR, \fBerror\fR, \fBsecurity\fR and \fBfatal\fR.
284.IP
285\fBall-debug\fR is the union of all the \fBdebug\fR... classes.
286\fBdefault\fR is equivalent to \fBwarning, error, security, fatal\fR.
287\fBverbose\fR is equivalent to \fBinfo, notice, warning, error,
288security, fatal\fR.
289\fBquiet\fR is equivalent to \fBfatal\fR.
290.PP
291A \fIlog closure\fR is a means of saving log messages.
292See also \fBsyslog\fR below.
293
294.SS makelist
295\fBmakelist(\fIDICT\fB)\fR => \fILIST\fR
296.PP
297Returns the (flattened) list of values from the dictionary, discarding
298the keys.
299
300.SS map
301\fBmap(\fICLOSURE\fB, \fIINPUT\fR...\fB)\fR => \fILIST\fR
302.PP
303Applies \fICLOSURE\fR to all its additional input arguments and
304returns the resulting list.
305
306.SS md5
307\fBmd5\fR is a \fIhash closure\fR implementing the MD5 algorithm.
308
309.SS null-netlink
310\fBnull-netlink(\fIDICT\fB)\fR => \fInetlink closure\fR
311.br
312\fBnull-netlink(\fIDICT\fB)\fR => \fIpure closure\fR
313.\" TODO pure closure is what it's called internally but this is a
314.\" very opaque name to use in docs
315.PP
316Valid keys in the \fIDICT\fR argument are:
317.TP
318.B name
319String.
320The name for the netlink device.
321The default is \fBnull-netlink\fR.
322.TP
323.B networks
324List of strings.
325The networks on the host side of the netlink device.
326.TP
327.B remote-networks
328List of strings.
329Networks that may be claimed by remote sites using this netlink device.
330.TP
331.B secnet-address
332String.
333IP address of this netlink.
334Incompatible with \fBptp-address\fR.
335.TP
336.B ptp-address
337String.
338IP address of the other end of a point-to-point link.
339Incompatible with \fBsecnet-address\fR.
340.TP
341.B mtu
342Number.
343The MTU of the netlink device.
344The default is 1000.
345.PP
346If \fBptp-address\fR is used then the result is a \fInetlink closure\fR.
347This can be used directly with the \fBlink\fR key in the \fBsites\fR
348closure (see below).
349.PP
350If \fBsecnet-address\fR is used then the result is a \fIpure
351closure\fR.
352This must be evaluated to yield a \fInetlink closure\fR, using a
353dictionary argument with the following keys:
354.TP
355.B routes
356String list.
357networks reachable via this tunnel, in \fIaddress\fB/\fIbits\fR format.
358.TP
359.B options
360String list.
361A list of options:
362.RS
363.TP
364.B allow-route
365Allow packets received via this tunnel to be routed down other tunnels
366(without this option only packets from the host will be routed).
367.TP
368.B soft
369Remove these routes from the host routing table when the link quality
370is 0.
371.RE
372.TP
373.B mtu
374Number.
375Default MTU over this link.
376The default is inherited from the \fIpure closure\fR.
377.TP
378.B priority
379Number.
380The priority of this link.
381Higher values beat lower values.
382The default is 0.
383
384.\" TODO ptp-address turns up in sites.conf, but why? I think this
385.\" is a bug in make-secnet-sites; it is not used by
386 \" netlink_inst_create.
387
388.PP
389A \fInetlink closure\fR is a virtual IP link, and is supplied to the
390\fBlink\fR key of a \fIsite\fR closure.
391.PP
392The netlink created by \fBnull-netlink\fR has no connection to the
393host.
394See \fBtun\fR and \fBuserv-ipif\fR below for more useful alternatives.
395
396
397
398.SS randomfile
399\fBrandomfile(\fIFILENAME\fR[\fB, \fIBLOCKING\fR]\fB)\fR => \fIrandomsource closure\fR
400.TP
401.I FILENAME
402String.
403Path to random device, e.g. \fI/dev/urandom\fR.
404.TP
405.I BLOCKING
406Boolean.
407\fBTrue\fR if this is a blocking device and \fBfalse\fR otherwise (the default).
408Blocking device support is not implemented so this must always be
409\fBFalse\fR or absent.
410.PP
411A \fIrandomsource closure\fR is a source of random numbers.
412
413.SS readfile
414\fBreadfile(\fIPATH\fB)\fR => \fISTRING\fR
415.PP
416Read the contents of the file \fIPATH\fR (a string) and return it as a string.
417
b02b720a
IJ
418.SS eax-serpent
419\eax-fBserpent(\fIDICT\fB)\fR => \fItransform closure\fR
3ca86f6d
RK
420.PP
421Valid keys in the \fIDICT\fR argument are:
422.TP
423.B max-sequence-skew
424The maximum acceptable difference between the sequence number in a
425received, decrypted message and the previous one.
426The default is 10.
427It may be necessary to increase this is if connectivity is poor.
b02b720a
IJ
428.TP
429.B tag-length-bytes
430The length of the message authentication tag. The default is 16,
431for a 128-bit tag length. It must be no longer than the Serpent
432blocksize, 16. Must be have the same value at both ends.
433.TP
434.B padding-rounding
435Messages are padded to a multiple of this many bytes. This
436serves to obscure the exact length of messages. The default is 16,
3ca86f6d
RK
437.PP
438A \fItransform closure\fR is a reversible means of transforming
439messages for transmission over a (presumably) insecure network.
440It is responsible for both confidentiality and integrity.
b02b720a
IJ
441
442.SS serpent256-cbc
443\fBserpent256-cbc(\fIDICT\fB)\fR => \fItransform closure\fR
444.PP
445Valid keys in the \fIDICT\fR argument are:
446.TP
447.B max-sequence-skew
448As above.
af43f0b7
IJ
449.PP
450Note that this uses a big-endian variant of the Serpent block cipher
451(which is not compatible with most other Serpent implementations).
3ca86f6d
RK
452.SS rsa-private
453\fBrsa-private(\fIPATH\fB\fR[, \fICHECK\fR]\fB)\fR => \fIrsaprivkey closure\fR
454.TP
455.I PATH
456String.
457The path to a file containing an RSA private key in SSH format
458(version 1).
459There must be no passphrase.
460.TP
461.I CHECK
462Boolean.
463If \fBtrue\fR (the default) then check that the key is valid.
464
465.SS rsa-public
466\fBrsa-public(\fIKEY\fB, \fIMODULUS\fB)\fR => \fIrsapubkey closure\fR
467.TP
468.I KEY
469String.
470The public key exponent (\fIe\fR), in decimal.
471.TP
472.I MODULUS
473String.
474The modulus (\fIn\fR), in decimal.
475
476.SS sha1
477\fBsha1\fR is a \fIhash closure\fR implementing the SHA-1 algorithm.
478
479.SS site
480\fBsite(\fIDICT\fB)\fR => \fIsite closure\fR
481.PP
482Valid keys in the \fIDICT\fR argument are:
483.TP
484.B local-name
485String.
486The site's name for itself.
487.TP
488.B name
489String.
490The name of the site's peer.
491.TP
492.B link
493A \fInetlink closure\fR.
494.TP
495.B comm
496A \fIcomm closure\fR.
497.TP
498.B resolver
499A \fIresolver closure\fR.
500.TP
501.B random
502A \fIrandomsource closure\fR.
503.TP
504.B local-key
505An \fIrsaprivkey closure\fR.
506The key used to prove our identity to the peer.
507.TP
508.B address
509String.
510The DNS name of the peer.
511Optional, but if it is missing then it will not be possible to
512initiate new connections to the peer.
513.TP
514.B port
515Number.
516The port to contact the peer.
517.TP
518.B key
519An \fIrsapubkey closure\fR.
520The key used to verify the peer's identity.
521.TP
522.B transform
523A \fItransform closure\fR.
524Used to protect packets exchanged with the peer.
525.TP
526.B dh
527A \fIdh closure\fR.
528The group to use in key exchange.
529.TP
530.B hash
531The hash function used during setup.
532.\" TODO clarify what we actually use it for!
533.TP
534.B key-lifetime
535Number.
536The maximum lifetime of a session key in milliseconds.
537The default is one hour.
538.TP
539.B setup-retries
540Number.
541The maximum number of times a key negotiation packet will be
542transmitted before giving up.
543The default is 5.
544.TP
545.B setup-timeout
546Number.
547The time between retransmissions of key negotiation packets, in milliseconds.
548The default is one second.
549.TP
550.B wait-time
551Number.
552The time to wait after a failed key setup before making another
553attempt, in milliseconds.
554The default is 20s.
555.TP
556.B renegotiate-time
557Number.
558The time after which a new session key will be negotiated, \fIif\fR
559there is traffic on the link, in milliseconds.
560It must not be greater than the \fBkey-lifetime\fR.
561The default 5 minutes less than the key lifetime, unless the lifetime
562is less than 10 minutes in which case the default is half the
563lifetime.
564.TP
565.B keepalive
566Boolean.
567If \fBtrue\fR then attempt to always maintain a live session key.
568Not implemented.
569.TP
570.B log-events
571String list.
572Types of event to log for this site.
573.RS
574.TP
575.B unexpected
576Unexpected key setup packets (including late retransmissions).
577.TP
578.B setup-init
579Start of attempt to setup a session key.
580.TP
581.B setup-timeout
582Failure of attempt to setup a session key, through timeout.
583.TP
584.B activate-key
585Activation of a new session key.
586.TP
587.B timeout-key
588Deletion of current session key through age.
589.TP
590.B security
591Anything potentially suspicious.
592.TP
593.B state-change
594Steps in the key setup protocol.
595.TP
596.B packet-drop
597Whenever we throw away an outgoing packet.
598.TP
599.B dump-packets
600Every key setup packet we see.
601.TP
602.B errors
603Failure of name resolution, internal errors.
604.TP
605.B all
606Everything (too much!)
607.RE
608.PP
609A \fIsite closure\fR defines one site to communicate with.
610\fBsecnet\fR expects the (root) key \fBsite\fR to be a list of site
611closures.
612
613.SS sysbuffer
614\fBsysbuffer(\fR[\fISIZE\fR[\fB, \fIOPTIONS\fR]]\fB)\fR => \fIbuffer closure\fR
615.TP
616.I SIZE
617Number.
618The size of the buffer in bytes.
619This must be between 64 and 131072.
620The default is 4096.
621.TP
622.I OPTIONS
623Dictionary.
624Optional and presently unused.
625.\" lockdown is accepted but ignored.
626.PP
627A \fIbuffer closure\fR is a means of buffering packets to send or that
628have been received.
629
630.SS syslog
631\fBsyslog(\fIDICT\fB)\fR => \fIlog closure\fR
632.PP
633Valid keys in the \fIDICT\fR argument are:
634.TP
635.B ident
636String.
637The ident string to pass to \fBopenlog\fR(3); this value will appear
638in each message.
639.TP
640.B facility
641String.
642The facility to log as.
643The possible values are \fBauthpriv\fR, \fBcron\fR, \fBdaemon\fR,
644\fBkern\fR, \fBlocal0\fR-\fB7\fR, \fBlpr\fR, \fBmail\fR, \fBnews\fR,
645\fBsyslog\fR, \fBuser\fR and \fBuucp\fR.
646.PP
647See also \fBlogfile\fR above.
648
649.SS tun
650\fBtun(\fIDICT\fB)\fR => \fInetlink closure\fR
651.br
652\fBtun(\fIDICT\fB)\fR => \fIpure closure\fR
653.PP
654Valid keys in the \fIDICT\fR argument are those documented for
655\fBnull-netlink\fR above, plus:
656.TP
657.B flavour
658String.
659The type of TUN interface to use.
660Possible values are \fBlinux\fR, \fBbsd\fR, \fBstreams\fR and \fBguess\fR.
661The default is \fBguess\fR.
662.TP
663.B device
664String.
665The path to the TUN/TAP device file.
666The default is \fI/dev/net/tun\fR for the \fBlinux\fR flavour and
667\fI/dev/tun\fR for the others.
668.TP
669.B interface
670String.
671The interface to use.
672The default is to pick one automatically.
673This cannot be used with the \fBstreams\fR flavour.
674.TP
675.B local-address
676String.
677IP address of the host's tunnel interface.
678.\" README says this belongs to netlink-null but actually it's
679 \" duplicated between slip & tun
680.TP
681.B ifconfig-path
682String.
683The name of the \fBifconfig\fR command.
684The default is simply "ifconfig".
685.TP
686.B route-path
687String.
688The name of the \fBroute\fR command.
689The default is simply "route".
690.TP
691.B ifconfig-type
692String.
693The syntax expected by the \fBifconfig\fR command.
694Possible values are \fBlinux\fR, \fBbsd\fR, \fBioctl\fR,
695\fBsolaris-2.5\fR and \fBguess\fR.
696The default is \fBguess\fR.
697.TP
698.B route-type
699String.
700The syntax expected by the \fBifconfig\fR command.
701Possible values are \fBlinux\fR, \fBbsd\fR, \fBioctl\fR,
702\fBsolaris-2.5\fR and \fBguess\fR.
703The default is \fBguess\fR.
704.TP
705.B buffer
706A \fIbuffer closure\fR to use for packets transferred from the host to secnet.
707The buffer size must be at least 60 greater than the MTU.
708.\" TODO rumour has is that buffers are sometimes shareable between
709.\" netlink devices - document that if the conditions are reasonable
710.\" ones.
711.PP
712The \fBifconfig-type\fR and \fBroute-type\fR values determine how
713those commands are executed.
714If they are set to \fBioctl\fR then low-level system calls are used
715directly instead of invoking the commands.
716.PP
717The netlink created by \fBtun\fR uses the \fBtun\fR device to
718communicate with the host kernel.
719
720.SS udp
721\fBudp(\fIDICT\fB)\fR => \fIcomm closure\fR
722.PP
723Valid keys in the \fIDICT\fR argument are:
724.TP
725.B address
726String.
727The IP address to bind on.
728The default is 0.0.0.0, i.e. "any".
729.TP
730.B port
731Number.
732The port number to bind to.
733The default is 0, i.e. the OS will choose one.
734It is suggested that any given VPN agree a common port number.
735.TP
736.B buffer
737A \fIbuffer closure\fR.
738See the \fBsysbuffer\fR closure above.
739.TP
740.B authbind
741String.
742The path to a helper program to bind the socket.
743Optional.
744.IP
745The program will be invoked with the address and port number as its
746arguments, and with the socket to bind as file descriptor 0.
747It should either bind the socket as requested, or exit with nonzero
748status.
749.PP
750A \fIcomm closure\fR is a means of sending and receiving messages via
751a network.
752It does not provide confidentiality, reliablity or availability.
753
754.SS userv-ipif
755\fBuserv-ipif(\fIDICT\fB)\fR => \fInetlink closure\fR
756.br
757\fBuserv-ipif(\fIDICT\fB)\fR => \fIpure closure\fR
758.PP
759Valid keys in the \fIDICT\fR argument are those documented for
760\fBnull-netlink\fR above, plus:
761.TP
762.B local-address
763String.
764IP address of the host's SLIP interface.
765.\" README says this belongs to netlink-null but actually it's
766 \" duplicated between SLIP & tun
767.TP
768.B userv-path
769String.
770Where to find \fBuserv\fR(1).
771The default is \fB"userv"\fR.
772.TP
773.B service-user
774String.
775The name of the user that owns the service.
776The default is \fB"root"\fR.
777.TP
778.B service-name
779String.
780The name of the service to request.
781The default is \fB"ipif"\fR.
782.TP
783.B buffer
784A \fIbuffer closure\fR to use for packets transferred from the host to secnet.
785.PP
786The netlink created by \fBuserv-ipif\fR invokes the specified \fBuserv\fR service with pipes connected to its standard input and output.
787It uses SLIP to communicate with the host kernel via these pipes.
788
789.SH FILES
790.TP
791.I /etc/secnet/secnet.conf
792Configuration file.
793
794.SH "SEE ALSO"
795\fBuserv\fR(1)