esac
;;
show) shift ; ip_link_show "$@" ;;
+ add*) shift ; ip_link_add "$@" ;;
del*) shift ; ip_link_delete "$@" ;;
*) not_implemented "$*" ;;
esac
}
+ip_link_add ()
+{
+ _link=""
+ _name=""
+ _type=""
+
+ while [ -n "$1" ] ; do
+ case "$1" in
+ link)
+ _link="$2"
+ shift 2
+ ;;
+ name)
+ _name="$2"
+ shift 2
+ ;;
+ type)
+ if [ "$2" != "vlan" ] ; then
+ not_implemented "link type $1"
+ fi
+ _type="$2"
+ shift 2
+ ;;
+ id) shift 2 ;;
+ *) not_implemented "$1" ;;
+ esac
+ done
+
+ case "$_type" in
+ vlan)
+ if [ -z "$_name" -o -z "$_link" ] ; then
+ not_implemented "ip link add with null name or link"
+ fi
+
+ mkdir -p "${FAKE_IP_STATE}/interfaces-vlan"
+ echo "$_link" >"${FAKE_IP_STATE}/interfaces-vlan/${_name}"
+ ip_link_set_down "$_name"
+ ;;
+ esac
+}
+
ip_link_delete ()
{
mkdir -p "${FAKE_IP_STATE}/interfaces-deleted"
touch "${FAKE_IP_STATE}/interfaces-deleted/$1"
+ rm -f "${FAKE_IP_STATE}/interfaces-vlan/$1"
}
ip_link_set_up ()
exit 255
fi
+ if [ -r "${FAKE_IP_STATE}/interfaces-vlan/${dev}" ] ; then
+ read _link <"${FAKE_IP_STATE}/interfaces-vlan/${dev}"
+ dev="${dev}@${_link}"
+ fi
+
mac=$(echo $dev | md5sum | sed -r -e 's@(..)(..)(..)(..)(..)(..).*@\1:\2:\3:\4:\5:\6@')
_state="UP"
_flags=",UP,LOWER_UP"