projects
/
pingpong.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make original ClusterMatcher inherit from AbstractClusterMatcher. Reorganize code...
[pingpong.git]
/
Code
/
Projects
/
SmartPlugDetector
/
src
/
main
/
java
/
edu
/
uci
/
iotproject
/
trafficreassembly
/
layer2
/
Layer2Flow.java
diff --git
a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/trafficreassembly/layer2/Layer2Flow.java
b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/trafficreassembly/layer2/Layer2Flow.java
index
f1b7190
..
2d804bd
100644
(file)
--- a/
Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/trafficreassembly/layer2/Layer2Flow.java
+++ b/
Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/trafficreassembly/layer2/Layer2Flow.java
@@
-1,6
+1,5
@@
package edu.uci.iotproject.trafficreassembly.layer2;
package edu.uci.iotproject.trafficreassembly.layer2;
-import edu.uci.iotproject.detection.Layer2FlowObserver;
import org.pcap4j.core.PcapPacket;
import org.pcap4j.packet.EthernetPacket;
import org.pcap4j.util.MacAddress;
import org.pcap4j.core.PcapPacket;
import org.pcap4j.packet.EthernetPacket;
import org.pcap4j.util.MacAddress;
@@
-10,15
+9,26
@@
import java.util.Collections;
import java.util.List;
/**
import java.util.List;
/**
- *
The packets exchanged between two
endpoints (MAC addresses).
+ *
Models a layer 2 flow: groups packets exchanged between two specific
endpoints (MAC addresses).
*
*
- * @author Janus Varmarken
+ * @author Janus Varmarken {@literal <jvarmark@uci.edu>}
+ * @author Rahmadi Trimananda {@literal <rtrimana@uci.edu>}
*/
public class Layer2Flow {
*/
public class Layer2Flow {
+ /**
+ * The first endpoint of this layer 2 flow.
+ */
private final MacAddress mEndpoint1;
private final MacAddress mEndpoint1;
+
+ /**
+ * The second endpoint of this layer 2 flow.
+ */
private final MacAddress mEndpoint2;
private final MacAddress mEndpoint2;
+ /**
+ * Clients observing for changes to this layer 2 flow.
+ */
private final List<Layer2FlowObserver> mFlowObservers = new ArrayList<>();
public Layer2Flow(MacAddress endpoint1, MacAddress endpoint2) {
private final List<Layer2FlowObserver> mFlowObservers = new ArrayList<>();
public Layer2Flow(MacAddress endpoint1, MacAddress endpoint2) {
@@
-26,10
+36,18
@@
public class Layer2Flow {
mEndpoint2 = endpoint2;
}
mEndpoint2 = endpoint2;
}
+ /**
+ * Register as an observer of this flow.
+ * @param observer The client that is to be notified whenever this flow changes (has new packets added).
+ */
public void addFlowObserver(Layer2FlowObserver observer) {
mFlowObservers.add(observer);
}
public void addFlowObserver(Layer2FlowObserver observer) {
mFlowObservers.add(observer);
}
+ /**
+ * Deregister as an observer of this flow.
+ * @param observer The client that no longer wishes to be notified whenever this flow changes.
+ */
public void removeFlowObserver(Layer2FlowObserver observer) {
mFlowObservers.remove(observer);
}
public void removeFlowObserver(Layer2FlowObserver observer) {
mFlowObservers.remove(observer);
}
@@
-50,10
+68,18
@@
public class Layer2Flow {
mFlowObservers.forEach(o -> o.onNewPacket(this, packet));
}
mFlowObservers.forEach(o -> o.onNewPacket(this, packet));
}
+ /**
+ * Get the packets pertaining to this flow.
+ * @return The packets pertaining to this flow.
+ */
public List<PcapPacket> getPackets() {
return Collections.unmodifiableList(mPackets);
}
public List<PcapPacket> getPackets() {
return Collections.unmodifiableList(mPackets);
}
+ /**
+ * Verify that a packet pertains to this flow.
+ * @param packet The packet that is to be verified.
+ */
private void verifyAddresses(PcapPacket packet) {
EthernetPacket ethPkt = packet.get(EthernetPacket.class);
MacAddress srcAddr = ethPkt.getHeader().getSrcAddr();
private void verifyAddresses(PcapPacket packet) {
EthernetPacket ethPkt = packet.get(EthernetPacket.class);
MacAddress srcAddr = ethPkt.getHeader().getSrcAddr();
@@
-67,13
+93,3
@@
public class Layer2Flow {
}
}
}
}
-
-
-
-/*
-
-
- Packet stream -> flow reassembler -> flow1, flow2, flow3... -> for each flow, keep a sequence matcher for each sequence of cluster
-
-
- */
\ No newline at end of file