+ logger -t scripts-vif "Adding ${dev} to ${bridge} with address ${address}"
+
+ ${IP} link set "${dev}" down || logger -t scripts-vif "Failed to ip link set ${dev} down"
+ ${IP} link set "${dev}" arp off || logger -t scripts-vif "Failed to ip link set ${dev} arp off"
+ ${IP} link set "${dev}" multicast off || logger -t scripts-vif "Failed to ip link set ${dev} multicast off"
+ ${IP} link set "${dev}" address "${address}" || logger -t scripts-vif "Failed to ip link set ${dev} address ${address}"
+ ${IP} addr flush "${dev}" || logger -t scripts-vif "Failed to ip addr flush ${dev}"
+
+ case $NETWORK_MODE in
+ bridge)
+ ${BRCTL} setfd "${bridge}" 0 || logger -t scripts-vif "Failed to brctl setfd ${bridge} 0"
+ ${BRCTL} addif "${bridge}" "${dev}" || logger -t scripts-vif "Failed to brctl addif ${bridge} ${dev}"
+ ;;
+ vswitch)
+ local VLAN_ID=$($vsctl br-to-vlan $bridge)
+ local vid=
+ if [ "$VLAN_ID" -ne 0 ] ; then
+ bridge=$($vsctl br-to-parent $bridge)
+ vid="--add=vlan.${dev}.tag=${VLAN_ID}"
+ fi
+
+ if [ "$TYPE" = "vif" ] ; then
+ local vif_details=$(handle_vswitch_vif_details)
+ fi
+
+ $cfg_mod -F /etc/ovs-vswitchd.conf \
+ --del-match="bridge.*.port=${dev}" \
+ --del-match="vlan.${dev}.trunks=*" \
+ --del-match="vlan.${dev}.tag=*" \
+ --del-match="port.${dev}.[!0-9]*" \
+ --add="bridge.$bridge.port=${dev}" \
+ $vid $vif_details -c
+ $service vswitch reload
+ ;;
+ esac
+
+ ${IP} link set "${dev}" up || logger -t scripts-vif "Failed to ip link set ${dev} up"
+}