KLALB V3.6.0 写了一半

This commit is contained in:
Administrator
2026-02-27 08:32:03 +08:00
parent 816e672843
commit 620afef715
164 changed files with 8381 additions and 13495 deletions
@@ -15,7 +15,9 @@ import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.LockSupport;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
import org.kne.cloud.network.ByteBufferAllocator;
import org.kne.cloud.network.NetworkPacket;
@@ -24,7 +26,9 @@ import org.kne.cloud.network.ThreadTool;
import org.kne.cloud.network.VirtualRawSocketImpl;
import org.kne.cloud.network.ipv6.IPv6Packet;
import org.kne.cloud.network.ipv6.IPv6Packet.IPv6Payload;
import org.kne.cloud.network.ipv6.Inet6AddressGroup;
import org.kne.cloud.network.ipv6.IPv6Address;
import org.kne.cloud.network.ipv6.IPv6AddressGroup;
import org.kne.cloud.network.ipv6.IPv6NetworkLink;
import org.kne.cloud.network.ipv6.LoopbackIPv6NetworkLink;
import org.kne.cloud.network.srv6.PacketConsumer;
import org.kne.cloud.network.srv6.SRv6Router;
@@ -139,8 +143,8 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
}
if (!address.isAnyLocalAddress() ) {
boolean contains=false;
for(Inet6AddressGroup adg:link.getAddressGroups()) {
if(adg.checkMatch((Inet6Address) address)) {
for(IPv6AddressGroup adg:link.getAddressGroups()) {
if(adg.checkMatch(IPv6Address.valueOf( address))) {
contains=true;
break;
}
@@ -187,14 +191,19 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
if(ipHeaderInclude) {
}else {
HighPerformanceExecutor.defaultExecutor.execute(() -> {
IPv6Payload pl=new IPv6Payload(bindProtocolNumber);
pl.getData().put(buf);
pl.getData().flip();
BiConsumer<IPv6NetworkLink, Supplier<IPv6Packet>>cons=link.getReceiveConsumer();
if(cons!=null) {
cons.accept(link,() -> {
IPv6Packet ipv=new IPv6Packet();
ipv.setVersion(6);
ipv.setTrafficClass(0);
ipv.setFlowLabel(0);
ipv.setHopLimit(255);
if(!localaddr.isAnyLocalAddress()) {
ipv.setSourceAddress(localaddr);
ipv.setSourceAddress2(localaddr);
}else {
ipv.setSourceAddress(link.getRouter().getLocator().getAddress());
}
@@ -202,24 +211,18 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
if (!(address instanceof Inet6Address)) {
throw new IllegalArgumentException("invalid address type, KLALB socket can only use IPV6 address");
}
ipv.setDestinationAddress((Inet6Address)address);
ipv.setPriority(3);
ipv.setDestinationAddress2((Inet6Address)address);
//ipv.enableECN();
IPv6Payload pl=new IPv6Payload(bindProtocolNumber);
pl.getData().put(buf);
pl.getData().flip();
ipv.setPayload(pl);
Consumer<IPv6Packet>cons=link.getReceiveConsumer();
if(cons!=null) {
cons.accept(ipv);
}
return ipv;
});
}
}
}
@Override
protected InetAddress peek() throws IOException {
return peekNextPacket().getSourceAddress();
return peekNextPacket().getSourceAddress2();
}
@Override
@@ -229,7 +232,7 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
}
private void copyTo(IPv6Packet pack, DatagramPacket p) throws IOException {
p.setAddress(pack.getSourceAddress());
p.setAddress(pack.getSourceAddress2());
ByteBuffer buffer= ByteBuffer.wrap(p.getData(),p.getOffset(),p.getLength());
if(ipHeaderInclude) {