diff --git a/src/dorkbox/netUtil/Dhcp.kt b/src/dorkbox/netUtil/Dhcp.kt index 1f12d59..e971d9d 100644 --- a/src/dorkbox/netUtil/Dhcp.kt +++ b/src/dorkbox/netUtil/Dhcp.kt @@ -7,18 +7,17 @@ import java.io.File * */ object Dhcp { - - fun start(nameSpace: String, id: String, interfaceName: String) { + fun start(id: String, interfaceName: String) { if (Common.OS_LINUX) { - stop(nameSpace, id, interfaceName) + stop(id, interfaceName) val dhcpPidFile = "/var/run/dhclient-$id.pid" - Executor().command("/sbin/dhclient", "-pf", dhcpPidFile, interfaceName).startBlocking(); + Executor().command("/sbin/dhclient", "-pf", dhcpPidFile, interfaceName).startBlocking() } else { throw RuntimeException("NOT IMPL.") } } - fun stop(nameSpace: String, id: String, interfaceName: String) { + fun stop(id: String, interfaceName: String) { if (Common.OS_LINUX) { val dhcpPidFile = "/var/run/dhclient-$id.pid" diff --git a/src/dorkbox/netUtil/NameSpace.kt b/src/dorkbox/netUtil/NameSpace.kt index c000b1a..99a7440 100644 --- a/src/dorkbox/netUtil/NameSpace.kt +++ b/src/dorkbox/netUtil/NameSpace.kt @@ -19,6 +19,39 @@ object NameSpace { } } + object Dhcp { + object Dhcp { + fun start(nameSpace: String, id: String, interfaceName: String) { + if (Common.OS_LINUX) { + stop(nameSpace, id, interfaceName) + val dhcpPidFile = "/var/run/dhclient-$id.pid" + run(nameSpace, "/sbin/dhclient", "-pf", dhcpPidFile, interfaceName) + } else { + throw RuntimeException("NOT IMPL.") + } + } + + fun stop(nameSpace: String, id: String, interfaceName: String) { + if (Common.OS_LINUX) { + val dhcpPidFile = "/var/run/dhclient-$id.pid" + + // close the dhclient if it was already running (based on pid file), and delete the pid file + run(nameSpace, "/sbin/dhclient", "-r -pf", dhcpPidFile, interfaceName) + + // short break + try { + Thread.sleep(500) + } catch (e: InterruptedException) { + e.printStackTrace() + } + File(dhcpPidFile).delete() + } else { + throw RuntimeException("NOT IMPL.") + } + } + } + } + private val nameSpaceToIifToIp: MutableMap> = HashMap() fun add(nameSpace: String) {