Skip to content

Commit a04ebc5

Browse files
Merge pull request #81 from enxxjmn/MJE-15951
TRex sends IPv6 neighbor solicitation packets with incorrect source IP
2 parents a81753c + aeb6343 commit a04ebc5

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/main/java/com/cisco/trex/stateless/IPv6NeighborDiscoveryService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.function.Predicate;
1212
import java.util.stream.Collectors;
1313
import java.util.stream.Stream;
14+
import org.apache.commons.lang3.StringUtils;
1415
import org.pcap4j.packet.*;
1516
import org.pcap4j.packet.IcmpV6CommonPacket.IpV6NeighborDiscoveryOption;
1617
import org.pcap4j.packet.IcmpV6NeighborAdvertisementPacket.IcmpV6NeighborAdvertisementHeader;
@@ -566,7 +567,7 @@ private static String expandIPv6Address(String shortAddress) {
566567
return Arrays.stream(addressArray).collect(Collectors.joining(":"));
567568
}
568569

569-
private static String generateIPv6AddrFromMAC(String mac) {
570+
static String generateIPv6AddrFromMAC(String mac) {
570571
String prefix = "fe80";
571572
List<Integer> macOctets =
572573
Arrays.stream(mac.split(":"))
@@ -583,7 +584,8 @@ private static String generateIPv6AddrFromMAC(String mac) {
583584
strOctets.add(
584585
String.format(
585586
"%s%s",
586-
Integer.toHexString(macOctets.get(i)), Integer.toHexString(macOctets.get(i + 1))));
587+
StringUtils.leftPad(Integer.toHexString(macOctets.get(i)), 2, "0"),
588+
StringUtils.leftPad(Integer.toHexString(macOctets.get(i + 1)), 2, "0")));
587589
}
588590
return String.format("%s::%s", prefix, String.join(":", strOctets));
589591
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.cisco.trex.stateless;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import org.junit.Test;
6+
7+
public class IPv6NeighborDiscoveryServiceTest {
8+
9+
@Test
10+
public void generateIPv6AddrFromMACTest() {
11+
String ipV6Address = IPv6NeighborDiscoveryService.generateIPv6AddrFromMAC("10:62:E5:09:A0:64");
12+
assertEquals("fe80::1262:e5ff:fe09:a064", ipV6Address);
13+
}
14+
}

0 commit comments

Comments
 (0)