added shutdown hook for make sure the minimal-net application is killed when cooja exits without shutting down all plugins
This commit is contained in:
parent
e36479f0b5
commit
4525bcb8f0
|
@ -26,7 +26,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: NativeIPGateway.java,v 1.4 2009/04/23 08:59:22 fros4943 Exp $
|
* $Id: NativeIPGateway.java,v 1.5 2009/06/25 17:43:13 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.plugins;
|
package se.sics.cooja.plugins;
|
||||||
|
@ -38,11 +38,13 @@ import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemEvent;
|
||||||
import java.awt.event.ItemListener;
|
import java.awt.event.ItemListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.io.*;
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.Box;
|
import javax.swing.Box;
|
||||||
import javax.swing.BoxLayout;
|
import javax.swing.BoxLayout;
|
||||||
|
@ -60,6 +62,7 @@ import jpcap.JpcapSender;
|
||||||
import jpcap.NetworkInterface;
|
import jpcap.NetworkInterface;
|
||||||
import jpcap.packet.EthernetPacket;
|
import jpcap.packet.EthernetPacket;
|
||||||
import jpcap.packet.IPPacket;
|
import jpcap.packet.IPPacket;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
|
@ -70,7 +73,6 @@ import se.sics.cooja.Plugin;
|
||||||
import se.sics.cooja.PluginType;
|
import se.sics.cooja.PluginType;
|
||||||
import se.sics.cooja.Simulation;
|
import se.sics.cooja.Simulation;
|
||||||
import se.sics.cooja.interfaces.SerialPort;
|
import se.sics.cooja.interfaces.SerialPort;
|
||||||
import se.sics.cooja.util.StringUtils;
|
|
||||||
|
|
||||||
@ClassDescription("Open Native IP Gateway")
|
@ClassDescription("Open Native IP Gateway")
|
||||||
@PluginType(PluginType.MOTE_PLUGIN)
|
@PluginType(PluginType.MOTE_PLUGIN)
|
||||||
|
@ -125,6 +127,7 @@ public class NativeIPGateway implements Plugin {
|
||||||
private String restoreRoutesCmd = null;
|
private String restoreRoutesCmd = null;
|
||||||
|
|
||||||
private Process tunProcess = null;
|
private Process tunProcess = null;
|
||||||
|
private Thread shutdownHook = null;
|
||||||
private final static String TUNNEL_APP_TARGET = "minimal-net";
|
private final static String TUNNEL_APP_TARGET = "minimal-net";
|
||||||
private boolean shouldDisableLoopbackForwarding = false;
|
private boolean shouldDisableLoopbackForwarding = false;
|
||||||
private boolean shouldEnableRPFilter = false;
|
private boolean shouldEnableRPFilter = false;
|
||||||
|
@ -576,6 +579,18 @@ public class NativeIPGateway implements Plugin {
|
||||||
logger.info("> " + tunAppCmd[0]);
|
logger.info("> " + tunAppCmd[0]);
|
||||||
tunProcess = Runtime.getRuntime().exec(tunAppCmd, null, tunContikiAppDir);
|
tunProcess = Runtime.getRuntime().exec(tunAppCmd, null, tunContikiAppDir);
|
||||||
|
|
||||||
|
/* Shutdown hook: kill minimal-net process */
|
||||||
|
shutdownHook = new Thread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
if (tunProcess == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tunProcess.destroy();
|
||||||
|
tunProcess = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Runtime.getRuntime().addShutdownHook(shutdownHook);
|
||||||
|
|
||||||
/* Waiting some time - otherwise pcap may not discover the new interface */
|
/* Waiting some time - otherwise pcap may not discover the new interface */
|
||||||
Thread.sleep(250);
|
Thread.sleep(250);
|
||||||
|
|
||||||
|
@ -959,6 +974,11 @@ public class NativeIPGateway implements Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTunInterface();
|
deleteTunInterface();
|
||||||
|
|
||||||
|
if (shutdownHook != null) {
|
||||||
|
Runtime.getRuntime().removeShutdownHook(shutdownHook);
|
||||||
|
shutdownHook = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tagWithObject(Object tag) {
|
public void tagWithObject(Object tag) {
|
||||||
|
|
Loading…
Reference in a new issue