/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/mandos-client.xml

* network-hooks.d: New directory.
* network-hooks.d/bridge: New example hook.
* network-hooks.d/bridge.conf: Config file for bridge example hook.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3
3
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4
4
<!ENTITY COMMANDNAME "mandos-client">
5
 
<!ENTITY TIMESTAMP "2011-11-27">
 
5
<!ENTITY TIMESTAMP "2011-10-03">
6
6
<!ENTITY % common SYSTEM "../common.ent">
7
7
%common;
8
8
]>
102
102
      </arg>
103
103
      <sbr/>
104
104
      <arg>
105
 
        <option>--network-hook-dir
106
 
        <replaceable>DIR</replaceable></option>
 
105
        <option>--network-hook-dir<replaceable>DIR</replaceable></option>
107
106
      </arg>
108
107
      <sbr/>
109
108
      <arg>
148
147
      will wait indefinitely for new servers to appear.
149
148
    </para>
150
149
    <para>
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
164
 
      exit).
165
 
    </para>
166
 
    <para>
167
 
      Before a network interface is selected, all <quote>network
168
 
      hooks</quote> are run; see <xref linkend="network-hooks"/>.
169
 
    </para>
170
 
    <para>
171
150
      This program is not meant to be run directly; it is really meant
172
151
      to run as a plugin of the <application>Mandos</application>
173
152
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
248
227
            can not be a pseudo-interface such as <quote>br0</quote>
249
228
            or <quote>tun0</quote>; such interfaces will not exist
250
229
            until much later in the boot process, and can not be used
251
 
            by this program, unless created by a <quote>network
252
 
            hook</quote> — see <xref linkend="network-hooks"/>.
 
230
            by this program.
253
231
          </para>
254
232
          <para>
255
233
            <replaceable>NAME</replaceable> can be the string
415
393
      <refentrytitle>plugin-runner</refentrytitle>
416
394
      <manvolnum>8mandos</manvolnum></citerefentry>) is used to run
417
395
      both this program and others in in parallel,
418
 
      <emphasis>one</emphasis> of which (<citerefentry>
419
 
      <refentrytitle>password-prompt</refentrytitle>
420
 
      <manvolnum>8mandos</manvolnum></citerefentry>) will prompt for
421
 
      passwords on the system console.
 
396
      <emphasis>one</emphasis> of which will prompt for passwords on
 
397
      the system console.
422
398
    </para>
423
399
  </refsect1>
424
400
  
445
421
    </para>
446
422
  </refsect1>
447
423
  
448
 
  <refsect1 id="network-hooks">
449
 
    <title>NETWORK HOOKS</title>
450
 
    <para>
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
456
 
      directory.
457
 
    </para>
458
 
    <para>
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.
465
 
    </para>
466
 
    <refsect2 id="hook-requirements">
467
 
      <title>REQUIREMENTS</title>
468
 
      <para>
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, and hyphens.
472
 
      </para>
473
 
      <para>
474
 
        A network hook will receive one argument, which can be one of
475
 
        the following:
476
 
      </para>
477
 
      <variablelist>
478
 
        <varlistentry>
479
 
          <term><literal>start</literal></term>
480
 
          <listitem>
481
 
            <para>
482
 
              This should make the network hook create (if necessary)
483
 
              and bring up a network interface.
484
 
            </para>
485
 
          </listitem>
486
 
        </varlistentry>
487
 
        <varlistentry>
488
 
          <term><literal>stop</literal></term>
489
 
          <listitem>
490
 
            <para>
491
 
              This should make the network hook take down a network
492
 
              interface, and delete it if it did not exist previously.
493
 
            </para>
494
 
          </listitem>
495
 
        </varlistentry>
496
 
        <varlistentry>
497
 
          <term><literal>files</literal></term>
498
 
          <listitem>
499
 
            <para>
500
 
              This should make the network hook print, <emphasis>on
501
 
              separate lines</emphasis>, all the files needed for it
502
 
              to run.  (These files will be copied into the initial
503
 
              RAM filesystem.)  Intended use is for a network hook
504
 
              which is a shell script to print its needed binaries.
505
 
            </para>
506
 
            <para>
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
510
 
              requirement.
511
 
            </para>
512
 
          </listitem>
513
 
        </varlistentry>
514
 
      </variablelist>
515
 
      <para>
516
 
        The network hook will be provided with a number of environment
517
 
        variables:
518
 
      </para>
519
 
      <variablelist>
520
 
        <varlistentry>
521
 
          <term><envar>MANDOSNETHOOKDIR</envar></term>
522
 
          <listitem>
523
 
            <para>
524
 
              The network hook directory, specified to
525
 
              <command>&COMMANDNAME;</command> by the
526
 
              <option>--network-hook-dir</option> option.  Note: this
527
 
              should <emphasis>always</emphasis> be used by the
528
 
              network hook to refer to itself or any files it may
529
 
              require.
530
 
            </para>
531
 
          </listitem>
532
 
        </varlistentry>
533
 
        <varlistentry>
534
 
          <term><envar>DEVICE</envar></term>
535
 
          <listitem>
536
 
            <para>
537
 
              The network interface, as specified to
538
 
              <command>&COMMANDNAME;</command> by the
539
 
              <option>--interface</option> option.  If this is not the
540
 
              interface a hook will bring up, there is no reason for a
541
 
              hook to continue.
542
 
            </para>
543
 
          </listitem>
544
 
        </varlistentry>
545
 
        <varlistentry>
546
 
          <term><envar>MODE</envar></term>
547
 
          <listitem>
548
 
            <para>
549
 
              This will be the same as the first argument;
550
 
              i.e. <quote><literal>start</literal></quote>,
551
 
              <quote><literal>stop</literal></quote>, or
552
 
              <quote><literal>files</literal></quote>.
553
 
            </para>
554
 
          </listitem>
555
 
        </varlistentry>
556
 
        <varlistentry>
557
 
          <term><envar>VERBOSITY</envar></term>
558
 
          <listitem>
559
 
            <para>
560
 
              This will be the <quote><literal>1</literal></quote> if
561
 
              the <option>--debug</option> option is passed to
562
 
              <command>&COMMANDNAME;</command>, otherwise
563
 
              <quote><literal>0</literal></quote>.
564
 
            </para>
565
 
          </listitem>
566
 
        </varlistentry>
567
 
        <varlistentry>
568
 
          <term><envar>DELAY</envar></term>
569
 
          <listitem>
570
 
            <para>
571
 
              This will be the same as the <option>--delay</option>
572
 
              option passed to <command>&COMMANDNAME;</command>.
573
 
            </para>
574
 
          </listitem>
575
 
        </varlistentry>
576
 
      </variablelist>
577
 
      <para>
578
 
        A hook may not read from standard input, and should be
579
 
        restrictive in printing to standard output or standard error
580
 
        unless <varname>VERBOSITY</varname> is
581
 
        <quote><literal>1</literal></quote>.
582
 
      </para>
583
 
    </refsect2>
584
 
  </refsect1>
585
 
  
586
424
  <refsect1 id="files">
587
425
    <title>FILES</title>
588
426
    <variablelist>
600
438
          </para>
601
439
        </listitem>
602
440
      </varlistentry>
603
 
      <varlistentry>
604
 
        <term><filename
605
 
        class="directory">/lib/mandos/network-hooks.d</filename></term>
606
 
        <listitem>
607
 
          <para>
608
 
            Directory where network hooks are located.  Change this
609
 
            with the <option>--network-hook-dir</option> option.  See
610
 
            <xref linkend="network-hooks"/>.
611
 
          </para>
612
 
        </listitem>
613
 
      </varlistentry>
614
441
    </variablelist>
615
442
  </refsect1>
616
443