1:
2: # dhclient-exit-hook: switchgate-helper
3:
4: RUN="yes"
5: SWITCHGATE="/usr/local/sbin/switchgate"
6:
7: if [ "$RUN" = "yes" ]; then
8:
9: # ipv4 or ipv6?
10: if [ -z "$(echo "$reason" | sed -e "s/^.*6$//")" ]; then
11: IF_FILENAME="dhcp6.${interface}"
12: IPV="IPv6"
13: else
14: IF_FILENAME="dhcp.${interface}"
15: IPV="IPv4"
16: fi
17:
18: # get writeable tmp dir from switchgate
19: SWITCHGATE_TMPDIR="$("$SWITCHGATE" -C)"
20: if [ $? -ne 0 ]; then
21: echo -e "Error: Failed to query switchgate:\n\n$SWITCHGATE_TMPDIR"
22: exit 1
23: elif [ -z "$SWITCHGATE_TMPDIR" ]; then
24: echo "Error: No writeable dir from switchgate received. Please check."
25: exit 1
26: fi
27:
28:
29: case "$reason" in
30:
31: BOUND|RENEW|REBIND|REBOOT|BOUND6|RENEW6|REBIND6|REBOOT6)
32:
33: # check there is a gateway given
34: if [ -z "$new_routers" ]; then
35: echo "No $IPV gateway supplied from DHCP server."
36: # remove the gw file
37: if [ -f "$SWITCHGATE_TMPDIR/$IF_FILENAME" ]; then
38: rm "$SWITCHGATE_TMPDIR/$IF_FILENAME"
39: fi
40: exit 0
41: fi
42:
43: # create writeable dir if not already existing
44: if [ ! -d "$SWITCHGATE_TMPDIR" ]; then
45: mkdir "$SWITCHGATE_TMPDIR"
46: fi
47:
48: echo "Adding DHCP supplied gateways to the list of gateways for switchgate: $new_routers"
49:
50: # Register switchgate routers
51: echo "$new_routers" | sed -e "s/ /\n/g" > "$SWITCHGATE_TMPDIR/$IF_FILENAME"
52: ;;
53:
54: *)
55: # remove the gw file
56: if [ -f "$SWITCHGATE_TMPDIR/$IF_FILENAME" ]; then
57: rm "$SWITCHGATE_TMPDIR/$IF_FILENAME"
58: fi
59: exit 0
60: ;;
61:
62: esac
63: fi
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>