#!/bin/bash
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

#### CATEGORY=Other
### Setup udev rules for USB CDC ethernet

## usage: fx setup-usb-ethernet
##
##    This script is only for Linux systems.

if [[ $(uname) != "Linux" ]]; then
  echo >&2 "This script is only intended for Linux systems"
  exit 1
fi

echo "Adding the following udev rules:"
cat << EOF | sudo tee /etc/udev/rules.d/70-zircon-ethernet.rules
# Check for Google network devices being added
ACTION=="add", SUBSYSTEM=="net", ATTRS{idVendor}=="18d1", GOTO="zircon_add_net_google"
GOTO="zircon_end"

# Check for Zircon CDC Ethernet devices being added
LABEL="zircon_add_net_google"
# CDC Ethernet-only configuration
ATTRS{idProduct}=="a020", GOTO="zircon_net_name"
# CDC Ethernet & USB Test Function composite configuration
ATTRS{idProduct}=="a023", GOTO="zircon_net_name"
# CDC Ethernet & ADB
ATTRS{idProduct}=="a026", GOTO="zircon_net_name"
GOTO="zircon_end"

# Set the interface name based on the MAC
LABEL="zircon_net_name"
IMPORT{builtin}="net_id"
PROGRAM="/bin/sh -c 'echo \$\${ID_NET_NAME_MAC#enx}'", NAME="zx-%c"

LABEL="zircon_end"
EOF

sudo udevadm control --reload
sudo udevadm trigger --action=change
