#!/bin/sh

BRIDGE_ethB="1";
BRIDGE_ethC="1";
BRIDGE_ethD="1";
BRIDGE_ethE="1";

PVID_ethB="1";
PVID_ethC="1";
PVID_ethD="1";
PVID_ethE="1";

if [ -e /etc/default/bridge ];then
  source /etc/default/bridge
fi;

NAME_eth0="ethA";
NAME_eth1="ethB";
NAME_eth2="ethC";
NAME_usb0="ethD";
NAME_usb1="ethE";


INAME="NAME_${1}"
NAME=${!INAME}

if [ ! "${NAME}" ] || [ ! -e /sys/class/net/${1}/flags ] ||  (( $(cat /sys/class/net/${1}/flags) & 1 ));then
  exit 1;
fi;

if [ "${1}" == "eth0" ] && [ ! -d /sys/class/net/${1}/brif ];then
  /sbin/ip link set dev ${1} name ${NAME}
  /sbin/ip link add name ${1} type bridge vlan_filtering 1 || /sbin/ip link add name ${1} type bridge
  /sbin/ip link set dev ${1} address $(cat /sys/class/net/${NAME}/address)
  /sbin/ip link set dev ${NAME} master ${1}
  /sbin/bridge vlan add dev ${NAME} vid 1 pvid untagged
  /sbin/bridge vlan add dev ${1} vid 1 pvid untagged self
  /sbin/ip link set dev ${1} up
  /sbin/ip link set dev ${NAME} up
 elif [ ! -d /sys/class/net/${NAME} ];then
  BIFACE="BRIDGE_${NAME}"
  if [ "${!BIFACE}" == "1" ] && [ -d /sys/class/net/eth0/brif ];then
    PVID="PVID_${NAME}"
    /sbin/ip link set dev ${1} name ${NAME}
    /sbin/ip link set dev ${NAME} master eth0
    /sbin/ip link set dev ${NAME} up
    /sbin/bridge -c vlan del dev ${NAME} vid 1-4094
    /sbin/bridge -c vlan add dev ${NAME} vid ${!PVID} pvid untagged
   elif [ "${!BIFACE}" == "1" ] && [ ! -d /sys/class/net/eth0/brif ];then
    /sbin/ip link set dev ${1} up
    /sbin/udhcpc -b -q -t 6 -p /var/run/udhcpc.${1}.pid -i ${1}
   elif [ "${!BIFACE}" == "2" ];then
    /sbin/ip link set dev ${1} up
    /sbin/udhcpc -b -q -t 6 -p /var/run/udhcpc.${1}.pid -i ${1}
   elif [ "${!BIFACE}" == "0" ];then
    /sbin/ip link set dev ${1} up
  fi
fi
