Merge "Parse destination and source mac address of ARP packet." into main
This commit is contained in:
commit
94192b136b
2 changed files with 15 additions and 3 deletions
|
|
@ -45,14 +45,18 @@ import java.nio.ByteBuffer;
|
|||
public class ArpPacket {
|
||||
private static final String TAG = "ArpPacket";
|
||||
|
||||
public final MacAddress destination;
|
||||
public final MacAddress source;
|
||||
public final short opCode;
|
||||
public final Inet4Address senderIp;
|
||||
public final Inet4Address targetIp;
|
||||
public final MacAddress senderHwAddress;
|
||||
public final MacAddress targetHwAddress;
|
||||
|
||||
ArpPacket(short opCode, MacAddress senderHwAddress, Inet4Address senderIp,
|
||||
MacAddress targetHwAddress, Inet4Address targetIp) {
|
||||
ArpPacket(MacAddress destination, MacAddress source, short opCode, MacAddress senderHwAddress,
|
||||
Inet4Address senderIp, MacAddress targetHwAddress, Inet4Address targetIp) {
|
||||
this.destination = destination;
|
||||
this.source = source;
|
||||
this.opCode = opCode;
|
||||
this.senderHwAddress = senderHwAddress;
|
||||
this.senderIp = senderIp;
|
||||
|
|
@ -145,7 +149,9 @@ public class ArpPacket {
|
|||
buffer.get(targetHwAddress);
|
||||
buffer.get(targetIp);
|
||||
|
||||
return new ArpPacket(opCode, MacAddress.fromBytes(senderHwAddress),
|
||||
return new ArpPacket(MacAddress.fromBytes(l2dst),
|
||||
MacAddress.fromBytes(l2src), opCode,
|
||||
MacAddress.fromBytes(senderHwAddress),
|
||||
(Inet4Address) InetAddress.getByAddress(senderIp),
|
||||
MacAddress.fromBytes(targetHwAddress),
|
||||
(Inet4Address) InetAddress.getByAddress(targetIp));
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ public final class ArpPacketTest {
|
|||
0x00, 0x1a, 0x11, 0x22, 0x33, 0x33 };
|
||||
private static final byte[] TEST_TARGET_MAC_ADDR = new byte[] {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
private static final MacAddress TEST_DESTINATION_MAC = MacAddress.fromBytes(ETHER_BROADCAST);
|
||||
private static final MacAddress TEST_SOURCE_MAC = MacAddress.fromBytes(TEST_SENDER_MAC_ADDR);
|
||||
private static final byte[] TEST_ARP_PROBE = new byte[] {
|
||||
// dst mac address
|
||||
(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
|
||||
|
|
@ -163,6 +165,8 @@ public final class ArpPacketTest {
|
|||
@Test
|
||||
public void testParseArpProbePacket() throws Exception {
|
||||
final ArpPacket packet = ArpPacket.parseArpPacket(TEST_ARP_PROBE, TEST_ARP_PROBE.length);
|
||||
assertEquals(packet.destination, TEST_DESTINATION_MAC);
|
||||
assertEquals(packet.source, TEST_SOURCE_MAC);
|
||||
assertEquals(packet.opCode, ARP_REQUEST);
|
||||
assertEquals(packet.senderHwAddress, MacAddress.fromBytes(TEST_SENDER_MAC_ADDR));
|
||||
assertEquals(packet.targetHwAddress, MacAddress.fromBytes(TEST_TARGET_MAC_ADDR));
|
||||
|
|
@ -174,6 +178,8 @@ public final class ArpPacketTest {
|
|||
public void testParseArpAnnouncePacket() throws Exception {
|
||||
final ArpPacket packet = ArpPacket.parseArpPacket(TEST_ARP_ANNOUNCE,
|
||||
TEST_ARP_ANNOUNCE.length);
|
||||
assertEquals(packet.destination, TEST_DESTINATION_MAC);
|
||||
assertEquals(packet.source, TEST_SOURCE_MAC);
|
||||
assertEquals(packet.opCode, ARP_REQUEST);
|
||||
assertEquals(packet.senderHwAddress, MacAddress.fromBytes(TEST_SENDER_MAC_ADDR));
|
||||
assertEquals(packet.targetHwAddress, MacAddress.fromBytes(TEST_TARGET_MAC_ADDR));
|
||||
|
|
|
|||
Loading…
Reference in a new issue