File: client-notify-bsd.sh

package info (click to toggle)
dibbler 1.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 13,352 kB
  • sloc: cpp: 60,323; ansic: 12,235; sh: 11,951; yacc: 3,418; lex: 969; makefile: 940; perl: 319; xml: 116; python: 74
file content (79 lines) | stat: -rwxr-xr-x 2,915 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/local/bin/bash

# author: Sly Midnight
# This script was tested on OpenBSD, but it is likely to work on other BSDs as well.

version="v0.2.3-openbsd"
LOGFILE=/var/lib/dibbler/client-notify-bsd.log

# uncomment this to get full list of available variables
set >> $LOGFILE
echo "Argument to script: $1 version: $version" >> $LOGFILE

echo "-----------" >> $LOGFILE

if [ -n "$OPTION_NEXT_HOP" ]; then

    route -n delete -inet6 default > /dev/null 2>&1
    route -n add -inet6 default ${OPTION_NEXT_HOP}%$IFACE
    echo "Added default route via ${OPTION_NEXT_HOP} on interface $IFACE/$IFINDEX" >> $LOGFILE

fi

if [ -n "$OPTION_NEXT_HOP_RTPREFIX" ]; then

    NEXT_HOP=`echo ${OPTION_NEXT_HOP_RTPREFIX} | awk '{print $1}'`
    NETWORK=`echo ${OPTION_NEXT_HOP_RTPREFIX} | awk '{print $2}'`
    #LIFETIME=`echo ${OPTION_NEXT_HOP_RTPREFIX} | awk '{print $3}'`
    METRIC=`echo ${OPTION_NEXT_HOP_RTPREFIX} | awk '{print $4}'`

    if [ "$NETWORK" == "::/0" ]; then

        route -n delete -inet6 default > /dev/null 2>&1
        route -n add -inet6 default ${OPTION_NEXT_HOP}%$IFACE
        echo "Added default route via  ${OPTION_NEXT_HOP} on interface $IFACE/$IFINDEX" >> $LOGFILE

    else

        route -n add -inet6 ${NETWORK} ${NEXT_HOP}%$IFACE
        echo "Added nexthop to network ${NETWORK} via ${NEXT_HOP} on interface $IFACE/$IFINDEX, metric ${METRIC}" >> $LOGFILE

    fi

fi

if [ -n "$OPTION_RTPREFIX" ]; then

    ONLINK=`echo ${OPTION_RTPREFIX} | awk '{print $1}'`
    METRIC=`echo ${OPTION_RTPREFIX} | awk '{print $3}'`
    route -n add -inet6 ${ONLINK}%$IFACE -iface
    echo "Added route to network ${ONLINK} on interface $IFACE/$IFINDEX onlink, metric ${METRIC}" >> $LOGFILE

fi


if [ -n "$ADDR1" ]; then
    echo "Address ${ADDR1} (operation $1) to client $REMOTE_ADDR on inteface $IFACE/$IFINDEX" >> $LOGFILE
    ifconfig $IFACE inet6 ${ADDR1} prefixlen 64
    default_route=`echo -n ${ADDR1} | awk -F\: '{print $1":"$2":"$3":"$4"::1"; }'`
    route -n delete -inet6 default
    route -n add -inet6 default ${default_route}
    echo "Added default route via ${default_route} on interface $IFACE/$IFINDEX" >> $LOGFILE

    if [ -n "$SRV_OPTION23" ]; then
        echo ${SRV_OPTION23} | awk -F' ' '{ print "nameserver "$1"\nnameserver "$2; }' >> /etc/resolv.conf
        cat /etc/resolv.conf | sort -u > /etc/resolv.tmp
        mv -f /etc/resolv.tmp /etc/resolv.conf
        echo "DNS servers ${SRV_OPTION23} (operation $1) to client $REMOTE_ADDR on inteface $IFACE/$IFINDEX" >> $LOGFILE
fi

fi

if [ -n "$PREFIX1" ]; then
    echo "Prefix ${PREFIX1} (operation $1) to client $REMOTE_ADDR on inteface $IFACE/$IFINDEX" >> $LOGFILE
    PREFIXIFACE=`cat /etc/dibbler/client.conf | grep -i downlink | grep -v -e '^#' | awk -F" " '{ print $2; }' | sed 's/\"//g'`
    ifconfig $PREFIXIFACE inet6 "$PREFIX1"1 prefixlen $PREFIX1LEN
fi

# sample return code. Dibbler will just print it out.
exit 3