This commit is contained in:
Administrator
2025-04-24 10:16:38 +08:00
parent 6de65562be
commit 7267aec1fd
108 changed files with 7621 additions and 1890 deletions
+42 -5
View File
@@ -11,7 +11,7 @@ import org.kne.cloud.network.monitor.DelayMonitorData;
import org.kne.cloud.network.monitor.MonitorData;
import org.kne.cloud.network.monitor.QueueingMonitorDataImpl;
public class RouteItem implements Comparable<RouteItem>{
public class RouteItem implements Comparable<RouteItem>,Cloneable{
private Inet6AddressGroup destination;
private Inet6Address nexthop;
private IPv6NetworkLink destlink;
@@ -20,6 +20,7 @@ public class RouteItem implements Comparable<RouteItem>{
private long cost;
private String flag;
private MonitorData monitor;
private boolean isLoopback;
public String getFlag() {
return flag;
}
@@ -44,7 +45,7 @@ public class RouteItem implements Comparable<RouteItem>{
&& pre == other.pre && Objects.equals(proto, other.proto);
}
public RouteItem(Inet6AddressGroup destination, Inet6Address nexthop, IPv6NetworkLink destlink, String proto, int pre,
long cost,String flag) {
long cost,String flag,boolean isLoopback) {
super();
this.destination = destination;
this.nexthop = nexthop;
@@ -53,9 +54,10 @@ public class RouteItem implements Comparable<RouteItem>{
this.pre = pre;
this.cost = cost;
this.flag=flag;
this.isLoopback=isLoopback;
}
public RouteItem(Inet6AddressGroup destination, Inet6Address nexthop, IPv6NetworkLink destlink, String proto, int pre,
long cost,MonitorData monitor,String flag) {
long cost,MonitorData monitor,String flag,boolean isLoopback) {
super();
this.destination = destination;
this.nexthop = nexthop;
@@ -65,6 +67,7 @@ public class RouteItem implements Comparable<RouteItem>{
this.cost = cost;
this.monitor=monitor;
this.flag=flag;
this.isLoopback=isLoopback;
}
public Inet6AddressGroup getDestination() {
return destination;
@@ -81,6 +84,9 @@ public class RouteItem implements Comparable<RouteItem>{
public int getPre() {
return pre;
}
public boolean isLoopback() {
return isLoopback;
}
@Override
public String toString() {
return getDestination()+"\t"+getProto()+"\t"+getPre()+"\t"+getCost()+"\t"+getFlag()+"\t"+getNexthop().getHostAddress()+"\t"+getDestlink().getName();
@@ -91,6 +97,9 @@ public class RouteItem implements Comparable<RouteItem>{
public boolean checkMatch(Inet6Address ia) {
return destination.checkMatch(ia);
}
public boolean checkMatch(byte[] ia) {
return destination.checkMatch(ia);
}
@Override
public int compareTo(RouteItem o) {
int v1=destination.compareTo(o.destination);
@@ -105,7 +114,35 @@ public class RouteItem implements Comparable<RouteItem>{
if(monitor==null||o.monitor==null||(!(monitor instanceof DelayMonitorData))||(!(o.monitor instanceof DelayMonitorData)))
return v3;
if(!(monitor instanceof QueueingMonitorDataImpl)||!(o.monitor instanceof QueueingMonitorDataImpl))
return Long.compare(((DelayMonitorData)monitor).getOutDelay(), ((DelayMonitorData)o.monitor).getOutDelay());
return Long.compare(((DelayMonitorData)monitor).getOutDelay()+((QueueingMonitorDataImpl)monitor).getQueueingDelay(), ((DelayMonitorData)o.monitor).getOutDelay()+((QueueingMonitorDataImpl)o.monitor).getQueueingDelay());
return Long.compare(outDelay, o.outDelay);
return Long.compare(outDelay+queueingDelay, o.outDelay+o.queueingDelay);
}
@Override
public Object clone() {
try {
RouteItem ri=(RouteItem) super.clone();
if(monitor!=null)
ri.monitor=(MonitorData) monitor.clone();
return ri;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
long outDelay;
long queueingDelay;
public void preSort() {
if(monitor!=null) {
outDelay=((DelayMonitorData)monitor).getOutDelay();
if(monitor instanceof QueueingMonitorDataImpl) {
queueingDelay=((QueueingMonitorDataImpl)monitor).getQueueingDelay();
}
}
}
public boolean ECMPequals(RouteItem prevr) {
return prevr.getDestination().getPrefixLength()==getDestination().getPrefixLength()&&prevr.getPre()==getPre()&&prevr.getCost()==getCost();
}
}