Skip to content

Commit 6a3ad8f

Browse files
author
Emil Gustafsson
committed
new try to fix ipv6 checksum
Signed-off-by: Emil Gustafsson <[email protected]>
1 parent 5cbbbd6 commit 6a3ad8f

File tree

1 file changed

+9
-18
lines changed

1 file changed

+9
-18
lines changed

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

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import com.cisco.trex.stateless.model.StreamVM;
1212
import com.cisco.trex.stateless.model.TRexClientResult;
1313
import com.cisco.trex.stateless.model.port.PortVlan;
14-
import com.cisco.trex.stateless.model.vm.FixChecksumHw;
15-
import com.cisco.trex.stateless.model.vm.FixChecksumHw.L4Type;
1614
import com.cisco.trex.stateless.model.vm.VMInstruction;
1715
import com.google.common.collect.Lists;
1816
import com.google.common.net.InetAddresses;
@@ -219,14 +217,7 @@ public EthernetPacket sendNeighborSolicitation(
219217
}
220218

221219
Packet icmpv6NSPkt = buildICMPV6NSPkt(vlan, srcMac, dstMac, dstIp, srcIp);
222-
List<VMInstruction> instructions = new ArrayList<>();
223-
int layer2Length = L2LENGTH;
224-
if (!vlan.getTags().isEmpty()) {
225-
layer2Length = 18;
226-
}
227-
instructions.add(new FixChecksumHw(layer2Length, L3LENGTH, L4Type.IP));
228-
tRexClient.startStreamsIntermediate(
229-
portIdx, Arrays.asList(buildStream(icmpv6NSPkt, instructions)));
220+
tRexClient.startStreamsIntermediate(portIdx, Arrays.asList(buildStream(icmpv6NSPkt)));
230221

231222
Predicate<EthernetPacket> ipV6NAPktFilter =
232223
etherPkt -> {
@@ -366,7 +357,7 @@ private static com.cisco.trex.stateless.model.Stream buildStream(
366357
return new com.cisco.trex.stateless.model.Stream(
367358
streamId,
368359
true,
369-
3,
360+
0,
370361
0.0,
371362
new StreamMode(
372363
2,
@@ -403,21 +394,21 @@ private static Packet buildICMPV6NSPkt(
403394

404395
final String specifiedSrcIP = srcIp != null ? srcIp : generateIPv6AddrFromMAC(srcMac);
405396

397+
// Calculate the Solicited-Node multicast address, RFC 4291 chapter 2.7.1
398+
String[] destIpParts = dstIp.split(":");
399+
String multicastIp =
400+
String.format(
401+
"FF02::1:FF%s:%s", destIpParts[6].substring(2, 4), destIpParts[7].substring(0, 4));
402+
406403
IcmpV6CommonPacket.Builder icmpCommonPktBuilder = new IcmpV6CommonPacket.Builder();
407404
icmpCommonPktBuilder
408405
.srcAddr((Inet6Address) InetAddress.getByName(specifiedSrcIP))
409-
.dstAddr((Inet6Address) InetAddress.getByName(dstIp))
406+
.dstAddr((Inet6Address) InetAddress.getByName(multicastIp))
410407
.type(IcmpV6Type.NEIGHBOR_SOLICITATION)
411408
.code(IcmpV6Code.NO_CODE)
412409
.correctChecksumAtBuild(true)
413410
.payloadBuilder(ipv6NSBuilder);
414411

415-
// Calculate the Solicited-Node multicast address, RFC 4291 chapter 2.7.1
416-
String[] destIpParts = dstIp.split(":");
417-
String multicastIp =
418-
String.format(
419-
"FF02::1:FF%s:%s", destIpParts[6].substring(2, 4), destIpParts[7].substring(0, 4));
420-
421412
IpV6Packet.Builder ipV6Builder = new IpV6Packet.Builder();
422413
ipV6Builder
423414
.srcAddr((Inet6Address) InetAddress.getByName(specifiedSrcIP))

0 commit comments

Comments
 (0)