148
142
will wait indefinitely for new servers to appear.
151
The network interface is selected like this: If an interface is
152
specified using the <option>--interface</option> option, that
153
interface is used. Otherwise, <command>&COMMANDNAME;</command>
154
will choose any interface that is up and running and is not a
155
loopback interface, is not a point-to-point interface, is
156
capable of broadcasting and does not have the NOARP flag (see
157
<citerefentry><refentrytitle>netdevice</refentrytitle>
158
<manvolnum>7</manvolnum></citerefentry>). (If the
159
<option>--connect</option> option is used, point-to-point
160
interfaces and non-broadcast interfaces are accepted.) If no
161
acceptable interfaces are found, re-run the check but without
162
the <quote>up and running</quote> requirement, and manually take
163
the selected interface up (and later take it down on program
167
Before a network interface is selected, all <quote>network
168
hooks</quote> are run; see <xref linkend="network-hooks"/>.
171
145
This program is not meant to be run directly; it is really meant
172
146
to run as a plugin of the <application>Mandos</application>
173
147
<citerefentry><refentrytitle>plugin-runner</refentrytitle>
448
<refsect1 id="network-hooks">
449
<title>NETWORK HOOKS</title>
451
If a network interface like a bridge or tunnel is required to
452
find a Mandos server, this requires the interface to be up and
453
running before <command>&COMMANDNAME;</command> starts looking
454
for Mandos servers. This can be accomplished by creating a
455
<quote>network hook</quote> program, and placing it in a special
459
Before the network is used (and again before program exit), any
460
runnable programs found in the network hook directory are run
461
with the argument <quote><literal>start</literal></quote> or
462
<quote><literal>stop</literal></quote>. This should bring up or
463
down, respectively, any network interface which
464
<command>&COMMANDNAME;</command> should use.
466
<refsect2 id="hook-requirements">
467
<title>REQUIREMENTS</title>
469
A network hook must be an executable file, and its name must
470
consist entirely of upper and lower case letters, digits,
471
underscores, periods, and hyphens.
474
A network hook will receive one argument, which can be one of
479
<term><literal>start</literal></term>
482
This should make the network hook create (if necessary)
483
and bring up a network interface.
488
<term><literal>stop</literal></term>
491
This should make the network hook take down a network
492
interface, and delete it if it did not exist previously.
497
<term><literal>files</literal></term>
500
This should make the network hook print, <emphasis>one
501
file per line</emphasis>, all the files needed for it to
502
run. (These files will be copied into the initial RAM
503
filesystem.) Typical use is for a network hook which is
504
a shell script to print its needed binaries.
507
It is not necessary to print any non-executable files
508
already in the network hook directory, these will be
509
copied implicitly if they otherwise satisfy the name
515
<term><literal>modules</literal></term>
518
This should make the network hook print, <emphasis>on
519
separate lines</emphasis>, all the kernel modules needed
520
for it to run. (These modules will be copied into the
521
initial RAM filesystem.) For instance, a tunnel
523
<quote><literal>tun</literal></quote> module.
529
The network hook will be provided with a number of environment
534
<term><envar>MANDOSNETHOOKDIR</envar></term>
537
The network hook directory, specified to
538
<command>&COMMANDNAME;</command> by the
539
<option>--network-hook-dir</option> option. Note: this
540
should <emphasis>always</emphasis> be used by the
541
network hook to refer to itself or any files in the hook
542
directory it may require.
547
<term><envar>DEVICE</envar></term>
550
The network interface, as specified to
551
<command>&COMMANDNAME;</command> by the
552
<option>--interface</option> option. If this is not the
553
interface a hook will bring up, there is no reason for a
559
<term><envar>MODE</envar></term>
562
This will be the same as the first argument;
563
i.e. <quote><literal>start</literal></quote>,
564
<quote><literal>stop</literal></quote>,
565
<quote><literal>files</literal></quote>, or
566
<quote><literal>modules</literal></quote>.
571
<term><envar>VERBOSITY</envar></term>
574
This will be the <quote><literal>1</literal></quote> if
575
the <option>--debug</option> option is passed to
576
<command>&COMMANDNAME;</command>, otherwise
577
<quote><literal>0</literal></quote>.
582
<term><envar>DELAY</envar></term>
585
This will be the same as the <option>--delay</option>
586
option passed to <command>&COMMANDNAME;</command>. Is
587
only set if <envar>MODE</envar> is
588
<quote><literal>start</literal></quote> or
589
<quote><literal>stop</literal></quote>.
594
<term><envar>CONNECT</envar></term>
597
This will be the same as the <option>--connect</option>
598
option passed to <command>&COMMANDNAME;</command>. Is
599
only set if <option>--connect</option> is passed and
600
<envar>MODE</envar> is
601
<quote><literal>start</literal></quote> or
602
<quote><literal>stop</literal></quote>.
608
A hook may not read from standard input, and should be
609
restrictive in printing to standard output or standard error
610
unless <varname>VERBOSITY</varname> is
611
<quote><literal>1</literal></quote>.
616
407
<refsect1 id="files">
617
408
<title>FILES</title>