Skip to content

Commit

Permalink
automatic commit at releng box
Browse files Browse the repository at this point in the history
  • Loading branch information
mc36 committed Dec 29, 2021
1 parent 30e265f commit 6f585a9
Show file tree
Hide file tree
Showing 8 changed files with 245 additions and 13 deletions.
16 changes: 8 additions & 8 deletions cfg/mpls-te14.tst
Expand Up @@ -187,11 +187,11 @@ r3 tping 100 10 4321::1 /vrf v1 /int lo0
r3 tping 100 10 2.2.2.2 /vrf v1 /int lo0
r3 tping 100 10 4321::2 /vrf v1 /int lo0

r1 tping 100 10 3.3.3.1 /vrf v1 /int lo0
r1 tping 100 10 3.3.3.2 /vrf v1 /int lo0
r1 tping 100 10 3.3.3.3 /vrf v1 /int lo0
r1 tping 100 10 3.3.3.4 /vrf v1 /int lo0
r1 tping 100 10 3333::1 /vrf v1 /int lo0
r1 tping 100 10 3333::2 /vrf v1 /int lo0
r1 tping 100 10 3333::3 /vrf v1 /int lo0
r1 tping 100 10 3333::4 /vrf v1 /int lo0
r1 tping 100 10 3.3.3.1 /vrf v1 /int lo0 /multi
r1 tping 100 10 3.3.3.2 /vrf v1 /int lo0 /multi
r1 tping 100 10 3.3.3.3 /vrf v1 /int lo0 /multi
r1 tping 300 10 3.3.3.4 /vrf v1 /int lo0 /multi
r1 tping 100 10 3333::1 /vrf v1 /int lo0 /multi
r1 tping 100 10 3333::2 /vrf v1 /int lo0 /multi
r1 tping 100 10 3333::3 /vrf v1 /int lo0 /multi
r1 tping 300 10 3333::4 /vrf v1 /int lo0 /multi
4 changes: 2 additions & 2 deletions src/net/freertr/addr/addrType.java
Expand Up @@ -296,10 +296,10 @@ public void setNot(addrType a1) {
}

/**
* set from not a1
* set from shifted a1
*
* @param a1 address
* @param sh shift
* @param shf shift
*/
public void setShl(addrType a1, int shf) {
int shb = shf / 8;
Expand Down
20 changes: 20 additions & 0 deletions src/net/freertr/tab/tabGep.java
@@ -0,0 +1,20 @@
package net.freertr.tab;

import net.freertr.addr.addrType;

/**
* one prefix tree
*
* @param <T> type of elements in the list
* @author matecsaba
*/
public class tabGep<T extends addrType> extends tabGepV2<T> {

/**
* create one generic tree
*/
public tabGep() {
super();
}

}
79 changes: 79 additions & 0 deletions src/net/freertr/tab/tabGepV1.java
@@ -0,0 +1,79 @@
package net.freertr.tab;

import java.util.Map;
import java.util.TreeMap;
import net.freertr.addr.addrPrefix;
import net.freertr.addr.addrType;

/**
* one prefix tree
*
* @param <T> type of elements in the list
* @author matecsaba
*/
public class tabGepV1<T extends addrType> {

private TreeMap<tabGepV1nod<T>, tabRouteEntry<T>> tree;

/**
* create one generic tree
*/
public tabGepV1() {
tree = new TreeMap<tabGepV1nod<T>, tabRouteEntry<T>>();
}

/**
* add one entry
*
* @param val value to add
* @return old value, null if freshly added
*/
public tabRouteEntry<T> add(tabRouteEntry<T> val) {
return tree.put(new tabGepV1nod<T>(val), val);
}

/**
* add one entry
*
* @param val value to add
* @return removed value, null if not found
*/
public tabRouteEntry<T> del(tabRouteEntry<T> val) {
return tree.remove(new tabGepV1nod<T>(val));
}

/**
* find one container entry
*
* @param val value to look up
* @return found value
*/
public tabRouteEntry<T> search(tabRouteEntry<T> val) {
Map.Entry<tabGepV1nod<T>, tabRouteEntry<T>> res = tree.floorEntry(new tabGepV1nod<T>(val));
for (;;) {
if (res == null) {
return null;
}
tabRouteEntry<T> v = res.getValue();
if (v.prefix.supernet(val.prefix, true)) {
return v;
}
res = tree.lowerEntry(res.getKey());
}
}

}

class tabGepV1nod<T extends addrType> implements Comparable<tabGepV1nod<T>> {

public addrPrefix<T> pfx;

public tabGepV1nod(tabRouteEntry<T> val) {
pfx = val.prefix;
}

public int compareTo(tabGepV1nod<T> o) {
return pfx.compare(pfx, o.pfx);
}

}
124 changes: 124 additions & 0 deletions src/net/freertr/tab/tabGepV2.java
@@ -0,0 +1,124 @@
package net.freertr.tab;

import net.freertr.addr.addrType;

/**
* one prefix tree
*
* @param <T> type of elements in the list
* @author matecsaba
*/
public class tabGepV2<T extends addrType> {

private tabGepV2nod<T> rot;

/**
* create one generic tree
*/
public tabGepV2() {
rot = new tabGepV2nod<T>();
}

/**
* add one entry
*
* @param val value to add
* @return old value, null if freshly added
*/
public tabRouteEntry<T> add(tabRouteEntry<T> val) {
tabGepV2nod<T> cur = rot;
for (int p = 0;; p++) {
if (p >= val.prefix.maskLen) {
tabRouteEntry<T> old = cur.val;
cur.val = val;
return old;
}
if (val.prefix.network.bitValue(p)) {
if (cur.one == null) {
cur.one = new tabGepV2nod<T>();
}
cur = cur.one;
} else {
if (cur.zero == null) {
cur.zero = new tabGepV2nod<T>();
}
cur = cur.zero;
}
}
}

/**
* add one entry
*
* @param val value to add
* @return removed value, null if not found
*/
public tabRouteEntry<T> del(tabRouteEntry<T> val) {
tabGepV2nod<T> cur = rot;
for (int p = 0;; p++) {
if (p >= val.prefix.maskLen) {
tabRouteEntry<T> old = cur.val;
cur.val = null;
return old;
}
if (val.prefix.network.bitValue(p)) {
if (cur.one == null) {
return null;
}
cur = cur.one;
} else {
if (cur.zero == null) {
return null;
}
cur = cur.zero;
}
}
}

/**
* find one container entry
*
* @param val value to look up
* @return found value
*/
public tabRouteEntry<T> search(tabRouteEntry<T> val) {
tabGepV2nod<T> cur = rot;
tabRouteEntry<T> lst = null;
for (int p = 0;; p++) {
if (cur.val != null) {
lst = cur.val;
}
if (p >= val.prefix.maskLen) {
return lst;
}
if (val.prefix.network.bitValue(p)) {
if (cur.one == null) {
return lst;
}
cur = cur.one;
} else {
if (cur.zero == null) {
return lst;
}
cur = cur.zero;
}
}
}

}

class tabGepV2nod<T extends addrType> {

public tabGepV2nod<T> zero;

public tabGepV2nod<T> one;

public tabRouteEntry<T> val;

public tabGepV2nod() {
val = null;
zero = null;
one = null;
}

}
11 changes: 10 additions & 1 deletion src/net/freertr/tab/tabRoute.java
Expand Up @@ -81,6 +81,8 @@ public enum addType {
*/
protected final tabGen<tabRouteEntry<T>> prefixes;

private tabGep<T> lookupTrie = null;

/**
* version of this table
*/
Expand Down Expand Up @@ -123,7 +125,11 @@ public tabRoute(tabRoute<T> orig) {
* optimize for lookup
*/
public void optimize4lookup() {
prefixes.optimize4lookup();
tabGep<T> res = new tabGep<T>();
for (int i = 0; i < prefixes.size(); i++) {
res.add(prefixes.get(i));
}
lookupTrie = res;
}

/**
Expand Down Expand Up @@ -638,6 +644,9 @@ private boolean doNexthopFix(tabRouteAttr<T> attr, tabRoute<T> recurs, int recur
public tabRouteEntry<T> route(T addr) {
tabRouteEntry<T> prf = new tabRouteEntry<T>();
prf.prefix = new addrPrefix<T>(addr, addr.maxBits());
if (lookupTrie != null) {
return lookupTrie.search(prf);
}
for (int o = prf.prefix.maskLen; o >= 0; o--) {
prf.prefix.setMask(o);
tabRouteEntry<T> res = prefixes.find(prf);
Expand Down
2 changes: 1 addition & 1 deletion src/rtr.csv
@@ -1,6 +1,6 @@
url;file;result;test
-;-;-;freeRouter v21.12.29-cur, done by cs@nop.
-;-;-;2021-12-29 05:09:51, took 00:06:31, with 100 workers, on 2520 cases, 0 failed, 0 traces, 1 retries
-;-;-;2021-12-29 08:23:09, took 00:06:43, with 100 workers, on 2520 cases, 0 failed, 0 traces, 3 retries
-;-;-;./rtr.bin
http://sources.nop.hu/cfg/basic.tst;basic.tst;success;dummy test
http://sources.nop.hu/cfg/conn-amt01.tst;conn-amt01.tst;success;amt over ipv4
Expand Down
2 changes: 1 addition & 1 deletion src/rtr.html
Expand Up @@ -11,7 +11,7 @@
</style>
<title>tester</title></head><body>
release: freeRouter v21.12.29-cur, done by cs@nop.<br/>
tested: 2021-12-29 05:09:51, took 00:06:31, with 100 workers, on 2520 cases, 0 failed, 0 traces, 1 retries<br/>
tested: 2021-12-29 08:23:09, took 00:06:43, with 100 workers, on 2520 cases, 0 failed, 0 traces, 3 retries<br/>
jvm: ./rtr.bin<br/>
<br/>
<table><thead><tr><td><b>file</b></td><td><b>result</b></td><td><b>test</b></td></tr></thead><tbody>
Expand Down

0 comments on commit 6f585a9

Please sign in to comment.