| #!/bin/sh |
| # |
| # Copyright 2015 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # UDEV script that sets up the USB-Ethernet debug link. |
| |
| DEVICE_IP="169.254.100.2" |
| MAX_VETH_SUFFIX=99 |
| |
| # VID/PID of the USB-Ethernet dongle used for the debug link. |
| VENDOR_ID="13b1" |
| PRODUCT_ID="0041" |
| |
| devdir="" |
| for d in /sys/bus/usb/devices/*; do |
| vid="$(cat ${d}/idVendor)" |
| pid="$(cat ${d}/idProduct)" |
| if [ "${vid}" = "${VENDOR_ID}" -a "${pid}" = "${PRODUCT_ID}" ]; then |
| devdir="${d}" |
| fi |
| done |
| |
| if [ -z "${devdir}" ]; then |
| logger "setup-veth-link: could not find debug link hardware" |
| exit 1 |
| fi |
| |
| netdir="$(find ${devdir}/ -name net)" |
| ifname="$(ls ${netdir})" |
| address="$(cat ${netdir}/${ifname}/address)" |
| |
| ip link set dev "${ifname}" down |
| |
| trap "ip link set dev ${ifname} up" EXIT |
| |
| new_ifname="" |
| # Find and set an availabe veth* name for the debug link. |
| for i in $(seq 0 ${MAX_VETH_SUFFIX}); do |
| new_ifname="veth${i}" |
| if nameif "${new_ifname}" "${address}"; then |
| break |
| elif [ ${i} -eq ${MAX_VETH_SUFFIX} ]; then |
| logger "setup-veth-link: could not find an available veth* interface name" |
| exit 1 |
| fi |
| done |
| |
| ip address add "${DEVICE_IP}/24" dev "${new_ifname}" |
| ip link set dev "${new_ifname}" up |