Fix to determine network interface name at runtime in rndis mode 66/222566/2
authorINSUN PYO <insun.pyo@samsung.com>
Thu, 16 Jan 2020 06:35:21 +0000 (15:35 +0900)
committerINSUN PYO <insun.pyo@samsung.com>
Thu, 16 Jan 2020 07:14:01 +0000 (16:14 +0900)
TM1, TW2, XU3 : use "usb0" name
TW3 : use "rndis0" name

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
TM1, TW2
 - It is not configfs, so it has no /sys/kernel/config/usb_gadget/hal-gadget/functions/rndis.default/ifname.
 - Use "usb0" interface name fixed by kernel.

TW3 (tizen 5.5)
 - It is not configfs.
 - Kernel does not support rndis.

TW3 (tizen 6.0)
 - It is configfs.
 - "/sys/kernel/config/usb_gadget/hal-gadget/functions/rndis.default/ifname" has "rndis0" intarface name.

XU3
 - It is configfs.
 - "/sys/kernel/config/usb_gadget/hal-gadget/functions/rndis.default/ifname" has "usb0" intarface name.

Change-Id: Ibf902121e11007e84321e5fee421273fc03a1a58

CMakeLists.txt
packaging/deviced.spec
scripts/rndis.sh [new file with mode: 0755]
systemd/rndis.service

index 3a318d2..c98524c 100644 (file)
@@ -296,6 +296,7 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/deviced.service
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/usb-host-ffs-test-daemon.service DESTINATION /usr/lib/systemd/system)
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/usb-host-test.socket             DESTINATION /usr/lib/systemd/system)
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/rndis.service                    DESTINATION /usr/lib/systemd/system)
+INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/rndis.sh                      DESTINATION /usr/bin)
 
 IF(TIZEN_FEATURE_USBHOST_TEST STREQUAL on)
        INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/usb-host-ffs-test-daemon.service
index 93c896f..f6398b3 100644 (file)
@@ -298,6 +298,7 @@ mv %{_libdir}/iot-display.so %{_libdir}/deviced/display.so
 %config %{_sysconfdir}/deviced/critical-log.conf
 %{_libdir}/mobile-display.so
 %{_unitdir}/rndis.service
+%{_bindir}/rndis.sh
 
 %files plugin-profile-wearable
 %manifest deviced.manifest
@@ -307,6 +308,7 @@ mv %{_libdir}/iot-display.so %{_libdir}/deviced/display.so
 %config %{_sysconfdir}/deviced/critical-log.conf
 %{_libdir}/wearable-display.so
 %{_unitdir}/rndis.service
+%{_bindir}/rndis.sh
 
 %files plugin-profile-tv
 %manifest deviced.manifest
diff --git a/scripts/rndis.sh b/scripts/rndis.sh
new file mode 100755 (executable)
index 0000000..8124983
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# TM1, TW2 : not configfs and have no ifname
+# TW3 : configfs and ifname value is "rndis0"
+# XU3 : configfs and ifname value is "usb0"
+if [ -e /sys/kernel/config/usb_gadget/hal-gadget/functions/rndis.default/ifname ]
+then
+       IFNAME=`cat /sys/kernel/config/usb_gadget/hal-gadget/functions/rndis.default/ifname`
+else
+       IFNAME="usb0"
+fi
+
+
+if [ x$1 == "xstart" ]
+then
+       /sbin/ifconfig $IFNAME 192.168.129.3 up
+       /sbin/route add -net 192.168.129.0 netmask 255.255.255.0 dev $IFNAME
+else
+       /sbin/route del -net 192.168.129.0 netmask 255.255.255.0 dev $IFNAME
+       /sbin/ifconfig $IFNAME down
+fi
index 747316d..0ea2fc6 100644 (file)
@@ -6,8 +6,7 @@ Type=oneshot
 User=network_fw
 Group=network_fw
 SmackProcessLabel=System
-ExecStart=/sbin/ifconfig usb0 192.168.129.3 up
-ExecStart=/sbin/route add -net 192.168.129.0 netmask 255.255.255.0 dev usb0
+ExecStart=/usr/bin/rndis.sh start
 Capabilities=cap_net_admin=i
 SecureBits=keep-caps
 RemainAfterExit=yes