meta-quanta: meta-common: Add "mac-address" and "usb-network" services

Add two services into meta-quanta/meta-common:
(1)mac-address
(2)usb-network

These two service is used to set network config when initialize system.

(From meta-quanta rev: 0ec0ff35cd63d216fa07a67b3eadb41a29ffdcb2)

Signed-off-by: Spencer Ku <Spencer.Ku@quantatw.com>
Change-Id: Ib06467737701b7eccd92bda4f7b7be799a593708
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/meta-quanta/meta-common/network/mac-address_git.bb b/meta-quanta/meta-common/network/mac-address_git.bb
new file mode 100644
index 0000000..5b63e49
--- /dev/null
+++ b/meta-quanta/meta-common/network/mac-address_git.bb
@@ -0,0 +1,21 @@
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+inherit autotools pkgconfig
+inherit systemd
+
+S = "${WORKDIR}/git"
+SRC_URI = "git://github.com/quanta-bmc/mac-address.git;protocol=git"
+SRCREV = "08b87370c56ff69df852eca87391ae46c05d437a"
+
+DEPENDS += "autoconf-archive-native"
+DEPENDS += "systemd"
+
+FILES_${PN} += "${bindir}/mac-address"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "mac-address.service"
+
+EXTRA_OECONF = " \
+    SYSTEMD_TARGET="multi-user.target" \
+"
diff --git a/meta-quanta/meta-common/network/usb-network.bb b/meta-quanta/meta-common/network/usb-network.bb
new file mode 100644
index 0000000..85146aa
--- /dev/null
+++ b/meta-quanta/meta-common/network/usb-network.bb
@@ -0,0 +1,25 @@
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+FILESEXTRAPATHS_append := "${THISDIR}/${PN}:"
+SRC_URI_append = " file://usb-network.sh"
+SRC_URI_append = " file://usb-network.service"
+
+inherit systemd
+
+DEPENDS += "systemd"
+RDEPENDS_${PN} += "libsystemd"
+RDEPENDS_${PN} += "bash"
+
+FILES_${PN}_append = " ${sysconfdir_native}/systemd/network/00-bmc-usb0.network"
+
+do_install() {
+    install -d ${D}/${sbindir}
+    install -m 0755 ${WORKDIR}/usb-network.sh ${D}/${sbindir}
+
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/usb-network.service \
+        ${D}${systemd_unitdir}/system
+}
+
+SYSTEMD_SERVICE_${PN}_append = "usb-network.service"
diff --git a/meta-quanta/meta-common/network/usb-network/usb-network.service b/meta-quanta/meta-common/network/usb-network/usb-network.service
new file mode 100644
index 0000000..917b552
--- /dev/null
+++ b/meta-quanta/meta-common/network/usb-network/usb-network.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Enable USB Network
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/usb-network.sh
+EnvironmentFile=/usr/share/usb-network/usb-network.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-quanta/meta-common/network/usb-network/usb-network.sh b/meta-quanta/meta-common/network/usb-network/usb-network.sh
new file mode 100644
index 0000000..444d4ae
--- /dev/null
+++ b/meta-quanta/meta-common/network/usb-network/usb-network.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+cd /sys/kernel/config/usb_gadget
+
+if [ ! -f "g1" ]; then
+    mkdir g1
+    cd g1
+
+    echo 0x1d6b > idVendor  # Linux foundation
+    echo 0x0104 > idProduct # Multifunction composite gadget
+    mkdir -p strings/0x409
+    echo "Linux" > strings/0x409/manufacturer
+    echo "Etherned/ECM gadget" > strings/0x409/product
+
+    mkdir -p configs/c.1
+    echo 100 > configs/c.1/MaxPower
+    mkdir -p configs/c.1/strings/0x409
+    echo "ECM" > configs/c.1/strings/0x409/configuration
+
+    mkdir -p functions/ecm.usb0
+    cat /tmp/usb0_dev > functions/ecm.usb0/dev_addr # write device mac address
+    cat /tmp/usb0_host > functions/ecm.usb0/host_addr # write usb mac address
+
+    ln -s functions/ecm.usb0 configs/c.1
+
+    echo "$UDC" > UDC
+
+    rm /tmp/usb0_dev
+    rm /tmp/usb0_host
+
+fi
+
+exit 0