/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: 2011-12-31 20:07:11 UTC
  • mfrom: (535.1.9 wireless-network-hook)
  • Revision ID: teddy@recompile.se-20111231200711-6dli3r8drftem57r
Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

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
# Copying and distribution of this file, with or without modification,
 
10
# are permitted in any medium without royalty provided the copyright
 
11
# notice and this notice are preserved.  This file is offered as-is,
 
12
# without any warranty.
 
13
 
 
14
set -e
 
15
 
 
16
CONFIG="$MANDOSNETHOOKDIR/bridge.conf"
 
17
 
 
18
addrtoif(){
 
19
    grep -liFe "$1" /sys/class/net/*/address \
 
20
        | sed -e 's,.*/\([^/]*\)/[^/]*,\1,'
 
21
}
 
22
 
 
23
# Read config file, which must set "BRIDGE", "PORT_ADDRESSES", and
 
24
# optionally "IPADDRS" and "ROUTES".
 
25
if [ -e "$CONFIG" ]; then
 
26
    . "$CONFIG"
 
27
fi
 
28
 
 
29
if [ -z "$BRIDGE" -o -z "$PORT_ADDRESSES" ]; then
 
30
    exit
 
31
fi
 
32
 
 
33
if [ -n "$DEVICE" -a "$DEVICE" != "$BRIDGE" ]; then
 
34
    exit
 
35
fi
 
36
 
 
37
for b in /sbin/brctl /usr/sbin/brctl; do
 
38
    if [ -e "$b" ]; then
 
39
        brctl="$b"
 
40
        break
 
41
    fi
 
42
done
 
43
 
 
44
case "$1" in
 
45
    start)
 
46
        "$brctl" addbr "$BRIDGE"
 
47
        for address in $PORT_ADDRESSES; do
 
48
            interface=`addrtoif "$address"`
 
49
            "$brctl" addif "$BRIDGE" "$interface"
 
50
            ip link set dev "$interface" up
 
51
        done
 
52
        ip link set dev "$BRIDGE" up
 
53
        sleep "$DELAY"
 
54
        if [ -n "$IPADDRS" ]; then
 
55
            for ipaddr in $IPADDRS; do
 
56
                ip addr add "$ipaddr" dev "$BRIDGE"
 
57
            done
 
58
        fi
 
59
        if [ -n "$ROUTES" ]; then
 
60
            for route in $ROUTES; do
 
61
                ip route add "$route" dev "$BRIDGE"
 
62
            done
 
63
        fi
 
64
        ;;
 
65
    stop)
 
66
        ip link set dev "$BRIDGE" down
 
67
        for address in $PORT_ADDRESSES; do
 
68
            interface=`addrtoif "$address"`
 
69
            ip link set dev "$interface" down
 
70
            "$brctl" delif "$BRIDGE" "$interface"
 
71
        done
 
72
        "$brctl" delbr "$BRIDGE"
 
73
        ;;
 
74
    files)
 
75
        echo /bin/ip
 
76
        echo "$brctl"
 
77
        ;;
 
78
    modules)
 
79
        echo bridge
 
80
        ;;
 
81
esac