]> git.ipfire.org Git - people/stevee/network.git/blame - hooks/vlan
network: Remove support for blue zone.
[people/stevee/network.git] / hooks / vlan
CommitLineData
5b20e43a
MT
1#!/bin/sh
2########################################################################
3# Begin $NETWORK_DEVICES/services/vlan
4#
5# Description : VLAN Script
6#
7# Authors : Michael Tremer - michael.tremer@ipfire.org
8#
9# Version : 00.00
10#
11# Notes : This script adds vlan support.
12#
13########################################################################
14
15. /lib/network/hook-header
16
17HOOK_NAME=vlan
18HOOK_TYPE=port
19
20function port_name() {
21 echo "${zone}v${ID}"
22}
23
24case "${action}" in
25 help)
26 ;;
27
28 info)
29 echo "HOOK_NAME=${HOOK_NAME}"
30 echo "HOOK_TYPE=${HOOK_TYPE}"
31 ;;
32
33 pre-up)
34 # Load the kernel module
35 grep -q ^8021q /proc/modules || modprobe 8021q
36
37 if ! port_is_up $(port_name); then
38 MESSAGE="Adding VLAN ${ID} to port ${MAC}..."
39
40 if ! device_is_up $(devicify ${MAC}); then
41 ip link set $(devicify ${MAC}) up
42 fi
43 vconfig add $(devicify ${MAC}) ${ID} >/dev/null
44 evaluate_retval
45
46 device_rename $(get_device_by_mac_and_vid ${MAC} ${ID}) $(port_name)
47 ip link set $(port_name) up
48
49 ebtables -t broute -A BROUTING -p 802_1Q --vlan-id=${ID} -j DROP
50 fi
51 ;;
52
53 post-up)
54 if ! zone_has_device_attached ${zone} $(port_name); then
55 zone_add_port ${zone} $(get_device ${MAC} ${ID})
56 fi
57 ;;
58
59 pre-down)
60 if zone_has_device_attached ${zone} $(port_name); then
61 zone_del_port ${zone} $(get_device_by_mac_and_vid ${MAC} ${ID})
62 fi
63 ;;
64
65 post-down)
66 if port_is_up $(port_name); then
67 MESSAGE="Removing VLAN ${ID} from port ${MAC}..."
68
69 vconfig rem $(get_device_by_mac_and_vid ${MAC} ${ID}) >/dev/null
70 evaluate_retval
71
72 ebtables -t broute -D BROUTING -p 802_1Q --vlan-id=${ID} -j DROP
73 fi
74 ;;
75
76 add)
77 MAC=$(macify ${1})
78 ID=${2} # Must be integer between 1 and 4096
79
80 UUID=$(uuid)
81 cat <<EOF > ${CONFIG_UUIDS}/${UUID}
82HOOK="${HOOK_NAME}"
83ID="${ID}"
84MAC="${MAC}"
85EOF
86 ln -sf ${CONFIG_UUIDS}/${UUID} \
87 ${CONFIG_ZONES}/${zone}/${HOOK_NAME}-${UUID}
88
89 log_success_msg "Configuration successfully saved!"
90 echo " Device : $(devicify ${MAC})"
91 echo " MAC address : ${MAC}"
92 echo " VLAN tag : ${ID}"
93 ;;
94
95 rem)
96 # XXX to be done
97 ;;
98
99 status)
100 echo -e "# ${CLR_BOLD_CYN}VLAN port $(port_name)${NORMAL}"
101 echo -n "# State: "
102 if device_is_up $(port_name); then
103 echo -e "${CLR_BOLD_GRN}up${NORMAL}"
104 RET=${EXIT_OK}
105 else
106 echo -e "${CLR_BOLD_RED}down${NORMAL}"
107 RET=${EXIT_ERROR}
108 fi
109 echo "# ID : ${ID}"
110 echo "#"
111 exit ${RET}
112 ;;
113
114 *)
115 echo "Usage: ${0} [interface] {up|down|add|remove|attach|detach|status}"
116 exit 1
117 ;;
118esac
119
120# End $NETWORK_DEVICES/services/vlan