#!/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"
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
