[cooja] plugins/analyzers: Indention and whitespace cleanups
This commit is contained in:
parent
01bd045570
commit
3e9a780721
7 changed files with 1001 additions and 988 deletions
|
@ -27,7 +27,6 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.contikios.cooja.plugins;
|
package org.contikios.cooja.plugins;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
@ -111,6 +110,7 @@ import org.contikios.cooja.util.StringUtils;
|
||||||
@ClassDescription("Radio messages")
|
@ClassDescription("Radio messages")
|
||||||
@PluginType(PluginType.SIM_PLUGIN)
|
@PluginType(PluginType.SIM_PLUGIN)
|
||||||
public class RadioLogger extends VisPlugin {
|
public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(RadioLogger.class);
|
private static Logger logger = Logger.getLogger(RadioLogger.class);
|
||||||
private static final long serialVersionUID = -6927091711697081353L;
|
private static final long serialVersionUID = -6927091711697081353L;
|
||||||
|
|
||||||
|
@ -290,14 +290,13 @@ public class RadioLogger extends VisPlugin {
|
||||||
/* TODO This entry may represent several hidden connections */
|
/* TODO This entry may represent several hidden connections */
|
||||||
RadioConnectionLog conn = connections.get(modelRowIndex);
|
RadioConnectionLog conn = connections.get(modelRowIndex);
|
||||||
if (modelColumnIndex == COLUMN_TIME) {
|
if (modelColumnIndex == COLUMN_TIME) {
|
||||||
return
|
return "<html>"
|
||||||
"<html>" +
|
+ "Start time (us): " + conn.startTime
|
||||||
"Start time (us): " + conn.startTime +
|
+ "<br>"
|
||||||
"<br>" +
|
+ "End time (us): " + conn.endTime
|
||||||
"End time (us): " + conn.endTime +
|
+ "<br><br>"
|
||||||
"<br><br>" +
|
+ "Duration (us): " + (conn.endTime - conn.startTime)
|
||||||
"Duration (us): " + (conn.endTime - conn.startTime) +
|
+ "</html>";
|
||||||
"</html>";
|
|
||||||
} else if (modelColumnIndex == COLUMN_FROM) {
|
} else if (modelColumnIndex == COLUMN_FROM) {
|
||||||
return conn.connection.getSource().getMote().toString();
|
return conn.connection.getSource().getMote().toString();
|
||||||
} else if (modelColumnIndex == COLUMN_TO) {
|
} else if (modelColumnIndex == COLUMN_TO) {
|
||||||
|
@ -346,8 +345,8 @@ public class RadioLogger extends VisPlugin {
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(KeyEvent e) {
|
||||||
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
|
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
|
||||||
showInAllAction.actionPerformed(null);
|
showInAllAction.actionPerformed(null);
|
||||||
} else if (e.getKeyCode() == KeyEvent.VK_F &&
|
} else if (e.getKeyCode() == KeyEvent.VK_F
|
||||||
(e.getModifiers() & KeyEvent.CTRL_MASK) != 0) {
|
&& (e.getModifiers() & KeyEvent.CTRL_MASK) != 0) {
|
||||||
searchField.setVisible(true);
|
searchField.setVisible(true);
|
||||||
searchField.requestFocus();
|
searchField.requestFocus();
|
||||||
searchField.selectAll();
|
searchField.selectAll();
|
||||||
|
@ -407,7 +406,6 @@ public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
fileMenu.add(new JMenuItem(saveAction));
|
fileMenu.add(new JMenuItem(saveAction));
|
||||||
|
|
||||||
|
|
||||||
JPopupMenu popupMenu = new JPopupMenu();
|
JPopupMenu popupMenu = new JPopupMenu();
|
||||||
|
|
||||||
JMenu focusMenu = new JMenu("Show in");
|
JMenu focusMenu = new JMenu("Show in");
|
||||||
|
@ -418,7 +416,6 @@ public class RadioLogger extends VisPlugin {
|
||||||
popupMenu.add(focusMenu);
|
popupMenu.add(focusMenu);
|
||||||
|
|
||||||
//a group of radio button menu items
|
//a group of radio button menu items
|
||||||
|
|
||||||
ButtonGroup group = new ButtonGroup();
|
ButtonGroup group = new ButtonGroup();
|
||||||
JRadioButtonMenuItem rbMenuItem = new JRadioButtonMenuItem(
|
JRadioButtonMenuItem rbMenuItem = new JRadioButtonMenuItem(
|
||||||
createAnalyzerAction("No Analyzer", "none", null, true));
|
createAnalyzerAction("No Analyzer", "none", null, true));
|
||||||
|
@ -436,15 +433,15 @@ public class RadioLogger extends VisPlugin {
|
||||||
analyzerMenu.add(rbMenuItem);
|
analyzerMenu.add(rbMenuItem);
|
||||||
|
|
||||||
/* Load additional analyzers specified by projects (cooja.config) */
|
/* Load additional analyzers specified by projects (cooja.config) */
|
||||||
String[] projectAnalyzerSuites =
|
String[] projectAnalyzerSuites
|
||||||
gui.getProjectConfig().getStringArrayValue(RadioLogger.class, "ANALYZERS");
|
= gui.getProjectConfig().getStringArrayValue(RadioLogger.class, "ANALYZERS");
|
||||||
if (projectAnalyzerSuites != null) {
|
if (projectAnalyzerSuites != null) {
|
||||||
for (String suiteName: projectAnalyzerSuites) {
|
for (String suiteName: projectAnalyzerSuites) {
|
||||||
if (suiteName == null || suiteName.trim().isEmpty()) {
|
if (suiteName == null || suiteName.trim().isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Class<? extends RadioLoggerAnalyzerSuite> suiteClass =
|
Class<? extends RadioLoggerAnalyzerSuite> suiteClass
|
||||||
gui.tryLoadClass(RadioLogger.this, RadioLoggerAnalyzerSuite.class, suiteName);
|
= gui.tryLoadClass(RadioLogger.this, RadioLoggerAnalyzerSuite.class, suiteName);
|
||||||
try {
|
try {
|
||||||
RadioLoggerAnalyzerSuite suite = suiteClass.newInstance();
|
RadioLoggerAnalyzerSuite suite = suiteClass.newInstance();
|
||||||
ArrayList<PacketAnalyzer> suiteAnalyzers = suite.getAnalyzers();
|
ArrayList<PacketAnalyzer> suiteAnalyzers = suite.getAnalyzers();
|
||||||
|
@ -625,10 +622,10 @@ public class RadioLogger extends VisPlugin {
|
||||||
if (!showDuplicates && row > 0) {
|
if (!showDuplicates && row > 0) {
|
||||||
RadioConnectionLog previous = connections.get(row - 1);
|
RadioConnectionLog previous = connections.get(row - 1);
|
||||||
byte[] previousData = previous.packet.getPacketData();
|
byte[] previousData = previous.packet.getPacketData();
|
||||||
if (!showDuplicates &&
|
if (!showDuplicates
|
||||||
Arrays.equals(previousData, currentData) &&
|
&& Arrays.equals(previousData, currentData)
|
||||||
previous.connection.getSource() == current.connection.getSource() &&
|
&& previous.connection.getSource() == current.connection.getSource()
|
||||||
Arrays.equals(previous.connection.getAllDestinations(), current.connection.getAllDestinations())) {
|
&& Arrays.equals(previous.connection.getAllDestinations(), current.connection.getAllDestinations())) {
|
||||||
if (connections.get(row - 1).hiddenBy == null) {
|
if (connections.get(row - 1).hiddenBy == null) {
|
||||||
connections.get(row - 1).hides++;
|
connections.get(row - 1).hides++;
|
||||||
connections.get(row).hiddenBy = connections.get(row - 1);
|
connections.get(row).hiddenBy = connections.get(row - 1);
|
||||||
|
@ -739,27 +736,27 @@ public class RadioLogger extends VisPlugin {
|
||||||
if (packet instanceof ConvertedRadioPacket && packet.getPacketData().length > 0) {
|
if (packet instanceof ConvertedRadioPacket && packet.getPacketData().length > 0) {
|
||||||
byte[] original = ((ConvertedRadioPacket) packet).getOriginalPacketData();
|
byte[] original = ((ConvertedRadioPacket) packet).getOriginalPacketData();
|
||||||
byte[] converted = ((ConvertedRadioPacket) packet).getPacketData();
|
byte[] converted = ((ConvertedRadioPacket) packet).getPacketData();
|
||||||
conn.tooltip = "<html><font face=\"Monospaced\">" +
|
conn.tooltip = "<html><font face=\"Monospaced\">"
|
||||||
"<b>Packet data (" + original.length + " bytes)</b><br>" +
|
+ "<b>Packet data (" + original.length + " bytes)</b><br>"
|
||||||
"<pre>" + StringUtils.hexDump(original) + "</pre>" +
|
+ "<pre>" + StringUtils.hexDump(original) + "</pre>"
|
||||||
"</font><font face=\"Monospaced\">" +
|
+ "</font><font face=\"Monospaced\">"
|
||||||
"<b>Cross-level packet data (" + converted.length + " bytes)</b><br>" +
|
+ "<b>Cross-level packet data (" + converted.length + " bytes)</b><br>"
|
||||||
"<pre>" + StringUtils.hexDump(converted) + "</pre>" +
|
+ "<pre>" + StringUtils.hexDump(converted) + "</pre>"
|
||||||
"</font></html>";
|
+ "</font></html>";
|
||||||
} else if (packet instanceof ConvertedRadioPacket) {
|
} else if (packet instanceof ConvertedRadioPacket) {
|
||||||
byte[] original = ((ConvertedRadioPacket) packet).getOriginalPacketData();
|
byte[] original = ((ConvertedRadioPacket) packet).getOriginalPacketData();
|
||||||
conn.tooltip = "<html><font face=\"Monospaced\">" +
|
conn.tooltip = "<html><font face=\"Monospaced\">"
|
||||||
"<b>Packet data (" + original.length + " bytes)</b><br>" +
|
+ "<b>Packet data (" + original.length + " bytes)</b><br>"
|
||||||
"<pre>" + StringUtils.hexDump(original) + "</pre>" +
|
+ "<pre>" + StringUtils.hexDump(original) + "</pre>"
|
||||||
"</font><font face=\"Monospaced\">" +
|
+ "</font><font face=\"Monospaced\">"
|
||||||
"<b>No cross-level conversion available</b><br>" +
|
+ "<b>No cross-level conversion available</b><br>"
|
||||||
"</font></html>";
|
+ "</font></html>";
|
||||||
} else {
|
} else {
|
||||||
byte[] data = packet.getPacketData();
|
byte[] data = packet.getPacketData();
|
||||||
conn.tooltip = "<html><font face=\"Monospaced\">" +
|
conn.tooltip = "<html><font face=\"Monospaced\">"
|
||||||
"<b>Packet data (" + data.length + " bytes)</b><br>" +
|
+ "<b>Packet data (" + data.length + " bytes)</b><br>"
|
||||||
"<pre>" + StringUtils.hexDump(data) + "</pre>" +
|
+ "<pre>" + StringUtils.hexDump(data) + "</pre>"
|
||||||
"</font></html>";
|
+ "</font></html>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -853,6 +850,7 @@ public class RadioLogger extends VisPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class RadioConnectionLog {
|
private class RadioConnectionLog {
|
||||||
|
|
||||||
long startTime;
|
long startTime;
|
||||||
long endTime;
|
long endTime;
|
||||||
RadioConnection connection;
|
RadioConnection connection;
|
||||||
|
@ -868,11 +866,10 @@ public class RadioLogger extends VisPlugin {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
RadioLogger.this.prepareDataString(this);
|
RadioLogger.this.prepareDataString(this);
|
||||||
}
|
}
|
||||||
return
|
return Long.toString(startTime / Simulation.MILLISECOND) + "\t"
|
||||||
Long.toString(startTime / Simulation.MILLISECOND) + "\t" +
|
+ connection.getSource().getMote().getID() + "\t"
|
||||||
connection.getSource().getMote().getID() + "\t" +
|
+ getDestString(this) + "\t"
|
||||||
getDestString(this) + "\t" +
|
+ data;
|
||||||
data;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1016,6 +1013,7 @@ public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
private Action timeLineAction = new AbstractAction("Timeline") {
|
private Action timeLineAction = new AbstractAction("Timeline") {
|
||||||
private static final long serialVersionUID = -4035633464748224192L;
|
private static final long serialVersionUID = -4035633464748224192L;
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
int selectedRow = dataTable.getSelectedRow();
|
int selectedRow = dataTable.getSelectedRow();
|
||||||
if (selectedRow < 0) return;
|
if (selectedRow < 0) return;
|
||||||
|
@ -1039,6 +1037,7 @@ public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
private Action logListenerAction = new AbstractAction("Mote output") {
|
private Action logListenerAction = new AbstractAction("Mote output") {
|
||||||
private static final long serialVersionUID = 1985006491187878651L;
|
private static final long serialVersionUID = 1985006491187878651L;
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
int selectedRow = dataTable.getSelectedRow();
|
int selectedRow = dataTable.getSelectedRow();
|
||||||
if (selectedRow < 0) return;
|
if (selectedRow < 0) return;
|
||||||
|
@ -1062,9 +1061,11 @@ public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
private Action showInAllAction = new AbstractAction("Timeline and mote output") {
|
private Action showInAllAction = new AbstractAction("Timeline and mote output") {
|
||||||
private static final long serialVersionUID = -3888292108886138128L;
|
private static final long serialVersionUID = -3888292108886138128L;
|
||||||
|
|
||||||
{
|
{
|
||||||
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true));
|
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
timeLineAction.actionPerformed(null);
|
timeLineAction.actionPerformed(null);
|
||||||
logListenerAction.actionPerformed(null);
|
logListenerAction.actionPerformed(null);
|
||||||
|
@ -1088,9 +1089,9 @@ public class RadioLogger extends VisPlugin {
|
||||||
|
|
||||||
String alias = (String) JOptionPane.showInputDialog(
|
String alias = (String) JOptionPane.showInputDialog(
|
||||||
Cooja.getTopParentContainer(),
|
Cooja.getTopParentContainer(),
|
||||||
"Enter alias for all packets with identical payload.\n" +
|
"Enter alias for all packets with identical payload.\n"
|
||||||
"An empty string removes the current alias.\n\n" +
|
+ "An empty string removes the current alias.\n\n"
|
||||||
connections.get(selectedRow).data + "\n",
|
+ connections.get(selectedRow).data + "\n",
|
||||||
"Create packet payload alias",
|
"Create packet payload alias",
|
||||||
JOptionPane.QUESTION_MESSAGE,
|
JOptionPane.QUESTION_MESSAGE,
|
||||||
null,
|
null,
|
||||||
|
@ -1147,10 +1148,10 @@ public class RadioLogger extends VisPlugin {
|
||||||
sb.append(c.toString() + "\n");
|
sb.append(c.toString() + "\n");
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
};
|
}
|
||||||
|
|
||||||
public void saveConnectionsToFile(String fileName) {
|
public void saveConnectionsToFile(String fileName) {
|
||||||
StringUtils.saveToFile(new File(fileName), getConnectionsString());
|
StringUtils.saveToFile(new File(fileName), getConnectionsString());
|
||||||
};
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ public class ICMPv6Analyzer extends PacketAnalyzer {
|
||||||
"NEIGHBOR_SOLICITATION", "NEIGHBOR_ADVERTISEMENT", "REDIRECT",
|
"NEIGHBOR_SOLICITATION", "NEIGHBOR_ADVERTISEMENT", "REDIRECT",
|
||||||
"ROUTER RENUMBER", "NODE INFORMATION QUERY", "NODE INFORMATION RESPONSE"};
|
"ROUTER RENUMBER", "NODE INFORMATION QUERY", "NODE INFORMATION RESPONSE"};
|
||||||
|
|
||||||
|
|
||||||
public int analyzePacket(Packet packet, StringBuffer brief,
|
public int analyzePacket(Packet packet, StringBuffer brief,
|
||||||
StringBuffer verbose) {
|
StringBuffer verbose) {
|
||||||
int type = packet.get(0) & 0xff;
|
int type = packet.get(0) & 0xff;
|
||||||
|
@ -69,8 +68,11 @@ public class ICMPv6Analyzer extends PacketAnalyzer {
|
||||||
int mop = (packet.get(8) >> 3) & 0x07;
|
int mop = (packet.get(8) >> 3) & 0x07;
|
||||||
int dtsn = packet.get(9);
|
int dtsn = packet.get(9);
|
||||||
|
|
||||||
verbose.append(" InstanceID: " + instanceID + " Version: " + version +
|
verbose.append(" InstanceID: " + instanceID
|
||||||
" Rank:" + rank + " MOP: " + mop + " DTSN: " + dtsn);
|
+ " Version: " + version
|
||||||
|
+ " Rank:" + rank
|
||||||
|
+ " MOP: " + mop
|
||||||
|
+ " DTSN: " + dtsn);
|
||||||
packet.consumeBytesStart(8);
|
packet.consumeBytesStart(8);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -19,23 +19,22 @@ public class IEEE802154Analyzer extends PacketAnalyzer {
|
||||||
public static final int CMDFRAME = 0x03;
|
public static final int CMDFRAME = 0x03;
|
||||||
|
|
||||||
// private static final byte[] BROADCAST_ADDR = {(byte)0xff, (byte)0xff};
|
// private static final byte[] BROADCAST_ADDR = {(byte)0xff, (byte)0xff};
|
||||||
|
|
||||||
private static final String[] typeS = {"-", "D", "A"};
|
private static final String[] typeS = {"-", "D", "A"};
|
||||||
private static final String[] typeVerbose = {"BEACON", "DATA", "ACK"};
|
private static final String[] typeVerbose = {"BEACON", "DATA", "ACK"};
|
||||||
private PcapExporter pcapExporter;
|
private PcapExporter pcapExporter;
|
||||||
|
|
||||||
// private int defaultAddressMode = LONG_ADDRESS;
|
// private int defaultAddressMode = LONG_ADDRESS;
|
||||||
// private byte seqNo = 0;
|
// private byte seqNo = 0;
|
||||||
|
|
||||||
// private int myPanID = 0xabcd;
|
// private int myPanID = 0xabcd;
|
||||||
|
|
||||||
public IEEE802154Analyzer(boolean pcap) {
|
public IEEE802154Analyzer(boolean pcap) {
|
||||||
if (pcap) try {
|
if (pcap) {
|
||||||
|
try {
|
||||||
pcapExporter = new PcapExporter();
|
pcapExporter = new PcapExporter();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setPcapFile(File pcapFile) {
|
public void setPcapFile(File pcapFile) {
|
||||||
if (pcapExporter != null) {
|
if (pcapExporter != null) {
|
||||||
|
@ -59,6 +58,7 @@ public class IEEE802154Analyzer extends PacketAnalyzer {
|
||||||
/* create a 802.15.4 packet of the bytes and "dispatch" to the
|
/* create a 802.15.4 packet of the bytes and "dispatch" to the
|
||||||
* next handler
|
* next handler
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int analyzePacket(Packet packet, StringBuffer brief, StringBuffer verbose) {
|
public int analyzePacket(Packet packet, StringBuffer brief, StringBuffer verbose) {
|
||||||
|
|
||||||
if (pcapExporter != null) {
|
if (pcapExporter != null) {
|
||||||
|
@ -126,7 +126,6 @@ public class IEEE802154Analyzer extends PacketAnalyzer {
|
||||||
}
|
}
|
||||||
|
|
||||||
// int payloadLen = packet.data.length - pos;
|
// int payloadLen = packet.data.length - pos;
|
||||||
|
|
||||||
brief.append("15.4 ");
|
brief.append("15.4 ");
|
||||||
brief.append(type < typeS.length ? typeS[type] : "?").append(' ');
|
brief.append(type < typeS.length ? typeS[type] : "?").append(' ');
|
||||||
|
|
||||||
|
@ -172,10 +171,10 @@ public class IEEE802154Analyzer extends PacketAnalyzer {
|
||||||
if (type == SHORT_ADDRESS) {
|
if (type == SHORT_ADDRESS) {
|
||||||
sb.append(StringUtils.toHex(addr));
|
sb.append(StringUtils.toHex(addr));
|
||||||
} else if (type == LONG_ADDRESS) {
|
} else if (type == LONG_ADDRESS) {
|
||||||
sb.append(StringUtils.toHex(addr[0]) + StringUtils.toHex(addr[1]) + ":" +
|
sb.append(StringUtils.toHex(addr[0]) + StringUtils.toHex(addr[1]) + ":"
|
||||||
StringUtils.toHex(addr[2]) + StringUtils.toHex(addr[3]) + ":" +
|
+ StringUtils.toHex(addr[2]) + StringUtils.toHex(addr[3]) + ":"
|
||||||
StringUtils.toHex(addr[4]) + StringUtils.toHex(addr[5]) + ":" +
|
+ StringUtils.toHex(addr[4]) + StringUtils.toHex(addr[5]) + ":"
|
||||||
StringUtils.toHex(addr[6]) + StringUtils.toHex(addr[7]));
|
+ StringUtils.toHex(addr[6]) + StringUtils.toHex(addr[7]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,9 +51,8 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
public final static int PROTO_TCP = 6;
|
public final static int PROTO_TCP = 6;
|
||||||
public final static int PROTO_ICMP = 58;
|
public final static int PROTO_ICMP = 58;
|
||||||
|
|
||||||
|
public final static byte[] UNSPECIFIED_ADDRESS
|
||||||
public final static byte[] UNSPECIFIED_ADDRESS =
|
= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
||||||
|
|
||||||
private static byte[][] addrContexts = new byte[][]{
|
private static byte[][] addrContexts = new byte[][]{
|
||||||
{(byte) 0xaa, (byte) 0xaa, 0, 0, 0, 0, 0, 0}
|
{(byte) 0xaa, (byte) 0xaa, 0, 0, 0, 0, 0, 0}
|
||||||
|
@ -89,7 +88,6 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
brief.append("IPHC");
|
brief.append("IPHC");
|
||||||
|
|
||||||
/* need to decompress while analyzing - add that later... */
|
/* need to decompress while analyzing - add that later... */
|
||||||
|
|
||||||
verbose.append("<b>IPHC HC-06</b><br>");
|
verbose.append("<b>IPHC HC-06</b><br>");
|
||||||
verbose.append("tf = " + tf + " nhc = " + nhc + " hlim = " + hlim
|
verbose.append("tf = " + tf + " nhc = " + nhc + " hlim = " + hlim
|
||||||
+ " cid = " + cid + " sac = " + sac + " sam = " + sam
|
+ " cid = " + cid + " sac = " + sac + " sam = " + sam
|
||||||
|
@ -115,7 +113,6 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
int srcPort = 0;
|
int srcPort = 0;
|
||||||
int destPort = 0;
|
int destPort = 0;
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
/* Traffic class and flow label */
|
/* Traffic class and flow label */
|
||||||
if ((packet.get(0) & SICSLOWPAN_IPHC_FL_C) == 0) {
|
if ((packet.get(0) & SICSLOWPAN_IPHC_FL_C) == 0) {
|
||||||
|
@ -185,6 +182,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_01: /* 64 bits */
|
case SICSLOWPAN_IPHC_SAM_01: /* 64 bits */
|
||||||
/* copy prefix from context */
|
/* copy prefix from context */
|
||||||
|
|
||||||
System.arraycopy(context, 0, srcAddress, 0, 8);
|
System.arraycopy(context, 0, srcAddress, 0, 8);
|
||||||
/* copy IID from packet */
|
/* copy IID from packet */
|
||||||
packet.copy(hc06_ptr, srcAddress, 8, 8);
|
packet.copy(hc06_ptr, srcAddress, 8, 8);
|
||||||
|
@ -192,6 +190,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_10: /* 16 bits */
|
case SICSLOWPAN_IPHC_SAM_10: /* 16 bits */
|
||||||
/* unicast address */
|
/* unicast address */
|
||||||
|
|
||||||
System.arraycopy(context, 0, srcAddress, 0, 8);
|
System.arraycopy(context, 0, srcAddress, 0, 8);
|
||||||
/* copy 6 NULL bytes then 2 last bytes of IID */
|
/* copy 6 NULL bytes then 2 last bytes of IID */
|
||||||
packet.copy(hc06_ptr, srcAddress, 14, 2);
|
packet.copy(hc06_ptr, srcAddress, 14, 2);
|
||||||
|
@ -199,6 +198,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_11: /* 0-bits */
|
case SICSLOWPAN_IPHC_SAM_11: /* 0-bits */
|
||||||
/* copy prefix from context */
|
/* copy prefix from context */
|
||||||
|
|
||||||
System.arraycopy(context, 0, srcAddress, 0, 8);
|
System.arraycopy(context, 0, srcAddress, 0, 8);
|
||||||
/* infer IID from L2 address */
|
/* infer IID from L2 address */
|
||||||
System.arraycopy(packet.llsender, 0, srcAddress,
|
System.arraycopy(packet.llsender, 0, srcAddress,
|
||||||
|
@ -211,10 +211,12 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
switch (packet.get(1) & SICSLOWPAN_IPHC_SAM_11) {
|
switch (packet.get(1) & SICSLOWPAN_IPHC_SAM_11) {
|
||||||
case SICSLOWPAN_IPHC_SAM_00: /* 128 bits */
|
case SICSLOWPAN_IPHC_SAM_00: /* 128 bits */
|
||||||
/* copy whole address from packet */
|
/* copy whole address from packet */
|
||||||
|
|
||||||
packet.copy(hc06_ptr, srcAddress, 0, 16);
|
packet.copy(hc06_ptr, srcAddress, 0, 16);
|
||||||
hc06_ptr += 16;
|
hc06_ptr += 16;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_01: /* 64 bits */
|
case SICSLOWPAN_IPHC_SAM_01: /* 64 bits */
|
||||||
|
|
||||||
srcAddress[0] = (byte) 0xfe;
|
srcAddress[0] = (byte) 0xfe;
|
||||||
srcAddress[1] = (byte) 0x80;
|
srcAddress[1] = (byte) 0x80;
|
||||||
/* copy IID from packet */
|
/* copy IID from packet */
|
||||||
|
@ -222,6 +224,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
hc06_ptr += 8;
|
hc06_ptr += 8;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_10: /* 16 bits */
|
case SICSLOWPAN_IPHC_SAM_10: /* 16 bits */
|
||||||
|
|
||||||
srcAddress[0] = (byte) 0xfe;
|
srcAddress[0] = (byte) 0xfe;
|
||||||
srcAddress[1] = (byte) 0x80;
|
srcAddress[1] = (byte) 0x80;
|
||||||
packet.copy(hc06_ptr, srcAddress, 14, 2);
|
packet.copy(hc06_ptr, srcAddress, 14, 2);
|
||||||
|
@ -229,6 +232,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_SAM_11: /* 0 bits */
|
case SICSLOWPAN_IPHC_SAM_11: /* 0 bits */
|
||||||
/* setup link-local address */
|
/* setup link-local address */
|
||||||
|
|
||||||
srcAddress[0] = (byte) 0xfe;
|
srcAddress[0] = (byte) 0xfe;
|
||||||
srcAddress[1] = (byte) 0x80;
|
srcAddress[1] = (byte) 0x80;
|
||||||
/* infer IID from L2 address */
|
/* infer IID from L2 address */
|
||||||
|
@ -250,22 +254,26 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
||||||
case SICSLOWPAN_IPHC_DAM_00: /* 128 bits */
|
case SICSLOWPAN_IPHC_DAM_00: /* 128 bits */
|
||||||
/* copy whole address from packet */
|
/* copy whole address from packet */
|
||||||
|
|
||||||
packet.copy(hc06_ptr, destAddress, 0, 16);
|
packet.copy(hc06_ptr, destAddress, 0, 16);
|
||||||
hc06_ptr += 16;
|
hc06_ptr += 16;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_01: /* 48 bits FFXX::00XX:XXXX:XXXX */
|
case SICSLOWPAN_IPHC_DAM_01: /* 48 bits FFXX::00XX:XXXX:XXXX */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xff;
|
destAddress[0] = (byte) 0xff;
|
||||||
destAddress[1] = packet.get(hc06_ptr);
|
destAddress[1] = packet.get(hc06_ptr);
|
||||||
packet.copy(hc06_ptr + 1, destAddress, 11, 5);
|
packet.copy(hc06_ptr + 1, destAddress, 11, 5);
|
||||||
hc06_ptr += 6;
|
hc06_ptr += 6;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_10: /* 32 bits FFXX::00XX:XXXX */
|
case SICSLOWPAN_IPHC_DAM_10: /* 32 bits FFXX::00XX:XXXX */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xff;
|
destAddress[0] = (byte) 0xff;
|
||||||
destAddress[1] = packet.get(hc06_ptr);
|
destAddress[1] = packet.get(hc06_ptr);
|
||||||
packet.copy(hc06_ptr + 1, destAddress, 13, 3);
|
packet.copy(hc06_ptr + 1, destAddress, 13, 3);
|
||||||
hc06_ptr += 4;
|
hc06_ptr += 4;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_11: /* 8 bits FF02::00XX */
|
case SICSLOWPAN_IPHC_DAM_11: /* 8 bits FF02::00XX */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xff;
|
destAddress[0] = (byte) 0xff;
|
||||||
destAddress[1] = (byte) 0x02;
|
destAddress[1] = (byte) 0x02;
|
||||||
destAddress[15] = packet.get(hc06_ptr);
|
destAddress[15] = packet.get(hc06_ptr);
|
||||||
|
@ -281,6 +289,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
|
|
||||||
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
||||||
case SICSLOWPAN_IPHC_DAM_01: /* 64 bits */
|
case SICSLOWPAN_IPHC_DAM_01: /* 64 bits */
|
||||||
|
|
||||||
System.arraycopy(context, 0, destAddress, 0, 8);
|
System.arraycopy(context, 0, destAddress, 0, 8);
|
||||||
/* copy IID from packet */
|
/* copy IID from packet */
|
||||||
packet.copy(hc06_ptr, destAddress, 8, 8);
|
packet.copy(hc06_ptr, destAddress, 8, 8);
|
||||||
|
@ -288,6 +297,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_10: /* 16 bits */
|
case SICSLOWPAN_IPHC_DAM_10: /* 16 bits */
|
||||||
/* unicast address */
|
/* unicast address */
|
||||||
|
|
||||||
System.arraycopy(context, 0, destAddress, 0, 8);
|
System.arraycopy(context, 0, destAddress, 0, 8);
|
||||||
/* copy IID from packet */
|
/* copy IID from packet */
|
||||||
packet.copy(hc06_ptr, destAddress, 14, 2);
|
packet.copy(hc06_ptr, destAddress, 14, 2);
|
||||||
|
@ -295,6 +305,7 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_11: /* 0 bits */
|
case SICSLOWPAN_IPHC_DAM_11: /* 0 bits */
|
||||||
/* unicast address */
|
/* unicast address */
|
||||||
|
|
||||||
System.arraycopy(context, 0, destAddress, 0, 8);
|
System.arraycopy(context, 0, destAddress, 0, 8);
|
||||||
/* infer IID from L2 address */
|
/* infer IID from L2 address */
|
||||||
System.arraycopy(packet.llreceiver, 0, destAddress,
|
System.arraycopy(packet.llreceiver, 0, destAddress,
|
||||||
|
@ -305,22 +316,26 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
/* not context based => link local M = 0, DAC = 0 - same as SAC */
|
/* not context based => link local M = 0, DAC = 0 - same as SAC */
|
||||||
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
switch (packet.get(1) & SICSLOWPAN_IPHC_DAM_11) {
|
||||||
case SICSLOWPAN_IPHC_DAM_00: /* 128 bits */
|
case SICSLOWPAN_IPHC_DAM_00: /* 128 bits */
|
||||||
|
|
||||||
packet.copy(hc06_ptr, destAddress, 0, 16);
|
packet.copy(hc06_ptr, destAddress, 0, 16);
|
||||||
hc06_ptr += 16;
|
hc06_ptr += 16;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_01: /* 64 bits */
|
case SICSLOWPAN_IPHC_DAM_01: /* 64 bits */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xfe;
|
destAddress[0] = (byte) 0xfe;
|
||||||
destAddress[1] = (byte) 0x80;
|
destAddress[1] = (byte) 0x80;
|
||||||
packet.copy(hc06_ptr, destAddress, 8, 8);
|
packet.copy(hc06_ptr, destAddress, 8, 8);
|
||||||
hc06_ptr += 8;
|
hc06_ptr += 8;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_10: /* 16 bits */
|
case SICSLOWPAN_IPHC_DAM_10: /* 16 bits */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xfe;
|
destAddress[0] = (byte) 0xfe;
|
||||||
destAddress[1] = (byte) 0x80;
|
destAddress[1] = (byte) 0x80;
|
||||||
packet.copy(hc06_ptr, destAddress, 14, 2);
|
packet.copy(hc06_ptr, destAddress, 14, 2);
|
||||||
hc06_ptr += 2;
|
hc06_ptr += 2;
|
||||||
break;
|
break;
|
||||||
case SICSLOWPAN_IPHC_DAM_11: /* 0 bits */
|
case SICSLOWPAN_IPHC_DAM_11: /* 0 bits */
|
||||||
|
|
||||||
destAddress[0] = (byte) 0xfe;
|
destAddress[0] = (byte) 0xfe;
|
||||||
destAddress[1] = (byte) 0x80;
|
destAddress[1] = (byte) 0x80;
|
||||||
System.arraycopy(packet.llreceiver, 0, destAddress,
|
System.arraycopy(packet.llreceiver, 0, destAddress,
|
||||||
|
@ -363,7 +378,6 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /* IP length field. */
|
// /* IP length field. */
|
||||||
// if(ip_len == 0) {
|
// if(ip_len == 0) {
|
||||||
// /* This is not a fragmented packet */
|
// /* This is not a fragmented packet */
|
||||||
|
@ -374,14 +388,12 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
// SICSLOWPAN_IP_BUF->len[0] = (ip_len - UIP_IPH_LEN) >> 8;
|
// SICSLOWPAN_IP_BUF->len[0] = (ip_len - UIP_IPH_LEN) >> 8;
|
||||||
// SICSLOWPAN_IP_BUF->len[1] = (ip_len - UIP_IPH_LEN) & 0x00FF;
|
// SICSLOWPAN_IP_BUF->len[1] = (ip_len - UIP_IPH_LEN) & 0x00FF;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// /* length field in UDP header */
|
// /* length field in UDP header */
|
||||||
// if(SICSLOWPAN_IP_BUF->proto == UIP_PROTO_UDP) {
|
// if(SICSLOWPAN_IP_BUF->proto == UIP_PROTO_UDP) {
|
||||||
// memcpy(&SICSLOWPAN_UDP_BUF->udplen, ipBuf + len[0], 2);
|
// memcpy(&SICSLOWPAN_UDP_BUF->udplen, ipBuf + len[0], 2);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/*--------------------------------------------- */
|
/*--------------------------------------------- */
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// some kind of unexpected error...
|
// some kind of unexpected error...
|
||||||
error = " error during IPHC parsing: " + e.getMessage();
|
error = " error during IPHC parsing: " + e.getMessage();
|
||||||
|
@ -391,11 +403,15 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
String protoStr = "" + proto;
|
String protoStr = "" + proto;
|
||||||
if (proto == PROTO_ICMP) {
|
if (proto == PROTO_ICMP) {
|
||||||
protoStr = "ICMPv6";
|
protoStr = "ICMPv6";
|
||||||
} else if (proto == PROTO_UDP) protoStr = "UDP";
|
} else if (proto == PROTO_UDP) {
|
||||||
else if (proto == PROTO_TCP) protoStr = "TCP";
|
protoStr = "UDP";
|
||||||
|
} else if (proto == PROTO_TCP) {
|
||||||
|
protoStr = "TCP";
|
||||||
|
}
|
||||||
|
|
||||||
verbose.append("<br><b>IPv6 ").append(protoStr).append("</b> TC = " + trafficClass +
|
verbose.append("<br><b>IPv6 ").append(protoStr)
|
||||||
" FL: " + flowLabel + "<br>");
|
.append("</b> TC = " + trafficClass
|
||||||
|
+ " FL: " + flowLabel + "<br>");
|
||||||
verbose.append("From ");
|
verbose.append("From ");
|
||||||
printAddress(verbose, srcAddress);
|
printAddress(verbose, srcAddress);
|
||||||
verbose.append(" to ");
|
verbose.append(" to ");
|
||||||
|
@ -403,8 +419,8 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
if (error != null) verbose.append(" " + error);
|
if (error != null) verbose.append(" " + error);
|
||||||
|
|
||||||
packet.lastDispatch = (byte) (proto & 0xff);
|
packet.lastDispatch = (byte) (proto & 0xff);
|
||||||
if (proto == PROTO_UDP || proto == PROTO_ICMP ||
|
if (proto == PROTO_UDP || proto == PROTO_ICMP
|
||||||
proto == PROTO_TCP) {
|
|| proto == PROTO_TCP) {
|
||||||
packet.level = APPLICATION_LEVEL;
|
packet.level = APPLICATION_LEVEL;
|
||||||
return ANALYSIS_OK_CONTINUE;
|
return ANALYSIS_OK_CONTINUE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -415,13 +431,11 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer {
|
||||||
|
|
||||||
public static void printAddress(StringBuffer out, byte[] address) {
|
public static void printAddress(StringBuffer out, byte[] address) {
|
||||||
for (int i = 0; i < 16; i += 2) {
|
for (int i = 0; i < 16; i += 2) {
|
||||||
out.append(StringUtils.toHex((byte) (address[i] & 0xff)) +
|
out.append(StringUtils.toHex((byte) (address[i] & 0xff))
|
||||||
StringUtils.toHex((byte) (address[i + 1] & 0xff)));
|
+ StringUtils.toHex((byte) (address[i + 1] & 0xff)));
|
||||||
if (i < 14) {
|
if (i < 14) {
|
||||||
out.append(":");
|
out.append(":");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,12 @@ import org.contikios.cooja.util.StringUtils;
|
||||||
|
|
||||||
public class IPv6PacketAnalyzer extends PacketAnalyzer {
|
public class IPv6PacketAnalyzer extends PacketAnalyzer {
|
||||||
|
|
||||||
|
|
||||||
public final static int PROTO_UDP = 17;
|
public final static int PROTO_UDP = 17;
|
||||||
public final static int PROTO_TCP = 6;
|
public final static int PROTO_TCP = 6;
|
||||||
public final static int PROTO_ICMP = 58;
|
public final static int PROTO_ICMP = 58;
|
||||||
|
|
||||||
|
public final static byte[] UNSPECIFIED_ADDRESS
|
||||||
public final static byte[] UNSPECIFIED_ADDRESS =
|
= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
||||||
|
|
||||||
private static final int IPV6_DISPATCH = 0x41;
|
private static final int IPV6_DISPATCH = 0x41;
|
||||||
|
|
||||||
|
@ -25,11 +23,9 @@ public class IPv6PacketAnalyzer extends PacketAnalyzer {
|
||||||
/* if packet has less than 40 bytes it is not interesting ... */
|
/* if packet has less than 40 bytes it is not interesting ... */
|
||||||
if (packet.size() < 40) return ANALYSIS_FAILED;
|
if (packet.size() < 40) return ANALYSIS_FAILED;
|
||||||
|
|
||||||
|
|
||||||
brief.append("IPv6");
|
brief.append("IPv6");
|
||||||
|
|
||||||
/* need to decompress while analyzing - add that later... */
|
/* need to decompress while analyzing - add that later... */
|
||||||
|
|
||||||
verbose.append("<b>IPv6</b><br>");
|
verbose.append("<b>IPv6</b><br>");
|
||||||
|
|
||||||
int pos = 1;
|
int pos = 1;
|
||||||
|
@ -49,14 +45,18 @@ public class IPv6PacketAnalyzer extends PacketAnalyzer {
|
||||||
String protoStr = "" + proto;
|
String protoStr = "" + proto;
|
||||||
if (proto == PROTO_ICMP) {
|
if (proto == PROTO_ICMP) {
|
||||||
protoStr = "ICMPv6";
|
protoStr = "ICMPv6";
|
||||||
} else if (proto == PROTO_UDP) protoStr = "UDP";
|
} else if (proto == PROTO_UDP) {
|
||||||
else if (proto == PROTO_TCP) protoStr = "TCP";
|
protoStr = "UDP";
|
||||||
|
} else if (proto == PROTO_TCP) {
|
||||||
|
protoStr = "TCP";
|
||||||
|
}
|
||||||
|
|
||||||
/* consume dispatch + IP header */
|
/* consume dispatch + IP header */
|
||||||
packet.pos += 41;
|
packet.pos += 41;
|
||||||
|
|
||||||
verbose.append("<br><b>IPv6 ").append(protoStr).append("</b> TC = " + trafficClass +
|
verbose.append("<br><b>IPv6 ").append(protoStr)
|
||||||
" FL: " + flowLabel + "<br>");
|
.append("</b> TC = " + trafficClass
|
||||||
|
+ " FL: " + flowLabel + "<br>");
|
||||||
verbose.append("From ");
|
verbose.append("From ");
|
||||||
printAddress(verbose, srcAddress);
|
printAddress(verbose, srcAddress);
|
||||||
verbose.append(" to ");
|
verbose.append(" to ");
|
||||||
|
@ -69,13 +69,12 @@ public class IPv6PacketAnalyzer extends PacketAnalyzer {
|
||||||
|
|
||||||
public static void printAddress(StringBuffer out, byte[] address) {
|
public static void printAddress(StringBuffer out, byte[] address) {
|
||||||
for (int i = 0; i < 16; i += 2) {
|
for (int i = 0; i < 16; i += 2) {
|
||||||
out.append(StringUtils.toHex((byte) (address[i] & 0xff)) +
|
out.append(StringUtils.toHex((byte) (address[i] & 0xff))
|
||||||
StringUtils.toHex((byte) (address[i + 1] & 0xff)));
|
+ StringUtils.toHex((byte) (address[i + 1] & 0xff)));
|
||||||
if (i < 14) {
|
if (i < 14) {
|
||||||
out.append(":");
|
out.append(":");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ public abstract class PacketAnalyzer {
|
||||||
public static final int APPLICATION_LEVEL = 3;
|
public static final int APPLICATION_LEVEL = 3;
|
||||||
|
|
||||||
public static class Packet {
|
public static class Packet {
|
||||||
|
|
||||||
byte[] data;
|
byte[] data;
|
||||||
int pos;
|
int pos;
|
||||||
int level;
|
int level;
|
||||||
|
@ -30,7 +31,6 @@ public abstract class PacketAnalyzer {
|
||||||
this.size = data.length;
|
this.size = data.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void consumeBytesStart(int bytes) {
|
public void consumeBytesStart(int bytes) {
|
||||||
pos += bytes;
|
pos += bytes;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@ public abstract class PacketAnalyzer {
|
||||||
size -= bytes;
|
size -= bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean hasMoreData() {
|
public boolean hasMoreData() {
|
||||||
return size > pos;
|
return size > pos;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +60,6 @@ public abstract class PacketAnalyzer {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public byte[] getPayload() {
|
public byte[] getPayload() {
|
||||||
byte[] pload = new byte[size - pos];
|
byte[] pload = new byte[size - pos];
|
||||||
System.arraycopy(data, pos, pload, 0, pload.length);
|
System.arraycopy(data, pos, pload, 0, pload.length);
|
||||||
|
|
|
@ -31,9 +31,11 @@ public class PcapExporter {
|
||||||
out.writeInt(0);
|
out.writeInt(0);
|
||||||
out.writeInt(4096);
|
out.writeInt(4096);
|
||||||
out.writeInt(195); /* 195 for LINKTYPE_IEEE802_15_4 */
|
out.writeInt(195); /* 195 for LINKTYPE_IEEE802_15_4 */
|
||||||
|
|
||||||
out.flush();
|
out.flush();
|
||||||
System.out.println("Opened pcap file " + pcapFile);
|
System.out.println("Opened pcap file " + pcapFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void closePcap() throws IOException {
|
public void closePcap() throws IOException {
|
||||||
out.close();
|
out.close();
|
||||||
out = null;
|
out = null;
|
||||||
|
@ -58,6 +60,4 @@ public class PcapExporter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue