From eb5d3490aec220ad8bfcbf1f439669bd27845199 Mon Sep 17 00:00:00 2001 From: mc36 Date: Sat, 4 Feb 2023 17:11:39 +0100 Subject: [PATCH] automatic commit at releng box --- rtr-sw.txt | 2 ++ src/net/freertr/cfg/cfgRtr.java | 1 + src/net/freertr/rtr/rtrBgp.java | 5 ++++- src/net/freertr/rtr/rtrBgpNeigh.java | 3 +++ src/net/freertr/rtr/rtrBgpParam.java | 12 ++++++++++++ src/net/freertr/rtr/rtrBgpSpeak.java | 15 +++++++++++++++ src/net/freertr/rtr/rtrBgpUtil.java | 5 +++++ src/net/freertr/user/userExec.java | 1 + src/net/freertr/user/userShow.java | 4 ++++ src/rtr.csv | 2 +- src/rtr.html | 2 +- 11 files changed, 49 insertions(+), 3 deletions(-) diff --git a/rtr-sw.txt b/rtr-sw.txt index 454206a31d..aacf43f99d 100644 --- a/rtr-sw.txt +++ b/rtr-sw.txt @@ -504,6 +504,7 @@ router bgp4 65535 template r monitor bmp template r dump mrt template r hostname domain + template r software template r extended-open template r extended-update template r aigp @@ -565,6 +566,7 @@ router bgp6 65535 template r monitor bmp template r dump mrt template r hostname domain + template r software template r extended-open template r extended-update template r aigp diff --git a/src/net/freertr/cfg/cfgRtr.java b/src/net/freertr/cfg/cfgRtr.java index 063dcc60cc..bdf5551c18 100644 --- a/src/net/freertr/cfg/cfgRtr.java +++ b/src/net/freertr/cfg/cfgRtr.java @@ -362,6 +362,7 @@ public class cfgRtr implements Comparator, cfgGeneric { "router bgp[46] .*! no (template|neighbor) .* proxy-profile", "router bgp[46] .*! no (template|neighbor) .* fall-over", "router bgp[46] .*! no (template|neighbor) .* hostname", + "router bgp[46] .*! no (template|neighbor) .* software", "router bgp[46] .*! no (template|neighbor) .* unidirection", "router bgp[46] .*! no (template|neighbor) .* extended-open", "router bgp[46] .*! no (template|neighbor) .* extended-update", diff --git a/src/net/freertr/rtr/rtrBgp.java b/src/net/freertr/rtr/rtrBgp.java index b706c96c74..6d3f8e1e01 100644 --- a/src/net/freertr/rtr/rtrBgp.java +++ b/src/net/freertr/rtr/rtrBgp.java @@ -3827,7 +3827,7 @@ public userFormat showNeighs(int safi) { * * @param mod mode: 1=afi, 2=groups, 3=nexthops, 4=graceful, 5=addpath, * 6=routerid, 7=buffer, 8=description, 9=hostname, 10=compress, 11=connect, - * 12=resolve, 13=summary, 14=multilab, 15=longlived + * 12=resolve, 13=summary, 14=multilab, 15=longlived, 16=software * @return list of neighbors */ public userFormat showSummary(int mod) { @@ -3876,6 +3876,9 @@ public userFormat showSummary(int mod) { case 14: l = new userFormat("|", "neighbor|as|rx|tx"); break; + case 16: + l = new userFormat("|", "neighbor|as|software"); + break; default: return null; } diff --git a/src/net/freertr/rtr/rtrBgpNeigh.java b/src/net/freertr/rtr/rtrBgpNeigh.java index 8f2de74fdf..8a500d5497 100644 --- a/src/net/freertr/rtr/rtrBgpNeigh.java +++ b/src/net/freertr/rtr/rtrBgpNeigh.java @@ -587,6 +587,7 @@ public userFormat getStatus() { l.add("description|" + description); l.add("hostname|" + conn.peerHostname); l.add("domainname|" + conn.peerDomainname); + l.add("software|" + conn.peerSoftware); l.add("compression|rx=" + (conn.compressRx != null) + ", tx=" + (conn.compressTx != null)); l.add("strict bfd|" + conn.strictBfd); l.add("graceful got|" + rtrBgpParam.mask2string(conn.peerGrace)); @@ -1978,6 +1979,8 @@ public String showSummary(int mod) { return peerAddr + "|" + bits.num2str(remoteAs) + "|" + rtrBgpParam.mask2string(conn.peerMltLab) + "|" + rtrBgpParam.mask2string(multiLabel & addrFams); case 15: return peerAddr + "|" + bits.num2str(remoteAs) + "|" + rtrBgpParam.mask2string(conn.peerLlGrace) + "|" + rtrBgpParam.mask2string(llGraceRestart & addrFams); + case 16: + return peerAddr + "|" + bits.num2str(remoteAs) + "|" + conn.peerSoftware; default: return null; } diff --git a/src/net/freertr/rtr/rtrBgpParam.java b/src/net/freertr/rtr/rtrBgpParam.java index e4f50a1a32..a5cdb6ea83 100644 --- a/src/net/freertr/rtr/rtrBgpParam.java +++ b/src/net/freertr/rtr/rtrBgpParam.java @@ -286,6 +286,11 @@ public abstract class rtrBgpParam { */ public int hostname; + /** + * software version + */ + public boolean software; + /** * extended open */ @@ -1117,6 +1122,7 @@ public void copyFrom(rtrBgpParam src) { extNextCur = src.extNextCur; extNextOtr = src.extNextOtr; hostname = src.hostname; + software = src.software; extOpen = src.extOpen; extUpdate = src.extUpdate; unidirection = src.unidirection; @@ -1561,6 +1567,7 @@ public static void getParamHelp(userHelping l) { getAfiList(l, "4 4,.", "use", true); l.add(null, "3 4,. hostname advertise hostname capability"); l.add(null, "4 . domain advertise domain too"); + l.add(null, "3 . software advertise software version capability"); l.add(null, "3 . extended-open send open in extended format"); l.add(null, "3 . extended-update advertise extended update capability"); l.add(null, "3 . unidirection not advertise when receiving"); @@ -1743,6 +1750,7 @@ public List getParamCfg(String beg, String nei, int filter) { s = "domain"; } cmds.cfgLine(l, hostname < 1, beg, nei + "hostname", s); + cmds.cfgLine(l, !software, beg, nei + "software", ""); cmds.cfgLine(l, !extOpen, beg, nei + "extended-open", ""); cmds.cfgLine(l, !extUpdate, beg, nei + "extended-update", ""); cmds.cfgLine(l, !unidirection, beg, nei + "unidirection", ""); @@ -2164,6 +2172,10 @@ public boolean setParamCfg(cmds cmd, boolean negated) { } return false; } + if (s.equals("software")) { + software = !negated; + return false; + } if (s.equals("extended-open")) { extOpen = !negated; return false; diff --git a/src/net/freertr/rtr/rtrBgpSpeak.java b/src/net/freertr/rtr/rtrBgpSpeak.java index ecd18f6e72..e1181b0228 100644 --- a/src/net/freertr/rtr/rtrBgpSpeak.java +++ b/src/net/freertr/rtr/rtrBgpSpeak.java @@ -26,6 +26,7 @@ import net.freertr.util.logger; import net.freertr.util.syncInt; import net.freertr.enc.encTlv; +import net.freertr.util.version; /** * bgp4 speaker @@ -554,6 +555,11 @@ public class rtrBgpSpeak implements rtrBfdClnt, Runnable { */ public String peerHostname; + /** + * peer software capability + */ + public String peerSoftware; + /** * peer domain capability */ @@ -1632,6 +1638,10 @@ public void sendOpen() { } rtrBgpUtil.placeCapability(pck, neigh.extOpen, rtrBgpUtil.capaHostname, buf); } + if (neigh.software) { + byte[] buf = encodeHostname(version.usrAgnt); + rtrBgpUtil.placeCapability(pck, neigh.extOpen, rtrBgpUtil.capaSoftware, buf); + } if (neigh.bfdTrigger == 2) { rtrBgpUtil.placeCapability(pck, neigh.extOpen, rtrBgpUtil.capaStrictBfd, new byte[0]); } @@ -1742,6 +1752,11 @@ public boolean parseOpen(packHolder pck) { bits.byteCopy(tlv.valDat, i + 1, buf, 0, buf.length); peerDomainname = new String(buf); break; + case rtrBgpUtil.capaSoftware: + buf = new byte[tlv.valDat[0] & 0xff]; + bits.byteCopy(tlv.valDat, 1, buf, 0, buf.length); + peerSoftware = new String(buf); + break; case rtrBgpUtil.capaStrictBfd: strictBfd = true; break; diff --git a/src/net/freertr/rtr/rtrBgpUtil.java b/src/net/freertr/rtr/rtrBgpUtil.java index 7f0f4ff13d..4e8a843f4b 100644 --- a/src/net/freertr/rtr/rtrBgpUtil.java +++ b/src/net/freertr/rtr/rtrBgpUtil.java @@ -730,6 +730,11 @@ private rtrBgpUtil() { */ public static final int capaStrictBfd = 74; + /** + * software version + */ + public static final int capaSoftware = 75; + /** * compression */ diff --git a/src/net/freertr/user/userExec.java b/src/net/freertr/user/userExec.java index b844cd2883..911639bf4c 100644 --- a/src/net/freertr/user/userExec.java +++ b/src/net/freertr/user/userExec.java @@ -633,6 +633,7 @@ private static void getHelpShowIpX(userHelping hl) { hl.add(null, "5 . buffer list of buffer"); hl.add(null, "5 . description list of description"); hl.add(null, "5 . hostname list of hostname"); + hl.add(null, "5 . software list of software"); hl.add(null, "5 . compression list of compression"); hl.add(null, "5 . connection list of connection"); hl.add(null, "5 . rpkisum list of servers"); diff --git a/src/net/freertr/user/userShow.java b/src/net/freertr/user/userShow.java index 61620aee76..8900123625 100644 --- a/src/net/freertr/user/userShow.java +++ b/src/net/freertr/user/userShow.java @@ -3802,6 +3802,10 @@ private void doShowIpXbgp(tabRouteAttr.routeType afi) { rdr.putStrTab(r.bgp.showSummary(9)); return; } + if (a.equals("software")) { + rdr.putStrTab(r.bgp.showSummary(16)); + return; + } if (a.equals("compression")) { rdr.putStrTab(r.bgp.showSummary(10)); return; diff --git a/src/rtr.csv b/src/rtr.csv index ee8f99a78c..8e4a074273 100644 --- a/src/rtr.csv +++ b/src/rtr.csv @@ -1,6 +1,6 @@ url;file;result;test -;-;-;freeRouter v23.2.4-cur, done by cs@nop. --;-;-;2023-02-04 14:48:06, took 00:09:46, with 80 workers, on 3102 cases, 0 failed, 0 traces, 1 retries +-;-;-;2023-02-04 16:10:54, took 00:10:03, with 80 workers, on 3102 cases, 0 failed, 0 traces, 3 retries -;-;-;./rtr.bin http://sources.freertr.org/cfg/basic01.tst;basic01.tst;success;dummy test http://sources.freertr.org/cfg/basic02.tst;basic02.tst;success;interface with slot diff --git a/src/rtr.html b/src/rtr.html index 99485b572b..5336316f0f 100644 --- a/src/rtr.html +++ b/src/rtr.html @@ -13,7 +13,7 @@ tester release: freeRouter v23.2.4-cur, done by cs@nop.
-tested: 2023-02-04 14:48:06, took 00:09:46, with 80 workers, on 3102 cases, 0 failed, 0 traces, 1 retries
+tested: 2023-02-04 16:10:54, took 00:10:03, with 80 workers, on 3102 cases, 0 failed, 0 traces, 3 retries
jvm: ./rtr.bin

fileresulttest