#!/sbin/openrc-run
# B12Q: usb_up + telnetd from the LFS init (DEVELOPMENT IDs 18d1:d001, NCM 172.16.42.1/24, root telnet bound to NCM only). Unchanged logic.
description="Aurora USB NCM management + telnetd"
depend() { after aurora-ro; }
start() {
	ebegin "USB NCM gadget"
	grep -q " /sys/kernel/config " /proc/mounts || mount -t configfs configfs /sys/kernel/config
	for i in $(seq 1 50); do udc=$(ls /sys/class/udc 2>/dev/null | head -1); [ -n "$udc" ] && break; sleep 0.2; done
	[ -n "$udc" ] || { eend 1 "no UDC"; return 1; }
	G=/sys/kernel/config/usb_gadget/aurora
	if [ ! -d $G ]; then
		mkdir -p $G; echo 0x18d1 > $G/idVendor; echo 0xd001 > $G/idProduct
		mkdir -p $G/strings/0x409; echo Aurora > $G/strings/0x409/manufacturer; echo "Aurora RAM Boot" > $G/strings/0x409/product; echo <EMMC_SERIAL> > $G/strings/0x409/serialnumber
		mkdir -p $G/functions/ncm.usb0 $G/configs/c.1/strings/0x409; echo NCM > $G/configs/c.1/strings/0x409/configuration
		ln -s $G/functions/ncm.usb0 $G/configs/c.1/
	fi
	[ -n "$(cat $G/UDC)" ] || echo "$udc" > $G/UDC || { eend 1 "bind UDC"; return 1; }
	ifc=$(cat $G/functions/ncm.usb0/ifname)
	ip link set lo up; ip addr show dev "$ifc" | grep -q " 172.16.42.1/24 " || ip addr add 172.16.42.1/24 dev "$ifc"; ip link set "$ifc" up
	pidof telnetd >/dev/null || telnetd -l /bin/sh -b 172.16.42.1 -p 23
	eend $? "telnetd"
}
