| 1 | #!/bin/ash
|
|---|
| 2 | #
|
|---|
| 3 | # Broadcom 47xx vlan and switch configuration init script
|
|---|
| 4 | #
|
|---|
| 5 | # Config: uses the 'nvram' settings for setting up vlan devices
|
|---|
| 6 |
|
|---|
| 7 | . /etc/rc.d/init.d/functions
|
|---|
| 8 |
|
|---|
| 9 | if [ ! -x /sbin/robocfg ]; then
|
|---|
| 10 | echo -n "Setting up vlan: /sbin/robocfg not found "
|
|---|
| 11 | false
|
|---|
| 12 | check_status
|
|---|
| 13 | fi
|
|---|
| 14 |
|
|---|
| 15 | if [ ! -x /sbin/vconfig ]; then
|
|---|
| 16 | echo -n "Setting up vlan: /sbin/vconfig not found "
|
|---|
| 17 | false
|
|---|
| 18 | check_status
|
|---|
| 19 | fi
|
|---|
| 20 |
|
|---|
| 21 | if [ ! -x /sbin/nvram ]; then
|
|---|
| 22 | echo -n "Setting up vlan: /sbin/nvram not found "
|
|---|
| 23 | false
|
|---|
| 24 | check_status
|
|---|
| 25 | fi
|
|---|
| 26 |
|
|---|
| 27 | case "$1" in
|
|---|
| 28 | start)
|
|---|
| 29 |
|
|---|
| 30 | # Add a specific workaround for the case of weirdly set wireless mac address
|
|---|
| 31 | # Do what openwrt is doing, and increment the last hex with 2
|
|---|
| 32 | if [ "`nvram get il0macaddr`" = 00:90:4c:5f:00:2a ]; then
|
|---|
| 33 | et0="$(nvram get et0macaddr)"
|
|---|
| 34 | prefix="$(echo $et0 | sed -e 's/:..$//')"
|
|---|
| 35 | addendum=$(( (0x$(echo $et0 | sed -e s/.*://g) + 2) % 256 ))
|
|---|
| 36 | il0=$(printf %s:%02x $prefix $addendum)
|
|---|
| 37 | echo -n "Fixing up wlan0 mac address: "
|
|---|
| 38 | nvram set il0macaddr=$il0 && nvram commit
|
|---|
| 39 | check_status
|
|---|
| 40 | ifconfig wlan0 hw ether $il0 2>/dev/null
|
|---|
| 41 | fi
|
|---|
| 42 |
|
|---|
| 43 | # eth0 has to be up for this
|
|---|
| 44 | ifconfig eth0 up
|
|---|
| 45 |
|
|---|
| 46 | robocfg switch disable
|
|---|
| 47 | robocfg vlans enable reset
|
|---|
| 48 |
|
|---|
| 49 | nvram show | grep vlan[0-4]ports= | sed -e s/vlan// -e s/ports=/\ / |
|
|---|
| 50 | while read vlan ports; do
|
|---|
| 51 | echo -n "Bringing up eth0.${vlan}: "
|
|---|
| 52 | robocfg vlan ${vlan} ports "${ports}" &&
|
|---|
| 53 | vconfig add eth0 $vlan
|
|---|
| 54 | check_status
|
|---|
| 55 | done
|
|---|
| 56 | robocfg switch enable
|
|---|
| 57 | exit 0
|
|---|
| 58 | ;;
|
|---|
| 59 | stop)
|
|---|
| 60 | # FIXME: Should we really do something at shutdown?
|
|---|
| 61 | exit 0
|
|---|
| 62 | ;;
|
|---|
| 63 | restart)
|
|---|
| 64 | $0 stop
|
|---|
| 65 | $0 start
|
|---|
| 66 | ;;
|
|---|
| 67 | status)
|
|---|
| 68 | robocfg show
|
|---|
| 69 | ;;
|
|---|
| 70 | *)
|
|---|
| 71 | echo "Usage: $0 {start|stop|restart|status}"
|
|---|
| 72 | exit 1
|
|---|
| 73 | esac
|
|---|
| 74 |
|
|---|