/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: 2019-08-05 21:14:05 UTC
  • Revision ID: teddy@recompile.se-20190805211405-9m6hecekaihpttz9
Override lintian warnings about upgrading from old versions

There are some really things which are imperative that we fix in case
someone were to upgrade from a really old version.  We want to keep
these fixes in the postinst maintainer scripts, even though lintian
complains about such old upgrades not being supported by Debian in
general.  We prefer the code being there, for the sake of the users.

* debian/mandos-client.lintian-overrides
  (maintainer-script-supports-ancient-package-version): New.
  debian/mandos.lintian-overrides
  (maintainer-script-supports-ancient-package-version): - '' -

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-2018 Teddy Hogeborn
 
10
# Copyright © 2012-2018 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" ] || [ -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