diff --git a/src/org/kne/cloud/network/ipv6/AbstractIPv6NetworkLink.java b/src/org/kne/cloud/network/ipv6/AbstractIPv6NetworkLink.java index f6bafc6..165258a 100644 --- a/src/org/kne/cloud/network/ipv6/AbstractIPv6NetworkLink.java +++ b/src/org/kne/cloud/network/ipv6/AbstractIPv6NetworkLink.java @@ -1,5 +1,8 @@ package org.kne.cloud.network.ipv6; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.concurrent.CopyOnWriteArraySet; import java.util.function.BiConsumer; import java.util.function.Supplier; @@ -8,10 +11,17 @@ import org.kne.cloud.network.srv6.SRv6Router; public abstract class AbstractIPv6NetworkLink implements IPv6NetworkLink { private CopyOnWriteArraySet listeners = new CopyOnWriteArraySet<>(); - + private SRv6Router srv6Router; + private final boolean loopback; + + public AbstractIPv6NetworkLink(boolean loopback) { + super(); + this.loopback = loopback; + } + public SRv6Router getSrv6Router() { return srv6Router; } @@ -57,4 +67,35 @@ public abstract class AbstractIPv6NetworkLink implements IPv6NetworkLink { public void setReceiveConsumer(BiConsumer> receiveConsumer) { this.receiveConsumer = receiveConsumer; } + + @Override + public boolean isLoopBack() { + return loopback; + } + + @Override + public List getRouteItems() { + List rlist = new ArrayList<>(); + if(isLoopBack()) { + for(IPv6AddressGroup group:getAddressGroups()) { + rlist.add(new RouteItem(new IPv6AddressGroup(group.getAddress(), 128), + group.getAddress(), this, RouteItem.DIRECT, 0, 0, null, "D")); + } + } + if(isUp()) { + for (Iterator iteratorx = getNeighborsInfo().iterator(); iteratorx.hasNext();) { + Neighbor addresses = (Neighbor) iteratorx.next(); + RouteItem ri = new RouteItem(new IPv6AddressGroup(addresses.getAddress().getAddress(), 128), + addresses.getAddress().getAddress(), this,RouteItem.SRv6_ENDXSID, 0, 128, null, "D"); + rlist.add(ri); + + RouteItem ris = new RouteItem(addresses.getLocator(), + addresses.getLocator().getAddress(), this, RouteItem.SRv6_ENDSID, 13, 128, + null, "D"); + rlist.add(ris); + + } + } + return rlist; + } } diff --git a/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java b/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java index 2f0f545..07f34d7 100644 --- a/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java +++ b/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java @@ -41,6 +41,7 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink private Lock slok = new SpinLock(); public IPv6TUNLoopbackNetworkLink(String name,IPv6AddressGroup hostAddress, int mtu, List dns) throws IOException { + super(true); if (tun != null) throw new IllegalStateException("already open!"); try { @@ -204,13 +205,6 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink LockSupport.unpark(tr); } - - - @Override - public boolean isLoopBack() { - return true; - } - @Override public List getNeighborsInfo() { List hs = new ArrayList<>(); @@ -219,10 +213,6 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink return hs; } - /* - * @Override public boolean isCongress(IPv6Packet iPv6Packet,double scale) { - * return sendQueue.size() > 1000*scale; } - */ @Override public String getName() { @@ -255,27 +245,4 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink return List.of(hostAddress); } - @Override - public List getRouteItems() { - List rlist = new ArrayList<>(); - - for (IPv6AddressGroup grp : getAddressGroups()) { - rlist.add(new RouteItem(new IPv6AddressGroup(grp.getAddress(), 128), grp.getAddress(), this, RouteItem.DIRECT, 0, 1, - null, "D")); - } - - for (Iterator iteratorx = getNeighborsInfo().iterator(); iteratorx.hasNext();) { - Neighbor addresses = (Neighbor) iteratorx.next(); - RouteItem ri = new RouteItem(new IPv6AddressGroup(addresses.getAddress().getAddress(), 128), - addresses.getAddress().getAddress(), this, RouteItem.SRv6_ENDXSID, 0, 128, null, "D"); - rlist.add(ri); - - RouteItem ris = new RouteItem(addresses.getLocator(), addresses.getLocator().getAddress(), this, - RouteItem.SRv6_ENDSID, 13, 128, null, "D"); - rlist.add(ris); - - } - return rlist; - } - } diff --git a/src/org/kne/cloud/network/ipv6/LoopbackIPv6NetworkLink.java b/src/org/kne/cloud/network/ipv6/LoopbackIPv6NetworkLink.java index eb821e4..2621c19 100644 --- a/src/org/kne/cloud/network/ipv6/LoopbackIPv6NetworkLink.java +++ b/src/org/kne/cloud/network/ipv6/LoopbackIPv6NetworkLink.java @@ -32,6 +32,7 @@ public class LoopbackIPv6NetworkLink extends AbstractIPv6NetworkLink implements //new Inet6AddressGroup(loopbackAddress, 128) new Inet6AddressGroup((Inet6Address) Inet6Address.getByName("::1"), 128) public LoopbackIPv6NetworkLink(List addressGroupsx,SRv6Router router) { + super(true); this.addressGroups .addAll( addressGroupsx); } @@ -54,10 +55,7 @@ public class LoopbackIPv6NetworkLink extends AbstractIPv6NetworkLink implements } } - @Override - public boolean isLoopBack() { - return true; - } + @Override public List getNeighborsInfo() { @@ -93,28 +91,6 @@ public class LoopbackIPv6NetworkLink extends AbstractIPv6NetworkLink implements return rerouteConsumer; } - @Override - public List getRouteItems() { - List rlist = new ArrayList<>(); - for(IPv6AddressGroup group:addressGroups) { - rlist.add(new RouteItem(new IPv6AddressGroup(group.getAddress(), 128), - group.getAddress(), this, RouteItem.DIRECT, 0, 0, null, "D")); - } - - for (Iterator iteratorx = getNeighborsInfo().iterator(); iteratorx.hasNext();) { - Neighbor addresses = (Neighbor) iteratorx.next(); - RouteItem ri = new RouteItem(new IPv6AddressGroup(addresses.getAddress().getAddress(), 128), - addresses.getAddress().getAddress(), this,RouteItem.SRv6_ENDXSID, 0, 128, null, "D"); - rlist.add(ri); - - RouteItem ris = new RouteItem(addresses.getLocator(), - addresses.getLocator().getAddress(), this, RouteItem.SRv6_ENDSID, 13, 128, - null, "D"); - rlist.add(ris); - - } - return rlist; - } public SRv6Router getRouter() { diff --git a/src/org/kne/cloud/network/klalb/AbstractControlledIPv6NetworkLink.java b/src/org/kne/cloud/network/klalb/AbstractControlledIPv6NetworkLink.java index 20e475b..3ad4db0 100644 --- a/src/org/kne/cloud/network/klalb/AbstractControlledIPv6NetworkLink.java +++ b/src/org/kne/cloud/network/klalb/AbstractControlledIPv6NetworkLink.java @@ -13,6 +13,10 @@ import org.kne.cloud.network.ipv6.RouteItem; public abstract class AbstractControlledIPv6NetworkLink extends AbstractIPv6NetworkLink implements ControlledIPv6NetworkLink{ + public AbstractControlledIPv6NetworkLink(boolean loopback) { + super(loopback); + } + } diff --git a/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java b/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java index e94b476..5bd3396 100644 --- a/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java +++ b/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java @@ -142,6 +142,7 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement } public KLALBRemoteLink(KLALBController controller,KLALBPacketLink kpl, IPv6AddressGroup address) { + super(false); this.klalbController=controller; sysclk = klalbController.getClock(); this.kplink = kpl; @@ -151,6 +152,7 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement } private KLALBRemoteLink(KLALBController controller, MultiProtocolSocketAddress mpa, MultiProtocolSocketAddress bindaddr, IPv6AddressGroup address) { + super(false); this.klalbController=controller; sysclk = klalbController.getClock(); this.socketAddress = mpa; @@ -854,10 +856,6 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement } } - @Override - public boolean isLoopBack() { - return false; - } BandwidthDistributer bandwidthDistributer=new BandwidthDistributer<>(); @Override public List getNeighborsInfo() { @@ -946,15 +944,12 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement return (!isClosed()) && (status.getState() == LinkStatus.UP) ; } - @Override + /*@Override public List getRouteItems() { List rlist = new ArrayList<>(); if(isUp()) { - IPv6AddressGroup adg = addressGroup; - /*if (adg != null) - rlist.add(new RouteItem(new IPv6AddressGroup(adg.getAddress(), 128), adg.getAddress(), this, "Direct", 0, 0, - null, "D", true));*/ + for (Iterator iteratorx = getNeighborsInfo().iterator(); iteratorx.hasNext(); ) { Neighbor addresses = (Neighbor) iteratorx.next(); @@ -970,7 +965,7 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement } } return rlist; - } + }*/ @Override public void setCongressCondition(Lock lock, Condition condition) { diff --git a/src/org/kne/cloud/network/klalb/ui/NetworkGraphPanel.java b/src/org/kne/cloud/network/klalb/ui/NetworkGraphPanel.java index cd8e656..d2f0371 100644 --- a/src/org/kne/cloud/network/klalb/ui/NetworkGraphPanel.java +++ b/src/org/kne/cloud/network/klalb/ui/NetworkGraphPanel.java @@ -82,8 +82,8 @@ public class NetworkGraphPanel extends GraphPanel { public void actionPerformed(ActionEvent e) { KperfGUI kpfg=new KperfGUI(); kpfg.setVisible(true); - MultiProtocolSocketAddress source=new MultiProtocolSocketAddress("KLALB_Stream",controller.getIpv6Router().getLocator().getAddress().toString(),0); - MultiProtocolSocketAddress target=new MultiProtocolSocketAddress("KLALB_Stream", address.toString(), 4564); + MultiProtocolSocketAddress source=new MultiProtocolSocketAddress("kltp",controller.getIpv6Router().getLocator().getAddress().toString(),0); + MultiProtocolSocketAddress target=new MultiProtocolSocketAddress("kltp", address.toString(), 4564); kpfg.setTarget(target,source); } });