/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 network-hooks.d/bridge

  • Committer: Teddy Hogeborn
  • Date: 2008-07-21 01:50:31 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080721015031-ivjiclli2j06hwgs
* Makefile: Include targets for all binaries.

* plugins.d/Makefile: Do nothing but call the parent Makefile.

* server.py: Added copyright statement and information.
  (Client.__init__): Added doc string.
  (Client.stop): Bug fix: Only log message if stopping for the first
                 time.  Check if the "stop_initiator_tag" and
                 "checker_initiator_tag" attributes exist before using
                 them.
  (Client.__del__): Call self.stop() instead of doing things here.
  (Client.checker_callback): Set self.checker_callback_tag and
                             self.checker to None unconditionally and
                             immediately.
  (Client.stop_checker): Added some checks to handle multiple calls.
  (tcp_handler.handle): Use "self.server.clients" instead of "clients".
  (__main__): Moved all code to the "main" function.
  (main): New.  New option "--address".  Instantiate IPv6_TCPServer
          with "options.address".  Log before starting main loop.
  (main.cleanup) Use "clients.pop()" to remove clients from the set as
                 they are stopped.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/sh
2
 
#
3
 
# This is an example of a Mandos client network hook.  This hook
4
 
# brings up a bridge interface as specified in a separate
5
 
# configuration file.  To be used, this file and any needed
6
 
# configuration file(s) should be copied into the
7
 
# /etc/mandos/network-hooks.d directory.
8
 
9
 
# Copyright © 2012 Teddy Hogeborn
10
 
# Copyright © 2012 Björn Påhlsson
11
 
12
 
# Copying and distribution of this file, with or without modification,
13
 
# are permitted in any medium without royalty provided the copyright
14
 
# notice and this notice are preserved.  This file is offered as-is,
15
 
# without any warranty.
16
 
 
17
 
set -e
18
 
 
19
 
CONFIG="$MANDOSNETHOOKDIR/bridge.conf"
20
 
 
21
 
addrtoif(){
22
 
    grep -liFe "$1" /sys/class/net/*/address \
23
 
        | sed -e 's,.*/\([^/]*\)/[^/]*,\1,' -e "/^${BRIDGE}\$/d"
24
 
}
25
 
 
26
 
# Read config file, which must set "BRIDGE", "PORT_ADDRESSES", and
27
 
# optionally "IPADDRS" and "ROUTES".
28
 
if [ -e "$CONFIG" ]; then
29
 
    . "$CONFIG"
30
 
fi
31
 
 
32
 
if [ -z "$BRIDGE" -o -z "$PORT_ADDRESSES" ]; then
33
 
    exit
34
 
fi
35
 
 
36
 
if [ -n "$DEVICE" ]; then
37
 
    case "$DEVICE" in
38
 
        *,"$BRIDGE"|*,"$BRIDGE",*|"$BRIDGE",*|"$BRIDGE") :;;
39
 
        *) exit;;
40
 
    esac
41
 
fi
42
 
 
43
 
brctl="/sbin/brctl"
44
 
for b in "$brctl" /usr/sbin/brctl; do
45
 
    if [ -e "$b" ]; then
46
 
        brctl="$b"
47
 
        break
48
 
    fi
49
 
done
50
 
 
51
 
do_start(){
52
 
    "$brctl" addbr "$BRIDGE"
53
 
    for address in $PORT_ADDRESSES; do
54
 
        interface=`addrtoif "$address"`
55
 
        "$brctl" addif "$BRIDGE" "$interface"
56
 
        ip link set dev "$interface" up
57
 
    done
58
 
    ip link set dev "$BRIDGE" up
59
 
    sleep "${DELAY%%.*}"
60
 
    if [ -n "$IPADDRS" ]; then
61
 
        for ipaddr in $IPADDRS; do
62
 
            ip addr add "$ipaddr" dev "$BRIDGE"
63
 
        done
64
 
    fi
65
 
    if [ -n "$ROUTES" ]; then
66
 
        for route in $ROUTES; do
67
 
            ip route add "$route" dev "$BRIDGE"
68
 
        done
69
 
    fi
70
 
}
71
 
 
72
 
do_stop(){
73
 
    ip link set dev "$BRIDGE" down
74
 
    for address in $PORT_ADDRESSES; do
75
 
        interface=`addrtoif "$address"`
76
 
        ip link set dev "$interface" down
77
 
        "$brctl" delif "$BRIDGE" "$interface"
78
 
    done
79
 
    "$brctl" delbr "$BRIDGE"
80
 
}
81
 
 
82
 
case "${MODE:-$1}" in
83
 
    start|stop)
84
 
        do_"${MODE:-$1}"
85
 
        ;;
86
 
    files)
87
 
        echo /bin/ip
88
 
        echo "$brctl"
89
 
        ;;
90
 
    modules)
91
 
        echo bridge
92
 
        ;;
93
 
esac