#!/sbin/openrc-run

description="Load USBIP kernel modules and run daemon"

: ${USBIP_EXEC_DAEMON:=$(which usbipd)}

depend()
{
  provide usbip
  need sysfs net
}

LoadKernelModule ()
{
  local module="$1"

  # Convert hyphens to underscores for module name comparison
  local module_underscore=$(echo "$module" | sed 's|-|_|g')

  if [ -z "$(/sbin/lsmod | grep "^$module_underscore ")" ]; then
    local filename=$(find /lib/modules/$(uname -r)/kernel -type f -name "$module.ko.xz" -printf '%f\n' 2>/dev/null)
    if [ -n "$filename" ]; then
      # Use underscore version for modprobe
      /sbin/modprobe "$module_underscore"
    else
      echo "Cannot find kernel module '$module_underscore'."
      result=failed
    fi
  fi
  [ -z "$result" ]
}

start()
{
  ebegin "Starting usbip daemon"
  if LoadKernelModule usbip-host
  then
    if LoadKernelModule usbip-core
      then
      if LoadKernelModule vhci-hcd
        then
    start-stop-daemon --start --exec $USBIP_EXEC_DAEMON -- -D
  fi
 fi
fi
  eend $?
}

stop()
{
  ebegin "Stopping usbip daemon"
  start-stop-daemon --stop --exec $USBIP_EXEC_DAEMON
  eend $?
}
