From 9401224fb802a147d79a3a4519d678c900da18af Mon Sep 17 00:00:00 2001 From: Dragan Kocovski Date: Thu, 26 Feb 2015 12:54:59 +1000 Subject: [PATCH 01/46] SCRUM-2487 - mavenize --- .gitignore | 15 ++++++++ README.md | 3 -- build.xml | 8 ++-- pom.xml | 38 +++++++++++++++++++ src/{ => main/java}/org/javamrt/mrt/AS.java | 0 .../org/javamrt/mrt/ASConfedSequence.java | 0 .../java}/org/javamrt/mrt/ASConfedSet.java | 0 .../java}/org/javamrt/mrt/ASPath.java | 0 .../java}/org/javamrt/mrt/ASPathLimit.java | 0 .../java}/org/javamrt/mrt/ASPathSegment.java | 0 .../java}/org/javamrt/mrt/ASSet.java | 0 .../java}/org/javamrt/mrt/Advertisement.java | 0 .../java}/org/javamrt/mrt/Advertiser.java | 0 .../java}/org/javamrt/mrt/Aggregator.java | 0 .../java}/org/javamrt/mrt/AtomAggr.java | 0 .../java}/org/javamrt/mrt/AttrOrigin.java | 0 .../java}/org/javamrt/mrt/Attribute.java | 0 .../org/javamrt/mrt/AttributeException.java | 0 .../java}/org/javamrt/mrt/Attributes.java | 0 .../java}/org/javamrt/mrt/BGPFileReader.java | 0 .../javamrt/mrt/BGPFileReaderException.java | 0 .../java}/org/javamrt/mrt/Bgp4Update.java | 0 .../java}/org/javamrt/mrt/ClusterId.java | 0 .../java}/org/javamrt/mrt/ClusterList.java | 0 .../java}/org/javamrt/mrt/Community.java | 0 src/{ => main/java}/org/javamrt/mrt/Dpa.java | 0 .../java}/org/javamrt/mrt/ExtCommunities.java | 0 .../java}/org/javamrt/mrt/IndexTable.java | 0 .../java}/org/javamrt/mrt/KeepAlive.java | 0 .../java}/org/javamrt/mrt/LocalPref.java | 0 .../java}/org/javamrt/mrt/MRTConstants.java | 0 .../java}/org/javamrt/mrt/MRTRecord.java | 0 src/{ => main/java}/org/javamrt/mrt/Med.java | 0 .../java}/org/javamrt/mrt/MpReach.java | 0 .../java}/org/javamrt/mrt/MpUnReach.java | 0 .../java}/org/javamrt/mrt/NextHop.java | 0 src/{ => main/java}/org/javamrt/mrt/Nlri.java | 0 .../java}/org/javamrt/mrt/Notification.java | 0 src/{ => main/java}/org/javamrt/mrt/Open.java | 0 .../java}/org/javamrt/mrt/OriginatorID.java | 0 .../java}/org/javamrt/mrt/Prefix.java | 0 .../org/javamrt/mrt/PrefixMaskException.java | 0 .../java}/org/javamrt/mrt/RFC4893.java | 0 .../org/javamrt/mrt/RFC4893Exception.java | 0 .../java}/org/javamrt/mrt/Refresh.java | 0 .../java}/org/javamrt/mrt/StateChange.java | 0 .../java}/org/javamrt/mrt/TableDump.java | 0 .../java}/org/javamrt/mrt/TableDumpv2.java | 0 .../java}/org/javamrt/mrt/Withdraw.java | 0 .../java}/org/javamrt/mrt/genericRib.java | 0 src/{ => main/java}/org/javamrt/mrt/peer.java | 0 .../java}/org/javamrt/progs/route_btoa.java | 0 .../java}/org/javamrt/utils/Common.java | 0 .../java}/org/javamrt/utils/Debug.java | 0 .../javamrt/utils/InetAddressComparator.java | 0 .../java}/org/javamrt/utils/LongOpt.java | 0 .../java}/org/javamrt/utils/RecordAccess.java | 0 .../java}/org/javamrt/utils/getopts.java | 0 58 files changed, 57 insertions(+), 7 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md mode change 100644 => 100755 build.xml create mode 100755 pom.xml rename src/{ => main/java}/org/javamrt/mrt/AS.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASConfedSequence.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASConfedSet.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASPath.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASPathLimit.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASPathSegment.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ASSet.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Advertisement.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Advertiser.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Aggregator.java (100%) rename src/{ => main/java}/org/javamrt/mrt/AtomAggr.java (100%) rename src/{ => main/java}/org/javamrt/mrt/AttrOrigin.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Attribute.java (100%) rename src/{ => main/java}/org/javamrt/mrt/AttributeException.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Attributes.java (100%) rename src/{ => main/java}/org/javamrt/mrt/BGPFileReader.java (100%) rename src/{ => main/java}/org/javamrt/mrt/BGPFileReaderException.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Bgp4Update.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ClusterId.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ClusterList.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Community.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Dpa.java (100%) rename src/{ => main/java}/org/javamrt/mrt/ExtCommunities.java (100%) rename src/{ => main/java}/org/javamrt/mrt/IndexTable.java (100%) rename src/{ => main/java}/org/javamrt/mrt/KeepAlive.java (100%) rename src/{ => main/java}/org/javamrt/mrt/LocalPref.java (100%) rename src/{ => main/java}/org/javamrt/mrt/MRTConstants.java (100%) rename src/{ => main/java}/org/javamrt/mrt/MRTRecord.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Med.java (100%) rename src/{ => main/java}/org/javamrt/mrt/MpReach.java (100%) rename src/{ => main/java}/org/javamrt/mrt/MpUnReach.java (100%) rename src/{ => main/java}/org/javamrt/mrt/NextHop.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Nlri.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Notification.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Open.java (100%) rename src/{ => main/java}/org/javamrt/mrt/OriginatorID.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Prefix.java (100%) rename src/{ => main/java}/org/javamrt/mrt/PrefixMaskException.java (100%) rename src/{ => main/java}/org/javamrt/mrt/RFC4893.java (100%) rename src/{ => main/java}/org/javamrt/mrt/RFC4893Exception.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Refresh.java (100%) rename src/{ => main/java}/org/javamrt/mrt/StateChange.java (100%) rename src/{ => main/java}/org/javamrt/mrt/TableDump.java (100%) rename src/{ => main/java}/org/javamrt/mrt/TableDumpv2.java (100%) rename src/{ => main/java}/org/javamrt/mrt/Withdraw.java (100%) rename src/{ => main/java}/org/javamrt/mrt/genericRib.java (100%) rename src/{ => main/java}/org/javamrt/mrt/peer.java (100%) rename src/{ => main/java}/org/javamrt/progs/route_btoa.java (100%) rename src/{ => main/java}/org/javamrt/utils/Common.java (100%) rename src/{ => main/java}/org/javamrt/utils/Debug.java (100%) rename src/{ => main/java}/org/javamrt/utils/InetAddressComparator.java (100%) rename src/{ => main/java}/org/javamrt/utils/LongOpt.java (100%) rename src/{ => main/java}/org/javamrt/utils/RecordAccess.java (100%) rename src/{ => main/java}/org/javamrt/utils/getopts.java (100%) diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index fb8e9e0..7efe8e8 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,18 @@ local.properties # Eclipse project files .classpath .project + +*.iml +*.ipr +*.iws +.idea +target +atlassian-ide-plugin.xml +.settings +.DS_Store + + + + + + diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 130b380..b846904 --- a/README.md +++ b/README.md @@ -3,7 +3,4 @@ java-mrt Java library to parse the binary MRT format. -I have used this library over the last years extensively. -Please send any bug fixes to me paaguti :#at#: gmail _dot_ com - This library is released under LGPL license. Read LICENSE.txt. diff --git a/build.xml b/build.xml old mode 100644 new mode 100755 index 933c96a..e1496fe --- a/build.xml +++ b/build.xml @@ -1,10 +1,10 @@ - - - + + + - + diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000..79361ce --- /dev/null +++ b/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + net.apnic.mrt + mrt + 0.0.1-SNAPSHOT + jar + + Java MRT File Dumper + Java Multi-Threaded Routing Toolkit File Dumper + https://github.com/APNIC-net/java-mrt + + + >https://github.com/APNIC-net/java-mrt + scm:git:git@github.com:APNIC-net/java-mrt.git + scm:git:git@github.com:APNIC-net/java-mrt.git + + + + UTF-8 + UTF-8 + 1.7 + 1.5 + + + + + org.apache.commons + commons-compress + ${commons-compress.version} + + + + + + \ No newline at end of file diff --git a/src/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java similarity index 100% rename from src/org/javamrt/mrt/AS.java rename to src/main/java/org/javamrt/mrt/AS.java diff --git a/src/org/javamrt/mrt/ASConfedSequence.java b/src/main/java/org/javamrt/mrt/ASConfedSequence.java similarity index 100% rename from src/org/javamrt/mrt/ASConfedSequence.java rename to src/main/java/org/javamrt/mrt/ASConfedSequence.java diff --git a/src/org/javamrt/mrt/ASConfedSet.java b/src/main/java/org/javamrt/mrt/ASConfedSet.java similarity index 100% rename from src/org/javamrt/mrt/ASConfedSet.java rename to src/main/java/org/javamrt/mrt/ASConfedSet.java diff --git a/src/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java similarity index 100% rename from src/org/javamrt/mrt/ASPath.java rename to src/main/java/org/javamrt/mrt/ASPath.java diff --git a/src/org/javamrt/mrt/ASPathLimit.java b/src/main/java/org/javamrt/mrt/ASPathLimit.java similarity index 100% rename from src/org/javamrt/mrt/ASPathLimit.java rename to src/main/java/org/javamrt/mrt/ASPathLimit.java diff --git a/src/org/javamrt/mrt/ASPathSegment.java b/src/main/java/org/javamrt/mrt/ASPathSegment.java similarity index 100% rename from src/org/javamrt/mrt/ASPathSegment.java rename to src/main/java/org/javamrt/mrt/ASPathSegment.java diff --git a/src/org/javamrt/mrt/ASSet.java b/src/main/java/org/javamrt/mrt/ASSet.java similarity index 100% rename from src/org/javamrt/mrt/ASSet.java rename to src/main/java/org/javamrt/mrt/ASSet.java diff --git a/src/org/javamrt/mrt/Advertisement.java b/src/main/java/org/javamrt/mrt/Advertisement.java similarity index 100% rename from src/org/javamrt/mrt/Advertisement.java rename to src/main/java/org/javamrt/mrt/Advertisement.java diff --git a/src/org/javamrt/mrt/Advertiser.java b/src/main/java/org/javamrt/mrt/Advertiser.java similarity index 100% rename from src/org/javamrt/mrt/Advertiser.java rename to src/main/java/org/javamrt/mrt/Advertiser.java diff --git a/src/org/javamrt/mrt/Aggregator.java b/src/main/java/org/javamrt/mrt/Aggregator.java similarity index 100% rename from src/org/javamrt/mrt/Aggregator.java rename to src/main/java/org/javamrt/mrt/Aggregator.java diff --git a/src/org/javamrt/mrt/AtomAggr.java b/src/main/java/org/javamrt/mrt/AtomAggr.java similarity index 100% rename from src/org/javamrt/mrt/AtomAggr.java rename to src/main/java/org/javamrt/mrt/AtomAggr.java diff --git a/src/org/javamrt/mrt/AttrOrigin.java b/src/main/java/org/javamrt/mrt/AttrOrigin.java similarity index 100% rename from src/org/javamrt/mrt/AttrOrigin.java rename to src/main/java/org/javamrt/mrt/AttrOrigin.java diff --git a/src/org/javamrt/mrt/Attribute.java b/src/main/java/org/javamrt/mrt/Attribute.java similarity index 100% rename from src/org/javamrt/mrt/Attribute.java rename to src/main/java/org/javamrt/mrt/Attribute.java diff --git a/src/org/javamrt/mrt/AttributeException.java b/src/main/java/org/javamrt/mrt/AttributeException.java similarity index 100% rename from src/org/javamrt/mrt/AttributeException.java rename to src/main/java/org/javamrt/mrt/AttributeException.java diff --git a/src/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java similarity index 100% rename from src/org/javamrt/mrt/Attributes.java rename to src/main/java/org/javamrt/mrt/Attributes.java diff --git a/src/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java similarity index 100% rename from src/org/javamrt/mrt/BGPFileReader.java rename to src/main/java/org/javamrt/mrt/BGPFileReader.java diff --git a/src/org/javamrt/mrt/BGPFileReaderException.java b/src/main/java/org/javamrt/mrt/BGPFileReaderException.java similarity index 100% rename from src/org/javamrt/mrt/BGPFileReaderException.java rename to src/main/java/org/javamrt/mrt/BGPFileReaderException.java diff --git a/src/org/javamrt/mrt/Bgp4Update.java b/src/main/java/org/javamrt/mrt/Bgp4Update.java similarity index 100% rename from src/org/javamrt/mrt/Bgp4Update.java rename to src/main/java/org/javamrt/mrt/Bgp4Update.java diff --git a/src/org/javamrt/mrt/ClusterId.java b/src/main/java/org/javamrt/mrt/ClusterId.java similarity index 100% rename from src/org/javamrt/mrt/ClusterId.java rename to src/main/java/org/javamrt/mrt/ClusterId.java diff --git a/src/org/javamrt/mrt/ClusterList.java b/src/main/java/org/javamrt/mrt/ClusterList.java similarity index 100% rename from src/org/javamrt/mrt/ClusterList.java rename to src/main/java/org/javamrt/mrt/ClusterList.java diff --git a/src/org/javamrt/mrt/Community.java b/src/main/java/org/javamrt/mrt/Community.java similarity index 100% rename from src/org/javamrt/mrt/Community.java rename to src/main/java/org/javamrt/mrt/Community.java diff --git a/src/org/javamrt/mrt/Dpa.java b/src/main/java/org/javamrt/mrt/Dpa.java similarity index 100% rename from src/org/javamrt/mrt/Dpa.java rename to src/main/java/org/javamrt/mrt/Dpa.java diff --git a/src/org/javamrt/mrt/ExtCommunities.java b/src/main/java/org/javamrt/mrt/ExtCommunities.java similarity index 100% rename from src/org/javamrt/mrt/ExtCommunities.java rename to src/main/java/org/javamrt/mrt/ExtCommunities.java diff --git a/src/org/javamrt/mrt/IndexTable.java b/src/main/java/org/javamrt/mrt/IndexTable.java similarity index 100% rename from src/org/javamrt/mrt/IndexTable.java rename to src/main/java/org/javamrt/mrt/IndexTable.java diff --git a/src/org/javamrt/mrt/KeepAlive.java b/src/main/java/org/javamrt/mrt/KeepAlive.java similarity index 100% rename from src/org/javamrt/mrt/KeepAlive.java rename to src/main/java/org/javamrt/mrt/KeepAlive.java diff --git a/src/org/javamrt/mrt/LocalPref.java b/src/main/java/org/javamrt/mrt/LocalPref.java similarity index 100% rename from src/org/javamrt/mrt/LocalPref.java rename to src/main/java/org/javamrt/mrt/LocalPref.java diff --git a/src/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java similarity index 100% rename from src/org/javamrt/mrt/MRTConstants.java rename to src/main/java/org/javamrt/mrt/MRTConstants.java diff --git a/src/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java similarity index 100% rename from src/org/javamrt/mrt/MRTRecord.java rename to src/main/java/org/javamrt/mrt/MRTRecord.java diff --git a/src/org/javamrt/mrt/Med.java b/src/main/java/org/javamrt/mrt/Med.java similarity index 100% rename from src/org/javamrt/mrt/Med.java rename to src/main/java/org/javamrt/mrt/Med.java diff --git a/src/org/javamrt/mrt/MpReach.java b/src/main/java/org/javamrt/mrt/MpReach.java similarity index 100% rename from src/org/javamrt/mrt/MpReach.java rename to src/main/java/org/javamrt/mrt/MpReach.java diff --git a/src/org/javamrt/mrt/MpUnReach.java b/src/main/java/org/javamrt/mrt/MpUnReach.java similarity index 100% rename from src/org/javamrt/mrt/MpUnReach.java rename to src/main/java/org/javamrt/mrt/MpUnReach.java diff --git a/src/org/javamrt/mrt/NextHop.java b/src/main/java/org/javamrt/mrt/NextHop.java similarity index 100% rename from src/org/javamrt/mrt/NextHop.java rename to src/main/java/org/javamrt/mrt/NextHop.java diff --git a/src/org/javamrt/mrt/Nlri.java b/src/main/java/org/javamrt/mrt/Nlri.java similarity index 100% rename from src/org/javamrt/mrt/Nlri.java rename to src/main/java/org/javamrt/mrt/Nlri.java diff --git a/src/org/javamrt/mrt/Notification.java b/src/main/java/org/javamrt/mrt/Notification.java similarity index 100% rename from src/org/javamrt/mrt/Notification.java rename to src/main/java/org/javamrt/mrt/Notification.java diff --git a/src/org/javamrt/mrt/Open.java b/src/main/java/org/javamrt/mrt/Open.java similarity index 100% rename from src/org/javamrt/mrt/Open.java rename to src/main/java/org/javamrt/mrt/Open.java diff --git a/src/org/javamrt/mrt/OriginatorID.java b/src/main/java/org/javamrt/mrt/OriginatorID.java similarity index 100% rename from src/org/javamrt/mrt/OriginatorID.java rename to src/main/java/org/javamrt/mrt/OriginatorID.java diff --git a/src/org/javamrt/mrt/Prefix.java b/src/main/java/org/javamrt/mrt/Prefix.java similarity index 100% rename from src/org/javamrt/mrt/Prefix.java rename to src/main/java/org/javamrt/mrt/Prefix.java diff --git a/src/org/javamrt/mrt/PrefixMaskException.java b/src/main/java/org/javamrt/mrt/PrefixMaskException.java similarity index 100% rename from src/org/javamrt/mrt/PrefixMaskException.java rename to src/main/java/org/javamrt/mrt/PrefixMaskException.java diff --git a/src/org/javamrt/mrt/RFC4893.java b/src/main/java/org/javamrt/mrt/RFC4893.java similarity index 100% rename from src/org/javamrt/mrt/RFC4893.java rename to src/main/java/org/javamrt/mrt/RFC4893.java diff --git a/src/org/javamrt/mrt/RFC4893Exception.java b/src/main/java/org/javamrt/mrt/RFC4893Exception.java similarity index 100% rename from src/org/javamrt/mrt/RFC4893Exception.java rename to src/main/java/org/javamrt/mrt/RFC4893Exception.java diff --git a/src/org/javamrt/mrt/Refresh.java b/src/main/java/org/javamrt/mrt/Refresh.java similarity index 100% rename from src/org/javamrt/mrt/Refresh.java rename to src/main/java/org/javamrt/mrt/Refresh.java diff --git a/src/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java similarity index 100% rename from src/org/javamrt/mrt/StateChange.java rename to src/main/java/org/javamrt/mrt/StateChange.java diff --git a/src/org/javamrt/mrt/TableDump.java b/src/main/java/org/javamrt/mrt/TableDump.java similarity index 100% rename from src/org/javamrt/mrt/TableDump.java rename to src/main/java/org/javamrt/mrt/TableDump.java diff --git a/src/org/javamrt/mrt/TableDumpv2.java b/src/main/java/org/javamrt/mrt/TableDumpv2.java similarity index 100% rename from src/org/javamrt/mrt/TableDumpv2.java rename to src/main/java/org/javamrt/mrt/TableDumpv2.java diff --git a/src/org/javamrt/mrt/Withdraw.java b/src/main/java/org/javamrt/mrt/Withdraw.java similarity index 100% rename from src/org/javamrt/mrt/Withdraw.java rename to src/main/java/org/javamrt/mrt/Withdraw.java diff --git a/src/org/javamrt/mrt/genericRib.java b/src/main/java/org/javamrt/mrt/genericRib.java similarity index 100% rename from src/org/javamrt/mrt/genericRib.java rename to src/main/java/org/javamrt/mrt/genericRib.java diff --git a/src/org/javamrt/mrt/peer.java b/src/main/java/org/javamrt/mrt/peer.java similarity index 100% rename from src/org/javamrt/mrt/peer.java rename to src/main/java/org/javamrt/mrt/peer.java diff --git a/src/org/javamrt/progs/route_btoa.java b/src/main/java/org/javamrt/progs/route_btoa.java similarity index 100% rename from src/org/javamrt/progs/route_btoa.java rename to src/main/java/org/javamrt/progs/route_btoa.java diff --git a/src/org/javamrt/utils/Common.java b/src/main/java/org/javamrt/utils/Common.java similarity index 100% rename from src/org/javamrt/utils/Common.java rename to src/main/java/org/javamrt/utils/Common.java diff --git a/src/org/javamrt/utils/Debug.java b/src/main/java/org/javamrt/utils/Debug.java similarity index 100% rename from src/org/javamrt/utils/Debug.java rename to src/main/java/org/javamrt/utils/Debug.java diff --git a/src/org/javamrt/utils/InetAddressComparator.java b/src/main/java/org/javamrt/utils/InetAddressComparator.java similarity index 100% rename from src/org/javamrt/utils/InetAddressComparator.java rename to src/main/java/org/javamrt/utils/InetAddressComparator.java diff --git a/src/org/javamrt/utils/LongOpt.java b/src/main/java/org/javamrt/utils/LongOpt.java similarity index 100% rename from src/org/javamrt/utils/LongOpt.java rename to src/main/java/org/javamrt/utils/LongOpt.java diff --git a/src/org/javamrt/utils/RecordAccess.java b/src/main/java/org/javamrt/utils/RecordAccess.java similarity index 100% rename from src/org/javamrt/utils/RecordAccess.java rename to src/main/java/org/javamrt/utils/RecordAccess.java diff --git a/src/org/javamrt/utils/getopts.java b/src/main/java/org/javamrt/utils/getopts.java similarity index 100% rename from src/org/javamrt/utils/getopts.java rename to src/main/java/org/javamrt/utils/getopts.java From 1e18aacf40ef0b5bbe9d0753425138f5527cb977 Mon Sep 17 00:00:00 2001 From: Dragan Kocovski Date: Thu, 26 Feb 2015 13:10:25 +1000 Subject: [PATCH 02/46] SCRUM-2487 - mavenize --- pom.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 79361ce..b15f670 100755 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,20 @@ scm:git:git@github.com:APNIC-net/java-mrt.git scm:git:git@github.com:APNIC-net/java-mrt.git - + + + + nexus-staging + Nexus Staging Repository + http://nexus.apnic.net:8081/nexus/content/repositories/staging + + + nexus-snapshots + Nexus Snapshot Repository + http://nexus.apnic.net:8081/nexus/content/repositories/snapshots + + + UTF-8 UTF-8 From 363b5949e7199ae118fc42a0493dd1bbbd1e9287 Mon Sep 17 00:00:00 2001 From: Dragan Kocovski Date: Thu, 26 Feb 2015 13:16:07 +1000 Subject: [PATCH 03/46] SCRUM-2487 - mavenize --- pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pom.xml b/pom.xml index b15f670..6d888c8 100755 --- a/pom.xml +++ b/pom.xml @@ -35,15 +35,9 @@ UTF-8 UTF-8 1.7 - 1.5 - - org.apache.commons - commons-compress - ${commons-compress.version} - From dabbfe0af78534643027806c593c20e20619b690 Mon Sep 17 00:00:00 2001 From: Byron Ellacott Date: Tue, 3 Mar 2015 14:34:18 +1000 Subject: [PATCH 04/46] Fix double-offset increment bug in ExtCommunities, and use ASPLAIN not ASDOT --- src/main/java/org/javamrt/mrt/AS.java | 2 +- src/main/java/org/javamrt/mrt/ExtCommunities.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index 8f05418..e0d222b 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -139,7 +139,7 @@ public boolean isPlaceholder() { public String toString() { if (this.equals(0)) return "AS_NULL"; if (this.equals(AS_TRANS)) return "AS_TRANS"; - if (this.is4Byte()) return String.format("%d.%d",hiWord(),loWord()); + if (this.is4Byte()) return String.format("%d",(hiWord()<<16) + loWord()); return String.format("%d", loWord()); } diff --git a/src/main/java/org/javamrt/mrt/ExtCommunities.java b/src/main/java/org/javamrt/mrt/ExtCommunities.java index 6206d04..46933f6 100644 --- a/src/main/java/org/javamrt/mrt/ExtCommunities.java +++ b/src/main/java/org/javamrt/mrt/ExtCommunities.java @@ -37,7 +37,6 @@ public ExtCommunities(byte[] buffer) throws Exception { } else if (typeHigh == 0x01) { byte[] value = RecordAccess.getBytes(buffer, offset, 4); - offset += 4; ip = InetAddress.getByAddress(value).getHostAddress(); offset += 4; number = (long) RecordAccess.getU16(buffer, offset); From 518b4187797b4edbef06613d50726d6c8b73c7e8 Mon Sep 17 00:00:00 2001 From: Dragan Kocovski Date: Tue, 3 Mar 2015 14:49:45 +1000 Subject: [PATCH 05/46] SCRUM-2487 - Allow writes to file rather than stdout --- pom.xml | 13 ++ .../java/org/javamrt/progs/route_btoa.java | 179 ++++++++++-------- 2 files changed, 111 insertions(+), 81 deletions(-) mode change 100644 => 100755 src/main/java/org/javamrt/progs/route_btoa.java diff --git a/pom.xml b/pom.xml index 6d888c8..2b18bc0 100755 --- a/pom.xml +++ b/pom.xml @@ -41,5 +41,18 @@ + + + org.apache.maven.plugins + maven-jar-plugin + + + + org.javamrt.progs.route_btoa + + + + + \ No newline at end of file diff --git a/src/main/java/org/javamrt/progs/route_btoa.java b/src/main/java/org/javamrt/progs/route_btoa.java old mode 100644 new mode 100755 index 9cf86d5..5ef7aa7 --- a/src/main/java/org/javamrt/progs/route_btoa.java +++ b/src/main/java/org/javamrt/progs/route_btoa.java @@ -6,34 +6,26 @@ package org.javamrt.progs; +import org.javamrt.mrt.*; +import org.javamrt.utils.Debug; +import org.javamrt.utils.getopts; + +import java.io.FileWriter; +import java.io.IOException; import java.io.PrintStream; import java.net.InetAddress; import java.net.UnknownHostException; -import org.javamrt.mrt.AS; -import org.javamrt.mrt.BGPFileReader; -import org.javamrt.mrt.Bgp4Update; -import org.javamrt.mrt.KeepAlive; -import org.javamrt.mrt.MRTRecord; -import org.javamrt.mrt.Notification; -import org.javamrt.mrt.Open; -import org.javamrt.mrt.Prefix; -import org.javamrt.mrt.PrefixMaskException; -import org.javamrt.mrt.RFC4893Exception; -import org.javamrt.mrt.StateChange; -import org.javamrt.mrt.TableDump; -import org.javamrt.utils.Debug; -import org.javamrt.utils.getopts; - public class route_btoa { - private static Prefix prefix = null; - private static InetAddress peer = null; - private static AS originator = null; - private static AS traverses = null; - private static boolean showIPv4 = true; - private static boolean showIPv6 = true; - private static boolean printRFC4893violations = false; + public static Prefix prefix = null; + public static InetAddress peer = null; + public static AS originator = null; + public static AS traverses = null; + public static boolean showIPv4 = true; + public static boolean showIPv6 = true; + public static boolean printRFC4893violations = false; + public static String outputToFileExt = ""; public static void main(String args[]) { BGPFileReader in; @@ -41,9 +33,9 @@ public static void main(String args[]) { getopts prueba; if (Debug.compileDebug) - prueba = new getopts(args, "46DhmP:p:o:t:v"); + prueba = new getopts(args, "46Dhmf:P:p:o:t:v"); else - prueba = new getopts(args, "46hmP:p:o:v:t:"); + prueba = new getopts(args, "46hmf:P:p:o:v:t:"); char opcion; @@ -89,6 +81,10 @@ public static void main(String args[]) { case 't': traverses = AS.parseString(prueba.optarg); break; + case 'f': + outputToFileExt = prueba.optarg; + break; + case 'h': default: System.exit(usage((opcion) == 'h' ? 0 : 1)); @@ -109,63 +105,74 @@ public static void main(String args[]) { if (args.length == prueba.optind) System.exit(usage(0)); - for (int arg = prueba.optind; arg < args.length; arg++) { - try { - in = new BGPFileReader(args[arg]); - while (false == in.eof()) { - try { - if ((record = in.readNext()) == null) - break; - if (record instanceof Open - || record instanceof KeepAlive - || record instanceof Notification) - continue; - if (record instanceof StateChange) { - if (oldall == true && checkPeer(record)) { - System.out.println(record.toString()); - continue; - } - } - if ((record instanceof TableDump) - || (record instanceof Bgp4Update)) { - - if (!showIPv4 && record.getPrefix().isIPv4()) - continue; - if (!showIPv6 && record.getPrefix().isIPv6()) - continue; - try { - if (!checkPrefix(record)) - continue; - if (!checkPeer(record)) - continue; - if (!checkASPath(record)) - continue; - } catch (Exception e) { - e.printStackTrace(System.err); - System.err.printf("record = %s\n",record); - } - System.out.println(record); - } - } catch (RFC4893Exception rfce) { - if (printRFC4893violations) - System.err.println(rfce.toString()); - } catch (Exception e) { - e.printStackTrace(System.err); - } - } - in.close(); - } catch (java.io.FileNotFoundException e) { - System.out.println("File not found: " + args[arg]); - } catch (Exception ex) { - System.err - .println("Exception caught when reading " + args[arg]); - ex.printStackTrace(System.err); - } - } // for (int arg... - } // main() - - - private static int usage(int retval) { + FileWriter out; + for (int arg = prueba.optind; arg < args.length; arg++) { + out = null; + try { + in = new BGPFileReader(args[arg]); + if (!outputToFileExt.equals("")) { + out = new FileWriter(args[arg] + + (outputToFileExt.startsWith(".") ? outputToFileExt : "." + outputToFileExt)); + } + int cnt=0; + while (false == in.eof()) { + try { + if ((record = in.readNext()) == null) + break; + ++cnt; + if (record instanceof Open + || record instanceof KeepAlive + || record instanceof Notification) + continue; + if (record instanceof StateChange) { + if (oldall == true && checkPeer(record)) { + outputData(record.toString(), out); + continue; + } + } + if ((record instanceof TableDump) + || (record instanceof Bgp4Update)) { + + if (!showIPv4 && record.getPrefix().isIPv4()) + continue; + if (!showIPv6 && record.getPrefix().isIPv6()) + continue; + try { + if (!checkPrefix(record)) + continue; + if (!checkPeer(record)) + continue; + if (!checkASPath(record)) + continue; + } catch (Exception e) { + e.printStackTrace(System.err); + System.err.printf("record = %s\n",record); + } + outputData(record.toString(), out); + } + } catch (RFC4893Exception rfce) { + if (printRFC4893violations) + System.err.println(rfce.toString()); + } catch (Exception e) { + System.err.println("Failed on record [" + cnt + "]"); + e.printStackTrace(System.err); + } + } + in.close(); + if (out != null) { + out.close(); + } + } catch (java.io.FileNotFoundException e) { + System.err.println("File not found: " + args[arg]); + } catch (Exception ex) { + System.err.println("Exception caught when reading " + args[arg]); + ex.printStackTrace(System.err); + } + } // for (int arg... + } // main() + + + private static int usage(int retval) { PrintStream ps = System.err; ps.println("route_btoa f1 ..."); @@ -173,6 +180,7 @@ private static int usage(int retval) { ps.println(" -m legacy compatibility wth MRT: include all records"); ps.println(" -4 print IPv4 prefixes only"); ps.println(" -6 print IPv6 prefixes only"); + ps.println(" -f ext writes the data to a file with extension e.g. .txt or txt"); ps.println(" -p peer print updates from a specific peer only"); ps.println(" -P prefix print updates for a specific prefix only"); if (Debug.compileDebug) @@ -213,4 +221,13 @@ private static boolean checkASPath(MRTRecord mrt) { // return originator.equals(mrt.getASPath().generator()); } + + private static void outputData(String data, FileWriter output) throws IOException { + if (output != null) { + output.write(data + System.lineSeparator()); + } else { + System.out.println(data); + } + } + } From 05e26c6e05cbb3799593514ee7dc189dd182eef0 Mon Sep 17 00:00:00 2001 From: Dragan Kocovski Date: Tue, 3 Mar 2015 15:31:29 +1000 Subject: [PATCH 06/46] SCRUM-2487 - Short circuit System.exit() --- .../java/org/javamrt/mrt/BGPFileReader.java | 14 ++++------ .../java/org/javamrt/progs/route_btoa.java | 27 ++++++++++++------- .../java/org/javamrt/utils/RecordAccess.java | 2 +- src/main/java/org/javamrt/utils/getopts.java | 6 +++-- 4 files changed, 28 insertions(+), 21 deletions(-) mode change 100644 => 100755 src/main/java/org/javamrt/mrt/BGPFileReader.java mode change 100644 => 100755 src/main/java/org/javamrt/utils/RecordAccess.java mode change 100644 => 100755 src/main/java/org/javamrt/utils/getopts.java diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java old mode 100644 new mode 100755 index 69ddec6..10648d2 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -6,18 +6,14 @@ package org.javamrt.mrt; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; +import org.javamrt.utils.Debug; +import org.javamrt.utils.RecordAccess; + +import java.io.*; import java.net.InetAddress; import java.util.LinkedList; import java.util.zip.GZIPInputStream; -import org.javamrt.utils.Debug; -import org.javamrt.utils.RecordAccess; - public class BGPFileReader { private static final boolean debug = false; @@ -442,7 +438,7 @@ private void parsePeerIndexTable() throws Exception { // System.out.println("Peer "+i+"("+bgpId[i]+"): "+peerIP[i].getHostAddress()+" "+peerAS[i]); } - // System.exit(0); + // route_btoa.exit(0); } private long[] bgpId = null; diff --git a/src/main/java/org/javamrt/progs/route_btoa.java b/src/main/java/org/javamrt/progs/route_btoa.java index 5ef7aa7..990206b 100755 --- a/src/main/java/org/javamrt/progs/route_btoa.java +++ b/src/main/java/org/javamrt/progs/route_btoa.java @@ -26,6 +26,7 @@ public class route_btoa { public static boolean showIPv6 = true; public static boolean printRFC4893violations = false; public static String outputToFileExt = ""; + public static boolean callSystemExit = true; public static void main(String args[]) { BGPFileReader in; @@ -48,14 +49,14 @@ public static void main(String args[]) { if (showIPv4 == true && showIPv6 == true) showIPv6 = false; else - System.exit(usage(1)); + exit(usage(1)); break; case '6': if (showIPv4 == true && showIPv6 == true) showIPv4 = false; else - System.exit(usage(1)); + exit(usage(1)); break; case 'D': Debug.setDebug(true); @@ -87,24 +88,25 @@ public static void main(String args[]) { case 'h': default: - System.exit(usage((opcion) == 'h' ? 0 : 1)); + exit(usage((opcion) == 'h' ? 0 : 1)); break; } } catch (UnknownHostException e) { e.printStackTrace(); - System.exit(1); + exit(1); } catch (PrefixMaskException e) { e.printStackTrace(); - System.exit(1); + exit(1); } catch (Exception e) { e.printStackTrace(); - System.exit(1); + exit(1); } } - if (args.length == prueba.optind) - System.exit(usage(0)); - + if (args.length == prueba.optind) { + exit(usage(0)); + } + FileWriter out; for (int arg = prueba.optind; arg < args.length; arg++) { out = null; @@ -230,4 +232,11 @@ private static void outputData(String data, FileWriter output) throws IOExceptio } } + public static void exit(int exitCode) { + if (callSystemExit) { + System.exit(exitCode); + } + } + + } diff --git a/src/main/java/org/javamrt/utils/RecordAccess.java b/src/main/java/org/javamrt/utils/RecordAccess.java old mode 100644 new mode 100755 index 1eafa22..5d01543 --- a/src/main/java/org/javamrt/utils/RecordAccess.java +++ b/src/main/java/org/javamrt/utils/RecordAccess.java @@ -27,7 +27,7 @@ static public long getUINT (byte[]buffer, int offset,int size) aioobe.printStackTrace(System.err); System.err.printf("Accessing %d bytes long buffer at pos %d\n",buffer.length,offset); dump(System.err,buffer); - System.exit(1); + route_btoa.exit(1); } */ return result; diff --git a/src/main/java/org/javamrt/utils/getopts.java b/src/main/java/org/javamrt/utils/getopts.java old mode 100644 new mode 100755 index 2ee25ed..d794258 --- a/src/main/java/org/javamrt/utils/getopts.java +++ b/src/main/java/org/javamrt/utils/getopts.java @@ -6,6 +6,8 @@ package org.javamrt.utils; +import org.javamrt.progs.route_btoa; + import java.io.PrintStream; /** @@ -187,10 +189,10 @@ public static void main(String[] args) { break; case 255: System.out.println("Missing argument for "+test.opterr); - System.exit(1); + route_btoa.exit(1); default: System.err.println("Error processing "+args[test.optind]); - System.exit(1); + route_btoa.exit(1); } } for (int arg=test.optind; arg Date: Wed, 4 Mar 2015 09:27:02 +1000 Subject: [PATCH 07/46] SCRUM-2487 - Add option to capture output errors to a StringBuilder --- src/main/java/org/javamrt/mrt/ASPath.java | 6 +-- .../java/org/javamrt/mrt/ASPathSegment.java | 9 ++-- .../java/org/javamrt/mrt/BGPFileReader.java | 35 +++++++------- src/main/java/org/javamrt/mrt/IndexTable.java | 36 ++++++++------- src/main/java/org/javamrt/mrt/RFC4893.java | 12 ++--- .../java/org/javamrt/mrt/StateChange.java | 2 +- src/main/java/org/javamrt/mrt/TableDump.java | 34 +++++++------- src/main/java/org/javamrt/mrt/genericRib.java | 6 +-- .../java/org/javamrt/progs/route_btoa.java | 46 ++++++++++++------- src/main/java/org/javamrt/utils/Common.java | 13 ++++-- .../java/org/javamrt/utils/RecordAccess.java | 14 +++--- src/main/java/org/javamrt/utils/getopts.java | 21 ++++----- 12 files changed, 127 insertions(+), 107 deletions(-) mode change 100644 => 100755 src/main/java/org/javamrt/mrt/ASPath.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/ASPathSegment.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/IndexTable.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/RFC4893.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/StateChange.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/TableDump.java mode change 100644 => 100755 src/main/java/org/javamrt/mrt/genericRib.java mode change 100644 => 100755 src/main/java/org/javamrt/utils/Common.java diff --git a/src/main/java/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java old mode 100644 new mode 100755 index c0656d6..727e9e2 --- a/src/main/java/org/javamrt/mrt/ASPath.java +++ b/src/main/java/org/javamrt/mrt/ASPath.java @@ -42,10 +42,10 @@ public class ASPath implements Attribute { private void decode(byte[] buffer, int asSize) throws Exception { this.path = new LinkedList(); int offset = 0; - // System.err.printf("New ASPATH (%d bytes)\n",buffer.length); + // route_btoa.System_err_println(String.format("New ASPATH (%d bytes)",buffer.length)); while (offset < buffer.length) { ASPathSegment segment = new ASPathSegment(buffer, offset, asSize); - // System.err.printf(" segment @%-2d [t %2d]: %s\n",offset,segment.bType(),segment.toString()); + // route_btoa.System_err_println(String.format(" segment @%-2d [t %2d]: %s\n",offset,segment.bType(),segment.toString())); switch (segment.bType()) { case MRTConstants.asSequence: this.path.addAll(segment.getASList()); @@ -75,7 +75,7 @@ private void decode(byte[] buffer, int asSize) throws Exception { // and now try to see if we have AS PATH Prepend // mkPrependers(); - // System.err.println("New ASPATH:"+path.toString()); + // route_btoa.System_err_println("New ASPATH:"+path.toString()); } public AS get(int i) { diff --git a/src/main/java/org/javamrt/mrt/ASPathSegment.java b/src/main/java/org/javamrt/mrt/ASPathSegment.java old mode 100644 new mode 100755 index d9e7758..68c7623 --- a/src/main/java/org/javamrt/mrt/ASPathSegment.java +++ b/src/main/java/org/javamrt/mrt/ASPathSegment.java @@ -6,10 +6,11 @@ package org.javamrt.mrt; -import java.util.LinkedList; - +import org.javamrt.progs.route_btoa; import org.javamrt.utils.RecordAccess; +import java.util.LinkedList; + /** * The AS_PATH and AS4_PATH attributes are composed @@ -49,8 +50,8 @@ public ASPathSegment(byte[] buffer, int offset, int asSize) bLen += asSize; } } catch (Exception e) { - System.err.printf("len = %d,offset = %d; bLen = %d\n",len,offset,bLen); - RecordAccess.dump(System.err,buffer); + route_btoa.System_err_println(String.format("len = %d,offset = %d; bLen = %d", len, offset, bLen)); + RecordAccess.dump(buffer); throw e; } } diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 10648d2..9316892 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -6,6 +6,7 @@ package org.javamrt.mrt; +import org.javamrt.progs.route_btoa; import org.javamrt.utils.Debug; import org.javamrt.utils.RecordAccess; @@ -261,7 +262,7 @@ private MRTRecord parseTableDump(int subtype) throws Exception { } private MRTRecord parseBgp4mp(int subtype) throws Exception { - // System.out.println("parseBgp4mp("+MRTConstants.mpSubType(subtype)+")"); + // route_btoa.System_err_println("parseBgp4mp("+MRTConstants.mpSubType(subtype)+")"); switch (subtype) { case MRTConstants.BGP4MP_MESSAGE: case MRTConstants.BGP4MP_MESSAGE_AS4: @@ -358,11 +359,11 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { private void parsePeerIndexTable() throws Exception { /* - * System.out.println("in BGPFileReader.parsePeerIndexTable\nheader:"); - * RecordAccess.dump(header); System.out.println("record"); + * route_btoa.System_err_println("in BGPFileReader.parsePeerIndexTable\nheader:"); + * RecordAccess.dump(header); route_btoa.System_err_println("record"); * RecordAccess.dump(record); */ - // System.err.println("\nin parsePeerIndexTable()..."); + // route_btoa.System_err_println("\nin parsePeerIndexTable()..."); /* * 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 * 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | @@ -387,9 +388,9 @@ private void parsePeerIndexTable() throws Exception { here += 2; /* - * System.out.printf("Collector BGP Id: 0x%08X\n",CollectorBGPId); - * System.out.printf("View Name Length = %d\n",ViewNameLen); - * System.out.printf(" has %d peers\n",PeerCount); + * route_btoa.System_err_println(String.format("Collector BGP Id: 0x%08X",CollectorBGPId)); + * route_btoa.System_err_println(String.format("View Name Length = %d",ViewNameLen)); + * route_btoa.System_err_println(String.format(" has %d peers\n",PeerCount)); */ bgpId = new long[PeerCount]; peerAS = new org.javamrt.mrt.AS[PeerCount]; @@ -435,7 +436,7 @@ private void parsePeerIndexTable() throws Exception { here += 4; } - // System.out.println("Peer "+i+"("+bgpId[i]+"): "+peerIP[i].getHostAddress()+" "+peerAS[i]); + // route_btoa.System_err_println("Peer "+i+"("+bgpId[i]+"): "+peerIP[i].getHostAddress()+" "+peerAS[i]); } // route_btoa.exit(0); @@ -464,18 +465,18 @@ private void parseTableDumpv2(int NLRItype) throws Exception { offset += 2; if (debug) { - System.out.println("Sequence = " + sequenceNo); - System.out.println("NLRI = " + nlri.toPrefix().toString() - + " [" + nlri.getOffset() + "]"); - System.out.println("entries = " + entryCount); + route_btoa.System_err_println("Sequence = " + sequenceNo); + route_btoa.System_err_println("NLRI = " + nlri.toPrefix().toString() + + " [" + nlri.getOffset() + "]"); + route_btoa.System_err_println("entries = " + entryCount); } for (int i = 0; i < entryCount; i++) { int peerIndex = RecordAccess.getU16(this.record, offset); if (debug) { - System.out.printf("peerIndex = %d; peer = %s(%s)\n", - peerIndex,MRTConstants.ipAddressString(peerIP[peerIndex]),peerAS[peerIndex].toString("AS")); + route_btoa.System_err_println(String.format("peerIndex = %d; peer = %s(%s)\n", + peerIndex, MRTConstants.ipAddressString(peerIP[peerIndex]), peerAS[peerIndex].toString("AS"))); } offset += 2; @@ -620,11 +621,11 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { /* * if (mpReach != null || mpUnreach != null) - * System.out.println("This is the whole record"); + * route_btoa.System_err_println("This is the whole record"); * RecordAccess.dump(record); - * System.out.println("These are the attributes"); + * route_btoa.System_err_println("These are the attributes"); * RecordAccess.dump(record,offset,attrLen); - * System.out.println("int attrLen = "+attrLen); + * route_btoa.System_err_println("int attrLen = "+attrLen); * * throw new Exception("MP_REACH attribute!"); */ diff --git a/src/main/java/org/javamrt/mrt/IndexTable.java b/src/main/java/org/javamrt/mrt/IndexTable.java old mode 100644 new mode 100755 index 2eccb6e..9ce94fc --- a/src/main/java/org/javamrt/mrt/IndexTable.java +++ b/src/main/java/org/javamrt/mrt/IndexTable.java @@ -5,12 +5,14 @@ // http://www.gnu.org/licenses/lgpl-3.0-standalone.html package org.javamrt.mrt; + +import org.javamrt.progs.route_btoa; +import org.javamrt.utils.RecordAccess; + import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Vector; -import org.javamrt.utils.RecordAccess; - public class IndexTable @@ -26,14 +28,14 @@ public class IndexTable byte[] collectorIdbyte = RecordAccess.getBytes (this.record, offset, 4); /* try { - System.out.println(InetAddress.getByAddress(collectorIdbyte).getHostAddress()); + route_btoa.System_err_println(InetAddress.getByAddress(collectorIdbyte).getHostAddress()); } catch (UnknownHostException e) { - e.printStackTrace(); + route_btoa.printStackTrace(e); } */ offset += 4; int nameLength = RecordAccess.getU16 (this.record, offset); - //System.out.println(nameLength); + //route_btoa.System_err_println(nameLength); offset += 2; // byte[] viewName = null; if (nameLength > 0) @@ -44,7 +46,7 @@ public class IndexTable peerCount = RecordAccess.getU16 (this.record, offset); offset += 2; /* - System.out.println("\nRecord: "+this.record.length+"\nCollectorId: "+collectorId + route_btoa.System_err_println("\nRecord: "+this.record.length+"\nCollectorId: "+collectorId +"\nnameLength: "+nameLength+"\nfirstMask(byte): "+ "\npeerCount: "+peerCount); */ @@ -63,10 +65,10 @@ public class IndexTable int firstBit; int secondBit; //byte[] peerCount2=RecordAccess.getBytes(this.record, offset, 1); - //System.out.println("Bit 1: "+peerType); + //route_btoa.System_err_println("Bit 1: "+peerType); if ((peerType & bit0) != 0) { - //System.out.println("upit (peertype&bit0) tacan!"); + //route_btoa.System_err_println("upit (peertype&bit0) tacan!"); firstBit = 16; } else @@ -74,18 +76,18 @@ public class IndexTable if ((peerType & bit1) != 0) { secondBit = 4; - //System.out.println("upit (peertype&bit1) tacan!"); + //route_btoa.System_err_println("upit (peertype&bit1) tacan!"); } else secondBit = 2; - //System.out.println("FirstBit: "+firstBit+"\nSecond Bit: "+secondBit+"\nOFFSET: "+offset); + //route_btoa.System_err_println("FirstBit: "+firstBit+"\nSecond Bit: "+secondBit+"\nOFFSET: "+offset); long peerBgpId = RecordAccess.getU32 (this.record, offset); - //System.out.println("peerBgpId: "+peerBgpId+" numero i: "+i); + //route_btoa.System_err_println("peerBgpId: "+peerBgpId+" numero i: "+i); peerBgp[i] = peerBgpId; - //System.out.println("peerBgpId: "+peerBgpId); + //route_btoa.System_err_println("peerBgpId: "+peerBgpId); offset += 4; - //System.out.println("firstBIt: "+firstBit+" offset: "+offset+" recordlen: "+this.record.length); + //route_btoa.System_err_println("firstBIt: "+firstBit+" offset: "+offset+" recordlen: "+this.record.length); try { @@ -95,12 +97,12 @@ public class IndexTable firstBit)); } catch (UnknownHostException e1) { - e1.printStackTrace (); + route_btoa.printStackTrace(e1); } peerIp.set (i, takeIp); /* try{ - System.out.println("atresa1 je: "+InetAddress.getByAddress(RecordAccess.getBytes(this.record, offset, firstBit)).getHostAddress()); + route_btoa.System_err_println("atresa1 je: "+InetAddress.getByAddress(RecordAccess.getBytes(this.record, offset, firstBit)).getHostAddress()); } catch(UnknownHostException e){} */ @@ -111,10 +113,10 @@ public class IndexTable else takePeerAs = RecordAccess.getU32 (this.record, offset); peerAs[i] = takePeerAs; - //System.out.println("PeerAs je: "+RecordAccess.getBytes(this.record,offset, secondBit)); + //route_btoa.System_err_println("PeerAs je: "+RecordAccess.getBytes(this.record,offset, secondBit)); offset += secondBit; } - //for (int i=0;i @@ -167,9 +168,7 @@ public int optarg() { public static String arg = null; public static void main(String[] args) { - for (int i=0; i: con argumento "), new LongOpt('b',"beg", false," : sin argumento"), @@ -179,27 +178,27 @@ public static void main(String[] args) { while ((opcion = test.nextOption()) > 0) { switch (opcion){ case 'a': - System.out.println("option ["+opcion+"]("+test.optopt+") argument: "+test.optarg); + route_btoa.System_err_println("option ["+opcion+"]("+test.optopt+") argument: "+test.optarg); break; case 'b': - System.out.println("short and long without option: ["+opcion+"]"+test.optopt); + route_btoa.System_err_println("short and long without option: ["+opcion+"]"+test.optopt); break; case 'c': - System.out.println("Special short only option ["+opcion+"]"+test.optopt); + route_btoa.System_err_println("Special short only option ["+opcion+"]"+test.optopt); break; case 255: - System.out.println("Missing argument for "+test.opterr); + route_btoa.System_err_println("Missing argument for "+test.opterr); route_btoa.exit(1); default: - System.err.println("Error processing "+args[test.optind]); + route_btoa.System_err_println("Error processing "+args[test.optind]); route_btoa.exit(1); } } for (int arg=test.optind; arg Date: Thu, 19 Mar 2015 10:41:53 +1000 Subject: [PATCH 08/46] Fixed issue with BGPFileReader reading from slow input streams. --- .../java/org/javamrt/mrt/BGPFileReader.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 9316892..0b060a0 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -166,21 +166,21 @@ record = null; * if the queue is empty, read from the file */ - int leidos = this.in.read(header, 0, header.length); + int bytesRead = readFromInputStream(this.in, header, header.length); recordCounter ++; /* * EOF */ - if (leidos <= 0) { + if (bytesRead <= 0) { this.eof = true; return null; } /* * truncated */ - if (leidos != this.header.length) { + if (bytesRead != this.header.length) { this.eof = true; - throw new BGPFileReaderException("Truncated file: " + leidos + throw new BGPFileReaderException("Truncated file: " + bytesRead + " instead of " + this.header.length + " bytes", header); } if (Debug.compileDebug) @@ -196,11 +196,11 @@ record = null; this.record = new byte[recordlen]; - leidos = this.in.read(record, 0, record.length); + bytesRead = readFromInputStream(this.in, record, record.length); - if (leidos != this.record.length) { + if (bytesRead != this.record.length) { this.eof = true; - throw new BGPFileReaderException("Truncated file: " + leidos + throw new BGPFileReaderException("Truncated file: " + bytesRead + " instead of " + this.record.length + " bytes",record); } @@ -249,6 +249,20 @@ record = null; } } + /** + * Safely read from input streams that can be blocked or slow (e.g. compressed streams). + * @return the total of bytes read from the input stream or -1 if EOF is first found + */ + private static int readFromInputStream(BufferedInputStream bis, byte[] output, int length) throws IOException { + int remaining = length; + int read; + + while (((read = bis.read(output, length - remaining, remaining)) > 0) && ((remaining -= read) > 0)); + + return ((read == -1 && remaining == length) ? -1 : length - remaining); + + } + private MRTRecord parseTableDump(int subtype) throws Exception { switch (subtype) { case MRTConstants.AFI_IPv4: From c1a827634466850ecf766451f0cbc1d2e146dca7 Mon Sep 17 00:00:00 2001 From: Rafael Cintra Date: Thu, 19 Mar 2015 11:10:44 +1000 Subject: [PATCH 09/46] Fixed indentation from previous commit (tabs? really?!). --- .../java/org/javamrt/mrt/BGPFileReader.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 0b060a0..2ea7c7d 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -166,7 +166,7 @@ record = null; * if the queue is empty, read from the file */ - int bytesRead = readFromInputStream(this.in, header, header.length); + int bytesRead = readFromInputStream(this.in, header, header.length); recordCounter ++; /* * EOF @@ -196,7 +196,7 @@ record = null; this.record = new byte[recordlen]; - bytesRead = readFromInputStream(this.in, record, record.length); + bytesRead = readFromInputStream(this.in, record, record.length); if (bytesRead != this.record.length) { this.eof = true; @@ -249,19 +249,18 @@ record = null; } } - /** - * Safely read from input streams that can be blocked or slow (e.g. compressed streams). - * @return the total of bytes read from the input stream or -1 if EOF is first found - */ - private static int readFromInputStream(BufferedInputStream bis, byte[] output, int length) throws IOException { - int remaining = length; - int read; - - while (((read = bis.read(output, length - remaining, remaining)) > 0) && ((remaining -= read) > 0)); + /** + * Safely read from input streams that can be blocked or slow (e.g. compressed streams). + * @return the total of bytes read from the input stream or -1 if EOF is first found + */ + private static int readFromInputStream(BufferedInputStream bis, byte[] output, int length) throws IOException { + int remaining = length; + int read; - return ((read == -1 && remaining == length) ? -1 : length - remaining); + while (((read = bis.read(output, length - remaining, remaining)) > 0) && ((remaining -= read) > 0)); - } + return ((read == -1 && remaining == length) ? -1 : length - remaining); + } private MRTRecord parseTableDump(int subtype) throws Exception { switch (subtype) { From 94ba8d8ec8055b16f1d830c799a55649c7dc53d2 Mon Sep 17 00:00:00 2001 From: Rafael Cintra Date: Thu, 16 Apr 2015 15:05:42 +1000 Subject: [PATCH 10/46] Added code to ignore the deprecated attribute type 20 (Connector Attribute). --- src/main/java/org/javamrt/mrt/Attributes.java | 6 ++++++ src/main/java/org/javamrt/mrt/MRTConstants.java | 1 + 2 files changed, 7 insertions(+) diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 7117e46..73b431e 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -222,6 +222,12 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) Debug.println("ATTRIBUTE_AS4_AGGREGATOR "); break; + case MRTConstants.ATTRIBUTE_CONNECTOR: + // deprecated attribute. ignoring + if (Debug.compileDebug) + Debug.println("ATTRIBUTE_CONNECTOR (deprecated)"); + break; + // Expired but present in RRC! case MRTConstants.ATTRIBUTE_ASPATHLIMIT: diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 220204b..5c0cab4 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -74,6 +74,7 @@ public static String asPathString(int type) { public static final int ATTRIBUTE_EXT_COMMUNITIES = 15; public static final int ATTRIBUTE_AS4_PATH = 16; public static final int ATTRIBUTE_AS4_AGGREGATOR = 17; + public static final int ATTRIBUTE_CONNECTOR = 20; public static final int ATTRIBUTE_ASPATHLIMIT = 21; public static final int ATTRIBUTE_TOTAL = 22; From 7dd7f1b12604626d7624e0ba5b65b1ed6c535aff Mon Sep 17 00:00:00 2001 From: Rafael Cintra Date: Fri, 9 Oct 2015 10:55:02 +1000 Subject: [PATCH 11/46] Added partial support to attribute type 128 (ATTR_SET). Partial support means that the files containing records with this attribute will not abort the file parsing, however this attribute will not be added to the record's list of attributes since it would require additional and painful refactorings - attributes are saved in a Vector that uses the type as index. The version was updated to 0.0.2-SNAPSHOT. --- pom.xml | 2 +- src/main/java/org/javamrt/mrt/Attributes.java | 6 ++++++ src/main/java/org/javamrt/mrt/MRTConstants.java | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2b18bc0..9ef01ae 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ net.apnic.mrt mrt - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT jar Java MRT File Dumper diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 73b431e..803c510 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -239,6 +239,12 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) this.hasASPATHLimit = true; break; + case MRTConstants.ATTR_SET: + // unsupported attribute. ignoring + if (Debug.compileDebug) + Debug.println("ATTR_SET"); + break; + default: throw new AttributeException(type); } diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 5c0cab4..bc8d608 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -55,6 +55,7 @@ public static String asPathString(int type) { public static final byte EXT_COMMUNITIES = 16; public static final byte AS4_PATH = 17; public static final byte AS4_AGGREGATOR = 18; + public static final int ATTR_SET = 128; public static final int ATTRIBUTE_AS_PATH = 0; public static final int ATTRIBUTE_ORIGIN = 1; From 0ec954e4a0bb29a2a80006e32da23fe4ba8fe9eb Mon Sep 17 00:00:00 2001 From: Tom Harrison Date: Tue, 3 Jan 2017 16:39:46 +1000 Subject: [PATCH 12/46] [master] .gitignore --- .gitignore | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 7efe8e8..88c338b 100755 --- a/.gitignore +++ b/.gitignore @@ -28,8 +28,4 @@ atlassian-ide-plugin.xml .settings .DS_Store - - - - - +*.swp From 38adab601c24871e61de3c59caa1f63a1b019d14 Mon Sep 17 00:00:00 2001 From: Tom Harrison Date: Tue, 3 Jan 2017 17:10:44 +1000 Subject: [PATCH 13/46] [feature/SCRUM-3461] ignore large_community --- pom.xml | 10 +++++- src/main/java/org/javamrt/mrt/Attributes.java | 8 +++++ .../java/org/javamrt/mrt/MRTConstants.java | 1 + .../java/org/javamrt/mrt/RipeRISDumpTest.java | 31 ++++++++++++++++++ src/test/resources/updates.20170103.0630 | Bin 0 -> 1165267 bytes 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/javamrt/mrt/RipeRISDumpTest.java create mode 100644 src/test/resources/updates.20170103.0630 diff --git a/pom.xml b/pom.xml index 9ef01ae..7344376 100755 --- a/pom.xml +++ b/pom.xml @@ -35,9 +35,17 @@ UTF-8 UTF-8 1.7 + 1.7 + 1.7 + + org.testng + testng + 6.8.1 + test + @@ -55,4 +63,4 @@ - \ No newline at end of file + diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 803c510..b5b6ac3 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -245,6 +245,14 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) Debug.println("ATTR_SET"); break; + case MRTConstants.LARGE_COMMUNITY: + // Unsupported attribute, ignoring. + // See draft-ietf-idr-large-community. + if (Debug.compileDebug) { + Debug.println("LARGE_COMMUNITY"); + } + break; + default: throw new AttributeException(type); } diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index bc8d608..b1b8481 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -55,6 +55,7 @@ public static String asPathString(int type) { public static final byte EXT_COMMUNITIES = 16; public static final byte AS4_PATH = 17; public static final byte AS4_AGGREGATOR = 18; + public static final byte LARGE_COMMUNITY = 32; public static final int ATTR_SET = 128; public static final int ATTRIBUTE_AS_PATH = 0; diff --git a/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java b/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java new file mode 100644 index 0000000..4991213 --- /dev/null +++ b/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java @@ -0,0 +1,31 @@ +package org.javamrt.mrt; + +import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.assertNull; + +import java.io.*; + +public class RipeRISDumpTest { + @Test + public void testParseDump() + { + Exception exception = null; + try (InputStream input = + getClass().getResourceAsStream("/updates.20170103.0630")) { + BGPFileReader bgpFileReader = + new BGPFileReader(new BufferedInputStream(input)); + MRTRecord mrtRecord = null; + while (true) { + mrtRecord = bgpFileReader.readNext(); + if (mrtRecord == null) { + break; + } + } + } catch (Exception e) { + exception = e; + } + assertNull(exception); + } +} diff --git a/src/test/resources/updates.20170103.0630 b/src/test/resources/updates.20170103.0630 new file mode 100644 index 0000000000000000000000000000000000000000..606c906463ac3a31953b1f8ca97b6b23210b093e GIT binary patch literal 1165267 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ξ5?HP*yzgt!4Ose7~(KzVu=Qq<7GOx~6 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 MFRgXC`5nNv0<1Vq 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

Cj!`gHI(Q)qhqSt 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 Date: Wed, 4 Jan 2017 16:26:28 +1000 Subject: [PATCH 14/46] [feature/SCRUM-3461] check for expected content --- pom.xml | 6 +- src/main/java/org/javamrt/mrt/Attributes.java | 12 ++-- .../java/org/javamrt/mrt/LargeCommunity.java | 42 ++++++++++++++ .../java/org/javamrt/mrt/MRTConstants.java | 3 +- .../org/javamrt/mrt/LargeCommunitiesTest.java | 58 +++++++++++++++++++ .../java/org/javamrt/mrt/RipeRISDumpTest.java | 31 ---------- 6 files changed, 112 insertions(+), 40 deletions(-) create mode 100644 src/main/java/org/javamrt/mrt/LargeCommunity.java create mode 100644 src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java delete mode 100644 src/test/java/org/javamrt/mrt/RipeRISDumpTest.java diff --git a/pom.xml b/pom.xml index 7344376..6bb4de3 100755 --- a/pom.xml +++ b/pom.xml @@ -34,9 +34,9 @@ UTF-8 UTF-8 - 1.7 - 1.7 - 1.7 + 1.8 + 1.8 + 1.8 diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index b5b6ac3..be72cf2 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -246,11 +246,8 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) break; case MRTConstants.LARGE_COMMUNITY: - // Unsupported attribute, ignoring. - // See draft-ietf-idr-large-community. - if (Debug.compileDebug) { - Debug.println("LARGE_COMMUNITY"); - } + Attribute largeCommunity = new LargeCommunity(buffer); + attributes.set(MRTConstants.ATTRIBUTE_LARGE_COMMUNITY, largeCommunity); break; default: @@ -301,6 +298,11 @@ public Community getCommunity() { return Community.empty(); } + public LargeCommunity getLargeCommunity() { + return (LargeCommunity) + attributes.elementAt(MRTConstants.ATTRIBUTE_LARGE_COMMUNITY); + } + public Med getMed() { Med result = (Med) attributes .elementAt(MRTConstants.ATTRIBUTE_MULTI_EXIT); diff --git a/src/main/java/org/javamrt/mrt/LargeCommunity.java b/src/main/java/org/javamrt/mrt/LargeCommunity.java new file mode 100644 index 0000000..8c05696 --- /dev/null +++ b/src/main/java/org/javamrt/mrt/LargeCommunity.java @@ -0,0 +1,42 @@ +// This file is part of java-mrt +// A library to parse MRT files + +// This file is released under LGPL 3.0 +// http://www.gnu.org/licenses/lgpl-3.0-standalone.html + +package org.javamrt.mrt; + +import org.javamrt.utils.RecordAccess; + +public class LargeCommunity implements Attribute { + protected long globalAdministrator; + protected long localData1; + protected long localData2; + + LargeCommunity(byte[] buffer) { + globalAdministrator = RecordAccess.getU32(buffer, 0); + localData1 = RecordAccess.getU32(buffer, 4); + localData2 = RecordAccess.getU32(buffer, 8); + } + + public String toString() { + return String.format("%d:%d:%d", globalAdministrator, + localData1, + localData2); + } + + public boolean equals(Object o) { + if (o == null) + return false; + if (this == o) + return true; + if (o.getClass() == this.getClass()) { + LargeCommunity lo = (LargeCommunity) o; + return (lo.globalAdministrator == this.globalAdministrator + && lo.localData1 == this.localData1 + && lo.localData2 == this.localData1); + } + return false; + } + +} diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index b1b8481..7ad123f 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -78,7 +78,8 @@ public static String asPathString(int type) { public static final int ATTRIBUTE_AS4_AGGREGATOR = 17; public static final int ATTRIBUTE_CONNECTOR = 20; public static final int ATTRIBUTE_ASPATHLIMIT = 21; - public static final int ATTRIBUTE_TOTAL = 22; + public static final int ATTRIBUTE_LARGE_COMMUNITY = 22; + public static final int ATTRIBUTE_TOTAL = 23; public static final int AFI_IPv4 = 1; public static final int AFI_IPv6 = 2; diff --git a/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java new file mode 100644 index 0000000..4d7c3ca --- /dev/null +++ b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java @@ -0,0 +1,58 @@ +package org.javamrt.mrt; + +import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.assertNull; + +import java.io.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class LargeCommunitiesTest { + @Test + public void testParseDump() + { + Exception exception = null; + List largeCommunities = + new ArrayList(); + + try (InputStream input = + getClass().getResourceAsStream("/updates.20170103.0630")) { + BGPFileReader bgpFileReader = + new BGPFileReader(new BufferedInputStream(input)); + while (true) { + MRTRecord mrtRecord = bgpFileReader.readNext(); + if (mrtRecord == null) { + break; + } + if (mrtRecord instanceof Bgp4Update) { + Bgp4Update bgp4update = (Bgp4Update) mrtRecord; + Attributes attributes = bgp4update.getAttributes(); + if (attributes != null) { + LargeCommunity largeCommunity = + attributes.getLargeCommunity(); + if (largeCommunity != null) { + largeCommunities.add(largeCommunity); + } + } + } + } + } catch (Exception e) { + exception = e; + } + assertNull(exception); + + assertEquals(largeCommunities.size(), 4); + + Set strings = + largeCommunities.stream() + .map(LargeCommunity::toString) + .collect(Collectors.toSet()); + assertEquals(strings.size(), 1); + assertEquals(strings.iterator().next(), "200753:200:46524131"); + } +} diff --git a/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java b/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java deleted file mode 100644 index 4991213..0000000 --- a/src/test/java/org/javamrt/mrt/RipeRISDumpTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.javamrt.mrt; - -import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.assertNull; - -import java.io.*; - -public class RipeRISDumpTest { - @Test - public void testParseDump() - { - Exception exception = null; - try (InputStream input = - getClass().getResourceAsStream("/updates.20170103.0630")) { - BGPFileReader bgpFileReader = - new BGPFileReader(new BufferedInputStream(input)); - MRTRecord mrtRecord = null; - while (true) { - mrtRecord = bgpFileReader.readNext(); - if (mrtRecord == null) { - break; - } - } - } catch (Exception e) { - exception = e; - } - assertNull(exception); - } -} From 064715f879cf1c712c482e0fa420aeeabe6fa2cb Mon Sep 17 00:00:00 2001 From: Tom Harrison Date: Wed, 4 Jan 2017 17:05:12 +1000 Subject: [PATCH 15/46] [master] bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6bb4de3..470b1a5 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ net.apnic.mrt mrt - 0.0.2-SNAPSHOT + 0.0.2 jar Java MRT File Dumper From cb5f68d8acaa19e86afef2614a6be377bc6c2e97 Mon Sep 17 00:00:00 2001 From: Tom Harrison Date: Wed, 4 Jan 2017 17:05:49 +1000 Subject: [PATCH 16/46] [master] move to snapshot version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 470b1a5..fb4ae2a 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ net.apnic.mrt mrt - 0.0.2 + 0.0.3-SNAPSHOT jar Java MRT File Dumper From 83b8d93348bfed27881e6999ec2c67843e0042f0 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Wed, 17 May 2017 12:58:04 +0200 Subject: [PATCH 17/46] Do not use "record" in exceptions, as it could be huge in malformed MRT. --- src/org/javamrt/mrt/BGPFileReader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/javamrt/mrt/BGPFileReader.java b/src/org/javamrt/mrt/BGPFileReader.java index 69ddec6..9de9cff 100644 --- a/src/org/javamrt/mrt/BGPFileReader.java +++ b/src/org/javamrt/mrt/BGPFileReader.java @@ -204,7 +204,7 @@ record = null; if (leidos != this.record.length) { this.eof = true; throw new BGPFileReaderException("Truncated file: " + leidos - + " instead of " + this.record.length + " bytes",record); + + " instead of " + this.record.length + " bytes", header); } /* @@ -647,7 +647,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { if (recordFifo.isEmpty()) { if (Debug.compileDebug) if (Debug.doDebug) - throw new BGPFileReaderException("recordFifo empty!", record); + throw new BGPFileReaderException("recordFifo empty!", header); return null; } return recordFifo.remove(); From eaa73d3a82f2fc07efe10d19b56669f13badda04 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Mon, 3 Jul 2017 11:31:11 +0200 Subject: [PATCH 18/46] Keep binary data and add methods to retrieve it after parsing --- .../java/org/javamrt/mrt/Advertisement.java | 12 +- src/main/java/org/javamrt/mrt/Attributes.java | 12 +- .../java/org/javamrt/mrt/BGPFileReader.java | 124 ++++++++++-------- src/main/java/org/javamrt/mrt/Bgp4Update.java | 32 ++--- src/main/java/org/javamrt/mrt/KeepAlive.java | 2 +- src/main/java/org/javamrt/mrt/MRTRecord.java | 40 +++--- .../java/org/javamrt/mrt/Notification.java | 2 +- src/main/java/org/javamrt/mrt/Open.java | 2 +- src/main/java/org/javamrt/mrt/Refresh.java | 4 +- .../java/org/javamrt/mrt/StateChange.java | 12 +- src/main/java/org/javamrt/mrt/TableDump.java | 7 +- .../java/org/javamrt/mrt/TableDumpv2.java | 8 +- src/main/java/org/javamrt/mrt/Withdraw.java | 7 +- src/main/java/org/javamrt/mrt/genericRib.java | 24 ++-- 14 files changed, 155 insertions(+), 133 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/Advertisement.java b/src/main/java/org/javamrt/mrt/Advertisement.java index f73e315..1c12345 100644 --- a/src/main/java/org/javamrt/mrt/Advertisement.java +++ b/src/main/java/org/javamrt/mrt/Advertisement.java @@ -12,13 +12,15 @@ public class Advertisement { public - Advertisement(byte[] header, - InetAddress peerIP, - AS peerAS, - Prefix prefix, - Attributes updateAttr) + Advertisement(byte[] header, + byte[] record, + InetAddress peerIP, + AS peerAS, + Prefix prefix, + Attributes updateAttr) { super(header, + record, peerIP, peerAS, prefix, diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index be72cf2..421b2a2 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -6,25 +6,33 @@ package org.javamrt.mrt; -import java.net.InetAddress; -import java.util.Vector; import org.javamrt.utils.Debug; import org.javamrt.utils.RecordAccess; +import java.net.InetAddress; +import java.util.Arrays; +import java.util.Vector; + public class Attributes { + private final byte[] bytes; + public Attributes(byte[] record, int attrLen, int attrPos, int attrBytes) throws Exception { if (attrBytes != 2 && attrBytes != 4) throw new AttributeException(String.format( "Attributes needs attrBytes 2 or 4 (not %d", attrBytes)); decode(record, attrLen, attrPos, attrBytes); + bytes = Arrays.copyOfRange(record, attrPos, attrPos + attrLen); } public Attributes(byte[] record, int attrLen, int attrPos) throws Exception { decode(record, attrLen, attrPos, 2); + bytes = Arrays.copyOfRange(record, attrPos, attrPos + attrLen); } + public byte[] getBytes() { return bytes; } + private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) throws Exception { byte[] buffer; diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 722239d..58271ec 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -147,7 +147,6 @@ public long mrtRecords() { * @throws Exception */ public MRTRecord readNext() throws Exception { - MRTRecord result = null; while (true) { /* * Consume any records waiting in the queue @@ -208,43 +207,43 @@ record = null; * Record parsing */ switch (type) { - case MRTConstants.TABLE_DUMP: - return parseTableDump(subtype); - - case MRTConstants.TABLE_DUMP_v2: - - switch (subtype) { - case MRTConstants.PEER_INDEX_TABLE: - parsePeerIndexTable(); - break; - case 2: - parseTableDumpv2(MRTConstants.AFI_IPv4); - break; - case 4: - parseTableDumpv2(MRTConstants.AFI_IPv6); - break; - case 6: - parseGenericRib(); + case MRTConstants.TABLE_DUMP: + return parseTableDump(subtype); + + case MRTConstants.TABLE_DUMP_v2: + + switch (subtype) { + case MRTConstants.PEER_INDEX_TABLE: + parsePeerIndexTable(); + break; + case 2: + parseTableDumpv2(MRTConstants.AFI_IPv4); + break; + case 4: + parseTableDumpv2(MRTConstants.AFI_IPv6); + break; + case 6: + parseGenericRib(); + break; + case 3: + case 5: + parseTableDumpv2Multicast(); + break; + default: + throw new BGPFileReaderException( + "Unknown TABLE_DUMP_V2 subtype" + subtype, header); + } break; - case 3: - case 5: - parseTableDumpv2Multicast(); - break; - default: - throw new BGPFileReaderException( - "Unknown TABLE_DUMP_V2 subtype" + subtype, header); - } - break; - case MRTConstants.BGP4MP: - if ((result = parseBgp4mp(subtype)) != null) - return result; - break; + case MRTConstants.BGP4MP: + MRTRecord bgp4mp = parseBgp4mp(subtype); + if ((bgp4mp) != null) { + return bgp4mp; + } + break; - default: - result = new MRTRecord(); - result.setGeneric(header, record); - return result; + default: + return new MRTRecord(header, record); } } } @@ -318,10 +317,14 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { stateOffs += 2; int newState = RecordAccess.getU16(record, stateOffs); - return new StateChange(RecordAccess.getU32(header, 0), InetAddress - .getByAddress(RecordAccess.getBytes(record, addrOffs, - addrSize)), new AS(RecordAccess.getU16(record, 0)), - oldState, newState); + return new StateChange( + RecordAccess.getU32(header, 0), + InetAddress.getByAddress(RecordAccess.getBytes(record, addrOffs, addrSize)), + new AS(RecordAccess.getU16(record, 0)), + oldState, + newState, + header, + record); } @@ -354,10 +357,14 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { stateOffs += 2; int newState = RecordAccess.getU16(record, stateOffs); - return new StateChange(RecordAccess.getU32(header, 0), InetAddress - .getByAddress(RecordAccess.getBytes(record, addrOffs, - addrSize)), new AS(RecordAccess.getU32(record, 0)), - oldState, newState); + return new StateChange( + RecordAccess.getU32(header, 0), + InetAddress.getByAddress(RecordAccess.getBytes(record, addrOffs, addrSize)), + new AS(RecordAccess.getU32(record, 0)), + oldState, + newState, + header, + record); } @@ -365,9 +372,7 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { break; } - MRTRecord result = new MRTRecord(); - result.setGeneric(header, record); - return result; + return new MRTRecord(header, record); } private void parsePeerIndexTable() throws Exception { @@ -503,10 +508,16 @@ private void parseTableDumpv2(int NLRItype) throws Exception { offset += attrLen; - recordFifo.add(new TableDumpv2(1, // int view, - (int) (sequenceNo & 0xffff), nlri, time, peerIP[peerIndex], // InetAddress - // peer, - peerAS[peerIndex], attributes)); + recordFifo.add(new TableDumpv2( + 1, // int view, + (int) (sequenceNo & 0xffff), + nlri, + time, + peerIP[peerIndex], // InetAddr + peerAS[peerIndex], + attributes, + header, + record)); } } @@ -585,7 +596,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { i += wNlri.getOffset(); recordFifo - .add(new Withdraw(header, srcIP, srcAs, wNlri.toPrefix())); + .add(new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix())); } int attrLen = RecordAccess.getU16(record, offset); @@ -616,8 +627,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { if (mpUnreach != null) { for (Nlri mpu : mpUnreach.getNlri()) { - recordFifo.add(new Withdraw(header, srcIP, srcAs, mpu - .toPrefix())); + recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu.toPrefix())); } } @@ -627,7 +637,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { if (mpReach != null) { if (Debug.compileDebug) Debug.printf("Has MP_REACH (%s)\n",mpReach.getNlri()); for (Nlri mpu : mpReach.getNlri()) { - recordFifo.add(new Advertisement(header, srcIP, srcAs, mpu + recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu .toPrefix(), attributes)); } } @@ -650,8 +660,8 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { Nlri aNlri = new Nlri(record, offset, afi); offset += aNlri.getOffset(); - recordFifo.add(new Advertisement(header, srcIP, srcAs, aNlri - .toPrefix(), attributes)); + recordFifo.add(new Advertisement(header, record, srcIP, srcAs, + aNlri.toPrefix(), attributes)); } } if (recordFifo.isEmpty()) { @@ -705,7 +715,7 @@ private MRTRecord parseBgp4Entry(int AFI) throws Exception { neighborAS = aspath.get(0); return new TableDumpv2(view, 1, prefix, rtime, nextHop, neighborAS, - attrs); + attrs, header, record); } private void parseGenericRib() throws BGPFileReaderException{ diff --git a/src/main/java/org/javamrt/mrt/Bgp4Update.java b/src/main/java/org/javamrt/mrt/Bgp4Update.java index de75eb2..1f225ad 100644 --- a/src/main/java/org/javamrt/mrt/Bgp4Update.java +++ b/src/main/java/org/javamrt/mrt/Bgp4Update.java @@ -20,18 +20,18 @@ public class Bgp4Update protected Prefix prefix = null; protected Attributes updateAttr = null; - public Bgp4Update(byte[] header, InetAddress peerIP, AS peerAS, + public Bgp4Update(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, Prefix prefix, Attributes updateAttr) { - super(header); + super(header, record); this.peerIP = peerIP; this.peerAS = peerAS; this.prefix = prefix; this.updateAttr = updateAttr; } - public Bgp4Update(byte[] header, InetAddress peerIP, AS peerAS, + public Bgp4Update(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, Prefix prefix) { - super(header); + super(header, record); this.peerIP = peerIP; this.peerAS = peerAS; this.prefix = prefix; @@ -41,15 +41,18 @@ public Bgp4Update(byte[] header, InetAddress peerIP, AS peerAS, public String toString() { String peerString = MRTConstants.ipAddressString(this.peerIP); - String result = this.updateStr + "|" + this.time + "|" - + // this comes from MRTRecord - this.updateType + "|" + peerString + "|" - + this.peerAS + "|" + this.prefix.toString(); + StringBuilder result = new StringBuilder(this.updateStr).append('|') + .append(getTime()).append('|') + // this comes from MRTRecord + .append(this.updateType).append('|') + .append(peerString).append('|') + .append(this.peerAS).append('|') + .append(this.prefix.toString()); if (this.updateAttr != null) - result += '|' + this.updateAttr.toString(); + result.append('|').append(this.updateAttr.toString()); - return result; + return result.toString(); } /* @@ -108,14 +111,11 @@ public int compareTo(Bgp4Update other) { result = org.javamrt.utils.InetAddressComparator.compara(this.peerIP, other.peerIP); if (result == 0) { - if (this.time < other.time) - result = -1; - else if (this.time > other.time) - result = 1; + result = Long.valueOf(this.getTime()).compareTo(other.getTime()); /* * Ignore sorting by update type * - * else { + * if (result == 0) { if (this.updateType > other.updateType) result = 1; else if (this.updateType < other.updateType) @@ -145,7 +145,7 @@ public int compare(Bgp4Update o1, Bgp4Update o2) { */ public boolean equals(Bgp4Update o) { if (this.updateType == ((Bgp4Update)o).updateType - && this.time == ((Bgp4Update)o).time + && this.getTime() == ((Bgp4Update)o).getTime() && this.peerIP.equals(((Bgp4Update)o).peerIP) && this.prefix.equals(((Bgp4Update)o).prefix)) { // Advertisements => compare Attributes diff --git a/src/main/java/org/javamrt/mrt/KeepAlive.java b/src/main/java/org/javamrt/mrt/KeepAlive.java index deffafb..61de4dc 100644 --- a/src/main/java/org/javamrt/mrt/KeepAlive.java +++ b/src/main/java/org/javamrt/mrt/KeepAlive.java @@ -10,7 +10,7 @@ public class KeepAlive extends MRTRecord { KeepAlive (byte[]header, byte[]record) { - super (header); + super (header, record); } public String toString () diff --git a/src/main/java/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java index 4cba92d..82c9874 100644 --- a/src/main/java/org/javamrt/mrt/MRTRecord.java +++ b/src/main/java/org/javamrt/mrt/MRTRecord.java @@ -6,52 +6,44 @@ package org.javamrt.mrt; -import java.net.InetAddress; - import org.javamrt.utils.RecordAccess; +import java.net.InetAddress; +import java.util.Arrays; -public class MRTRecord { - protected byte[] record; - protected int type; - protected int subtype; - protected long time; - - public MRTRecord() { - } - protected MRTRecord(byte[] header) { - setHeaderData(header); - } +public class MRTRecord { + protected byte[] header; + protected byte[] body; - public void setGeneric(byte[] header, byte[] record) { - setHeaderData(header); - this.record = record; + protected MRTRecord(byte[] header, byte[] body) { + this.header = header; + this.body = body; } - public void setHeaderData(byte[] header) { - this.time = RecordAccess.getU32(header, 0); - this.type = RecordAccess.getU16(header, 4); - this.subtype = RecordAccess.getU16(header, 6); + public byte[] getBytes() { + byte[] result = Arrays.copyOf(header, header.length + body.length); + System.arraycopy(body, 0, result, header.length, body.length); + return result; } public long getTime() { - return this.time; + return RecordAccess.getU32(header, 0); } public int getType() { - return this.type; + return RecordAccess.getU16(header, 4); } public long getSubType() { - return this.subtype; + return RecordAccess.getU16(header, 6); } // will be overriden by derived classes public String toString() { return String - .format("MRT|%d|%d|%d", this.time, this.type, this.subtype); + .format("MRT|%d|%d|%d", getTime(), getType(), getSubType()); } public boolean hasAsPathPrepend() { diff --git a/src/main/java/org/javamrt/mrt/Notification.java b/src/main/java/org/javamrt/mrt/Notification.java index 9fab6ea..065fa5a 100644 --- a/src/main/java/org/javamrt/mrt/Notification.java +++ b/src/main/java/org/javamrt/mrt/Notification.java @@ -11,7 +11,7 @@ public class Notification { public Notification (byte[]header, byte[]record) { - super(header); + super(header, record); } public String toString () diff --git a/src/main/java/org/javamrt/mrt/Open.java b/src/main/java/org/javamrt/mrt/Open.java index 1119cd1..0c9d472 100644 --- a/src/main/java/org/javamrt/mrt/Open.java +++ b/src/main/java/org/javamrt/mrt/Open.java @@ -13,7 +13,7 @@ public class Open { Open (byte[]header, byte[]record) { - super (header); + super (header, record); if (Debug.compileDebug) { Debug.println("Open message"); diff --git a/src/main/java/org/javamrt/mrt/Refresh.java b/src/main/java/org/javamrt/mrt/Refresh.java index 9af488d..6edd23c 100644 --- a/src/main/java/org/javamrt/mrt/Refresh.java +++ b/src/main/java/org/javamrt/mrt/Refresh.java @@ -41,7 +41,7 @@ public class Refresh public Refresh (byte[]header, byte[]record) { - super (header); + super (header, record); this.AFI = RecordAccess.getU16(record,0); this.SAFI = RecordAccess.getU8 (record,2); } @@ -49,7 +49,7 @@ public Refresh (byte[]header, byte[]record) public String toString () { return String.format("BGP4MP|%d|REFRESH|%d|%d", - this.time, + this.getTime(), this.AFI, this.SAFI); } diff --git a/src/main/java/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java index 3a8e646..572ced6 100755 --- a/src/main/java/org/javamrt/mrt/StateChange.java +++ b/src/main/java/org/javamrt/mrt/StateChange.java @@ -12,12 +12,14 @@ public class StateChange { public StateChange( - long time, - InetAddress gatewayIP, - AS gatewayAS, - int old_state, - int new_state) + long time, + InetAddress gatewayIP, + AS gatewayAS, + int old_state, + int new_state, + byte[] header, byte[] record) { + super(header, record); // route_btoa.System_err_println("State Change"); this.time = time; this.gatewayIP = gatewayIP; diff --git a/src/main/java/org/javamrt/mrt/TableDump.java b/src/main/java/org/javamrt/mrt/TableDump.java index a35eeb3..58b557a 100755 --- a/src/main/java/org/javamrt/mrt/TableDump.java +++ b/src/main/java/org/javamrt/mrt/TableDump.java @@ -25,8 +25,11 @@ protected TableDump(int view, long origTime, InetAddress peer, AS peerAs, - Attributes attributes) + Attributes attributes, + byte[] header, + byte[] body) { + super(header, body); if (false) route_btoa.System_err_println(String.format("TableDump(int view =%d\n" + " int sequence = %d\n" + @@ -58,7 +61,7 @@ protected TableDump(int view, TableDump (byte[]cabecera, byte[]record,int subtype) throws Exception { - super(cabecera); + super(cabecera, record); int decodeOffset = 0; int addrSize = (subtype == MRTConstants.AFI_IPv4) ? 4 : 16; diff --git a/src/main/java/org/javamrt/mrt/TableDumpv2.java b/src/main/java/org/javamrt/mrt/TableDumpv2.java index 11c702b..69e7417 100644 --- a/src/main/java/org/javamrt/mrt/TableDumpv2.java +++ b/src/main/java/org/javamrt/mrt/TableDumpv2.java @@ -24,7 +24,9 @@ protected TableDumpv2(int view, long origTime, InetAddress peer, AS peerAs, - Attributes attributes) + Attributes attributes, + byte[] header, + byte[] body) { super(view, sequence, @@ -32,7 +34,9 @@ protected TableDumpv2(int view, origTime, peer, peerAs, - attributes); + attributes, + header, + body); this.type = "TABLE_DUMP2"; } diff --git a/src/main/java/org/javamrt/mrt/Withdraw.java b/src/main/java/org/javamrt/mrt/Withdraw.java index 75267ca..2666d54 100644 --- a/src/main/java/org/javamrt/mrt/Withdraw.java +++ b/src/main/java/org/javamrt/mrt/Withdraw.java @@ -11,11 +11,12 @@ public class Withdraw extends Bgp4Update { public Withdraw(byte[] header, + byte[] record, InetAddress peerIP, - AS peerAS, - Prefix prefix) + AS peerAS, + Prefix prefix) { - super(header, peerIP, peerAS, prefix); + super(header, record, peerIP, peerAS, prefix); this.updateType = 'W'; } diff --git a/src/main/java/org/javamrt/mrt/genericRib.java b/src/main/java/org/javamrt/mrt/genericRib.java index 7b32bab..792aa3b 100755 --- a/src/main/java/org/javamrt/mrt/genericRib.java +++ b/src/main/java/org/javamrt/mrt/genericRib.java @@ -13,27 +13,27 @@ public class genericRib extends MRTRecord { - public genericRib () + public genericRib(byte[] header, byte[] body) { - super (); + super(header, body); /* int offset = 0; - long sequenceNo = RecordAccess.getU32 (this.record, offset); + long sequenceNo = RecordAccess.getU32 (this.body, offset); offset += 4; - int afi = RecordAccess.getU16 (this.record, offset); + int afi = RecordAccess.getU16 (this.body, offset); offset += 2; - int safi = RecordAccess.getU8 (this.record, offset); + int safi = RecordAccess.getU8 (this.body, offset); try { - nlri = new Nlri (this.record, offset, afi); + nlri = new Nlri (this.body, offset, afi); } catch (UnknownHostException e) { route_btoa.printStackTrace(e); } offset += nlri.getOffset (); - int entryCount = RecordAccess.getU16 (this.record, offset); + int entryCount = RecordAccess.getU16 (this.body, offset); / * try { stream=new BufferedInputStream(new FileInputStream("temp.xxx")); @@ -50,15 +50,15 @@ public genericRib () * / for (int i = 0; i < entryCount; i++) { - int peerIndex = RecordAccess.getU16 (this.record, offset); + int peerIndex = RecordAccess.getU16 (this.body, offset); offset += 2; - long time = RecordAccess.getU32 (this.record, offset); + long time = RecordAccess.getU32 (this.body, offset); offset += 4; - int attrLen = RecordAccess.getU16 (this.record, offset); + int attrLen = RecordAccess.getU16 (this.body, offset); offset += 2; GetAttributes bgp4Attributes = - new GetAttributes (record, attrLen, offset); + new GetAttributes (body, attrLen, offset); Vector attributes = bgp4Attributes.getAttributes (); StringBuffer attr = new StringBuffer (); @@ -86,5 +86,5 @@ public String toString () // private final int RIB_IP6_AFI=2; // private Nlri nlri; // private byte[] header; - // private byte[] record; + // private byte[] body; } From 8b1ed208ae3204f6a70f1c55cb9b9600ee1f485a Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 3 Jul 2017 12:56:20 +0200 Subject: [PATCH 19/46] Adding getter for body in MRTRecord --- src/main/java/org/javamrt/mrt/MRTRecord.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java index 82c9874..7b47e8c 100644 --- a/src/main/java/org/javamrt/mrt/MRTRecord.java +++ b/src/main/java/org/javamrt/mrt/MRTRecord.java @@ -27,6 +27,10 @@ public byte[] getBytes() { return result; } + public byte[] getBody(){ + return body; + } + public long getTime() { return RecordAccess.getU32(header, 0); } From 1e25390ada2ac43e9cb4d9d346e78136070a71db Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 3 Jul 2017 13:55:47 +0200 Subject: [PATCH 20/46] Adding getter for header in MRTRecord --- src/main/java/org/javamrt/mrt/MRTRecord.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java index 7b47e8c..40c71b0 100644 --- a/src/main/java/org/javamrt/mrt/MRTRecord.java +++ b/src/main/java/org/javamrt/mrt/MRTRecord.java @@ -31,6 +31,10 @@ public byte[] getBody(){ return body; } + public byte[] getHeader(){ + return header; + } + public long getTime() { return RecordAccess.getU32(header, 0); } From a49836b83e1c88ee0b4ea68cb0eb2f52baa33416 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Tue, 11 Jul 2017 17:38:15 +0200 Subject: [PATCH 21/46] Reverse default AFI (IPv4 by default) --- src/main/java/org/javamrt/mrt/BGPFileReader.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 58271ec..1cab5e4 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -203,6 +203,8 @@ record = null; + " instead of " + this.record.length + " bytes", header); } + if (Debug.compileDebug) + Debug.dump(this.record); /* * Record parsing */ @@ -532,7 +534,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { int iface = RecordAccess.getU16(record, offset); offset += 2; int afi = RecordAccess.getU16(record, offset); offset += 2; // int offset = 2 * asSize + 4; - int addrSize = (afi == MRTConstants.AFI_IPv4) ? 4 : 16; + int addrSize = (afi == MRTConstants.AFI_IPv6) ? 16 : 4; InetAddress srcIP = InetAddress.getByAddress(RecordAccess.getBytes( record, offset, addrSize)); From 9845b9809e107814bdcebdfb812d2e887763b19e Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Tue, 11 Jul 2017 17:39:56 +0200 Subject: [PATCH 22/46] Keep unsupported Bgp4Update Attributes --- src/main/java/org/javamrt/mrt/Attributes.java | 11 ++--- .../java/org/javamrt/mrt/MRTConstants.java | 2 +- .../org/javamrt/mrt/UnsupportedAttribute.java | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/javamrt/mrt/UnsupportedAttribute.java diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 421b2a2..bdb11b9 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -247,19 +247,14 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) this.hasASPATHLimit = true; break; - case MRTConstants.ATTR_SET: - // unsupported attribute. ignoring - if (Debug.compileDebug) - Debug.println("ATTR_SET"); - break; - case MRTConstants.LARGE_COMMUNITY: Attribute largeCommunity = new LargeCommunity(buffer); attributes.set(MRTConstants.ATTRIBUTE_LARGE_COMMUNITY, largeCommunity); break; - default: - throw new AttributeException(type); + default: + attributes.set(type, new UnsupportedAttribute(type, buffer)); + break; } } } diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 7ad123f..a10fe80 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -79,7 +79,7 @@ public static String asPathString(int type) { public static final int ATTRIBUTE_CONNECTOR = 20; public static final int ATTRIBUTE_ASPATHLIMIT = 21; public static final int ATTRIBUTE_LARGE_COMMUNITY = 22; - public static final int ATTRIBUTE_TOTAL = 23; + public static final int ATTRIBUTE_TOTAL = 256; public static final int AFI_IPv4 = 1; public static final int AFI_IPv6 = 2; diff --git a/src/main/java/org/javamrt/mrt/UnsupportedAttribute.java b/src/main/java/org/javamrt/mrt/UnsupportedAttribute.java new file mode 100644 index 0000000..3b7cfc8 --- /dev/null +++ b/src/main/java/org/javamrt/mrt/UnsupportedAttribute.java @@ -0,0 +1,40 @@ +package org.javamrt.mrt; + +import java.util.Arrays; + +public class UnsupportedAttribute implements Attribute { + + private final int type; + private final byte[] buffer; + + public UnsupportedAttribute(int type, byte[] buffer) { + this.type = type; + this.buffer = buffer; + } + + @Override + public String toString() { + return "UnsupportedAttribute{" + + "type=" + type + + ", buffer=" + Arrays.toString(buffer) + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + UnsupportedAttribute that = (UnsupportedAttribute) o; + + if (type != that.type) return false; + return Arrays.equals(buffer, that.buffer); + } + + @Override + public int hashCode() { + int result = type; + result = 31 * result + Arrays.hashCode(buffer); + return result; + } +} From 02a23b6a3b66c61138f81fefb0884391d686368c Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 17 Jul 2017 11:13:12 +0200 Subject: [PATCH 23/46] Adding srcIP and srcAS attributes to Open and Notification objects. Adding bgpId attribute to Open object. Deprecating getPeerIP from StateChange object and adding getPeer as access to gatewayIp attribute --- .../java/org/javamrt/mrt/BGPFileReader.java | 6 ++- src/main/java/org/javamrt/mrt/MRTRecord.java | 8 ---- .../java/org/javamrt/mrt/Notification.java | 31 +++++++++++++-- src/main/java/org/javamrt/mrt/Open.java | 39 ++++++++++++++++--- .../java/org/javamrt/mrt/StateChange.java | 7 ++++ 5 files changed, 73 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 1cab5e4..606c9a6 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -569,10 +569,12 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { return new KeepAlive(header, record); case MRTConstants.BGP4MSG_OPEN: - return new Open(header, record); + int offsetForOpen = offset+5; + long bgpId = RecordAccess.getU32(record, offsetForOpen); + return new Open(header, record, srcIP, srcAs, bgpId); case MRTConstants.BGP4MSG_NOTIFICATION: - return new Notification(header, record); + return new Notification(header, record, srcIP, srcAs); case MRTConstants.BGP4MSG_UPDATE: break; // to continue after case() diff --git a/src/main/java/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java index 40c71b0..82c9874 100644 --- a/src/main/java/org/javamrt/mrt/MRTRecord.java +++ b/src/main/java/org/javamrt/mrt/MRTRecord.java @@ -27,14 +27,6 @@ public byte[] getBytes() { return result; } - public byte[] getBody(){ - return body; - } - - public byte[] getHeader(){ - return header; - } - public long getTime() { return RecordAccess.getU32(header, 0); } diff --git a/src/main/java/org/javamrt/mrt/Notification.java b/src/main/java/org/javamrt/mrt/Notification.java index 065fa5a..9c5aa4b 100644 --- a/src/main/java/org/javamrt/mrt/Notification.java +++ b/src/main/java/org/javamrt/mrt/Notification.java @@ -6,16 +6,41 @@ package org.javamrt.mrt; +import java.net.InetAddress; + public class Notification extends MRTRecord { + protected InetAddress peerIP = null; + protected AS peerAS = new AS(0); + public Notification (byte[]header, byte[]record) { super(header, record); } - public String toString () - { - return "NOTIFICATION"; + public Notification(byte[] header, byte[] record, InetAddress peerIP, AS peerAS) { + super(header, record); + this.peerIP = peerIP; + this.peerAS = peerAS; + } + + public AS getPeerAS() { + return this.peerAS; + } + public InetAddress getPeer() { + return this.peerIP; + } + + public String toString() { + String peerString = MRTConstants.ipAddressString(this.peerIP); + + StringBuilder result = new StringBuilder("NOTIFICATION").append('|') + .append(getTime()).append('|') + // this comes from MRTRecord + .append(peerString).append('|') + .append(this.peerAS); + + return result.toString(); } } diff --git a/src/main/java/org/javamrt/mrt/Open.java b/src/main/java/org/javamrt/mrt/Open.java index 0c9d472..bf081e1 100644 --- a/src/main/java/org/javamrt/mrt/Open.java +++ b/src/main/java/org/javamrt/mrt/Open.java @@ -8,10 +8,23 @@ import org.javamrt.utils.Debug; +import java.net.InetAddress; + public class Open extends MRTRecord { - Open (byte[]header, byte[]record) + protected InetAddress peerIP = null; + protected AS peerAS = new AS(0); + protected long bgpId; + + public Open(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, long bgpId) { + super(header, record); + this.peerIP = peerIP; + this.peerAS = peerAS; + this.bgpId = bgpId; + } + + Open (byte[]header, byte[]record) { super (header, record); @@ -23,8 +36,24 @@ public class Open } - public String toString () - { - return "OPEN"; - } + public AS getPeerAS() { + return this.peerAS; + } + public InetAddress getPeer() { + return this.peerIP; + } + public long getBgpId(){return this.bgpId;} + + public String toString() { + String peerString = MRTConstants.ipAddressString(this.peerIP); + + StringBuilder result = new StringBuilder("OPEN").append('|') + .append(getTime()).append('|') + // this comes from MRTRecord + .append(peerString).append('|') + .append(this.peerAS).append('|') + .append(this.bgpId); + + return result.toString(); + } } diff --git a/src/main/java/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java index 572ced6..6ed3c6b 100755 --- a/src/main/java/org/javamrt/mrt/StateChange.java +++ b/src/main/java/org/javamrt/mrt/StateChange.java @@ -35,6 +35,13 @@ public long getTime() } private InetAddress gatewayIP; + + public InetAddress getPeer() + { + return this.gatewayIP; + } + + @Deprecated public InetAddress getPeerIP() { return this.gatewayIP; From 49990c2ac0a61a0b73a86ca1bf22148822f021e6 Mon Sep 17 00:00:00 2001 From: edominguez Date: Tue, 1 Aug 2017 15:51:07 +0200 Subject: [PATCH 24/46] Parsing mrt records based on rfc1771. New methods in order to make the java-mrt library compatible with old BGP type records. --- .../java/org/javamrt/mrt/Advertisement.java | 9 +- .../java/org/javamrt/mrt/BGPFileReader.java | 189 +++++++++++++++--- src/main/java/org/javamrt/mrt/Bgp4Update.java | 8 +- .../java/org/javamrt/mrt/MRTConstants.java | 8 + .../java/org/javamrt/mrt/StateChange.java | 6 +- src/main/java/org/javamrt/mrt/Withdraw.java | 5 +- 6 files changed, 188 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/Advertisement.java b/src/main/java/org/javamrt/mrt/Advertisement.java index 1c12345..0bd39d9 100644 --- a/src/main/java/org/javamrt/mrt/Advertisement.java +++ b/src/main/java/org/javamrt/mrt/Advertisement.java @@ -17,18 +17,17 @@ public class Advertisement InetAddress peerIP, AS peerAS, Prefix prefix, - Attributes updateAttr) + Attributes updateAttr, + String updateStr) { super(header, record, peerIP, peerAS, prefix, - updateAttr); + updateAttr, + updateStr); this.updateType = 'A'; - // - // this.updateStr = updateStr; - // } @Override diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 606c9a6..1f98b0c 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -244,8 +244,14 @@ record = null; } break; - default: - return new MRTRecord(header, record); + case MRTConstants.BGPDUMP_TYPE_MRTD_BGP: + MRTRecord bgpRecord = parseBgp(subtype); + if ((bgpRecord) != null) { + return bgpRecord; + } + break; + default: + return new MRTRecord(header, record); } } } @@ -275,6 +281,112 @@ private MRTRecord parseTableDump(int subtype) throws Exception { } + private MRTRecord parseBgp(int subtype) throws Exception { + //Based on https://tools.ietf.org/html/rfc1771 + switch (subtype){ + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: + return getBgpUpdate(); + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE: + return new KeepAlive(header, record); + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE: + int offset = 0; + int asSize = 2; + int addrSize = 4; + + AS srcAs = new AS(RecordAccess.getUINT(record, offset, asSize)); + offset = asSize; + + InetAddress srcIP = InetAddress.getByAddress(RecordAccess.getBytes(record, offset, addrSize)); + offset += addrSize; + + int oldState = RecordAccess.getU16(record, offset); + offset += 2; + int newState = RecordAccess.getU16(record, offset); + + return new StateChange( + RecordAccess.getU32(header, 0), + srcIP, + srcAs, + oldState, + newState, + MRTConstants.UPDATE_STR_BGP, + header, + record); + default: + return new MRTRecord(header, record); + } + } + + private MRTRecord getBgpUpdate() throws Exception{ + int offset = 0; + int asSize = 2; + int addrSize = 4; + + AS srcAs = new AS(RecordAccess.getUINT(record, offset, asSize)); + offset = asSize; + + InetAddress srcIP = InetAddress.getByAddress(RecordAccess.getBytes(record, offset, addrSize)); + offset += addrSize; + + AS dstAs = new AS(RecordAccess.getUINT(record, offset, asSize)); + offset +=asSize; + + InetAddress dstIP = InetAddress.getByAddress(RecordAccess.getBytes(record, offset, addrSize)); + offset += addrSize; + + long wSize = RecordAccess.getUINT(record, offset, 2); + offset += 2; + + // WITHDRAWS + if(wSize > 0) { // Withdraw if the size > than 0. + for (int i = 0; i < wSize;) { + Nlri wNlri = new Nlri(record, offset, 1); + offset += wNlri.getOffset(); + i += wNlri.getOffset(); + + Withdraw withdraw = new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix(),MRTConstants.UPDATE_STR_BGP); + recordFifo.add(withdraw); + } + }else{ // Advertisments + + //Reading length of attributes + int attrLen = RecordAccess.getU16(record, offset); + offset +=2; + + if(attrLen > 0){ + + Attributes attributes = null; + try { + attributes = new Attributes(record, attrLen, offset,asSize); + } catch (RFC4893Exception rfce) { + // + // piggyback peer and time info + // + rfce.setTimestamp(this.time); + rfce.setPeer(srcIP); + rfce.setAS(srcAs); + throw rfce; + } catch (Exception e) { + throw e; + } + + //Process MP_REACH and MP_UNREACH + processReachAndUnreach(attributes, srcIP, srcAs, MRTConstants.UPDATE_STR_BGP); + + offset += attrLen; + while (offset < record.length) { + Nlri aNlri = new Nlri(record, offset, 1); + offset += aNlri.getOffset(); + + recordFifo.add(new Advertisement(header, record, srcIP, srcAs, + aNlri.toPrefix(), attributes, MRTConstants.UPDATE_STR_BGP)); + } + } + } + + return recordFifo.remove(); + } + private MRTRecord parseBgp4mp(int subtype) throws Exception { // route_btoa.System_err_println("parseBgp4mp("+MRTConstants.mpSubType(subtype)+")"); switch (subtype) { @@ -325,6 +437,7 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { new AS(RecordAccess.getU16(record, 0)), oldState, newState, + MRTConstants.UPDATE_STR_BGP4MP, header, record); @@ -365,6 +478,7 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { new AS(RecordAccess.getU32(record, 0)), oldState, newState, + MRTConstants.UPDATE_STR_BGP4MP, header, record); @@ -523,6 +637,28 @@ private void parseTableDumpv2(int NLRItype) throws Exception { } } + //Process MP_REACH and MP_UNREACH + private void processReachAndUnreach(Attributes attributes, InetAddress srcIP, AS srcAs, String updateStrType) throws Exception{ + MpUnReach mpUnreach = (MpUnReach) attributes.getAttribute(MRTConstants.ATTRIBUTE_MP_UNREACH); + + if (mpUnreach != null) { + for (Nlri mpu : mpUnreach.getNlri()) { + recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu.toPrefix(), updateStrType)); + } + } + + MpReach mpReach = (MpReach) attributes.getAttribute(MRTConstants.ATTRIBUTE_MP_REACH); + + if (mpReach != null) { + if (Debug.compileDebug) Debug.printf("Has MP_REACH (%s)\n",mpReach.getNlri()); + for (Nlri mpu : mpReach.getNlri()) { + recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu + .toPrefix(), attributes, updateStrType)); + } + } + + } + private MRTRecord parseBgp4Update(int asSize) throws Exception { // Bgp4Update update; @@ -600,7 +736,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { i += wNlri.getOffset(); recordFifo - .add(new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix())); + .add(new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix(),MRTConstants.UPDATE_STR_BGP4MP)); } int attrLen = RecordAccess.getU16(record, offset); @@ -622,29 +758,30 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { } catch (Exception e) { throw e; } - // - // Process MP_REACH and MP_UNREACH - // - - MpUnReach mpUnreach = (MpUnReach) attributes - .getAttribute(MRTConstants.ATTRIBUTE_MP_UNREACH); - - if (mpUnreach != null) { - for (Nlri mpu : mpUnreach.getNlri()) { - recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu.toPrefix())); - } - } - MpReach mpReach = (MpReach) attributes - .getAttribute(MRTConstants.ATTRIBUTE_MP_REACH); - - if (mpReach != null) { - if (Debug.compileDebug) Debug.printf("Has MP_REACH (%s)\n",mpReach.getNlri()); - for (Nlri mpu : mpReach.getNlri()) { - recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu - .toPrefix(), attributes)); - } - } + // Process MP_REACH and MP_UNREACH + processReachAndUnreach(attributes, srcIP, srcAs, MRTConstants.UPDATE_STR_BGP4MP); + + +// MpUnReach mpUnreach = (MpUnReach) attributes +// .getAttribute(MRTConstants.ATTRIBUTE_MP_UNREACH); +// +// if (mpUnreach != null) { +// for (Nlri mpu : mpUnreach.getNlri()) { +// recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu.toPrefix(), MRTConstants.UPDATE_STR_BGP4MP)); +// } +// } +// +// MpReach mpReach = (MpReach) attributes +// .getAttribute(MRTConstants.ATTRIBUTE_MP_REACH); +// +// if (mpReach != null) { +// if (Debug.compileDebug) Debug.printf("Has MP_REACH (%s)\n",mpReach.getNlri()); +// for (Nlri mpu : mpReach.getNlri()) { +// recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu +// .toPrefix(), attributes, MRTConstants.UPDATE_STR_BGP4MP)); +// } +// } /* * if (mpReach != null || mpUnreach != null) @@ -665,7 +802,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { offset += aNlri.getOffset(); recordFifo.add(new Advertisement(header, record, srcIP, srcAs, - aNlri.toPrefix(), attributes)); + aNlri.toPrefix(), attributes, MRTConstants.UPDATE_STR_BGP4MP)); } } if (recordFifo.isEmpty()) { diff --git a/src/main/java/org/javamrt/mrt/Bgp4Update.java b/src/main/java/org/javamrt/mrt/Bgp4Update.java index 1f225ad..8a4e50a 100644 --- a/src/main/java/org/javamrt/mrt/Bgp4Update.java +++ b/src/main/java/org/javamrt/mrt/Bgp4Update.java @@ -14,28 +14,30 @@ public class Bgp4Update implements Comparable, Comparator { protected char updateType = '?'; - protected String updateStr = "BGP4MP"; + protected String updateStr = ""; protected InetAddress peerIP = null; protected AS peerAS = new AS(0); protected Prefix prefix = null; protected Attributes updateAttr = null; public Bgp4Update(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, - Prefix prefix, Attributes updateAttr) { + Prefix prefix, Attributes updateAttr, String updateStr) { super(header, record); this.peerIP = peerIP; this.peerAS = peerAS; this.prefix = prefix; this.updateAttr = updateAttr; + this.updateStr = updateStr; } public Bgp4Update(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, - Prefix prefix) { + Prefix prefix, String updateStr) { super(header, record); this.peerIP = peerIP; this.peerAS = peerAS; this.prefix = prefix; this.updateAttr = null; + this.updateStr = updateStr; } public String toString() { diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index a10fe80..b1c6c89 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -114,6 +114,14 @@ public static String asPathString(int type) { public static final int BGP4MSG_KEEPALIVE = 4; public static final int BGP4MSG_REFRESH = 5; + public static final int BGPDUMP_TYPE_MRTD_BGP = 5; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE= 1; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE = 3; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE = 7; + + public static final String UPDATE_STR_BGP4MP = "BGP4MP"; + public static final String UPDATE_STR_BGP = "BGP"; + public static final String mpSubType(int s) { switch (s) { case BGP4MP_STATE_CHANGE: diff --git a/src/main/java/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java index 6ed3c6b..7f5caa5 100755 --- a/src/main/java/org/javamrt/mrt/StateChange.java +++ b/src/main/java/org/javamrt/mrt/StateChange.java @@ -17,6 +17,7 @@ public StateChange( AS gatewayAS, int old_state, int new_state, + String updateStr, byte[] header, byte[] record) { super(header, record); @@ -26,6 +27,7 @@ public StateChange( this.gatewayAS = gatewayAS; this.old_state = old_state; this.new_state = new_state; + this.updateStr = updateStr; } private long time; @@ -65,10 +67,12 @@ public int getNewState() return this.new_state; } + private String updateStr = ""; public String toString() { - return String.format("BGP4MP|%d|STATE|%s|%s|%d|%d", + return String.format("%s|%d|STATE|%s|%s|%d|%d", + this.updateStr, this.time, this.gatewayIP.getHostAddress(), this.gatewayAS.toString(), diff --git a/src/main/java/org/javamrt/mrt/Withdraw.java b/src/main/java/org/javamrt/mrt/Withdraw.java index 2666d54..2a62f27 100644 --- a/src/main/java/org/javamrt/mrt/Withdraw.java +++ b/src/main/java/org/javamrt/mrt/Withdraw.java @@ -14,9 +14,10 @@ public Withdraw(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, - Prefix prefix) + Prefix prefix, + String updateStr) { - super(header, record, peerIP, peerAS, prefix); + super(header, record, peerIP, peerAS, prefix, updateStr); this.updateType = 'W'; } From 302285edef40904552cbf0a223db44fcf10dbbf8 Mon Sep 17 00:00:00 2001 From: edominguez Date: Fri, 16 Feb 2018 09:36:01 +0100 Subject: [PATCH 25/46] When announcements and withdraws are defined in this bgp message position, they are going to be always Ipv4, so setting AFI to 1 in these cases. Ipv6 will be defined in Attributes. --- src/main/java/org/javamrt/mrt/BGPFileReader.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 1f98b0c..1a01236 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -730,8 +730,10 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { offset += 2; if (Debug.compileDebug) Debug.printf("int unfeasibleLen = %d\n",unfeasibleLen); + for (int i = 0; i < unfeasibleLen;) { - Nlri wNlri = new Nlri(record, offset, afi); + //The withdraws out of the Attributs are going to be always ipv4 + Nlri wNlri = new Nlri(record, offset, 1); offset += wNlri.getOffset(); i += wNlri.getOffset(); @@ -798,7 +800,8 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { if (Debug.compileDebug) Debug.debug("offset(%d) record.length (%d)\n",offset,record.length); while (offset < record.length) { - Nlri aNlri = new Nlri(record, offset, afi); + //The announcements out of the Attributs are going to be always ipv4 + Nlri aNlri = new Nlri(record, offset, 1); offset += aNlri.getOffset(); recordFifo.add(new Advertisement(header, record, srcIP, srcAs, From eec9892174e80432aaf58c56aa61ac106f4309e3 Mon Sep 17 00:00:00 2001 From: edominguez Date: Fri, 16 Feb 2018 14:50:11 +0100 Subject: [PATCH 26/46] GIIDEV-209 Fixing 4-byte ASNs in the path are treated as signed integer --- src/main/java/org/javamrt/mrt/AS.java | 9 +++++++-- src/main/java/org/javamrt/mrt/ASPath.java | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index e0d222b..91a7e01 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -139,8 +139,13 @@ public boolean isPlaceholder() { public String toString() { if (this.equals(0)) return "AS_NULL"; if (this.equals(AS_TRANS)) return "AS_TRANS"; - if (this.is4Byte()) return String.format("%d",(hiWord()<<16) + loWord()); - return String.format("%d", loWord()); + + if (this.is4Byte()) return String.format("%d",unsignedToLong((hiWord()<<16) + loWord())); + return String.format("%d", unsignedToLong(loWord())); + } + + public static long unsignedToLong(int address) { + return address & 0xffffffffL; } private int hiWord() { diff --git a/src/main/java/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java index 727e9e2..0226c16 100755 --- a/src/main/java/org/javamrt/mrt/ASPath.java +++ b/src/main/java/org/javamrt/mrt/ASPath.java @@ -30,9 +30,9 @@ public class ASPath implements Attribute { this.prependers = null; } - ASPath(byte[] buffer) throws Exception { - decode(buffer, 2); - } +// ASPath(byte[] buffer) throws Exception { +// decode(buffer, 2); +// } ASPath(byte[] buffer, int asSize) throws Exception { decode(buffer, asSize); From 729aab1230583b1498bf9e5d41489c5f45b61646 Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 19 Feb 2018 16:38:07 +0100 Subject: [PATCH 27/46] Doing a "hack" in order to show Ipv6 format in Ipv4 embedded prefixes. It has been added a flag isInIpv4EmbeddedIpv6Format --- pom.xml | 4 +- src/main/java/org/javamrt/mrt/AS.java | 3 +- src/main/java/org/javamrt/mrt/Attributes.java | 10 ++- .../java/org/javamrt/mrt/MRTConstants.java | 10 ++- src/main/java/org/javamrt/mrt/MpReach.java | 21 +++++- .../java/org/javamrt/mrt/StateChange.java | 7 +- .../org/javamrt/mrt/LargeCommunitiesTest.java | 4 +- src/test/java/org/javamrt/mrt/MrtTest.java | 69 ++++++++++++++++++ .../resources/rrc20.updates.20180205.1030.gz | Bin 0 -> 566192 bytes 9 files changed, 111 insertions(+), 17 deletions(-) create mode 100644 src/test/java/org/javamrt/mrt/MrtTest.java create mode 100644 src/test/resources/rrc20.updates.20180205.1030.gz diff --git a/pom.xml b/pom.xml index fb4ae2a..f12e1e4 100755 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ scm:git:git@github.com:APNIC-net/java-mrt.git scm:git:git@github.com:APNIC-net/java-mrt.git - + nexus-staging @@ -30,7 +30,7 @@ http://nexus.apnic.net:8081/nexus/content/repositories/snapshots - + UTF-8 UTF-8 diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index 91a7e01..c343299 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -140,7 +140,8 @@ public String toString() { if (this.equals(0)) return "AS_NULL"; if (this.equals(AS_TRANS)) return "AS_TRANS"; - if (this.is4Byte()) return String.format("%d",unsignedToLong((hiWord()<<16) + loWord())); + if (this.is4Byte()) + return String.format("%d",unsignedToLong((hiWord()<<16) + loWord())); return String.format("%d", unsignedToLong(loWord())); } diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index bdb11b9..6d53ed1 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -275,9 +275,15 @@ public String toString() { toStr = new String(); for (int i = MRTConstants.ATTRIBUTE_AS_PATH; i <= MRTConstants.ATTRIBUTE_AGGREGATOR; i++) { - if (attributes.elementAt(i) != null) + if (attributes.elementAt(i) != null) { + if (i == MRTConstants.ATTRIBUTE_NEXT_HOP) { + if (attributes.elementAt(MRTConstants.ATTRIBUTE_MP_REACH) != null) { + toStr = toStr.concat(attributes.elementAt(MRTConstants.ATTRIBUTE_MP_REACH).toString()).concat("|"); + continue; + } + } toStr = toStr.concat(attributes.elementAt(i).toString()); - else { + } else { if (i == MRTConstants.ATTRIBUTE_LOCAL_PREF || i == MRTConstants.ATTRIBUTE_MULTI_EXIT) toStr = toStr.concat("0"); diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index b1c6c89..c963b7f 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -6,6 +6,8 @@ package org.javamrt.mrt; +import org.apache.commons.lang3.StringUtils; + import java.net.InetAddress; import java.text.SimpleDateFormat; @@ -181,9 +183,9 @@ public static final String bgpType(int bgpType) { protected static final String ipAddressString(InetAddress ia) { return ia.getHostAddress(). - // replaceFirst("^[^/]*/", ""). - replaceFirst(":0(:0)+","::"). - replaceFirst("^0:",""). - replaceFirst(":::", "::"); + // replaceFirst("^[^/]*/", ""). + replaceFirst(":0(:0)+", "::"). + replaceFirst("^0:", ""). + replaceFirst(":::", "::"); } } diff --git a/src/main/java/org/javamrt/mrt/MpReach.java b/src/main/java/org/javamrt/mrt/MpReach.java index 066eb90..0a2c4a1 100644 --- a/src/main/java/org/javamrt/mrt/MpReach.java +++ b/src/main/java/org/javamrt/mrt/MpReach.java @@ -6,6 +6,7 @@ package org.javamrt.mrt; +import java.net.Inet4Address; import java.net.InetAddress; import java.util.Vector; @@ -20,6 +21,7 @@ public class MpReach implements Attribute { private int afi; private int safi; private InetAddress nextHop; + private boolean isInIpv4EmbeddedIpv6Format = false; private Vector nlriVector; // private int snpaNo; @@ -77,7 +79,13 @@ public class MpReach implements Attribute { } byte[] abuf = RecordAccess.getBytes(buffer,offset, nhl); + nextHop = InetAddress.getByAddress(abuf); + + if(nextHop instanceof Inet4Address && afi == 2){ + isInIpv4EmbeddedIpv6Format = true; + } + offset += nextHopLen; /** @@ -145,9 +153,16 @@ public InetAddress getNextHop() { * public Vector < InetAddress > getSNPA () { return snpaVector; } */ public String toString() { - String result = "NEXT HOP: " + nextHop.getHostAddress(); - for (Nlri nlri : nlriVector) - result += "\n NRLI:" + nlri.toString(); + String result = ""; + String nextHopString = MRTConstants.ipAddressString(nextHop); + if(isInIpv4EmbeddedIpv6Format){ + result = "::ffff:"+nextHopString; + } else { + result = nextHopString; + } +// String result = "NEXT HOP: " + nextHop.getHostAddress(); +// for (Nlri nlri : nlriVector) +// result += "\n NLRI:" + nlri.toString(); return result; } } diff --git a/src/main/java/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java index 7f5caa5..4c4de10 100755 --- a/src/main/java/org/javamrt/mrt/StateChange.java +++ b/src/main/java/org/javamrt/mrt/StateChange.java @@ -71,13 +71,12 @@ public int getNewState() public String toString() { - return String.format("%s|%d|STATE|%s|%s|%d|%d", + return String.format("%s|%d|STATE|%s|%s|%d|%d", this.updateStr, this.time, - this.gatewayIP.getHostAddress(), + MRTConstants.ipAddressString(gatewayIP), this.gatewayAS.toString(), this.old_state, - this.new_state).replaceAll("(:0)+:0{0,1}","::"); - + this.new_state); } } diff --git a/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java index 4d7c3ca..29c7d54 100644 --- a/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java +++ b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java @@ -1,6 +1,8 @@ package org.javamrt.mrt; -import org.testng.annotations.Test; + +import org.junit.Test; + import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertNull; diff --git a/src/test/java/org/javamrt/mrt/MrtTest.java b/src/test/java/org/javamrt/mrt/MrtTest.java new file mode 100644 index 0000000..b0c81bd --- /dev/null +++ b/src/test/java/org/javamrt/mrt/MrtTest.java @@ -0,0 +1,69 @@ +package org.javamrt.mrt; + + +import org.junit.Test; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.List; + +import static org.testng.Assert.assertEquals; + +public class MrtTest { + + @Test + public void testParseUnsignedAsn() + { + try { + String asPath = "[37989, 4844, 7473, 6461, 209, 4200000013]"; + byte[] asnBuffer = new byte[]{2, 6, 0, 0, -108, 101, 0, 0, 18, -20, 0, 0, 29, 49, 0, 0, 25, 61, 0, 0, 0, -47, -6, 86, -22, 13}; + + int asSize = 4; + int offset = 0; + + ASPathSegment asPathSegment = new ASPathSegment(asnBuffer, offset, asSize); + assertEquals(asPath, asPathSegment.toString()); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + public void testMrtIpv6peerIpv4Prefix(){ + List result = new ArrayList<>(11); + byte[] header = new byte[] {90, 123, 73, 112, 0, 16, 0, 4, 0, 0, 0, -108}; + byte[] body = new byte[] {0, 0, 99, 91, 0, 0, 49, 110, 0, 0, 0, 2, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 104, 2, 0, 0, 0, 37, 64, 1, 1, 0, 80, 2, 0, 22, 2, 5, 0, 0, 99, 91, 0, 0, 27, 27, 0, 0, 18, -38, 0, 0, -105, -109, 0, 0, -37, -117, 64, 3, 4, 62, 121, -64, 1, 22, 1, 0, 4, 22, 103, 29, 76, 24, 103, 2, -77, 24, 103, 2, -78, 24, 103, 2, -79, 24, 103, 2, -80, 22, 103, 2, -80, 24, 1, 0, 7, 24, 1, 0, 6, 24, 1, 0, 5, 24, 1, 0, 4}; + + byte[] mrt = new byte[] {90, 123, 73, 112, 0, 16, 0, 4, 0, 0, 0, -108,0, 0, 99, 91, 0, 0, 49, 110, 0, 0, 0, 2, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 104, 2, 0, 0, 0, 37, 64, 1, 1, 0, 80, 2, 0, 22, 2, 5, 0, 0, 99, 91, 0, 0, 27, 27, 0, 0, 18, -38, 0, 0, -105, -109, 0, 0, -37, -117, 64, 3, 4, 62, 121, -64, 1, 22, 1, 0, 4, 22, 103, 29, 76, 24, 103, 2, -77, 24, 103, 2, -78, 24, 103, 2, -79, 24, 103, 2, -80, 22, 103, 2, -80, 24, 1, 0, 7, 24, 1, 0, 6, 24, 1, 0, 5, 24, 1, 0, 4}; + String[] resultStr = new String[] {"BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.4.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.29.76.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.179.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.178.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.177.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.176.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.176.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.7.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.6.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.5.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.4.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||"}; + + try (BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(mrt))) { + BGPFileReader reader = new BGPFileReader(in); + +// MRTRecord next = reader.readNext(); + while (!reader.eof()) { + MRTRecord next = reader.readNext(); + if (next != null) { + result.add(next.toString()); + } + } + assertEquals(result.toArray(), resultStr); + + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/src/test/resources/rrc20.updates.20180205.1030.gz b/src/test/resources/rrc20.updates.20180205.1030.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d33d92e28b86148b0ed471fb5e85b835d3d728c GIT binary patch literal 566192 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

Ju4rLMA1WZcUvYD$pQwP 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ð%E_G9&aXmDLQJ~EyIiwyM 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 LUEh5!o!FlUde6iTryJ$UWA0-!oZfFsJ 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 olY@?%xC-cKO$OZi)?{= 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

1a1C65YOQizreVU{Rui66r2Bcy(0 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 w-V<7WVq%p)hT*#IAK8)B(Wb?QW&_rvTdBqH9b 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 Z5b*55D_1W9<>aQr{{sZ%@PxzuIsn7d4;=si literal 0 HcmV?d00001 From a8e85d56f51620ff48a179a386271f7f13d96828 Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 19 Feb 2018 16:42:09 +0100 Subject: [PATCH 28/46] Cleaning up unused import --- src/main/java/org/javamrt/mrt/MRTConstants.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index c963b7f..f643724 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -6,8 +6,6 @@ package org.javamrt.mrt; -import org.apache.commons.lang3.StringUtils; - import java.net.InetAddress; import java.text.SimpleDateFormat; From 5245ba5b0e5e26a2b94a65fd8c23c1b353f61036 Mon Sep 17 00:00:00 2001 From: edominguez Date: Mon, 19 Feb 2018 16:54:24 +0100 Subject: [PATCH 29/46] Changing testing --- src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java | 2 +- src/test/java/org/javamrt/mrt/MrtTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java index 29c7d54..2f6f56d 100644 --- a/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java +++ b/src/test/java/org/javamrt/mrt/LargeCommunitiesTest.java @@ -1,7 +1,7 @@ package org.javamrt.mrt; -import org.junit.Test; +import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; diff --git a/src/test/java/org/javamrt/mrt/MrtTest.java b/src/test/java/org/javamrt/mrt/MrtTest.java index b0c81bd..2ab13b8 100644 --- a/src/test/java/org/javamrt/mrt/MrtTest.java +++ b/src/test/java/org/javamrt/mrt/MrtTest.java @@ -1,7 +1,7 @@ package org.javamrt.mrt; -import org.junit.Test; +import org.testng.annotations.Test; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; From c81080862b5451332a72d28903fc643a408b7f9b Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Tue, 20 Feb 2018 10:59:25 +0100 Subject: [PATCH 30/46] Copy arrays using System.arraycopy() --- src/main/java/org/javamrt/mrt/Prefix.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/Prefix.java b/src/main/java/org/javamrt/mrt/Prefix.java index e6078d9..dc57abb 100644 --- a/src/main/java/org/javamrt/mrt/Prefix.java +++ b/src/main/java/org/javamrt/mrt/Prefix.java @@ -123,8 +123,7 @@ public int getMaskLength() { public void setMaskLength(int maskLength) throws PrefixMaskException, UnknownHostException { byte[] temp= new byte[this.base.length]; - for (int i=0;i Date: Wed, 21 Feb 2018 08:55:30 +1000 Subject: [PATCH 31/46] [master] add .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..dff5f3a --- /dev/null +++ b/.travis.yml @@ -0,0 +1 @@ +language: java From 2d978ec201a5e6c67f3463ab9a31ed2c8a5a052b Mon Sep 17 00:00:00 2001 From: edominguez Date: Wed, 21 Feb 2018 09:15:03 +0100 Subject: [PATCH 32/46] Adding getter for the embedded ipv4-ipv6 --- src/main/java/org/javamrt/mrt/MpReach.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/javamrt/mrt/MpReach.java b/src/main/java/org/javamrt/mrt/MpReach.java index 0a2c4a1..d03185c 100644 --- a/src/main/java/org/javamrt/mrt/MpReach.java +++ b/src/main/java/org/javamrt/mrt/MpReach.java @@ -141,6 +141,10 @@ public class MpReach implements Attribute { } + public boolean getIsInIpv4EmbeddedIpv6Format(){ + return isInIpv4EmbeddedIpv6Format; + } + public Vector getNlri() { return nlriVector; } From 4debb6fb8315b9b0f9897c7878bb917e10f0bdd2 Mon Sep 17 00:00:00 2001 From: edominguez Date: Wed, 21 Feb 2018 15:20:56 +0100 Subject: [PATCH 33/46] Fast fix for wrong ipv6 parse --- src/main/java/org/javamrt/mrt/MRTConstants.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index f643724..33caecd 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -178,12 +178,17 @@ public static final String bgpType(int bgpType) { * * for all addresses, removes initial name */ - protected static final String ipAddressString(InetAddress ia) + public static final String ipAddressString(InetAddress ia) { - return ia.getHostAddress(). - // replaceFirst("^[^/]*/", ""). - replaceFirst(":0(:0)+", "::"). - replaceFirst("^0:", ""). - replaceFirst(":::", "::"); + String ip = ia.getHostAddress(). + // replaceFirst("^[^/]*/", ""). + replaceFirst(":0(:0)+", "::"). + replaceFirst("^0:", ""). + replaceFirst(":::", "::"); + + if(ip.equals(":")) + ip = "::"; + + return ip; } } From 099d38e3593cd24e7dec9ee73246e46cb4e5fbe1 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Wed, 21 Feb 2018 15:50:39 +0100 Subject: [PATCH 34/46] Fix more 32-bit ASN / unsigned lengths issues. --- src/main/java/org/javamrt/mrt/AS.java | 99 ++++++------------- .../java/org/javamrt/mrt/BGPFileReader.java | 7 +- src/test/java/org/javamrt/mrt/ASTest.java | 71 +++++++++++++ 3 files changed, 107 insertions(+), 70 deletions(-) create mode 100644 src/test/java/org/javamrt/mrt/ASTest.java diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index c343299..ad932d9 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -6,6 +6,7 @@ package org.javamrt.mrt; +import java.nio.ByteBuffer; import java.util.Comparator; /** @@ -16,70 +17,37 @@ public class AS implements Comparable, Comparator { public static final int AS_TRANS = 23456; public static final AS NullAS = new AS(0); - // protected long ASnumber; - protected byte ASCode[] = {0,0,0,0}; + private long asNumber; protected AS() { } public AS(long ASnumber) { - setASCode(ASnumber & 0xffffffff); + asNumber = ASnumber & 0xffffffffL; } - public AS(byte[] as) throws Exception { - setASCode(as); - } - - - private void setASCode(long val) { - for (int i = 0; i < 4; i++) - ASCode[i] = (byte) ((val >> ((3 - i) * 8)) & 0xff); - } - - private void setASCode(byte[] newval) throws Exception { - if (newval.length == 2) { - this.ASCode[0] = - this.ASCode[1] = 0; - this.ASCode[2] = newval[0]; - this.ASCode[3] = newval[1]; - } else if (newval.length == 4) { - this.ASCode[0] = newval[0]; - this.ASCode[1] = newval[1]; - this.ASCode[2] = newval[2]; - this.ASCode[3] = newval[3]; - } else - throw new Exception(String.format("AS must be 2 or 4 bytes long (%d not allowed)",newval.length)); + public AS(byte[] as) { + if (as.length != 2 && as.length != 4) { + throw new IllegalArgumentException(String.format("AS must be 2 or 4 bytes long (%d not allowed)", as.length)); + } + ByteBuffer byteBuffer = ByteBuffer.wrap(as); + asNumber = (as.length == 2) ? unsignedToLong(byteBuffer.getShort()) : unsignedToLong(byteBuffer.getInt()); } public long getASN() { - long result = 0; - for (int i=0; i 0xFFFFL; } /** - * @return true if the AS number is 23456, the 4 byte AS place holder - * comparison is byte by byte + * @return true if the AS number is 23456 */ public boolean isPlaceholder() { - return this.equals(AS_TRANS); + return asNumber == AS_TRANS; } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { - if (this.equals(0)) return "AS_NULL"; - if (this.equals(AS_TRANS)) return "AS_TRANS"; - - if (this.is4Byte()) - return String.format("%d",unsignedToLong((hiWord()<<16) + loWord())); - return String.format("%d", unsignedToLong(loWord())); - } +// this has never worked, so do not think we should fix it now +// if (this.equals(0)) return "AS_NULL"; +// if (this.equals(AS_TRANS)) return "AS_TRANS"; - public static long unsignedToLong(int address) { - return address & 0xffffffffL; + return String.valueOf(asNumber); } - private int hiWord() { - return ((this.ASCode[0] & 0xff) << 8) | (this.ASCode[1] & 0xff); + public static long unsignedToLong(int number) { + return number & 0xffffffffL; } - private int loWord() { - return ((this.ASCode[2] & 0xff) << 8) | (this.ASCode[3] & 0xff); - } /** * @param prefix * @return a String containing the prefix followed by the AS textual representation @@ -179,7 +140,11 @@ public static AS parseString(String asspec) throws Exception { asnum = asnum * 0x10000L + asnum1; result = new AS(asnum); } else { - result = new AS(Long.parseLong(asspec)); + long number = Long.parseLong(asspec); + if (number < 0 || number > 0xFFFFFFFFL) { + throw new IllegalArgumentException("number must be in [0,4294967295]"); + } + result = new AS(number); } } else { throw new Exception ("Incorrect AS specification: "+asspec); diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 1a01236..757273d 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -123,7 +123,6 @@ public String toString() { * throws Exception when something goes wrong */ - private int recordlen = 0; private int type = 0; private int subtype = 0; private long time = 0; @@ -187,13 +186,15 @@ record = null; time = RecordAccess.getU32(header, 0); type = RecordAccess.getU16(header, 4); subtype = RecordAccess.getU16(header, 6); - recordlen = (int) (0xffffffff & RecordAccess.getU32(header, 8)); + + final long recordlen = RecordAccess.getU32(header, 8); if (Debug.compileDebug) Debug.println("TIME: " + time + "\n TYPE: " + type + "\n SUBTYPE: " + subtype + "\n RECORDLENGTH: " + recordlen); - this.record = new byte[recordlen]; + if (recordlen > Integer.MAX_VALUE) throw new RuntimeException("Can't have a record longer than 2147483647 bytes"); + this.record = new byte[(int) recordlen]; bytesRead = readFromInputStream(this.in, record, record.length); diff --git a/src/test/java/org/javamrt/mrt/ASTest.java b/src/test/java/org/javamrt/mrt/ASTest.java new file mode 100644 index 0000000..2bb1905 --- /dev/null +++ b/src/test/java/org/javamrt/mrt/ASTest.java @@ -0,0 +1,71 @@ +package org.javamrt.mrt; + +import org.junit.Assert; +import org.junit.Test; + +public class ASTest { + + @Test + public void should_create_AS() { + Assert.assertEquals(0L, new AS(0L).getASN()); + Assert.assertEquals(5L, new AS(5L).getASN()); + Assert.assertEquals(65535L, new AS(65535L).getASN()); + Assert.assertEquals(65536L, new AS(65536L).getASN()); + Assert.assertEquals(0xFFFFFFFFL, new AS(0xFFFFFFFFL).getASN()); + } + + @Test + public void should_create_AS_from_bytes() { + Assert.assertEquals(0L, new AS(new byte[]{0,0,0,0}).getASN()); + Assert.assertEquals(5L, new AS(new byte[]{0,0,0,5}).getASN()); + Assert.assertEquals(65535L, new AS(new byte[]{0,0,-1,-1}).getASN()); + Assert.assertEquals(65536L, new AS(new byte[]{0,1,0,0}).getASN()); + Assert.assertEquals(0xFFFFFFFFL, new AS(new byte[]{-1,-1,-1,-1}).getASN()); + } + + @Test + public void should_print_AS() { + Assert.assertEquals("5", new AS(5L).toString()); + Assert.assertEquals("0", new AS(0L).toString()); + Assert.assertEquals("65535", new AS(65535L).toString()); + Assert.assertEquals("65536", new AS(65536L).toString()); + Assert.assertEquals("4294967295", new AS(0xFFFFFFFFL).toString()); + } + + @Test + public void should_compare() { + Assert.assertEquals(0, new AS(0L).compareTo(new AS(0L))); + Assert.assertEquals(0, new AS(5L).compareTo(new AS(5L))); + Assert.assertEquals(0, new AS(65535L).compareTo(new AS(65535L))); + Assert.assertEquals(0, new AS(65536L).compareTo(new AS(65536L))); + Assert.assertEquals(0, new AS(0xFFFFFFFFL).compareTo(new AS(0xFFFFFFFFL))); + + Assert.assertEquals(1, new AS(5L).compareTo(new AS(0L))); + Assert.assertEquals(1, new AS(65535L).compareTo(new AS(5L))); + Assert.assertEquals(1, new AS(65536L).compareTo(new AS(65535L))); + Assert.assertEquals(1, new AS(0xFFFFFFFFL).compareTo(new AS(65536L))); + + Assert.assertEquals(-1, new AS(0L).compareTo(new AS(5L))); + Assert.assertEquals(-1, new AS(5L).compareTo(new AS(65535L))); + Assert.assertEquals(-1, new AS(65535L).compareTo(new AS(65536L))); + Assert.assertEquals(-1, new AS(65536L).compareTo(new AS(0xFFFFFFFFL))); + } + + @Test + public void should_equal() { + Assert.assertEquals(new AS(0L), new AS(0L)); + Assert.assertEquals(new AS(5L), new AS(5L)); + Assert.assertEquals(new AS(65535L), new AS(65535L)); + Assert.assertEquals(new AS(65536L), new AS(65536L)); + Assert.assertEquals(new AS(0xFFFFFFFFL), new AS(0xFFFFFFFFL)); + } + + @Test + public void should_recognise_4_byte_asn() { + Assert.assertEquals(false, new AS(0L).is4Byte()); + Assert.assertEquals(false, new AS(5L).is4Byte()); + Assert.assertEquals(false, new AS(65535L).is4Byte()); + Assert.assertEquals(true, new AS(65536L).is4Byte()); + Assert.assertEquals(true, new AS(0xFFFFFFFFL).is4Byte()); + } +} From 4f307ba4362b69cf24a6b1294fd9915331b6aad7 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Wed, 21 Feb 2018 21:35:58 +0100 Subject: [PATCH 35/46] Loosen requirements for collection type in constructor. --- src/main/java/org/javamrt/mrt/ASSet.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/ASSet.java b/src/main/java/org/javamrt/mrt/ASSet.java index 80d4561..cff53bc 100644 --- a/src/main/java/org/javamrt/mrt/ASSet.java +++ b/src/main/java/org/javamrt/mrt/ASSet.java @@ -6,16 +6,17 @@ package org.javamrt.mrt; -import java.util.LinkedList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; // import org.javamrt.utils.RecordAccess; public class ASSet extends AS { - protected LinkedList asSet; + protected final ArrayList asSet = new ArrayList<>(); - public ASSet(LinkedList asList) { - this.asSet = new LinkedList(); + public ASSet(Collection asList) { this.asSet.addAll(asList); } @@ -33,7 +34,12 @@ private boolean equals(ASSet other) { return this.asSet.equals(other.asSet); } - public LinkedList getASList() { + @Override + public int hashCode() { + return asSet.hashCode(); + } + + public List getASList() { return this.asSet; } From 59780b7801f1f6d604e15bdb4a9800fb84cdc67a Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Thu, 22 Feb 2018 16:59:20 +0100 Subject: [PATCH 36/46] Add tests for AS and ASPath --- src/main/java/org/javamrt/mrt/AS.java | 9 +-- src/test/java/org/javamrt/mrt/ASPathTest.java | 74 +++++++++++++++++++ src/test/java/org/javamrt/mrt/ASTest.java | 12 ++- 3 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 src/test/java/org/javamrt/mrt/ASPathTest.java diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index ad932d9..3bb7e16 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -6,7 +6,7 @@ package org.javamrt.mrt; -import java.nio.ByteBuffer; +import java.math.BigInteger; import java.util.Comparator; /** @@ -30,8 +30,7 @@ public AS(byte[] as) { if (as.length != 2 && as.length != 4) { throw new IllegalArgumentException(String.format("AS must be 2 or 4 bytes long (%d not allowed)", as.length)); } - ByteBuffer byteBuffer = ByteBuffer.wrap(as); - asNumber = (as.length == 2) ? unsignedToLong(byteBuffer.getShort()) : unsignedToLong(byteBuffer.getInt()); + asNumber = new BigInteger(1, as).longValue(); } public long getASN() { @@ -113,10 +112,6 @@ public String toString() { return String.valueOf(asNumber); } - public static long unsignedToLong(int number) { - return number & 0xffffffffL; - } - /** * @param prefix * @return a String containing the prefix followed by the AS textual representation diff --git a/src/test/java/org/javamrt/mrt/ASPathTest.java b/src/test/java/org/javamrt/mrt/ASPathTest.java new file mode 100644 index 0000000..cc3a413 --- /dev/null +++ b/src/test/java/org/javamrt/mrt/ASPathTest.java @@ -0,0 +1,74 @@ +package org.javamrt.mrt; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class ASPathTest { + + // BGP4MP|1519047444|A|2001:478:124::146|25152|2405:6e00::/32|25152 6939 2299530082 133612 {18291} {18291}|IGP|2001:478:124::176|0|0||NAG|65512 10.247.255.147| + private String as4update = + "WorTFAAQAAQAAACQAABiQAAAMW4AAAACIAEEeAEkAAAAAAAAAAABRiABBHgBJAAAAAAAAAAAAXH/////////////////////AGQCAAAATYAOGgACARAgAQR4ASQAAAAAAAAAAAF2ACAkBW4AQAEBAEACHgIEAABiQAAAGxuJEAtiAAIJ7AEBAABHcwEBAABHc8AHCAAA/+gK9/+T"; + + // BGP4MP|1517836325|A|195.66.224.133|22822|45.127.112.0/23|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|103.196.39.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|103.196.38.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|103.196.36.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|103.196.37.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|45.127.114.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + // BGP4MP|1517836325|A|195.66.224.133|22822|45.127.115.0/24|22822 54825 40138|IGP|195.66.224.133|0|0||NAG|| + private String as2Update = + "WnhYJQAQAAEAAABgWSYxbgAAAAHDQuCFw0Lh8f////////////////////8AUAIAAAAdQAEBAEACCAIDWSbWKZzKQAMEw0LghYAEBAAAAAAXLX9wGGfEJxhnxCYYZ8QkGGfEJRgtf3IYLX9z"; + + + @Test + public void testShouldCreateAsPathFromAs4Update() { + List mrtRecords = parseMrts(as4update); + Assert.assertEquals(mrtRecords.size(), 1); + MRTRecord mrtRecord = mrtRecords.get(0); + Assert.assertTrue(mrtRecord instanceof Advertisement); + ASPath asPath = mrtRecord.getASPath(); + Assert.assertEquals(asPath.toString(), "25152 6939 2299530082 133612 18291 18291"); + } + + @Test + public void testShouldCreateAsPathFromAs2Update() { + List mrtRecords = parseMrts(as2Update); + Assert.assertEquals(mrtRecords.size(), 7); + for (final MRTRecord mrtRecord : mrtRecords) { + Assert.assertTrue(mrtRecord instanceof Advertisement); + ASPath asPath = mrtRecord.getASPath(); + Assert.assertEquals(asPath.toString(), "22822 54825 40138"); + } + } + + public static List parseMrts(String base64) { + byte[] bytes = Base64.getDecoder().decode(base64); + return parseMrts(bytes); + } + + public static List parseMrts(byte[] bytes) { + List result = new ArrayList<>(); + + try (BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(bytes))) { + BGPFileReader reader = new BGPFileReader(in); + while (!reader.eof()) { + MRTRecord next = reader.readNext(); + if (next != null) { + result.add(next); + } + } + } catch (Exception e) { + final String encoded = Base64.getEncoder().encodeToString(bytes); + throw new RuntimeException("Error parsing MRT bytes " + encoded, e); + } + + return result; + } + +} diff --git a/src/test/java/org/javamrt/mrt/ASTest.java b/src/test/java/org/javamrt/mrt/ASTest.java index 2bb1905..fac5c75 100644 --- a/src/test/java/org/javamrt/mrt/ASTest.java +++ b/src/test/java/org/javamrt/mrt/ASTest.java @@ -15,7 +15,17 @@ public void should_create_AS() { } @Test - public void should_create_AS_from_bytes() { + public void should_create_AS_from_2_bytes() { + Assert.assertEquals(0L, new AS(new byte[]{0,0}).getASN()); + Assert.assertEquals(5L, new AS(new byte[]{0,5}).getASN()); + Assert.assertEquals(255L, new AS(new byte[]{0,-1}).getASN()); + Assert.assertEquals(256L, new AS(new byte[]{1,0}).getASN()); + Assert.assertEquals(0xffffL, new AS(new byte[]{-1,-1}).getASN()); + Assert.assertEquals(0x8990L, new AS(new byte[]{(byte)0x89,(byte)0x90}).getASN()); + } + + @Test + public void should_create_AS_from_4_bytes() { Assert.assertEquals(0L, new AS(new byte[]{0,0,0,0}).getASN()); Assert.assertEquals(5L, new AS(new byte[]{0,0,0,5}).getASN()); Assert.assertEquals(65535L, new AS(new byte[]{0,0,-1,-1}).getASN()); From 85c9cb2decc183d16b41e91d956d22d343b8aa50 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Thu, 22 Feb 2018 17:09:03 +0100 Subject: [PATCH 37/46] Convert JUnit test to TestNG --- src/test/java/org/javamrt/mrt/ASTest.java | 93 ++++++++++++----------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/src/test/java/org/javamrt/mrt/ASTest.java b/src/test/java/org/javamrt/mrt/ASTest.java index fac5c75..9271ccd 100644 --- a/src/test/java/org/javamrt/mrt/ASTest.java +++ b/src/test/java/org/javamrt/mrt/ASTest.java @@ -1,81 +1,82 @@ package org.javamrt.mrt; -import org.junit.Assert; -import org.junit.Test; +import org.testng.annotations.Test; + +import static org.testng.AssertJUnit.assertEquals; public class ASTest { @Test public void should_create_AS() { - Assert.assertEquals(0L, new AS(0L).getASN()); - Assert.assertEquals(5L, new AS(5L).getASN()); - Assert.assertEquals(65535L, new AS(65535L).getASN()); - Assert.assertEquals(65536L, new AS(65536L).getASN()); - Assert.assertEquals(0xFFFFFFFFL, new AS(0xFFFFFFFFL).getASN()); + assertEquals(0L, new AS(0L).getASN()); + assertEquals(5L, new AS(5L).getASN()); + assertEquals(65535L, new AS(65535L).getASN()); + assertEquals(65536L, new AS(65536L).getASN()); + assertEquals(0xFFFFFFFFL, new AS(0xFFFFFFFFL).getASN()); } @Test public void should_create_AS_from_2_bytes() { - Assert.assertEquals(0L, new AS(new byte[]{0,0}).getASN()); - Assert.assertEquals(5L, new AS(new byte[]{0,5}).getASN()); - Assert.assertEquals(255L, new AS(new byte[]{0,-1}).getASN()); - Assert.assertEquals(256L, new AS(new byte[]{1,0}).getASN()); - Assert.assertEquals(0xffffL, new AS(new byte[]{-1,-1}).getASN()); - Assert.assertEquals(0x8990L, new AS(new byte[]{(byte)0x89,(byte)0x90}).getASN()); + assertEquals(0L, new AS(new byte[]{0,0}).getASN()); + assertEquals(5L, new AS(new byte[]{0,5}).getASN()); + assertEquals(255L, new AS(new byte[]{0,-1}).getASN()); + assertEquals(256L, new AS(new byte[]{1,0}).getASN()); + assertEquals(0xffffL, new AS(new byte[]{-1,-1}).getASN()); + assertEquals(0x8990L, new AS(new byte[]{(byte)0x89,(byte)0x90}).getASN()); } @Test public void should_create_AS_from_4_bytes() { - Assert.assertEquals(0L, new AS(new byte[]{0,0,0,0}).getASN()); - Assert.assertEquals(5L, new AS(new byte[]{0,0,0,5}).getASN()); - Assert.assertEquals(65535L, new AS(new byte[]{0,0,-1,-1}).getASN()); - Assert.assertEquals(65536L, new AS(new byte[]{0,1,0,0}).getASN()); - Assert.assertEquals(0xFFFFFFFFL, new AS(new byte[]{-1,-1,-1,-1}).getASN()); + assertEquals(0L, new AS(new byte[]{0,0,0,0}).getASN()); + assertEquals(5L, new AS(new byte[]{0,0,0,5}).getASN()); + assertEquals(65535L, new AS(new byte[]{0,0,-1,-1}).getASN()); + assertEquals(65536L, new AS(new byte[]{0,1,0,0}).getASN()); + assertEquals(0xFFFFFFFFL, new AS(new byte[]{-1,-1,-1,-1}).getASN()); } @Test public void should_print_AS() { - Assert.assertEquals("5", new AS(5L).toString()); - Assert.assertEquals("0", new AS(0L).toString()); - Assert.assertEquals("65535", new AS(65535L).toString()); - Assert.assertEquals("65536", new AS(65536L).toString()); - Assert.assertEquals("4294967295", new AS(0xFFFFFFFFL).toString()); + assertEquals("5", new AS(5L).toString()); + assertEquals("0", new AS(0L).toString()); + assertEquals("65535", new AS(65535L).toString()); + assertEquals("65536", new AS(65536L).toString()); + assertEquals("4294967295", new AS(0xFFFFFFFFL).toString()); } @Test public void should_compare() { - Assert.assertEquals(0, new AS(0L).compareTo(new AS(0L))); - Assert.assertEquals(0, new AS(5L).compareTo(new AS(5L))); - Assert.assertEquals(0, new AS(65535L).compareTo(new AS(65535L))); - Assert.assertEquals(0, new AS(65536L).compareTo(new AS(65536L))); - Assert.assertEquals(0, new AS(0xFFFFFFFFL).compareTo(new AS(0xFFFFFFFFL))); + assertEquals(0, new AS(0L).compareTo(new AS(0L))); + assertEquals(0, new AS(5L).compareTo(new AS(5L))); + assertEquals(0, new AS(65535L).compareTo(new AS(65535L))); + assertEquals(0, new AS(65536L).compareTo(new AS(65536L))); + assertEquals(0, new AS(0xFFFFFFFFL).compareTo(new AS(0xFFFFFFFFL))); - Assert.assertEquals(1, new AS(5L).compareTo(new AS(0L))); - Assert.assertEquals(1, new AS(65535L).compareTo(new AS(5L))); - Assert.assertEquals(1, new AS(65536L).compareTo(new AS(65535L))); - Assert.assertEquals(1, new AS(0xFFFFFFFFL).compareTo(new AS(65536L))); + assertEquals(1, new AS(5L).compareTo(new AS(0L))); + assertEquals(1, new AS(65535L).compareTo(new AS(5L))); + assertEquals(1, new AS(65536L).compareTo(new AS(65535L))); + assertEquals(1, new AS(0xFFFFFFFFL).compareTo(new AS(65536L))); - Assert.assertEquals(-1, new AS(0L).compareTo(new AS(5L))); - Assert.assertEquals(-1, new AS(5L).compareTo(new AS(65535L))); - Assert.assertEquals(-1, new AS(65535L).compareTo(new AS(65536L))); - Assert.assertEquals(-1, new AS(65536L).compareTo(new AS(0xFFFFFFFFL))); + assertEquals(-1, new AS(0L).compareTo(new AS(5L))); + assertEquals(-1, new AS(5L).compareTo(new AS(65535L))); + assertEquals(-1, new AS(65535L).compareTo(new AS(65536L))); + assertEquals(-1, new AS(65536L).compareTo(new AS(0xFFFFFFFFL))); } @Test public void should_equal() { - Assert.assertEquals(new AS(0L), new AS(0L)); - Assert.assertEquals(new AS(5L), new AS(5L)); - Assert.assertEquals(new AS(65535L), new AS(65535L)); - Assert.assertEquals(new AS(65536L), new AS(65536L)); - Assert.assertEquals(new AS(0xFFFFFFFFL), new AS(0xFFFFFFFFL)); + assertEquals(new AS(0L), new AS(0L)); + assertEquals(new AS(5L), new AS(5L)); + assertEquals(new AS(65535L), new AS(65535L)); + assertEquals(new AS(65536L), new AS(65536L)); + assertEquals(new AS(0xFFFFFFFFL), new AS(0xFFFFFFFFL)); } @Test public void should_recognise_4_byte_asn() { - Assert.assertEquals(false, new AS(0L).is4Byte()); - Assert.assertEquals(false, new AS(5L).is4Byte()); - Assert.assertEquals(false, new AS(65535L).is4Byte()); - Assert.assertEquals(true, new AS(65536L).is4Byte()); - Assert.assertEquals(true, new AS(0xFFFFFFFFL).is4Byte()); + assertEquals(false, new AS(0L).is4Byte()); + assertEquals(false, new AS(5L).is4Byte()); + assertEquals(false, new AS(65535L).is4Byte()); + assertEquals(true, new AS(65536L).is4Byte()); + assertEquals(true, new AS(0xFFFFFFFFL).is4Byte()); } } From 95277a79fda6e20134e3cb8f1de45657f596d756 Mon Sep 17 00:00:00 2001 From: edominguez Date: Thu, 1 Mar 2018 11:51:16 +0100 Subject: [PATCH 38/46] Updating the Mrtconstants.ipAddressString method in order to allow the java-mrt library to print correctly the ipv4 embedded in ipv6. It has been needed to add the isIpv4EmbeddedIpv6 flag in all ip address related classes. Also in the classes that returned ip addresses as java.net library it has been added method to return byte[]. --- .../java/org/javamrt/mrt/BGPFileReader.java | 2 +- src/main/java/org/javamrt/mrt/Bgp4Update.java | 2 +- .../java/org/javamrt/mrt/MRTConstants.java | 102 +++++++++++++++--- src/main/java/org/javamrt/mrt/MpReach.java | 25 +++-- src/main/java/org/javamrt/mrt/NextHop.java | 18 ++-- .../java/org/javamrt/mrt/Notification.java | 2 +- src/main/java/org/javamrt/mrt/Open.java | 2 +- src/main/java/org/javamrt/mrt/Prefix.java | 27 +++-- .../java/org/javamrt/mrt/StateChange.java | 2 +- src/main/java/org/javamrt/mrt/TableDump.java | 2 +- src/test/java/org/javamrt/mrt/MrtTest.java | 60 ++++++++--- 11 files changed, 184 insertions(+), 60 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 757273d..d8cbfad 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -611,7 +611,7 @@ private void parseTableDumpv2(int NLRItype) throws Exception { if (debug) { route_btoa.System_err_println(String.format("peerIndex = %d; peer = %s(%s)\n", - peerIndex, MRTConstants.ipAddressString(peerIP[peerIndex]), peerAS[peerIndex].toString("AS"))); + peerIndex, MRTConstants.ipAddressString(peerIP[peerIndex], false), peerAS[peerIndex].toString("AS"))); } offset += 2; diff --git a/src/main/java/org/javamrt/mrt/Bgp4Update.java b/src/main/java/org/javamrt/mrt/Bgp4Update.java index 8a4e50a..2f232aa 100644 --- a/src/main/java/org/javamrt/mrt/Bgp4Update.java +++ b/src/main/java/org/javamrt/mrt/Bgp4Update.java @@ -41,7 +41,7 @@ public Bgp4Update(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, } public String toString() { - String peerString = MRTConstants.ipAddressString(this.peerIP); + String peerString = MRTConstants.ipAddressString(this.peerIP, false); StringBuilder result = new StringBuilder(this.updateStr).append('|') .append(getTime()).append('|') diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 33caecd..7f16365 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -6,8 +6,12 @@ package org.javamrt.mrt; + +import java.net.Inet4Address; +import java.net.Inet6Address; import java.net.InetAddress; import java.text.SimpleDateFormat; +import java.util.Arrays; public class MRTConstants { @@ -85,6 +89,9 @@ public static String asPathString(int type) { public static final int AFI_IPv6 = 2; public static final int AFI_MAX = AFI_IPv6; + public static final int IPv4_LENGTH = 4; + public static final int IPv6_LENGTH = 16; + public static final int SAFI_UNICAST = 1; public static final int SAFI_MULTICAST = 2; public static final int SAFI_UNICAST_MULTICAST = 3; @@ -171,24 +178,93 @@ public static final String bgpType(int bgpType) { protected static final SimpleDateFormat mrtFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); + /** * * @param InetAddress ia - * @return Textual representation of the InetAddress + * @param int afi + * @return boolean + * + * It looks if it is an ipv4 embedded in ipv6 + */ + public static final boolean isInIpv4EmbeddedIpv6Format(InetAddress ia, int afi){ + if(ia instanceof Inet4Address && afi == AFI_IPv6){ + return true; + } + if (ia instanceof Inet6Address && ((Inet6Address)ia).isIPv4CompatibleAddress()) { + return true; + } + return false; + } + + /** + * + * @param byte[] base + * @return boolean + * + * It looks if it is an ipv4 embedded in ipv6 + */ + public static final boolean isInIpv4EmbeddedIpv6Format(byte[] base) { + try { + InetAddress ia = InetAddress.getByAddress(base); + if (ia instanceof Inet4Address && base.length == IPv6_LENGTH) { + return true; + } + if (ia instanceof Inet6Address && ((Inet6Address)ia).isIPv4CompatibleAddress()) { + return true; + } + }catch(Exception e) { + e.printStackTrace(); + } + return false; + } + + /** + * + * @param InetAddress inetAddress + * @param boolean isIpv4EmbeddedIpv6 + * @return Textual representation of the InetAddress. + * It also parses if it is a ipv4 embedded in ip6 * * for all addresses, removes initial name */ - public static final String ipAddressString(InetAddress ia) - { - String ip = ia.getHostAddress(). - // replaceFirst("^[^/]*/", ""). - replaceFirst(":0(:0)+", "::"). - replaceFirst("^0:", ""). - replaceFirst(":::", "::"); - - if(ip.equals(":")) - ip = "::"; - - return ip; + public static final String ipAddressString(InetAddress inetAddress, boolean isIpv4EmbeddedIpv6) { +// String ipAddressString = inetAddress.getHostAddress(). +// // replaceFirst("^[^/]*/", ""). +// replaceFirst(":0(:0)+", "::"). +// replaceFirst("^0:", ""). +// replaceFirst(":::", "::"); + + String ipAddressString = inetAddress.getHostAddress(); + try { + + if (isIpv4EmbeddedIpv6) { + + if(inetAddress instanceof Inet4Address) + ipAddressString = "::ffff:" + ipAddressString; + else if (inetAddress instanceof Inet6Address){ + byte[] ipv4Embedded = Arrays.copyOfRange(inetAddress.getAddress(), 12, IPv6_LENGTH); + String ipv4Str = (Inet4Address.getByAddress(ipv4Embedded)).getHostAddress(); + if(ipv4Str.equals("0.0.0.0")) ipv4Str =""; + ipAddressString = "::".concat(ipv4Str); + } + } + + if (ipAddressString.equals(":")) + ipAddressString = "::"; + }catch(Exception e){ + e.printStackTrace(); + } + + return ipAddressString; + } + + public static final String ipAddressString(byte[] ipAddressBase, boolean isIpv4EmbeddedIpv6){ + try{ + return ipAddressString(InetAddress.getByAddress(ipAddressBase), isIpv4EmbeddedIpv6); + }catch(Exception e){ + e.printStackTrace(); + return new String("??/"); + } } } diff --git a/src/main/java/org/javamrt/mrt/MpReach.java b/src/main/java/org/javamrt/mrt/MpReach.java index d03185c..be9fba2 100644 --- a/src/main/java/org/javamrt/mrt/MpReach.java +++ b/src/main/java/org/javamrt/mrt/MpReach.java @@ -21,6 +21,7 @@ public class MpReach implements Attribute { private int afi; private int safi; private InetAddress nextHop; + private byte[] nextHopBytes; private boolean isInIpv4EmbeddedIpv6Format = false; private Vector nlriVector; @@ -78,13 +79,13 @@ public class MpReach implements Attribute { nhl = 16; } - byte[] abuf = RecordAccess.getBytes(buffer,offset, nhl); + nextHopBytes = RecordAccess.getBytes(buffer,offset, nhl); - nextHop = InetAddress.getByAddress(abuf); - if(nextHop instanceof Inet4Address && afi == 2){ - isInIpv4EmbeddedIpv6Format = true; - } + nextHop = InetAddress.getByAddress(nextHopBytes); + + + isInIpv4EmbeddedIpv6Format = MRTConstants.isInIpv4EmbeddedIpv6Format(nextHop, afi); offset += nextHopLen; @@ -152,21 +153,19 @@ public Vector getNlri() { public InetAddress getNextHop() { return nextHop; } + public byte[] getNextHopBytes() { + return nextHopBytes; + } /* * public Vector < InetAddress > getSNPA () { return snpaVector; } */ public String toString() { - String result = ""; - String nextHopString = MRTConstants.ipAddressString(nextHop); - if(isInIpv4EmbeddedIpv6Format){ - result = "::ffff:"+nextHopString; - } else { - result = nextHopString; - } + return MRTConstants.ipAddressString(nextHop, isInIpv4EmbeddedIpv6Format); + // String result = "NEXT HOP: " + nextHop.getHostAddress(); // for (Nlri nlri : nlriVector) // result += "\n NLRI:" + nlri.toString(); - return result; + } } diff --git a/src/main/java/org/javamrt/mrt/NextHop.java b/src/main/java/org/javamrt/mrt/NextHop.java index 05579bc..516869d 100644 --- a/src/main/java/org/javamrt/mrt/NextHop.java +++ b/src/main/java/org/javamrt/mrt/NextHop.java @@ -13,6 +13,10 @@ public class NextHop implements Attribute { + protected InetAddress nextHopIA; + protected byte[] nextHopIABytes; + private boolean isInIpv4EmbeddedIpv6Format = false; + public NextHop() throws Exception { byte nh[] = { (byte) 255, (byte) 255, (byte) 255, (byte) 255 }; this.nextHopIA = InetAddress.getByAddress(nh); @@ -21,8 +25,9 @@ public NextHop() throws Exception { public NextHop(byte[] buffer) throws Exception { int offset = 0; int len = buffer.length; - byte nh[] = RecordAccess.getBytes(buffer, offset, len); - this.nextHopIA = InetAddress.getByAddress(nh); + nextHopIABytes = RecordAccess.getBytes(buffer, offset, len); + this.nextHopIA = InetAddress.getByAddress(nextHopIABytes); + isInIpv4EmbeddedIpv6Format = MRTConstants.isInIpv4EmbeddedIpv6Format(nextHopIABytes); } public NextHop(InetAddress nextHopIA) throws NullPointerException { @@ -32,14 +37,17 @@ public NextHop(InetAddress nextHopIA) throws NullPointerException { this.nextHopIA = nextHopIA; } - public InetAddress getRaw() { + public InetAddress getNextHopIA() { return nextHopIA; } + public byte[] getNextHopIABytes() { + return nextHopIABytes; + } public String toString() { if (this.nextHopIA == null) return null; - return MRTConstants.ipAddressString(nextHopIA); + return MRTConstants.ipAddressString(nextHopIA, isInIpv4EmbeddedIpv6Format); } public boolean isDefault() { @@ -59,6 +67,4 @@ public boolean equals(Object o) { return this.nextHopIA.equals(((NextHop) o).nextHopIA); return false; } - - protected InetAddress nextHopIA; } diff --git a/src/main/java/org/javamrt/mrt/Notification.java b/src/main/java/org/javamrt/mrt/Notification.java index 9c5aa4b..7a114c9 100644 --- a/src/main/java/org/javamrt/mrt/Notification.java +++ b/src/main/java/org/javamrt/mrt/Notification.java @@ -33,7 +33,7 @@ public InetAddress getPeer() { } public String toString() { - String peerString = MRTConstants.ipAddressString(this.peerIP); + String peerString = MRTConstants.ipAddressString(this.peerIP, false); StringBuilder result = new StringBuilder("NOTIFICATION").append('|') .append(getTime()).append('|') diff --git a/src/main/java/org/javamrt/mrt/Open.java b/src/main/java/org/javamrt/mrt/Open.java index bf081e1..8eb9e6f 100644 --- a/src/main/java/org/javamrt/mrt/Open.java +++ b/src/main/java/org/javamrt/mrt/Open.java @@ -45,7 +45,7 @@ public InetAddress getPeer() { public long getBgpId(){return this.bgpId;} public String toString() { - String peerString = MRTConstants.ipAddressString(this.peerIP); + String peerString = MRTConstants.ipAddressString(this.peerIP, false); StringBuilder result = new StringBuilder("OPEN").append('|') .append(getTime()).append('|') diff --git a/src/main/java/org/javamrt/mrt/Prefix.java b/src/main/java/org/javamrt/mrt/Prefix.java index dc57abb..a173687 100644 --- a/src/main/java/org/javamrt/mrt/Prefix.java +++ b/src/main/java/org/javamrt/mrt/Prefix.java @@ -14,8 +14,7 @@ public class Prefix implements Comparable, Comparator { - private final static int Inet4AddrLen = 4; - private final static int Inet6AddrLen = 16; + private boolean isInIpv4EmbeddedIpv6Format = false; // for Nlri.java protected byte[] base; @@ -36,12 +35,12 @@ protected Prefix() { } public Prefix(InetAddress addr, int maskLength) - throws PrefixMaskException { + throws PrefixMaskException, UnknownHostException { setPrefix(addr.getAddress(), maskLength); } public Prefix(byte[] addr, int maskLength) - throws PrefixMaskException { + throws PrefixMaskException, UnknownHostException { setPrefix(addr, maskLength); } @@ -51,13 +50,13 @@ public static Prefix parseString(String s) throws NumberFormatException, Unknown } protected void setPrefix(byte[] addr, int maskLen) - throws PrefixMaskException { + throws PrefixMaskException, UnknownHostException { /* * v2.00 * Check before anything else * backported from org.paag.netkit v2.00 */ - if (addr.length != Inet4AddrLen && addr.length != Inet6AddrLen) + if (addr.length != MRTConstants.IPv4_LENGTH && addr.length != MRTConstants.IPv6_LENGTH) throw new PrefixMaskException(addr, maskLen); if (addr.length * 8 < maskLen) @@ -98,6 +97,8 @@ protected void setPrefix(byte[] addr, int maskLen) for (int i = 0; i < this.mask.length; i++) { this.broadcast[i] = (byte) (this.base[i] | ~this.mask[i]); } + + isInIpv4EmbeddedIpv6Format = MRTConstants.isInIpv4EmbeddedIpv6Format(this.base); } public InetAddress getBaseAddress() { @@ -108,6 +109,14 @@ public InetAddress getBaseAddress() { } } + public byte[] getByteBaseArrayAddress(){ + return this.base; + } + + public boolean getIsInIpv4EmbeddedIpv6Format(){ + return isInIpv4EmbeddedIpv6Format; + } + public InetAddress getBroadcastAddress() { try { return InetAddress.getByAddress(this.broadcast); @@ -155,7 +164,7 @@ public boolean isIncludedBy(Prefix other) { public String toString() { try { - return MRTConstants.ipAddressString(InetAddress.getByAddress(this.base)). + return MRTConstants.ipAddressString(this.base, isInIpv4EmbeddedIpv6Format). concat("/" + this.maskLength); } catch (Exception e) { return new String("??/"+this.maskLength); @@ -163,11 +172,11 @@ public String toString() { } public boolean isIPv4() { - return this.base.length == Inet4AddrLen; + return this.base.length == MRTConstants.IPv4_LENGTH; } public boolean isIPv6() { - return this.base.length == Inet6AddrLen; + return this.base.length == MRTConstants.IPv6_LENGTH; } public int compare(Prefix p1, Prefix p2) { diff --git a/src/main/java/org/javamrt/mrt/StateChange.java b/src/main/java/org/javamrt/mrt/StateChange.java index 4c4de10..c5ebcba 100755 --- a/src/main/java/org/javamrt/mrt/StateChange.java +++ b/src/main/java/org/javamrt/mrt/StateChange.java @@ -74,7 +74,7 @@ public String toString() return String.format("%s|%d|STATE|%s|%s|%d|%d", this.updateStr, this.time, - MRTConstants.ipAddressString(gatewayIP), + MRTConstants.ipAddressString(gatewayIP, false), this.gatewayAS.toString(), this.old_state, this.new_state); diff --git a/src/main/java/org/javamrt/mrt/TableDump.java b/src/main/java/org/javamrt/mrt/TableDump.java index 58b557a..70f2d0b 100755 --- a/src/main/java/org/javamrt/mrt/TableDump.java +++ b/src/main/java/org/javamrt/mrt/TableDump.java @@ -131,7 +131,7 @@ public String toString () if (dumpString != null) return dumpString.toString (); String cleanPeer = // this.Peer.getHostAddress ().replaceFirst("(:0){2,7}", ":").replaceFirst("^0::", "::"); - MRTConstants.ipAddressString(this.Peer); + MRTConstants.ipAddressString(this.Peer, false); dumpString = new StringBuffer (this.type+"|" + this.origTime); dumpString.append ("|B|" + cleanPeer +"|"); diff --git a/src/test/java/org/javamrt/mrt/MrtTest.java b/src/test/java/org/javamrt/mrt/MrtTest.java index 2ab13b8..442225c 100644 --- a/src/test/java/org/javamrt/mrt/MrtTest.java +++ b/src/test/java/org/javamrt/mrt/MrtTest.java @@ -1,10 +1,10 @@ package org.javamrt.mrt; - -import org.testng.annotations.Test; +import org.junit.Test; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; @@ -37,17 +37,17 @@ public void testMrtIpv6peerIpv4Prefix(){ byte[] body = new byte[] {0, 0, 99, 91, 0, 0, 49, 110, 0, 0, 0, 2, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 104, 2, 0, 0, 0, 37, 64, 1, 1, 0, 80, 2, 0, 22, 2, 5, 0, 0, 99, 91, 0, 0, 27, 27, 0, 0, 18, -38, 0, 0, -105, -109, 0, 0, -37, -117, 64, 3, 4, 62, 121, -64, 1, 22, 1, 0, 4, 22, 103, 29, 76, 24, 103, 2, -77, 24, 103, 2, -78, 24, 103, 2, -79, 24, 103, 2, -80, 22, 103, 2, -80, 24, 1, 0, 7, 24, 1, 0, 6, 24, 1, 0, 5, 24, 1, 0, 4}; byte[] mrt = new byte[] {90, 123, 73, 112, 0, 16, 0, 4, 0, 0, 0, -108,0, 0, 99, 91, 0, 0, 49, 110, 0, 0, 0, 2, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 32, 1, 7, -8, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 104, 2, 0, 0, 0, 37, 64, 1, 1, 0, 80, 2, 0, 22, 2, 5, 0, 0, 99, 91, 0, 0, 27, 27, 0, 0, 18, -38, 0, 0, -105, -109, 0, 0, -37, -117, 64, 3, 4, 62, 121, -64, 1, 22, 1, 0, 4, 22, 103, 29, 76, 24, 103, 2, -77, 24, 103, 2, -78, 24, 103, 2, -79, 24, 103, 2, -80, 22, 103, 2, -80, 24, 1, 0, 7, 24, 1, 0, 6, 24, 1, 0, 5, 24, 1, 0, 4}; - String[] resultStr = new String[] {"BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.4.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.29.76.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.179.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.178.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.177.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.176.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|103.2.176.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.7.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.6.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.5.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", - "BGP4MP|1518029168|A|2001:7f8:24::b2|25435|1.0.4.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||"}; + String[] resultStr = new String[] {"BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|1.0.4.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.29.76.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.2.179.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.2.178.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.2.177.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.2.176.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|103.2.176.0/22|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|1.0.7.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|1.0.6.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|1.0.5.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||", + "BGP4MP|1518029168|A|2001:7f8:24:0:0:0:0:b2|25435|1.0.4.0/24|25435 6939 4826 38803 56203|IGP|62.121.192.1|0|0||NAG||"}; try (BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(mrt))) { BGPFileReader reader = new BGPFileReader(in); @@ -66,4 +66,38 @@ public void testMrtIpv6peerIpv4Prefix(){ } } + + @Test + public void testIpv4EmbeddedIpv6With1(){ + + byte[] prefixBuffer = new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -94, 97, 44, 0}; + int netmask = 118; + + try { + Prefix prefix = new Prefix(prefixBuffer, netmask); + String prefixResult = "::ffff:162.97.44.0/118"; + assertEquals(prefix.toString(), prefixResult); + } catch (PrefixMaskException e) { + e.printStackTrace(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } + + @Test + public void testIpv4EmbeddedIpv6With0(){ + + byte[] prefixBuffer = new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 16, -88, 0}; + int netmask = 118; + + try { + Prefix prefix = new Prefix(prefixBuffer, netmask); + String prefixResult = "::67.16.168.0/118"; + assertEquals(prefix.toString(), prefixResult); + } catch (PrefixMaskException e) { + e.printStackTrace(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } } From 45c6b2752391be1c66d1bc634a2ba2b59d611383 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Fri, 23 Mar 2018 17:35:47 +0100 Subject: [PATCH 39/46] Fix AS_CONFED_SEQUENCE and AS_CONFED_SET constants RFC5065 Section 3: 3 AS_CONFED_SEQUENCE 4 AS_CONFED_SET --- src/main/java/org/javamrt/mrt/MRTConstants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 7f16365..3135260 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -21,8 +21,8 @@ public class MRTConstants { public static final int asSet = 1; public static final int asSequence = 2; - public static final int asConfedSet = 3; - public static final int asConfedSequence = 4; + public static final int asConfedSequence = 3; + public static final int asConfedSet = 4; public static String asPathString(int type) { switch (type) { From a47fa2ca4a9e3986c685866f2e92f370816e28e5 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Wed, 8 Aug 2018 16:54:29 +0200 Subject: [PATCH 40/46] Multiple fixes and improvements: - Fix byte array re-use between consequently parsed objects - Add support for all remaining subtypes of (deprecated) BGP type - Add lenient parse mode (to parse dump files generated by broken versions of Zebra/Quagga) - Minor bug fixes --- src/main/java/org/javamrt/mrt/ASPath.java | 3 +- src/main/java/org/javamrt/mrt/Attributes.java | 19 +- .../java/org/javamrt/mrt/BGPFileReader.java | 478 ++++++++++++------ src/main/java/org/javamrt/mrt/Community.java | 12 +- src/main/java/org/javamrt/mrt/KeepAlive.java | 68 ++- .../java/org/javamrt/mrt/LenientPrefix.java | 36 ++ .../java/org/javamrt/mrt/MRTConstants.java | 50 +- src/main/java/org/javamrt/mrt/MRTRecord.java | 4 +- .../mrt/MalformedBgpStreamException.java | 18 + src/main/java/org/javamrt/mrt/Nlri.java | 66 +-- src/main/java/org/javamrt/mrt/Prefix.java | 32 +- .../org/javamrt/mrt/PrefixMaskException.java | 7 +- src/main/java/org/javamrt/mrt/RFC4893.java | 16 +- .../org/javamrt/mrt/RFC4893Exception.java | 3 +- .../java/org/javamrt/progs/route_btoa.java | 2 + .../java/org/javamrt/utils/RecordAccess.java | 64 ++- src/test/java/org/javamrt/mrt/MrtTest.java | 72 ++- 17 files changed, 636 insertions(+), 314 deletions(-) create mode 100644 src/main/java/org/javamrt/mrt/LenientPrefix.java create mode 100644 src/main/java/org/javamrt/mrt/MalformedBgpStreamException.java diff --git a/src/main/java/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java index 0226c16..9efd746 100755 --- a/src/main/java/org/javamrt/mrt/ASPath.java +++ b/src/main/java/org/javamrt/mrt/ASPath.java @@ -82,9 +82,8 @@ public AS get(int i) { try { return path.get(i); } catch (IndexOutOfBoundsException iobe) { - // + return null; } - return null; } public void set(int index,AS element) { diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 6d53ed1..169f0f4 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -10,7 +10,6 @@ import org.javamrt.utils.RecordAccess; import java.net.InetAddress; -import java.util.Arrays; import java.util.Vector; public class Attributes { @@ -22,25 +21,27 @@ public Attributes(byte[] record, int attrLen, int attrPos, int attrBytes) if (attrBytes != 2 && attrBytes != 4) throw new AttributeException(String.format( "Attributes needs attrBytes 2 or 4 (not %d", attrBytes)); - decode(record, attrLen, attrPos, attrBytes); - bytes = Arrays.copyOfRange(record, attrPos, attrPos + attrLen); + bytes = new byte[attrLen]; + System.arraycopy(record, attrPos, bytes, 0, attrLen); + decode(bytes, attrLen, attrBytes); } public Attributes(byte[] record, int attrLen, int attrPos) throws Exception { - decode(record, attrLen, attrPos, 2); - bytes = Arrays.copyOfRange(record, attrPos, attrPos + attrLen); + bytes = new byte[attrLen]; + System.arraycopy(record, attrPos, bytes, 0, attrLen); + decode(bytes, attrLen, 2); } public byte[] getBytes() { return bytes; } - private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) + private void decode(byte[] record, int attrLen, int attrBytes) throws Exception { byte[] buffer; - int here = attrPos; + int here = 0; if (Debug.compileDebug) - Debug.printf("Attributes(...,%d,%d,%d)\n", attrLen, attrPos, + Debug.printf("Attributes(...,%d,%d,%d)\n", attrLen, 0, attrBytes); attributes = new Vector(MRTConstants.ATTRIBUTE_TOTAL); @@ -51,7 +52,7 @@ private void decode(byte[] record, int attrLen, int attrPos, int attrBytes) else attributes.addElement(null); - while (here < attrLen + attrPos) { + while (here < attrLen) { int flag = RecordAccess.getU8(record, here); int type = RecordAccess.getU8(record, here + 1); diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index d8cbfad..4fbe343 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -10,23 +10,32 @@ import org.javamrt.utils.Debug; import org.javamrt.utils.RecordAccess; -import java.io.*; +import java.io.BufferedInputStream; +import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.util.Arrays; import java.util.LinkedList; import java.util.zip.GZIPInputStream; -public class BGPFileReader { +public class BGPFileReader implements Closeable { private static final boolean debug = false; + private static boolean lenient = false; - private BufferedInputStream in = null; + private InputStream in; private LinkedList recordFifo; - private boolean eof = false; + private boolean eof; + public static final byte[] BGP_MARKER = new byte[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; + private static final byte[] UNKNOWN_IPV4 = new byte[]{0, 0, 0, 0}; + private static final byte[] UNKNOWN_IPV6 = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private byte[] header; - private byte[] record; - - private String toString; + private String streamName; /***** * * public BGPFileReader (BufferedInputStream in) @@ -34,12 +43,10 @@ public class BGPFileReader { * create a new BGPFileReader from BufferedInputStream */ - public BGPFileReader(BufferedInputStream in) { + public BGPFileReader(InputStream in) { this.in = in; - this.toString = in.toString(); + this.streamName = in.toString(); this.recordFifo = new LinkedList(); - this.header = new byte[12]; // always 12 bytes, create once - this.record = null; this.eof = false; } @@ -49,12 +56,12 @@ public BGPFileReader(BufferedInputStream in) { * * create a new BGPFileReader from BufferedInputStream specified by the * String name - * @throws Exception + * @throws IOException */ - public BGPFileReader(String name) throws Exception { + public BGPFileReader(String name) throws IOException { InputStream inStream = null; - this.toString = name; + this.streamName = name; try { // to open the name as a URL java.net.URL url = new java.net.URL(name); @@ -67,31 +74,28 @@ public BGPFileReader(String name) throws Exception { } - if (this.toString.endsWith(".gz")) { - this.in = new BufferedInputStream(new GZIPInputStream(inStream)); + if (this.streamName.endsWith(".gz")) { + this.in = new GZIPInputStream(inStream, 8192); } else { - this.in = new BufferedInputStream(inStream); + this.in = (inStream instanceof BufferedInputStream || inStream instanceof GZIPInputStream) + ? inStream : new BufferedInputStream(inStream); } this.recordFifo = new LinkedList(); - this.header = new byte[12]; // always 12 bytes, create once - this.record = null; this.eof = false; } public BGPFileReader(File f) throws IOException { if (!f.exists()) - throw new java.io.FileNotFoundException(); + throw new java.io.FileNotFoundException(f.toString()); FileInputStream inStream = new FileInputStream(f); - this.toString = f.getCanonicalPath(); - if (this.toString.endsWith(".gz")) { - this.in = new BufferedInputStream(new GZIPInputStream(inStream)); + this.streamName = f.getCanonicalPath(); + if (this.streamName.endsWith(".gz")) { + this.in = new GZIPInputStream(inStream, 8192); } else { this.in = new BufferedInputStream(inStream); } this.recordFifo = new LinkedList(); - this.header = new byte[12]; // always 12 bytes, create once - this.record = null; this.eof = false; } @@ -104,27 +108,15 @@ public void close() throws java.io.IOException { this.in.close(); this.recordFifo.clear(); this.recordFifo = null; - this.header = null; - this.record = null; } /** * toString(): return the name of the input Stream */ public String toString() { - return this.toString; + return this.streamName; } - /*** - * - * MRTRecord readNext() - * - * returns next record on successful completion null on EOF - * - * throws Exception when something goes wrong - */ - private int type = 0; - private int subtype = 0; private long time = 0; private long recordCounter = 0; @@ -155,17 +147,18 @@ public MRTRecord readNext() throws Exception { if (recordFifo.size() != 0) return recordFifo.remove(); - /* - * Help GC - */ - if (record != null) - record = null; /* * if the queue is empty, read from the file */ - int bytesRead = readFromInputStream(this.in, header, header.length); - recordCounter ++; + final byte[] header = new byte[12]; + byte[] record; + int bytesRead; + try { + bytesRead = readFromInputStream(this.in, header, header.length); + } catch (IOException e) { + throw new MalformedBgpStreamException(e); + } /* * EOF */ @@ -176,16 +169,19 @@ record = null; /* * truncated */ - if (bytesRead != this.header.length) { + if (bytesRead != header.length) { this.eof = true; - throw new BGPFileReaderException("Truncated file: " + bytesRead - + " instead of " + this.header.length + " bytes", header); + throw new MalformedBgpStreamException( + String.format("Truncated file: %d instead of %d bytes; header: %s", + bytesRead, + header.length, RecordAccess.arrayToString(header))); } + recordCounter ++; if (Debug.compileDebug) RecordAccess.dump(Debug.debugStream, header); time = RecordAccess.getU32(header, 0); - type = RecordAccess.getU16(header, 4); - subtype = RecordAccess.getU16(header, 6); + final int type = RecordAccess.getU16(header, 4); + final int subtype = RecordAccess.getU16(header, 6); final long recordlen = RecordAccess.getU32(header, 8); @@ -193,37 +189,52 @@ record = null; + "\n SUBTYPE: " + subtype + "\n RECORDLENGTH: " + recordlen); - if (recordlen > Integer.MAX_VALUE) throw new RuntimeException("Can't have a record longer than 2147483647 bytes"); - this.record = new byte[(int) recordlen]; + if (recordlen > Integer.MAX_VALUE) { + throw new MalformedBgpStreamException("Can't have a record longer than 2147483647 bytes"); + } - bytesRead = readFromInputStream(this.in, record, record.length); + try { + record = new byte[(int) recordlen]; + bytesRead = readFromInputStream(this.in, record, record.length); + } catch (OutOfMemoryError e) { + throw new BGPFileReaderException( + "Got OutOfMemoryError while trying to read next record (" + recordlen + " bytes) into memory", header); + } catch (IOException e ) { + throw new MalformedBgpStreamException(e); + } - if (bytesRead != this.record.length) { - this.eof = true; - throw new BGPFileReaderException("Truncated file: " + bytesRead - + " instead of " + this.record.length + " bytes", header); + if (bytesRead != record.length) { + final String message = String.format("Truncated file: %,d instead of %,d bytes: %s", + bytesRead, record.length, RecordAccess.arrayToString(header)); + if (lenient) { + route_btoa.System_err_println(message + "; trying to parse anyways"); + record = Arrays.copyOf(record, bytesRead); + } else { + this.eof = true; + throw new MalformedBgpStreamException(message); + } } if (Debug.compileDebug) - Debug.dump(this.record); + Debug.dump(record); /* * Record parsing */ switch (type) { case MRTConstants.TABLE_DUMP: - return parseTableDump(subtype); + return parseTableDump(header, record, subtype); case MRTConstants.TABLE_DUMP_v2: switch (subtype) { case MRTConstants.PEER_INDEX_TABLE: - parsePeerIndexTable(); + parsePeerIndexTable(record); break; case 2: - parseTableDumpv2(MRTConstants.AFI_IPv4); + parseTableDumpv2(header, record, MRTConstants.AFI_IPv4); break; case 4: - parseTableDumpv2(MRTConstants.AFI_IPv6); + parseTableDumpv2(header, record, MRTConstants.AFI_IPv6); break; case 6: parseGenericRib(); @@ -239,14 +250,14 @@ record = null; break; case MRTConstants.BGP4MP: - MRTRecord bgp4mp = parseBgp4mp(subtype); + MRTRecord bgp4mp = parseBgp4mp(header, record, subtype); if ((bgp4mp) != null) { return bgp4mp; } break; case MRTConstants.BGPDUMP_TYPE_MRTD_BGP: - MRTRecord bgpRecord = parseBgp(subtype); + MRTRecord bgpRecord = parseBgp(header, record, subtype); if ((bgpRecord) != null) { return bgpRecord; } @@ -261,7 +272,7 @@ record = null; * Safely read from input streams that can be blocked or slow (e.g. compressed streams). * @return the total of bytes read from the input stream or -1 if EOF is first found */ - private static int readFromInputStream(BufferedInputStream bis, byte[] output, int length) throws IOException { + private static int readFromInputStream(InputStream bis, byte[] output, int length) throws IOException { int remaining = length; int read; @@ -270,7 +281,7 @@ private static int readFromInputStream(BufferedInputStream bis, byte[] output, i return ((read == -1 && remaining == length) ? -1 : length - remaining); } - private MRTRecord parseTableDump(int subtype) throws Exception { + private MRTRecord parseTableDump(byte[] header, byte[] record, int subtype) throws Exception { switch (subtype) { case MRTConstants.AFI_IPv4: case MRTConstants.AFI_IPv6: @@ -282,13 +293,15 @@ private MRTRecord parseTableDump(int subtype) throws Exception { } - private MRTRecord parseBgp(int subtype) throws Exception { + private MRTRecord parseBgp(byte[] header, byte[] record, int subtype) throws Exception { //Based on https://tools.ietf.org/html/rfc1771 - switch (subtype){ - case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: - return getBgpUpdate(); - case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE: - return new KeepAlive(header, record); + // https://tools.ietf.org/html/rfc6396 + switch (subtype) { + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_NULL: + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_PREF_UPDATE: + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_SYNC: + return new MRTRecord(header, record); + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE: int offset = 0; int asSize = 2; @@ -313,27 +326,42 @@ private MRTRecord parseBgp(int subtype) throws Exception { MRTConstants.UPDATE_STR_BGP, header, record); - default: - return new MRTRecord(header, record); - } - } + } - private MRTRecord getBgpUpdate() throws Exception{ - int offset = 0; - int asSize = 2; - int addrSize = 4; + if (subtype >= MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE && + subtype <= MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE) { - AS srcAs = new AS(RecordAccess.getUINT(record, offset, asSize)); - offset = asSize; + if (record.length < 12) { + throw new BGPFileReaderException( + "Not enough bytes to read common BGP fields (at least 12 are needed): ", record); + } + final AS peerAS = new AS(Arrays.copyOfRange(record, 0, 2)); + final InetAddress peerIP = InetAddress.getByAddress(Arrays.copyOfRange(record, 2, 6)); + final AS localAS = new AS(Arrays.copyOfRange(record, 6, 8)); + final InetAddress localIP = InetAddress.getByAddress(Arrays.copyOfRange(record, 8, 12)); - InetAddress srcIP = InetAddress.getByAddress(RecordAccess.getBytes(record, offset, addrSize)); - offset += addrSize; + switch (subtype) { + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: + return getBgpUpdate(header, record, peerAS, peerIP); - AS dstAs = new AS(RecordAccess.getUINT(record, offset, asSize)); - offset +=asSize; + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_OPEN: + final long bgpId = RecordAccess.getUINT(record, 12 + 5, 4); + return new Open(header, record, peerIP, peerAS, bgpId); - InetAddress dstIP = InetAddress.getByAddress(RecordAccess.getBytes(record, offset, addrSize)); - offset += addrSize; + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY: + return new Notification(header, record, peerIP, peerAS); + + case MRTConstants.BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE: + return new KeepAlive(header, record, peerAS, peerIP, localAS, localIP); + } + } + + return new MRTRecord(header, record); + } + + private MRTRecord getBgpUpdate(byte[] header, byte[] record, AS peerAS, InetAddress peerIP) throws Exception{ + int offset = 12; + final int asSize = 2; long wSize = RecordAccess.getUINT(record, offset, 2); offset += 2; @@ -341,11 +369,11 @@ private MRTRecord getBgpUpdate() throws Exception{ // WITHDRAWS if(wSize > 0) { // Withdraw if the size > than 0. for (int i = 0; i < wSize;) { - Nlri wNlri = new Nlri(record, offset, 1); - offset += wNlri.getOffset(); - i += wNlri.getOffset(); + Prefix prefix = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); + offset += prefix.getOffset(); + i += prefix.getOffset(); - Withdraw withdraw = new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix(),MRTConstants.UPDATE_STR_BGP); + Withdraw withdraw = new Withdraw(header, record, peerIP, peerAS, prefix, MRTConstants.UPDATE_STR_BGP); recordFifo.add(withdraw); } }else{ // Advertisments @@ -356,7 +384,7 @@ private MRTRecord getBgpUpdate() throws Exception{ if(attrLen > 0){ - Attributes attributes = null; + Attributes attributes; try { attributes = new Attributes(record, attrLen, offset,asSize); } catch (RFC4893Exception rfce) { @@ -364,23 +392,21 @@ private MRTRecord getBgpUpdate() throws Exception{ // piggyback peer and time info // rfce.setTimestamp(this.time); - rfce.setPeer(srcIP); - rfce.setAS(srcAs); + rfce.setPeer(peerIP); + rfce.setAS(peerAS); throw rfce; - } catch (Exception e) { - throw e; } - //Process MP_REACH and MP_UNREACH - processReachAndUnreach(attributes, srcIP, srcAs, MRTConstants.UPDATE_STR_BGP); + //Process MP_REACH and MP_UNREACH + processReachAndUnreach(header, record, attributes, peerIP, peerAS, MRTConstants.UPDATE_STR_BGP); offset += attrLen; while (offset < record.length) { - Nlri aNlri = new Nlri(record, offset, 1); + Prefix aNlri = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); offset += aNlri.getOffset(); - recordFifo.add(new Advertisement(header, record, srcIP, srcAs, - aNlri.toPrefix(), attributes, MRTConstants.UPDATE_STR_BGP)); + recordFifo.add(new Advertisement(header, record, peerIP, peerAS, + aNlri, attributes, MRTConstants.UPDATE_STR_BGP)); } } } @@ -388,13 +414,12 @@ private MRTRecord getBgpUpdate() throws Exception{ return recordFifo.remove(); } - private MRTRecord parseBgp4mp(int subtype) throws Exception { + private MRTRecord parseBgp4mp(byte[] header, byte[] record, int subtype) throws Exception { // route_btoa.System_err_println("parseBgp4mp("+MRTConstants.mpSubType(subtype)+")"); switch (subtype) { case MRTConstants.BGP4MP_MESSAGE: case MRTConstants.BGP4MP_MESSAGE_AS4: - return parseBgp4Update((subtype == MRTConstants.BGP4MP_MESSAGE) ? 2 - : 4); + return parseBgp4mpMessage(header, record, (subtype == MRTConstants.BGP4MP_MESSAGE) ? 2 : 4); /* * TODO @@ -405,25 +430,45 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { */ case MRTConstants.BGP4MP_ENTRY: - return parseBgp4Entry(RecordAccess.getU16(record, 6)); + return parseBgp4Entry(header, record, RecordAccess.getU16(record, 6)); case MRTConstants.BGP4MP_STATE_CHANGE: { /* - * 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 - * 9 0 1 + * 0 1 2 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Peer AS number | Local AS number | + * | Peer AS Number | Local AS Number | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Interface Index | Address Family | + * | Interface Index | Address Family | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Peer IP address (variable) | + * | Peer IP Address (variable) | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Local IP address (variable) | + * | Local IP Address (variable) | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Old State | New State | + * | Old State | New State | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ - + if (record.length < 20) { + if (lenient && record.length == 8) { + // seems like known zebra/quagga 8-byte state change bug + route_btoa.System_err_println("8-byte long BGP4MP_STATE_CHANGE; parsing accordingly"); + final AS peerAs = new AS(RecordAccess.getBytes(record, 0, 2)); + final AS localAs = new AS(RecordAccess.getBytes(record, 2, 2)); + int oldState = RecordAccess.getU16(record, 4); + int newState = RecordAccess.getU16(record, 6); + return new StateChange( + RecordAccess.getU32(header, 0), + unknownAddress(MRTConstants.AFI_IPv4), + peerAs, + oldState, + newState, + MRTConstants.UPDATE_STR_BGP4MP, + header, + record); + } else { + throw new BGPFileReaderException("BGP4MP state change record smaller than 20 bytes: ", record); + } + } int afi = RecordAccess.getU16(record, 6); int addrOffs = 8; int addrSize = (afi == MRTConstants.AFI_IPv4) ? 4 : 16; @@ -492,7 +537,7 @@ private MRTRecord parseBgp4mp(int subtype) throws Exception { return new MRTRecord(header, record); } - private void parsePeerIndexTable() throws Exception { + private void parsePeerIndexTable(byte[] record) throws Exception { /* * route_btoa.System_err_println("in BGPFileReader.parsePeerIndexTable\nheader:"); * RecordAccess.dump(header); route_btoa.System_err_println("record"); @@ -512,14 +557,14 @@ private void parsePeerIndexTable() throws Exception { int here = 0; // long CollectorBGPId = RecordAccess.getU32 (this.record,here); here += 4; - int ViewNameLen = RecordAccess.getU16(this.record, here); + int ViewNameLen = RecordAccess.getU16(record, here); here += 2; // String ViewName = null; if (ViewNameLen > 0) { // TODO extract ViewName here += ViewNameLen; } - int PeerCount = RecordAccess.getU16(this.record, here); + int PeerCount = RecordAccess.getU16(record, here); here += 2; /* @@ -551,23 +596,23 @@ private void parsePeerIndexTable() throws Exception { * Bit 0 - unset for IPv4 Peer IP address, set for IPv6 Bit 1 - * unset when Peer AS field is 16 bits, set when it's 32 bits */ - int peerType = RecordAccess.getU8(this.record, here++); - bgpId[i] = RecordAccess.getU32(this.record, here); + int peerType = RecordAccess.getU8(record, here++); + bgpId[i] = RecordAccess.getU32(record, here); here += 4; if ((peerType & 0x01) == 0) { peerIP[i] = InetAddress.getByAddress(RecordAccess.getBytes( - this.record, here, 4)); + record, here, 4)); here += 4; } else { peerIP[i] = InetAddress.getByAddress(RecordAccess.getBytes( - this.record, here, 16)); + record, here, 16)); here += 16; } if ((peerType & 0x02) == 0) { - peerAS[i] = new AS(RecordAccess.getU16(this.record, here)); + peerAS[i] = new AS(RecordAccess.getU16(record, here)); here += 2; } else { - peerAS[i] = new AS(RecordAccess.getU32(this.record, here)); + peerAS[i] = new AS(RecordAccess.getU32(record, here)); here += 4; } @@ -581,33 +626,33 @@ private void parsePeerIndexTable() throws Exception { private org.javamrt.mrt.AS peerAS[] = null; private java.net.InetAddress peerIP[] = null; - private void parseTableDumpv2(int NLRItype) throws Exception { + private void parseTableDumpv2(byte[] header, byte[] record, int nlriType) throws Exception { if (Debug.compileDebug) { - Debug.printf("parseTableDumpv2(%d)\nheader:", NLRItype); + Debug.printf("parseTableDumpv2(%d)\nheader:", nlriType); Debug.dump(header); Debug.println("record:"); Debug.dump(record); } int offset = 0; - long sequenceNo = RecordAccess.getU32(this.record, offset); + long sequenceNo = RecordAccess.getU32(record, offset); offset = 4; - Nlri nlri = new Nlri(this.record, offset, NLRItype); + Prefix nlri = lenient ? new LenientPrefix(record, offset, nlriType) : new Nlri(record, offset, nlriType); offset += nlri.getOffset(); - int entryCount = RecordAccess.getU16(this.record, offset); + int entryCount = RecordAccess.getU16(record, offset); offset += 2; if (debug) { route_btoa.System_err_println("Sequence = " + sequenceNo); - route_btoa.System_err_println("NLRI = " + nlri.toPrefix().toString() + route_btoa.System_err_println("NLRI = " + nlri.toString() + " [" + nlri.getOffset() + "]"); route_btoa.System_err_println("entries = " + entryCount); } for (int i = 0; i < entryCount; i++) { - int peerIndex = RecordAccess.getU16(this.record, offset); + int peerIndex = RecordAccess.getU16(record, offset); if (debug) { route_btoa.System_err_println(String.format("peerIndex = %d; peer = %s(%s)\n", @@ -619,7 +664,7 @@ private void parseTableDumpv2(int NLRItype) throws Exception { // // long timeOrig=RecordAccess.getU32(this.record,offset); offset += 4; - int attrLen = RecordAccess.getU16(this.record, offset); + int attrLen = RecordAccess.getU16(record, offset); offset += 2; Attributes attributes = new Attributes(record, attrLen, offset,4); offset += attrLen; @@ -639,12 +684,12 @@ private void parseTableDumpv2(int NLRItype) throws Exception { } //Process MP_REACH and MP_UNREACH - private void processReachAndUnreach(Attributes attributes, InetAddress srcIP, AS srcAs, String updateStrType) throws Exception{ + private void processReachAndUnreach(byte[] header, byte[] record, Attributes attributes, InetAddress srcIP, AS srcAs, String updateStrType) throws Exception{ MpUnReach mpUnreach = (MpUnReach) attributes.getAttribute(MRTConstants.ATTRIBUTE_MP_UNREACH); if (mpUnreach != null) { for (Nlri mpu : mpUnreach.getNlri()) { - recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu.toPrefix(), updateStrType)); + recordFifo.add(new Withdraw(header, record, srcIP, srcAs, mpu, updateStrType)); } } @@ -653,37 +698,78 @@ private void processReachAndUnreach(Attributes attributes, InetAddress srcIP, AS if (mpReach != null) { if (Debug.compileDebug) Debug.printf("Has MP_REACH (%s)\n",mpReach.getNlri()); for (Nlri mpu : mpReach.getNlri()) { - recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu - .toPrefix(), attributes, updateStrType)); + recordFifo.add(new Advertisement(header, record, srcIP, srcAs, mpu, + attributes, updateStrType)); } } } - private MRTRecord parseBgp4Update(int asSize) throws Exception { - // Bgp4Update update; - - // TODO reconocer los AS de 4 bytes aquĂ­ - - int offset = 0; - AS srcAs = new AS(RecordAccess.getUINT(record, offset, asSize)); offset = asSize; - AS dstAs = new AS(RecordAccess.getUINT(record, offset, asSize)); offset +=asSize; - int iface = RecordAccess.getU16(record, offset); offset += 2; - int afi = RecordAccess.getU16(record, offset); offset += 2; -// int offset = 2 * asSize + 4; + private MRTRecord parseBgp4mpMessage(byte[] header, byte[] record, int asSize) throws Exception { + /* + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Peer AS Number | Local AS Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Peer IP Address (variable) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Local IP Address (variable) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Message... (variable) + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + Figure 12: BGP4MP_MESSAGE Subtype + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Peer AS Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Local AS Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Peer IP Address (variable) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Local IP Address (variable) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Message... (variable) + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + Figure 13: BGP4MP_MESSAGE_AS4 Subtype + */ + + final int markerPosition = lenient ? + findBgpMarker(record, asSize) : + record.length; + + final ByteBuffer buffer = ByteBuffer.wrap(record, 0, markerPosition); + + AS srcAs = notLenientOr(buffer.remaining() >= asSize) ? new AS(RecordAccess.getUINT(buffer, asSize)) : new AS(0L); + AS dstAs = notLenientOr(buffer.remaining() >= asSize) ? new AS(RecordAccess.getUINT(buffer, asSize)) : new AS(0L); + int iface = notLenientOr(buffer.remaining() >= 2) ? RecordAccess.getU16(buffer) : 0; + int afi = notLenientOr(buffer.remaining() >= 2) ? RecordAccess.getU16(buffer) : 0; + if (afi != MRTConstants.AFI_IPv4 && afi != MRTConstants.AFI_IPv6) { + final String message = String.format("AFI=%d is unknown", afi); + if (lenient) { + route_btoa.System_err_println(message + "; assuming IPv4"); + } else { + throw new BGPFileReaderException(message, record); + } + } int addrSize = (afi == MRTConstants.AFI_IPv6) ? 16 : 4; - InetAddress srcIP = InetAddress.getByAddress(RecordAccess.getBytes( - record, offset, addrSize)); - offset += addrSize; - InetAddress dstIP = InetAddress.getByAddress(RecordAccess.getBytes( - record, offset, addrSize)); - offset += addrSize; - + InetAddress srcIP = notLenientOr(buffer.remaining() >= addrSize) ? + InetAddress.getByAddress(RecordAccess.getBytes(buffer, addrSize)) : + unknownAddress(afi); + InetAddress dstIP = notLenientOr(buffer.remaining() >= addrSize) ? + InetAddress.getByAddress(RecordAccess.getBytes(buffer, addrSize)) : + unknownAddress(afi); /* * skip the following 16 bytes which are the signature of the BGP header */ - offset += 16; + int offset = buffer.position() + BGP_MARKER.length; int bgpSize = RecordAccess.getU16(record, offset); offset += 2; int bgpType = RecordAccess.getU8(record, offset); offset ++; @@ -703,7 +789,7 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { } switch (bgpType) { case MRTConstants.BGP4MSG_KEEPALIVE: - return new KeepAlive(header, record); + return new KeepAlive(header, record, srcAs, srcIP, dstAs, dstIP); case MRTConstants.BGP4MSG_OPEN: int offsetForOpen = offset+5; @@ -734,20 +820,27 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { for (int i = 0; i < unfeasibleLen;) { //The withdraws out of the Attributs are going to be always ipv4 - Nlri wNlri = new Nlri(record, offset, 1); + Prefix wNlri = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); offset += wNlri.getOffset(); i += wNlri.getOffset(); recordFifo - .add(new Withdraw(header, record, srcIP, srcAs, wNlri.toPrefix(),MRTConstants.UPDATE_STR_BGP4MP)); + .add(new Withdraw(header, record, srcIP, srcAs, wNlri,MRTConstants.UPDATE_STR_BGP4MP)); } int attrLen = RecordAccess.getU16(record, offset); if (Debug.compileDebug) Debug.printf("attrLen = %d, offset =%d (%d)\n",attrLen,offset,offset+attrLen+2); offset += 2; + if (offset + attrLen > record.length) { + if (lenient) { + route_btoa.System_err_println("Attribute length goes over the record length, truncating"); + attrLen = record.length - offset; + } + } + + Attributes attributes = null; if (attrLen > 0) { - Attributes attributes = null; try { attributes = new Attributes(record, attrLen, offset,asSize); } catch (RFC4893Exception rfce) { @@ -758,12 +851,10 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { rfce.setPeer(srcIP); rfce.setAS(srcAs); throw rfce; - } catch (Exception e) { - throw e; } // Process MP_REACH and MP_UNREACH - processReachAndUnreach(attributes, srcIP, srcAs, MRTConstants.UPDATE_STR_BGP4MP); + processReachAndUnreach(header, record, attributes, srcIP, srcAs, MRTConstants.UPDATE_STR_BGP4MP); // MpUnReach mpUnreach = (MpUnReach) attributes @@ -802,23 +893,64 @@ private MRTRecord parseBgp4Update(int asSize) throws Exception { if (Debug.compileDebug) Debug.debug("offset(%d) record.length (%d)\n",offset,record.length); while (offset < record.length) { //The announcements out of the Attributs are going to be always ipv4 - Nlri aNlri = new Nlri(record, offset, 1); + Prefix aNlri = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); offset += aNlri.getOffset(); recordFifo.add(new Advertisement(header, record, srcIP, srcAs, - aNlri.toPrefix(), attributes, MRTConstants.UPDATE_STR_BGP4MP)); + aNlri, attributes, MRTConstants.UPDATE_STR_BGP4MP)); } } if (recordFifo.isEmpty()) { if (Debug.compileDebug) if (Debug.doDebug) throw new BGPFileReaderException("recordFifo empty!", header); - return null; + return new Bgp4Update(header, record, srcIP, srcAs, null, attributes, ""); } return recordFifo.remove(); } - private MRTRecord parseBgp4Entry(int AFI) throws Exception { + private InetAddress unknownAddress(int afi) { + try { + if (afi == MRTConstants.AFI_IPv6) return InetAddress.getByAddress(UNKNOWN_IPV6); + else return InetAddress.getByAddress(UNKNOWN_IPV4); + } catch (UnknownHostException e) { + // should not happen + throw new RuntimeException(e); + } + } + + private int findBgpMarker(byte[] record, int asSize) throws BGPFileReaderException { + final int endOfSearch = record.length - BGP_MARKER.length; + if (endOfSearch < 0) { + throw new BGPFileReaderException("BGP4MP message is too small: ", record); + } + final int expectedPositionIpv4 = 2 * asSize + 2 + 2 + 2 * 4; + final int expectedPositionIpv6 = 2 * asSize + 2 + 2 + 2 * 16; + + if (expectedPositionIpv4 <= endOfSearch && isBgpMarkerAt(record, expectedPositionIpv4)) { + return expectedPositionIpv4; + } else if (expectedPositionIpv6 <= endOfSearch && isBgpMarkerAt(record, expectedPositionIpv6)) { + return expectedPositionIpv6; + } else { + int i = 0; + while (i < endOfSearch) { + if (isBgpMarkerAt(record, i)) { + route_btoa.System_err_println(String.format("BGP marker found at offset %d; record re-aligned%n", i)); + return i; + } else { + i++; + } + } + } + throw new BGPFileReaderException("BGP4MP message without BGP marker: ", record); + } + + private boolean isBgpMarkerAt(byte[] bytes, int offset) { + return bytes[offset] == BGP_MARKER[0] + && Arrays.equals(Arrays.copyOfRange(bytes, offset, offset + BGP_MARKER.length), BGP_MARKER); + } + + private MRTRecord parseBgp4Entry(byte[] header, byte[] record, int AFI) throws Exception { /* * TODO: this doesn't work as expected yet */ @@ -847,7 +979,7 @@ private MRTRecord parseBgp4Entry(int AFI) throws Exception { InetAddress nextHop = InetAddress.getByAddress(RecordAccess.getBytes( record, offset, addrSize)); offset += addrSize; - Nlri prefix = new Nlri(record, offset, AFI); + Prefix prefix = lenient ? new LenientPrefix(record, offset, AFI) : new Nlri(record, offset, AFI); offset += prefix.getOffset(); Attributes attrs = new Attributes(record, record.length - offset, @@ -877,4 +1009,16 @@ public boolean eof() { return this.eof; } + public static void setLenient(boolean isLenient) { + lenient = isLenient; + } + + public static boolean isLenient() { + return lenient; + } + + public static boolean notLenientOr(boolean condition) { + return !lenient || condition; + } + } diff --git a/src/main/java/org/javamrt/mrt/Community.java b/src/main/java/org/javamrt/mrt/Community.java index f6f2c7c..2bb4ef8 100644 --- a/src/main/java/org/javamrt/mrt/Community.java +++ b/src/main/java/org/javamrt/mrt/Community.java @@ -8,6 +8,8 @@ import org.javamrt.utils.RecordAccess; +import java.util.Arrays; + public class Community implements Attribute { static final private int BGP_ATTR_COMMUNITY_NO_EXPORT = 0xFFFFFF01; @@ -23,8 +25,7 @@ private Community() { public Community(byte[] buffer) { community = new byte[buffer.length]; - for (int i = 0; i < buffer.length; i++) - community[i] = buffer[i]; + System.arraycopy(buffer, 0, community, 0, buffer.length); } public static Community empty() { @@ -66,12 +67,7 @@ else if (u32Community == BGP_ATTR_COMMUNITY_NOPEER) } public boolean equals(Community other) { - if (this.community.length != other.community.length) - return false; - for (int i = 0; i < this.community.length; i++) - if (this.community[i] != other.community[i]) - return false; - return true; + return Arrays.equals(this.community, other.community); } public boolean equals(Object o) { diff --git a/src/main/java/org/javamrt/mrt/KeepAlive.java b/src/main/java/org/javamrt/mrt/KeepAlive.java index 61de4dc..d41e484 100644 --- a/src/main/java/org/javamrt/mrt/KeepAlive.java +++ b/src/main/java/org/javamrt/mrt/KeepAlive.java @@ -6,15 +6,61 @@ package org.javamrt.mrt; -public class KeepAlive extends MRTRecord -{ - KeepAlive (byte[]header, byte[]record) - { - super (header, record); - } - - public String toString () - { - return "KEEP_ALIVE"; - } +import java.net.InetAddress; +import java.util.Objects; + +public class KeepAlive extends MRTRecord { + private final AS peerAs; + private final InetAddress peerIp; + private final AS localAs; + private final InetAddress localIp; + + KeepAlive(byte[] header, byte[] record, AS peerAs, InetAddress peerIp, AS localAs, InetAddress localIp) { + super(header, record); + this.peerAs = peerAs; + this.peerIp = peerIp; + this.localAs = localAs; + this.localIp = localIp; + } + + @Override + public InetAddress getPeer() { + return peerIp; + } + + @Override + public AS getPeerAS() { + return peerAs; + } + + public AS getLocalAs() { + return localAs; + } + + public InetAddress getLocalIp() { + return localIp; + } + + @Override + public String toString() { + return String.format("KEEP_ALIVE|%d|%s|%s", + getTime(), MRTConstants.ipAddressString(peerIp, false), peerAs); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + final KeepAlive keepAlive = (KeepAlive) o; + return getTime() == keepAlive.getTime() && + Objects.equals(peerAs, keepAlive.peerAs) && + Objects.equals(peerIp, keepAlive.peerIp) && + Objects.equals(localAs, keepAlive.localAs) && + Objects.equals(localIp, keepAlive.localIp); + } + + @Override + public int hashCode() { + return Objects.hash(peerAs, peerIp, localAs, localIp); + } } diff --git a/src/main/java/org/javamrt/mrt/LenientPrefix.java b/src/main/java/org/javamrt/mrt/LenientPrefix.java new file mode 100644 index 0000000..2bc4b80 --- /dev/null +++ b/src/main/java/org/javamrt/mrt/LenientPrefix.java @@ -0,0 +1,36 @@ +package org.javamrt.mrt; + +import org.javamrt.progs.route_btoa; +import org.javamrt.utils.RecordAccess; + +import java.net.InetAddress; + +public class LenientPrefix extends Prefix { + + public LenientPrefix(byte[] record, int offset, int afi) { + super(); + maskLength = RecordAccess.getU8(record, offset++); + if (afi != MRTConstants.AFI_IPv4 && afi != MRTConstants.AFI_IPv6) { + route_btoa.System_err_println("Unknown AFI: " + afi + ". Assuming IPv4."); + } + base = new byte[afi == MRTConstants.AFI_IPv6 ? 16 : 4]; + mask = new byte[afi == MRTConstants.AFI_IPv6 ? 16 : 4]; + if (offset + nrBytes() > record.length) { + throw new ArrayIndexOutOfBoundsException(String.format( + "Not enough input bytes (%s) to read NLRI prefix (%d bytes from offset %d)", + RecordAccess.arrayToString(record), nrBytes(), offset)); + } + System.arraycopy(record, offset, base, 0, nrBytes()); + isInIpv4EmbeddedIpv6Format = MRTConstants.isInIpv4EmbeddedIpv6Format(this.base); + } + + @Override + public InetAddress getBroadcastAddress() { + throw new UnsupportedOperationException("Not implemented in a lenient prefix"); + } + + @Override + protected boolean matches(byte[] addr) { + throw new UnsupportedOperationException("Not implemented in a lenient prefix"); + } +} diff --git a/src/main/java/org/javamrt/mrt/MRTConstants.java b/src/main/java/org/javamrt/mrt/MRTConstants.java index 3135260..b557bf1 100644 --- a/src/main/java/org/javamrt/mrt/MRTConstants.java +++ b/src/main/java/org/javamrt/mrt/MRTConstants.java @@ -10,6 +10,7 @@ import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; +import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -122,14 +123,19 @@ public static String asPathString(int type) { public static final int BGP4MSG_REFRESH = 5; public static final int BGPDUMP_TYPE_MRTD_BGP = 5; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_NULL= 0; public static final int BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE= 1; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_PREF_UPDATE= 2; public static final int BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE = 3; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_SYNC = 4; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_OPEN = 5; + public static final int BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY = 6; public static final int BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE = 7; public static final String UPDATE_STR_BGP4MP = "BGP4MP"; public static final String UPDATE_STR_BGP = "BGP"; - public static final String mpSubType(int s) { + public static String mpSubType(int s) { switch (s) { case BGP4MP_STATE_CHANGE: return "BGP4MP_STATE_CHANGE"; @@ -148,7 +154,7 @@ public static final String mpSubType(int s) { } } - public static final String attrFlags(byte attr) { + public static String attrFlags(byte attr) { String result = ""; if (0 != (attr & BGP_ATTR_FLAG_OPTIONAL)) result = result + "OPTIONAL "; if (0 != (attr & BGP_ATTR_FLAG_TRANS)) result = result + "TRANSITIVE "; @@ -167,7 +173,7 @@ public static final String attrFlags(byte attr) { "BGP4MSG_REFRESH" }; - public static final String bgpType(int bgpType) { + public static String bgpType(int bgpType) { try { return bgpTypes[bgpType]; } catch (Exception e) { @@ -187,7 +193,7 @@ public static final String bgpType(int bgpType) { * * It looks if it is an ipv4 embedded in ipv6 */ - public static final boolean isInIpv4EmbeddedIpv6Format(InetAddress ia, int afi){ + public static boolean isInIpv4EmbeddedIpv6Format(InetAddress ia, int afi){ if(ia instanceof Inet4Address && afi == AFI_IPv6){ return true; } @@ -204,7 +210,7 @@ public static final boolean isInIpv4EmbeddedIpv6Format(InetAddress ia, int afi){ * * It looks if it is an ipv4 embedded in ipv6 */ - public static final boolean isInIpv4EmbeddedIpv6Format(byte[] base) { + public static boolean isInIpv4EmbeddedIpv6Format(byte[] base) { try { InetAddress ia = InetAddress.getByAddress(base); if (ia instanceof Inet4Address && base.length == IPv6_LENGTH) { @@ -213,8 +219,8 @@ public static final boolean isInIpv4EmbeddedIpv6Format(byte[] base) { if (ia instanceof Inet6Address && ((Inet6Address)ia).isIPv4CompatibleAddress()) { return true; } - }catch(Exception e) { - e.printStackTrace(); + } catch (UnknownHostException e) { + throw new RuntimeException(e); } return false; } @@ -228,18 +234,12 @@ public static final boolean isInIpv4EmbeddedIpv6Format(byte[] base) { * * for all addresses, removes initial name */ - public static final String ipAddressString(InetAddress inetAddress, boolean isIpv4EmbeddedIpv6) { -// String ipAddressString = inetAddress.getHostAddress(). -// // replaceFirst("^[^/]*/", ""). -// replaceFirst(":0(:0)+", "::"). -// replaceFirst("^0:", ""). -// replaceFirst(":::", "::"); + public static String ipAddressString(InetAddress inetAddress, boolean isIpv4EmbeddedIpv6) { + if (inetAddress == null) return ""; String ipAddressString = inetAddress.getHostAddress(); try { - if (isIpv4EmbeddedIpv6) { - if(inetAddress instanceof Inet4Address) ipAddressString = "::ffff:" + ipAddressString; else if (inetAddress instanceof Inet6Address){ @@ -252,19 +252,19 @@ else if (inetAddress instanceof Inet6Address){ if (ipAddressString.equals(":")) ipAddressString = "::"; - }catch(Exception e){ - e.printStackTrace(); + } catch (UnknownHostException e) { + throw new RuntimeException(e); } return ipAddressString; } - public static final String ipAddressString(byte[] ipAddressBase, boolean isIpv4EmbeddedIpv6){ - try{ - return ipAddressString(InetAddress.getByAddress(ipAddressBase), isIpv4EmbeddedIpv6); - }catch(Exception e){ - e.printStackTrace(); - return new String("??/"); - } - } + public static String ipAddressString(byte[] ipAddressBase, boolean isIpv4EmbeddedIpv6) { + try { + return ipAddressString(InetAddress.getByAddress(ipAddressBase), isIpv4EmbeddedIpv6); + } catch (UnknownHostException e) { + e.printStackTrace(); + return "??/"; + } + } } diff --git a/src/main/java/org/javamrt/mrt/MRTRecord.java b/src/main/java/org/javamrt/mrt/MRTRecord.java index 82c9874..fd0ff1d 100644 --- a/src/main/java/org/javamrt/mrt/MRTRecord.java +++ b/src/main/java/org/javamrt/mrt/MRTRecord.java @@ -13,8 +13,8 @@ public class MRTRecord { - protected byte[] header; - protected byte[] body; + final protected byte[] header; + final protected byte[] body; protected MRTRecord(byte[] header, byte[] body) { this.header = header; diff --git a/src/main/java/org/javamrt/mrt/MalformedBgpStreamException.java b/src/main/java/org/javamrt/mrt/MalformedBgpStreamException.java new file mode 100644 index 0000000..163f552 --- /dev/null +++ b/src/main/java/org/javamrt/mrt/MalformedBgpStreamException.java @@ -0,0 +1,18 @@ +package org.javamrt.mrt; + +import java.io.IOException; + +/** + * Thrown if the input stream of data is broken in a way that is not possible to read any more MRT records from it. + * Therefore you should not try to call BGPFileReader.readNext() on the same input anymore. + * All other exceptions are potentially local to the MRT record they are thrown for, so the readNext() should be possible. + */ +public class MalformedBgpStreamException extends IOException { + public MalformedBgpStreamException(Throwable e) { + super(e); + } + + public MalformedBgpStreamException(String s) { + super(s); + } +} diff --git a/src/main/java/org/javamrt/mrt/Nlri.java b/src/main/java/org/javamrt/mrt/Nlri.java index 3416034..e14315f 100644 --- a/src/main/java/org/javamrt/mrt/Nlri.java +++ b/src/main/java/org/javamrt/mrt/Nlri.java @@ -6,13 +6,13 @@ package org.javamrt.mrt; +import org.javamrt.progs.route_btoa; import org.javamrt.utils.RecordAccess; //IPv4/IPv6 address and mask length extractor from NLRI field in BGP public class Nlri - extends Prefix -{ + extends Prefix { // from Prefix.java // byte[] addr; // int maskLength; @@ -32,41 +32,29 @@ public Nlri (byte[]record, int offset, int afi) | Prefix (variable) | +---------------------------+ */ - if (afi==MRTConstants.AFI_IPv4) - this.base=new byte[4]; //deciding the type or address - else if (afi==MRTConstants.AFI_IPv6) - this.base=new byte[16]; - else - throw new Exception("NLRI: unknown Address Family: "+afi); - this.maskLength=RecordAccess.getU8(record, offset); //reading length byte (bits) - offset++; - this.bytes = 0; - if (this.maskLength > 0) - { - this.bytes=(this.maskLength-1)/8+1; //converting bits into bytes and deciding number of bytes to be read - } - - int i=0; - - while (i < bytes) - this.base[i++] = (byte)RecordAccess.getU8(record,offset++); //extracting byte by byte of prefix field - //and adding to address array - while (i < this.base.length) //filling up with zeros to complete the length of IPv4/v6 address - this.base[i++] = 0; - - setPrefix(this.base,this.maskLength); - } - - - public Prefix toPrefix() - { - return (Prefix)this; - } - - public int getOffset() //returning the record offset - { - return this.bytes+1; - } - - private int bytes; + if (afi == MRTConstants.AFI_IPv4) + this.base = new byte[4]; //deciding the type or address + else if (afi == MRTConstants.AFI_IPv6) + this.base = new byte[16]; + else + throw new Exception("NLRI: unknown Address Family: " + afi); + this.maskLength = RecordAccess.getU8(record, offset); //reading length byte (bits) + if (afi == MRTConstants.AFI_IPv4 && maskLength > 32) { + route_btoa.System_err_println(String.format("Bit length %d is not feasible for IPv4 prefix (offset %d)%n", maskLength, offset)); + throw new BGPFileReaderException(String.format( + "Bit length %d is not feasible for IPv4 prefix (offset %d)", maskLength, offset), record); + } else if (afi == MRTConstants.AFI_IPv6 && maskLength > 128) { + route_btoa.System_err_println(String.format("Bit length %d is not feasible for IPv6 prefix (offset %d)%n", maskLength, offset)); + throw new BGPFileReaderException(String.format( + "Bit length %d is not feasible for IPv6 prefix (offset %d)", maskLength, offset), record); + } + offset++; + if (offset + nrBytes() > record.length) { + throw new ArrayIndexOutOfBoundsException(String.format( + "Not enough input bytes (%s) to read NLRI prefix (%d bytes from offset %d)", + RecordAccess.arrayToString(record), nrBytes(), offset)); + } + System.arraycopy(record, offset, base, 0, nrBytes()); + setPrefix(this.base, this.maskLength); + } } diff --git a/src/main/java/org/javamrt/mrt/Prefix.java b/src/main/java/org/javamrt/mrt/Prefix.java index a173687..ed25145 100644 --- a/src/main/java/org/javamrt/mrt/Prefix.java +++ b/src/main/java/org/javamrt/mrt/Prefix.java @@ -14,7 +14,7 @@ public class Prefix implements Comparable, Comparator { - private boolean isInIpv4EmbeddedIpv6Format = false; + protected boolean isInIpv4EmbeddedIpv6Format = false; // for Nlri.java protected byte[] base; @@ -25,14 +25,7 @@ public class Prefix implements Comparable, Comparator { // protected InetAddress broadcastAddress; protected int maskLength; - protected Prefix() { - //baseAddress = null; - //broadcastAddress = null; - this.base = null; - this.mask = null; - this.broadcast = null; - this.maskLength = 0; - } + protected Prefix() {/* for inheritance*/} public Prefix(InetAddress addr, int maskLength) throws PrefixMaskException, UnknownHostException { @@ -75,10 +68,7 @@ protected void setPrefix(byte[] addr, int maskLen) throw new PrefixMaskException(this.base, this.maskLength); } */ - for (int n = 0; n < this.mask.length; n++) { - this.base[n] = addr[n]; - this.mask[n] = 0; - } + System.arraycopy(addr, 0, this.base, 0, this.mask.length); for (int n = this.maskLength; n > 0; n--) { for (int i = 0; i < this.mask.length; i++) { byte carry = (byte) (this.mask[i] & 0x01); @@ -167,7 +157,7 @@ public String toString() { return MRTConstants.ipAddressString(this.base, isInIpv4EmbeddedIpv6Format). concat("/" + this.maskLength); } catch (Exception e) { - return new String("??/"+this.maskLength); + return "??/" + this.maskLength; } } @@ -219,4 +209,18 @@ public boolean isDefault() { return false; return true; } + + /** + * @return number of bytes required to represent this prefix + */ + public int nrBytes() { + return maskLength > 0 ? 1 + (maskLength - 1) / 8 : 0; + } + + /** + * @return the number of bytes needed to represent this prefix, plus one + */ + public int getOffset() { + return 1 + nrBytes(); + } } diff --git a/src/main/java/org/javamrt/mrt/PrefixMaskException.java b/src/main/java/org/javamrt/mrt/PrefixMaskException.java index 6fd52ee..e3e91d6 100644 --- a/src/main/java/org/javamrt/mrt/PrefixMaskException.java +++ b/src/main/java/org/javamrt/mrt/PrefixMaskException.java @@ -32,9 +32,10 @@ public PrefixMaskException(byte[] addr, int mask) } } - public String toString() { - return new String(description); - } + @Override + public String getMessage() { + return description; + } private static final long serialVersionUID = 1L; } diff --git a/src/main/java/org/javamrt/mrt/RFC4893.java b/src/main/java/org/javamrt/mrt/RFC4893.java index a1364f3..5a2d338 100755 --- a/src/main/java/org/javamrt/mrt/RFC4893.java +++ b/src/main/java/org/javamrt/mrt/RFC4893.java @@ -48,9 +48,19 @@ public static void replaceAS23456(byte[] buffer, ASPath aspath) * for the AS4_PATH attribute. */ - for (AS as4:as4path.path) { - if (as4 instanceof ASConfedSet || as4 instanceof ASConfedSequence) - throw new RFC4893Exception(MRTConstants.asConfedSequence, aspath,as4path); + for (AS as4 : as4path.path) { + if (as4 instanceof ASConfedSet || as4 instanceof ASConfedSequence) { + if (BGPFileReader.isLenient()) { + route_btoa.System_err_println(String.format("RFC4893 violation with AS4PATH containing %s%n" + + " while trying to modify: %s%n" + + " with 4 byte ASPATH: %s", + MRTConstants.asPathString(MRTConstants.asConfedSequence), + aspath, + as4path)); + } else { + throw new RFC4893Exception(MRTConstants.asConfedSequence, aspath,as4path); + } + } } if (DEBUG) { diff --git a/src/main/java/org/javamrt/mrt/RFC4893Exception.java b/src/main/java/org/javamrt/mrt/RFC4893Exception.java index 621c657..1709057 100644 --- a/src/main/java/org/javamrt/mrt/RFC4893Exception.java +++ b/src/main/java/org/javamrt/mrt/RFC4893Exception.java @@ -80,7 +80,8 @@ public ASPath getAS4Path() { return this.as4path; } - public String toString() { + @Override + public String getMessage() { if (peer == null || as == null) return String.format("RFC4893 violation @ %d: AS4PATH contains %s",this.timestamp,MRTConstants.asPathString(cause)); return String.format( diff --git a/src/main/java/org/javamrt/progs/route_btoa.java b/src/main/java/org/javamrt/progs/route_btoa.java index 8febd83..e9dc1f0 100755 --- a/src/main/java/org/javamrt/progs/route_btoa.java +++ b/src/main/java/org/javamrt/progs/route_btoa.java @@ -242,7 +242,9 @@ public static void System_err_println(String str) { if (outputErrToBuilder) { errBuilder.append(str).append(System.lineSeparator()); } else { + System.out.flush(); System.err.println(str); + System.err.flush(); } } diff --git a/src/main/java/org/javamrt/utils/RecordAccess.java b/src/main/java/org/javamrt/utils/RecordAccess.java index e848187..d77a4dd 100755 --- a/src/main/java/org/javamrt/utils/RecordAccess.java +++ b/src/main/java/org/javamrt/utils/RecordAccess.java @@ -6,6 +6,10 @@ package org.javamrt.utils; +import java.math.BigInteger; +import java.nio.ByteBuffer; +import java.util.Arrays; + public class RecordAccess { @@ -14,33 +18,20 @@ static public long getU32 (byte[] buffer,int offset) return getUINT(buffer, offset, 4); } - static public long getUINT (byte[]buffer, int offset,int size) - { - long result = 0; - // try { - for (int i = 0; i < size; i++) - { - result = ((result << 8) & 0xffffff00) + (buffer[offset + i] & 0xff); - } - /* - } catch (java.lang.ArrayIndexOutOfBoundsException aioobe) { - route_btoa.printStackTrace(aioobe); - route_btoa.System_err_println(String.format("Accessing %d bytes long buffer at pos %d",buffer.length,offset)); - dump(buffer); - route_btoa.exit(1); + static public long getUINT (byte[]buffer, int offset,int size) { + if (offset > buffer.length - size) { + throw new ArrayIndexOutOfBoundsException(String.format( + "Not enough bytes to read %d bytes from offset %d in %s", size, offset, arrayToString(buffer))); } - */ - return result; + return new BigInteger(1, Arrays.copyOfRange(buffer, offset, offset + size)).longValue(); } static public int getU16 (byte[]buffer, int offset) { - int result = 0; - for (int i = 0; i < 2; i++) - { - result = ((result << 8) & 0xff00) + (buffer[offset + i] & 0xff); - } - return result; + if (offset > buffer.length - 2) { + throw new ArrayIndexOutOfBoundsException("Not enough bytes to read U16 from offset " + offset + " in " + arrayToString(buffer)); + } + return ((buffer[offset] & 0xff) << 8) | (buffer[offset+1] & 0xff); } static public int getU8 (byte[]buffer, int offset) @@ -50,20 +41,22 @@ static public int getU8 (byte[]buffer, int offset) static public byte[] getBytes (byte[]buffer, int offset, int length) { - byte[]result = new byte[length]; - for (int i = 0; i < length; i++) - result[i] = buffer[offset + i]; - return result; + if (buffer.length < offset + length) { + throw new ArrayIndexOutOfBoundsException(String.format( + "Not enough bytes to read %d bytes from offset %d in %s", length, offset, arrayToString(buffer))); + } + return Arrays.copyOfRange(buffer, offset, offset + length); } static public String arrayToString(byte[] buffer) { - return arrayToString(buffer,0,buffer.length); + final int offset = Math.max(0, buffer.length - 128); + return arrayToString(buffer, offset, buffer.length - offset); } static public String arrayToString(byte[] buffer,int offset,int len) { - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); for (int i=offset - (offset % 8);i < offset+len;i++) @@ -111,4 +104,19 @@ static public void dump(byte[] buffer) dump(System.err,buffer,buffer.length); } + public static long getUINT(ByteBuffer buffer, int size) { + byte[] bytes = new byte[size]; + buffer.get(bytes); + return new BigInteger(1, bytes).longValue(); + } + + public static int getU16(ByteBuffer buffer) { + return buffer.getShort() & 0xFFFF; + } + + public static byte[] getBytes(ByteBuffer buffer, int size) { + byte[] bytes = new byte[size]; + buffer.get(bytes); + return bytes; + } } diff --git a/src/test/java/org/javamrt/mrt/MrtTest.java b/src/test/java/org/javamrt/mrt/MrtTest.java index 442225c..db5ec44 100644 --- a/src/test/java/org/javamrt/mrt/MrtTest.java +++ b/src/test/java/org/javamrt/mrt/MrtTest.java @@ -1,17 +1,21 @@ package org.javamrt.mrt; -import org.junit.Test; +import org.testng.annotations.Test; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; public class MrtTest { + private Base64.Decoder b64 = Base64.getDecoder(); + @Test public void testParseUnsignedAsn() { @@ -23,7 +27,7 @@ public void testParseUnsignedAsn() int offset = 0; ASPathSegment asPathSegment = new ASPathSegment(asnBuffer, offset, asSize); - assertEquals(asPath, asPathSegment.toString()); + assertEquals(asPathSegment.toString(), asPath); } catch (Exception e) { e.printStackTrace(); @@ -100,4 +104,68 @@ public void testIpv4EmbeddedIpv6With0(){ e.printStackTrace(); } } + + @Test + public void should_parse_empty_update() throws Exception { + final byte[] bytes = b64.decode("RtX+aQAQAAEAAAAnMr0xbgAAAAHDQuDjw0Lh8f////////////////////8AFwIAAAAA"); + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getPeer().toString(), "/195.66.224.227"); + assertEquals(mrtRecord.getPeerAS().toString(), "12989"); + assertEquals(mrtRecord.getTime(), 1188429417); + assertEquals(mrtRecord.getType(), MRTConstants.BGP4MP); + assertEquals(mrtRecord.getSubType(), MRTConstants.BGP4MP_MESSAGE); + assertNull(mrtRecord.getASPath()); + assertNull(mrtRecord.getPrefix()); + } + + @Test + public void should_parse_update_without_nlri() throws Exception { + final byte[] bytes = b64.decode("RwcWQgAQAAEAAAB+GxsxbgAAAAIgAQf4AAQAAAAAAAAbGwABIAEH+AAEAAAAAAAAMW4AAP////////////////////8AVgIAAAA/QAEBAEACEAIHGxsJ1B3sXt9fqlHlCx+ADiUAAgEgIAEH+AAEAAAAAAAAGxsAAf6AAAAAAAAAAgzb//7/EysA"); + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + final Bgp4Update mrtRecord = (Bgp4Update)bgpFileReader.readNext(); + assertEquals(mrtRecord.getPeer().toString(), "/2001:7f8:4:0:0:0:1b1b:1"); + assertEquals(mrtRecord.getPeerAS().toString(), "6939"); + assertEquals(mrtRecord.getTime(), 1191646786); + assertEquals(mrtRecord.getType(), MRTConstants.BGP4MP); + assertEquals(mrtRecord.getSubType(), MRTConstants.BGP4MP_MESSAGE); + assertEquals(mrtRecord.getASPath().toString(), "6939 2516 7660 24287 24490 20965 2847"); + assertNull(mrtRecord.getPrefix()); + assertEquals(mrtRecord.getAttributes().toString(), "6939 2516 7660 24287 24490 20965 2847|IGP|2001:7f8:4:0:0:0:1b1b:1|0|0||NAG||"); + } + + @Test + public void should_parse_8byte_state_change() throws Exception { + final byte[] bytes = b64.decode("OfZLTAAQAAAAAAAIAAAAAAADAAQ="); + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + BGPFileReader.setLenient(true); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getClass(), StateChange.class); + assertEquals(mrtRecord.toString(), "BGP4MP|972442444|STATE|0.0.0.0|0|3|4"); + } + + @Test + public void should_parse_AFI0_and_realign_bgp_message() throws Exception { + final byte[] bytes = b64.decode("OfZOxAAQAAEAAAAhAAAAAP////////////////////8AHQEEMGYAtNQyoccA"); + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + BGPFileReader.setLenient(true); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getClass(), Open.class); + assertEquals(mrtRecord.toString(), "OPEN|972443332|0.0.0.0|0|3560088007"); + } + + @Test + public void should_truncate_attributes_to_record_length() throws Exception { + final byte[] bytes = b64.decode("USa7OAAQAAQAAAByAAAjKgAAMW4AAAACIAEH+AAEAAAAAAAAIyoAASABB/gABAAAAAAAADFuAAD/////////////////////AEYCAAAAL0ABAQBAAgoCAgAAIyoAABp2kA4AGgACARAgAQf4AAQAAAAAAAAadgABACAgAQm4"); + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + BGPFileReader.setLenient(true); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getClass(), Advertisement.class); + assertEquals(mrtRecord.toString(), "BGP4MP|1361492792|A|2001:7f8:4:0:0:0:232a:1|9002|2001:9b8:0:0:0:0:0:0/32|9002 6774|IGP|2001:7f8:4:0:0:0:1a76:1|0|0||NAG||"); + } } From 98f6db9ea6ad9491db5b009ff24fe31675e9e1f5 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Mon, 3 Sep 2018 15:04:12 +0200 Subject: [PATCH 41/46] Process advertisements even if there were withdrawals :) This is a terrible bug :( --- src/main/java/org/javamrt/mrt/BGPFileReader.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 4fbe343..8653baa 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -376,7 +376,6 @@ private MRTRecord getBgpUpdate(byte[] header, byte[] record, AS peerAS, InetAddr Withdraw withdraw = new Withdraw(header, record, peerIP, peerAS, prefix, MRTConstants.UPDATE_STR_BGP); recordFifo.add(withdraw); } - }else{ // Advertisments //Reading length of attributes int attrLen = RecordAccess.getU16(record, offset); @@ -409,7 +408,6 @@ private MRTRecord getBgpUpdate(byte[] header, byte[] record, AS peerAS, InetAddr aNlri, attributes, MRTConstants.UPDATE_STR_BGP)); } } - } return recordFifo.remove(); } From 4ae7fb176210a16e7ebb3f3db80cccf4a3cc4ecf Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Mon, 3 Sep 2018 15:07:17 +0200 Subject: [PATCH 42/46] Recognise and parse End-Of-Rib marker This is an update message without any withdrawals or announcements --- .../java/org/javamrt/mrt/BGPFileReader.java | 74 ++++++++++--------- src/main/java/org/javamrt/mrt/Bgp4Update.java | 11 +-- src/main/java/org/javamrt/mrt/EndOfRib.java | 24 ++++++ src/test/java/org/javamrt/mrt/MrtTest.java | 20 +++++ 4 files changed, 88 insertions(+), 41 deletions(-) create mode 100644 src/main/java/org/javamrt/mrt/EndOfRib.java diff --git a/src/main/java/org/javamrt/mrt/BGPFileReader.java b/src/main/java/org/javamrt/mrt/BGPFileReader.java index 8653baa..d8e886c 100755 --- a/src/main/java/org/javamrt/mrt/BGPFileReader.java +++ b/src/main/java/org/javamrt/mrt/BGPFileReader.java @@ -376,40 +376,44 @@ private MRTRecord getBgpUpdate(byte[] header, byte[] record, AS peerAS, InetAddr Withdraw withdraw = new Withdraw(header, record, peerIP, peerAS, prefix, MRTConstants.UPDATE_STR_BGP); recordFifo.add(withdraw); } + } + // Advertisments + + //Reading length of attributes + int attrLen = RecordAccess.getU16(record, offset); + offset +=2; - //Reading length of attributes - int attrLen = RecordAccess.getU16(record, offset); - offset +=2; - - if(attrLen > 0){ - - Attributes attributes; - try { - attributes = new Attributes(record, attrLen, offset,asSize); - } catch (RFC4893Exception rfce) { - // - // piggyback peer and time info - // - rfce.setTimestamp(this.time); - rfce.setPeer(peerIP); - rfce.setAS(peerAS); - throw rfce; - } - - //Process MP_REACH and MP_UNREACH - processReachAndUnreach(header, record, attributes, peerIP, peerAS, MRTConstants.UPDATE_STR_BGP); - - offset += attrLen; - while (offset < record.length) { - Prefix aNlri = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); - offset += aNlri.getOffset(); - - recordFifo.add(new Advertisement(header, record, peerIP, peerAS, - aNlri, attributes, MRTConstants.UPDATE_STR_BGP)); - } + Attributes attributes = null; + if(attrLen > 0){ + try { + attributes = new Attributes(record, attrLen, offset,asSize); + } catch (RFC4893Exception rfce) { + // + // piggyback peer and time info + // + rfce.setTimestamp(this.time); + rfce.setPeer(peerIP); + rfce.setAS(peerAS); + throw rfce; } - return recordFifo.remove(); + //Process MP_REACH and MP_UNREACH + processReachAndUnreach(header, record, attributes, peerIP, peerAS, MRTConstants.UPDATE_STR_BGP); + + offset += attrLen; + while (offset < record.length) { + Prefix aNlri = lenient ? new LenientPrefix(record, offset, 1) : new Nlri(record, offset, 1); + offset += aNlri.getOffset(); + + recordFifo.add(new Advertisement(header, record, peerIP, peerAS, + aNlri, attributes, MRTConstants.UPDATE_STR_BGP)); + } + } + if (recordFifo.isEmpty()) { + return new EndOfRib(header, record, peerIP, peerAS, attributes, MRTConstants.UPDATE_STR_BGP); + } else { + return recordFifo.remove(); + } } private MRTRecord parseBgp4mp(byte[] header, byte[] record, int subtype) throws Exception { @@ -899,12 +903,10 @@ private MRTRecord parseBgp4mpMessage(byte[] header, byte[] record, int asSize) t } } if (recordFifo.isEmpty()) { - if (Debug.compileDebug) - if (Debug.doDebug) - throw new BGPFileReaderException("recordFifo empty!", header); - return new Bgp4Update(header, record, srcIP, srcAs, null, attributes, ""); + return new EndOfRib(header, record, srcIP, srcAs, attributes, MRTConstants.UPDATE_STR_BGP4MP); + } else { + return recordFifo.remove(); } - return recordFifo.remove(); } private InetAddress unknownAddress(int afi) { diff --git a/src/main/java/org/javamrt/mrt/Bgp4Update.java b/src/main/java/org/javamrt/mrt/Bgp4Update.java index 2f232aa..f0105f7 100644 --- a/src/main/java/org/javamrt/mrt/Bgp4Update.java +++ b/src/main/java/org/javamrt/mrt/Bgp4Update.java @@ -8,6 +8,7 @@ import java.net.InetAddress; import java.util.Comparator; +import java.util.Objects; public class Bgp4Update extends MRTRecord @@ -49,7 +50,7 @@ public String toString() { .append(this.updateType).append('|') .append(peerString).append('|') .append(this.peerAS).append('|') - .append(this.prefix.toString()); + .append(this.prefix == null ? "" : this.prefix.toString()); if (this.updateAttr != null) result.append('|').append(this.updateAttr.toString()); @@ -70,11 +71,11 @@ public String toString() { public boolean isIPv4() { - return this.prefix.isIPv4(); + return prefix != null && prefix.isIPv4(); } public boolean isIPv6() { - return this.prefix.isIPv6(); + return prefix != null && prefix.isIPv6(); } public Prefix getPrefix() { @@ -108,12 +109,12 @@ public Attributes getAttributes() { * Order by prefixes, then by peer and then by time. */ public int compareTo(Bgp4Update other) { - int result = this.prefix.compareTo(other.prefix); + int result = Objects.compare(this.prefix, other.prefix, Prefix::compareTo); if (result == 0) { result = org.javamrt.utils.InetAddressComparator.compara(this.peerIP, other.peerIP); if (result == 0) { - result = Long.valueOf(this.getTime()).compareTo(other.getTime()); + result = Long.compare(this.getTime(), other.getTime()); /* * Ignore sorting by update type * diff --git a/src/main/java/org/javamrt/mrt/EndOfRib.java b/src/main/java/org/javamrt/mrt/EndOfRib.java new file mode 100644 index 0000000..b7e3a2f --- /dev/null +++ b/src/main/java/org/javamrt/mrt/EndOfRib.java @@ -0,0 +1,24 @@ +package org.javamrt.mrt; + +import java.net.InetAddress; + +public class EndOfRib extends Bgp4Update { + protected char updateType = 0; + + public EndOfRib(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, String updateStr) { + super(header, record, peerIP, peerAS, null, updateStr); + } + + public EndOfRib(byte[] header, byte[] record, InetAddress peerIP, AS peerAS, Attributes updateAttr, String updateStr) { + super(header, record, peerIP, peerAS, null, updateAttr, updateStr); + } + + @Override + public String toString() { + String peerString = MRTConstants.ipAddressString(this.peerIP, false); + String attrString = updateAttr == null ? "" : updateAttr.toString(); + + return String.format("%s|%s||%s|%s|%s", + updateStr, getTime(), peerString, peerAS, attrString); + } +} diff --git a/src/test/java/org/javamrt/mrt/MrtTest.java b/src/test/java/org/javamrt/mrt/MrtTest.java index db5ec44..fc52a2e 100644 --- a/src/test/java/org/javamrt/mrt/MrtTest.java +++ b/src/test/java/org/javamrt/mrt/MrtTest.java @@ -168,4 +168,24 @@ public void should_truncate_attributes_to_record_length() throws Exception { assertEquals(mrtRecord.getClass(), Advertisement.class); assertEquals(mrtRecord.toString(), "BGP4MP|1361492792|A|2001:7f8:4:0:0:0:232a:1|9002|2001:9b8:0:0:0:0:0:0/32|9002 6774|IGP|2001:7f8:4:0:0:0:1a76:1|0|0||NAG||"); } + + @Test + public void should_parse_ipv4_end_of_rib() throws Exception { + final byte[] bytes = new byte[] {91,15,-4,42,0,16,0,4,0,0,0,43,0,4,5,-96,0,0,49,110,0,0,0,1,-69,16,-36,-63,-69,16,-40,23,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,23,2,0,0,0,0}; + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getClass(), EndOfRib.class); + assertEquals(mrtRecord.toString(), "BGP4MP|1527774250||187.16.220.193|263584|"); + } + + @Test + public void should_parse_ipv6_end_of_rib() throws Exception { + final byte[] bytes = new byte[] {91,16,-4,-111,0,16,0,4,0,0,0,73,0,0,-77,72,0,0,49,110,0,0,0,2,32,1,13,-16,2,-24,16,0,0,0,0,0,0,0,0,1,32,1,6,124,2,-24,0,2,-1,-1,0,0,0,4,0,40,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,29,2,0,0,0,6,-128,15,3,0,2,1}; + final ByteArrayInputStream stream = new ByteArrayInputStream(bytes); + final BGPFileReader bgpFileReader = new BGPFileReader(stream); + final MRTRecord mrtRecord = bgpFileReader.readNext(); + assertEquals(mrtRecord.getClass(), EndOfRib.class); + assertEquals(mrtRecord.toString(), "BGP4MP|1527839889||2001:df0:2e8:1000:0:0:0:1|45896|||255.255.255.255|0|0||NAG||"); + } } From b8cbe7059d4e681fad1a9a9bce8710d0a945d091 Mon Sep 17 00:00:00 2001 From: Andre Kampert Date: Thu, 6 Sep 2018 10:01:58 +0200 Subject: [PATCH 43/46] Added ASPath functionality - Parse from String - get originating / transiting AS --- src/main/java/org/javamrt/mrt/ASPath.java | 682 ++++++++++-------- src/test/java/org/javamrt/mrt/ASPathTest.java | 62 ++ 2 files changed, 453 insertions(+), 291 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java index 9efd746..b3e7828 100755 --- a/src/main/java/org/javamrt/mrt/ASPath.java +++ b/src/main/java/org/javamrt/mrt/ASPath.java @@ -6,314 +6,414 @@ package org.javamrt.mrt; +import org.javamrt.utils.RecordAccess; + +import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; +import java.util.List; import java.util.Vector; - -import org.javamrt.utils.RecordAccess; +import java.util.function.BiConsumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** - * * ASPath is a linked list of elements which are either
* AS, ASSet or ASConfedSet *

* version 3.00: complete rewrite with ASPathSegment
* - * @version 3.00 * @author paag + * @version 3.00 */ public class ASPath implements Attribute { - protected LinkedList path; - ASPath() { - this.path = new LinkedList(); - this.prependers = null; - } + private enum StringParser { + SET("(", ")", (acc, elements) -> acc.add(new ASSet(elements))), + CONFED_SET("{", "}", (acc, elements) -> acc.add(new ASConfedSet(elements))), + CONFED_SEQ("[", "]", (acc, elements) -> acc.add(new ASConfedSequence(elements))), + AS("", "", List::addAll); + + private final static Pattern PATH_ELEMENT_FINDER; + private final static Pattern AS_NUMBER_FINDER; + + static { + final List expressionStrings = Arrays + .stream(StringParser.values()) + .map(parseInfo -> String.format("%s((?:\\s?\\d\\s?)+)%s", parseInfo.start, parseInfo.end)) + .collect(Collectors.toList()); + + PATH_ELEMENT_FINDER = Pattern.compile(String.join("|", expressionStrings)); + AS_NUMBER_FINDER = Pattern.compile("\\d+"); + } + + private final String start; + private final String end; + private final BiConsumer, LinkedList> appender; + + StringParser(final String start, final String end, BiConsumer, LinkedList> appender) { + this.start = Pattern.quote(start); + this.end = Pattern.quote(end); + this.appender = appender; + } + + static List parse(final String input) { + final List result = new LinkedList<>(); + final Matcher pathElementMatcher = PATH_ELEMENT_FINDER.matcher(input); + while (pathElementMatcher.find()) { + for (final StringParser parser : StringParser.values()) { + final String group = pathElementMatcher.group(1 + parser.ordinal()); + if (group != null) { + final LinkedList elements = new LinkedList<>(); + final Matcher asMatcher = AS_NUMBER_FINDER.matcher(group); + while (asMatcher.find()) { + elements.add(new AS(Long.parseLong(asMatcher.group()))); + } + + parser.appender.accept(result, elements); + } + } + } + + return result; + } + } + + protected LinkedList path; + + ASPath() { + this.path = new LinkedList<>(); + this.prependers = null; + } + + ASPath(final List path) { + this.path = new LinkedList<>(); + this.path.addAll(path); + } // ASPath(byte[] buffer) throws Exception { // decode(buffer, 2); // } - ASPath(byte[] buffer, int asSize) throws Exception { - decode(buffer, asSize); - } - - - private void decode(byte[] buffer, int asSize) throws Exception { - this.path = new LinkedList(); - int offset = 0; - // route_btoa.System_err_println(String.format("New ASPATH (%d bytes)",buffer.length)); - while (offset < buffer.length) { - ASPathSegment segment = new ASPathSegment(buffer, offset, asSize); - // route_btoa.System_err_println(String.format(" segment @%-2d [t %2d]: %s\n",offset,segment.bType(),segment.toString())); - switch (segment.bType()) { - case MRTConstants.asSequence: - this.path.addAll(segment.getASList()); - break; - case MRTConstants.asSet: - if (null != segment.getAS()) - this.path.add(segment.getAS()); - else - this.path.add(new ASSet(segment.getASList())); - break; - case MRTConstants.asConfedSequence: - this.add(new ASConfedSequence(segment.getASList())); - break; - case MRTConstants.asConfedSet: - this.add(new ASConfedSet(segment.getASList())); - break; - default: - RecordAccess.dump(buffer); - throw new Exception( - String.format("Unknown ASPATH Segment Type = %d Len = %d", - segment.bType(), segment.bLen()) - ); - } - offset+=segment.bLen(); - } - // - // and now try to see if we have AS PATH Prepend - // - mkPrependers(); - // route_btoa.System_err_println("New ASPATH:"+path.toString()); - } - - public AS get(int i) { - try { - return path.get(i); - } catch (IndexOutOfBoundsException iobe) { - return null; - } - } - - public void set(int index,AS element) { - path.set(index, element); - } - /** - * Append an AS to the ASPATH - * @param as - */ - public void append(AS as) { - add(as); - } - - /** - * alias of append(AS as) - * @param as - */ - public void add(AS as) { - path.add(as); - refreshPrependers(as); - } - - public LinkedList getPath() { - return this.path; - } - /** - * - * @return the number of hops of the ASPATH - */ - public int length() { - return path.size(); - } - - /** - * @author paag - * @return a Vector with the AS's which are doing prepending. - */ - public Vector getPrependers() { - return prependers; - } - - /** - * - * @return - */ - public boolean hasAsPathPrepend() { - return prependers != null; - } - - /** - * @author paag - * rebuild the PREPENDER list - *
Called from decode() or when the AS4PATH attribute is decoded - */ - public void mkPrependers() { - int asPathLen; - - this.prependers = null; - if ((asPathLen = this.path.size()) == 0) - return; - for (int i=0; i(); - prependers.add(ahora); - i = this.path.lastIndexOf(ahora); - } - } - } - /** - * refresh the prependers list when an AS is appended to the ASPATH - * @param ultimo the AS which was appended to the ASPATH - * @author paag - */ - private void refreshPrependers(AS ultimo) { - // - // is the argument involved in AS PATH prepending? - // - if (this.path.indexOf(ultimo) == this.path.lastIndexOf(ultimo)) - return; - try { - // - // did we already register AS PATH prepending for the argument? - // - if (prependers.contains(ultimo)) - return; - } catch (Exception e) { - // - // no prependers yet - // - prependers = new Vector(); - } - prependers.add(ultimo); - } - - /** - * @param as: an AS - * @return the index of the first occurrence of AS in the ASPATH - */ - public int indexOf(AS as) { - return this.path.indexOf(as); - } - - /** - * @param as: an AS - * @return the index of the last occurrence of AS in the ASPATH - */ - public int lastIndexOf(AS as) { - return this.path.lastIndexOf(as); - } - - public boolean contains(AS as) { - return this.path.indexOf(as) != -1; - } - /** - * @author paag - * @return a textual representation of the ASPATH - */ - public String toString() { - try { - if (this.path.size() == 0) - return ""; - - String result = null; - for (int i = 0; i < this.path.size(); i++) - try { - result = result.concat(" "+this.path.get(i).toString()); - } catch (Exception e) { - result = this.path.get(i).toString(); - } - return result; - }catch (Exception e) { - return ""; - } - } - - /** - * Shortcut for equals(Object o) - * @param ASPath other: an other ASPath - * @return true if both have the same length and all AS's in them are in the same place. - * @author paag - */ - public boolean equals(ASPath other) { - if (this.path.size() != other.path.size()) - return false; - - for (int i = 0; i < this.path.size(); i++) - if (!this.path.get(i).equals(other.path.get(i))) - return false; - - return true; - } - - /** - * This is the canonical implementation of the equals() method - * @param Object o - *
- */ - public boolean equals(Object o) { - if (o == null) - return false; - if (o == this) - return true; - if (o instanceof ASPath) - return this.equals((ASPath)o); - return false; - } - - /** - * - * @param as: as Autonomous System - * @return true if as generated the prefix - */ - public boolean isGenerator(AS as) { - return as.equals(this.path.getLast()); - } - - /** - * - * @return the As which generated the prefix - */ - public AS generator() { - try { - return this.path.getLast(); - } catch (Exception e) { - return AS.NullAS; - } - } - /** - * Build a copy of the AS_PATH but without prepends - * @param none - * @author paag - */ - - public ASPath canonicalPath() { - ASPath canonical = new ASPath(); - - for (int i = 0; i < this.path.size(); i++) { - AS as = this.path.get(i); - canonical.add(as); - i = this.path.lastIndexOf(as); - } - return canonical; - } - - private Vector prependers; - - /** - * - * @return true if the originating AS is prepending - */ - public boolean hasOriginPrepend() { - try { - return this.prependers.contains(this.generator()); - } catch (NullPointerException npe) { - return false; - } - } - - public int compareTo(ASPath aspath) { - int result = 0; - if (this.equals(aspath)) return 0; - if (this.length() != aspath.length()) - return this.length() > aspath.length() ? 1 : -1; - for (int i=0; i < this.length(); i++) { - result = this.get(i).compareTo(aspath.get(i)); - if (result == 0) - return result; - } - return result; - } + ASPath(byte[] buffer, int asSize) throws Exception { + decode(buffer, asSize); + } + + + private void decode(byte[] buffer, int asSize) throws Exception { + this.path = new LinkedList(); + int offset = 0; + // route_btoa.System_err_println(String.format("New ASPATH (%d bytes)",buffer.length)); + while (offset < buffer.length) { + ASPathSegment segment = new ASPathSegment(buffer, offset, asSize); + // route_btoa.System_err_println(String.format(" segment @%-2d [t %2d]: %s\n",offset,segment.bType(),segment.toString())); + switch (segment.bType()) { + case MRTConstants.asSequence: + this.path.addAll(segment.getASList()); + break; + case MRTConstants.asSet: + if (null != segment.getAS()) { + this.path.add(segment.getAS()); + } else { + this.path.add(new ASSet(segment.getASList())); + } + break; + case MRTConstants.asConfedSequence: + this.add(new ASConfedSequence(segment.getASList())); + break; + case MRTConstants.asConfedSet: + this.add(new ASConfedSet(segment.getASList())); + break; + default: + RecordAccess.dump(buffer); + throw new Exception( + String.format("Unknown ASPATH Segment Type = %d Len = %d", + segment.bType(), segment.bLen()) + ); + } + offset += segment.bLen(); + } + // + // and now try to see if we have AS PATH Prepend + // + mkPrependers(); + // route_btoa.System_err_println("New ASPATH:"+path.toString()); + } + + public AS get(int i) { + try { + return path.get(i); + } catch (IndexOutOfBoundsException iobe) { + return null; + } + } + + public void set(int index, AS element) { + path.set(index, element); + } + + /** + * Append an AS to the ASPATH + * + * @param as + */ + public void append(AS as) { + add(as); + } + + /** + * alias of append(AS as) + * + * @param as + */ + public void add(AS as) { + path.add(as); + refreshPrependers(as); + } + + public LinkedList getPath() { + return this.path; + } + + /** + * @return the number of hops of the ASPATH + */ + public int length() { + return path.size(); + } + + /** + * @return a Vector with the AS's which are doing prepending. + * @author paag + */ + public Vector getPrependers() { + return prependers; + } + + /** + * @return + */ + public boolean hasAsPathPrepend() { + return prependers != null; + } + + /** + * @author paag + * rebuild the PREPENDER list + *
Called from decode() or when the AS4PATH attribute is decoded + */ + public void mkPrependers() { + int asPathLen; + + this.prependers = null; + if ((asPathLen = this.path.size()) == 0) { + return; + } + for (int i = 0; i < asPathLen; i++) { + AS ahora = this.path.get(i); + if (i != this.path.lastIndexOf(ahora)) { + if (prependers == null) { + prependers = new Vector(); + } + prependers.add(ahora); + i = this.path.lastIndexOf(ahora); + } + } + } + + /** + * refresh the prependers list when an AS is appended to the ASPATH + * + * @param ultimo the AS which was appended to the ASPATH + * @author paag + */ + private void refreshPrependers(AS ultimo) { + // + // is the argument involved in AS PATH prepending? + // + if (this.path.indexOf(ultimo) == this.path.lastIndexOf(ultimo)) { + return; + } + try { + // + // did we already register AS PATH prepending for the argument? + // + if (prependers.contains(ultimo)) { + return; + } + } catch (Exception e) { + // + // no prependers yet + // + prependers = new Vector(); + } + prependers.add(ultimo); + } + + /** + * @param as: an AS + * @return the index of the first occurrence of AS in the ASPATH + */ + public int indexOf(AS as) { + return this.path.indexOf(as); + } + + /** + * @param as: an AS + * @return the index of the last occurrence of AS in the ASPATH + */ + public int lastIndexOf(AS as) { + return this.path.lastIndexOf(as); + } + + public boolean contains(AS as) { + return this.path.indexOf(as) != -1; + } + + /** + * @return a textual representation of the ASPATH + * @author paag + */ + public String toString() { + try { + if (this.path.size() == 0) { + return ""; + } + + String result = null; + for (int i = 0; i < this.path.size(); i++) + try { + result = result.concat(" " + this.path.get(i).toString()); + } catch (Exception e) { + result = this.path.get(i).toString(); + } + return result; + } catch (Exception e) { + return ""; + } + } + + /** + * Construct an ASPath from the textual representation + * + * @param input The input to parse. + * @return The parsed ASPath + */ + public static ASPath fromString(final String input) { + return new ASPath(StringParser.parse(input)); + } + + /** + * Shortcut for equals(Object o) + * + * @param other: an other ASPath + * @return true if both have the same length and all AS's in them are in the same place. + * @author paag + */ + public boolean equals(ASPath other) { + if (this.path.size() != other.path.size()) { + return false; + } + + for (int i = 0; i < this.path.size(); i++) + if (!this.path.get(i).equals(other.path.get(i))) { + return false; + } + + return true; + } + + /** + * This is the canonical implementation of the equals() method + * + * @param o
+ */ + public boolean equals(Object o) { + if (o == null) { + return false; + } + if (o == this) { + return true; + } + if (o instanceof ASPath) { + return this.equals((ASPath) o); + } + return false; + } + + /** + * @param as: as Autonomous System + * @return true if as generated the prefix + */ + public boolean isGenerator(AS as) { + return as.equals(this.path.getLast()); + } + + /** + * @return the As which generated the prefix + */ + public AS generator() { + try { + return this.path.getLast(); + } catch (Exception e) { + return AS.NullAS; + } + } + + /** + * Build a copy of the AS_PATH but without prepends + * + * @author paag + */ + + public ASPath canonicalPath() { + ASPath canonical = new ASPath(); + + for (int i = 0; i < this.path.size(); i++) { + AS as = this.path.get(i); + canonical.add(as); + i = this.path.lastIndexOf(as); + } + return canonical; + } + + private Vector prependers; + + /** + * @return true if the originating AS is prepending + */ + public boolean hasOriginPrepend() { + try { + return this.prependers.contains(this.generator()); + } catch (NullPointerException npe) { + return false; + } + } + + public int compareTo(ASPath aspath) { + int result = 0; + if (this.equals(aspath)) { + return 0; + } + if (this.length() != aspath.length()) { + return this.length() > aspath.length() ? 1 : -1; + } + for (int i = 0; i < this.length(); i++) { + result = this.get(i).compareTo(aspath.get(i)); + if (result == 0) { + return result; + } + } + return result; + } + + public AS getOriginating() { + return path.isEmpty() ? null : path.getLast(); + } + + public List getTransiting() { + return path.isEmpty() ? Collections.emptyList() : path.subList(0, path.size() - 1); + } } diff --git a/src/test/java/org/javamrt/mrt/ASPathTest.java b/src/test/java/org/javamrt/mrt/ASPathTest.java index cc3a413..8c14f19 100644 --- a/src/test/java/org/javamrt/mrt/ASPathTest.java +++ b/src/test/java/org/javamrt/mrt/ASPathTest.java @@ -2,15 +2,20 @@ import org.testng.Assert; import org.testng.annotations.Test; +import org.testng.collections.Lists; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.Base64; +import java.util.Collections; +import java.util.LinkedList; import java.util.List; public class ASPathTest { + // BGP4MP|1519047444|A|2001:478:124::146|25152|2405:6e00::/32|25152 6939 2299530082 133612 {18291} {18291}|IGP|2001:478:124::176|0|0||NAG|65512 10.247.255.147| private String as4update = "WorTFAAQAAQAAACQAABiQAAAMW4AAAACIAEEeAEkAAAAAAAAAAABRiABBHgBJAAAAAAAAAAAAXH/////////////////////AGQCAAAATYAOGgACARAgAQR4ASQAAAAAAAAAAAF2ACAkBW4AQAEBAEACHgIEAABiQAAAGxuJEAtiAAIJ7AEBAABHcwEBAABHc8AHCAAA/+gK9/+T"; @@ -47,6 +52,63 @@ public void testShouldCreateAsPathFromAs2Update() { } } + @Test + public void testParseAsPathFromString() { + testParseAsPath(""); + testParseAsPath("1", new AS(1)); + testParseAsPath("1 1 1", new AS(1), new AS(1), new AS(1)); + testParseAsPath("22822 22822 22822", new AS(22822), new AS(22822), new AS(22822)); + testParseAsPath("1 2 3", new AS(1), new AS(2), new AS(3)); + testParseAsPath("22822 54825 40138", new AS(22822), new AS(54825), new AS(40138)); + testParseAsPath("(1 2 3)", new ASSet(Arrays.asList(new AS(1), new AS(2), new AS(3)))); + testParseAsPath("(1 2) 3", new ASSet(Arrays.asList(new AS(1), new AS(2))), new AS(3)); + testParseAsPath("1 (2 3)", new AS(1), new ASSet(Arrays.asList(new AS(2), new AS(3)))); + testParseAsPath("(22822 54825 40138)", new ASSet(Arrays.asList(new AS(22822), new AS(54825), new AS(40138)))); + testParseAsPath("(22822 54825) 40138", new ASSet(Arrays.asList(new AS(22822), new AS(54825))), new AS(40138)); + testParseAsPath("22822 (54825 40138)", new AS(22822), new ASSet(Arrays.asList(new AS(54825), new AS(40138)))); + testParseAsPath("1 (2 3) [4 5]", + new AS(1), + new ASSet(Arrays.asList(new AS(2), new AS(3))), + new ASConfedSequence(new LinkedList<>(Arrays.asList(new AS(4), new AS(5))))); + testParseAsPath("1 (2 3) {4 5}", + new AS(1), + new ASSet(Arrays.asList(new AS(2), new AS(3))), + new ASConfedSet(new LinkedList<>(Arrays.asList(new AS(4), new AS(5))))); + } + + @Test + public void testOriginating() { + Assert.assertNull(new ASPath(Collections.emptyList()).getOriginating()); + final AS as1 = new AS(1); + final AS as2 = new AS(2); + final AS as3 = new AS(3); + Assert.assertEquals(new ASPath(Collections.singletonList(as1)).getOriginating(), as1); + Assert.assertEquals(new ASPath(Arrays.asList(as1, as2, as3)).getOriginating(), as3); + Assert.assertEquals(new ASPath(Arrays.asList(as1, as1, as1)).getOriginating(), as1); + Assert.assertEquals(new ASPath(Arrays.asList(new ASSet(Arrays.asList(as1, as2)), as3)).getOriginating(), as3); + Assert.assertEquals(new ASPath(Arrays.asList(as1, new ASSet(Arrays.asList(as2, as3)))).getOriginating(), + new ASSet(Arrays.asList(as2, as3))); + } + + @Test + public void testTransiting() { + Assert.assertEquals(new ASPath(Collections.emptyList()).getTransiting(), Collections.emptyList()); + final AS as1 = new AS(1); + final AS as2 = new AS(2); + final AS as3 = new AS(3); + Assert.assertEquals(new ASPath(Collections.singletonList(as1)).getTransiting(), Collections.emptyList()); + Assert.assertEquals(new ASPath(Arrays.asList(as1, as2, as3)).getTransiting(), Arrays.asList(as1, as2)); + Assert.assertEquals(new ASPath(Arrays.asList(as1, as1, as1)).getTransiting(), Arrays.asList(as1, as1)); + Assert.assertEquals(new ASPath(Arrays.asList(new ASSet(Arrays.asList(as1, as2)), as3)).getTransiting(), + Collections.singletonList(new ASSet(Arrays.asList(as1, as2)))); + Assert.assertEquals(new ASPath(Arrays.asList(as1, new ASSet(Arrays.asList(as2, as3)))).getTransiting(), + Collections.singletonList(as1)); + } + + private static void testParseAsPath(final String input, final AS... expected) { + Assert.assertEquals(ASPath.fromString(input).getPath(), Lists.newArrayList(expected)); + } + public static List parseMrts(String base64) { byte[] bytes = Base64.getDecoder().decode(base64); return parseMrts(bytes); From 9e3a6f219c1c60850e7bf0d5a20dd64534aa2df3 Mon Sep 17 00:00:00 2001 From: Andre Kampert Date: Thu, 6 Sep 2018 11:48:50 +0200 Subject: [PATCH 44/46] Improved toString handling - Do not rely on Exceptions for normal control flow - Use StringBuilder instead of StringBuffer when possible - Utility method on ASPath to build string of List of path elements --- .../org/javamrt/mrt/ASConfedSequence.java | 25 ++++++++----------- .../java/org/javamrt/mrt/ASConfedSet.java | 22 ++++++++-------- src/main/java/org/javamrt/mrt/ASPath.java | 17 ++++--------- src/main/java/org/javamrt/mrt/ASSet.java | 6 ++--- src/main/java/org/javamrt/mrt/Attributes.java | 2 +- .../java/org/javamrt/mrt/ClusterList.java | 14 ++++++----- src/main/java/org/javamrt/mrt/Community.java | 6 ++--- src/main/java/org/javamrt/mrt/LocalPref.java | 2 +- .../java/org/javamrt/mrt/OriginatorID.java | 2 +- 9 files changed, 42 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/javamrt/mrt/ASConfedSequence.java b/src/main/java/org/javamrt/mrt/ASConfedSequence.java index 8492f17..24659ae 100644 --- a/src/main/java/org/javamrt/mrt/ASConfedSequence.java +++ b/src/main/java/org/javamrt/mrt/ASConfedSequence.java @@ -6,22 +6,19 @@ package org.javamrt.mrt; +import java.util.List; import java.util.LinkedList; +import java.util.stream.Collectors; -public class ASConfedSequence - extends AS -{ - LinkedList asList; +public class ASConfedSequence extends AS { + LinkedList asList; - public ASConfedSequence(LinkedList asList) { - this.asList = new LinkedList(); - this.asList.addAll(asList); - } + public ASConfedSequence(List asList) { + this.asList = new LinkedList<>(); + this.asList.addAll(asList); + } - public String toString() { - String result = "["; - for (AS as:asList) - result = result.concat(" "+as.toString()); - return result.concat(" ]"); - } + public String toString() { + return asList.stream().map(AS::toString).collect(Collectors.joining(" ", "[", "]")); + } } diff --git a/src/main/java/org/javamrt/mrt/ASConfedSet.java b/src/main/java/org/javamrt/mrt/ASConfedSet.java index 082cd82..f94f32b 100644 --- a/src/main/java/org/javamrt/mrt/ASConfedSet.java +++ b/src/main/java/org/javamrt/mrt/ASConfedSet.java @@ -7,22 +7,20 @@ package org.javamrt.mrt; import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; public class ASConfedSet extends AS { - private LinkedList asList; + private LinkedList asList; - public ASConfedSet(LinkedList asList) { - this.asList = new LinkedList(); - this.asList.addAll(asList); - } + public ASConfedSet(final List asList) { + this.asList = new LinkedList<>(); + this.asList.addAll(asList); + } - - public String toString() { - String result = "{"; - for (AS as:asList) - result = result.concat(" "+as.toString()); - return result.concat(" }"); - } + public String toString() { + return asList.stream().map(AS::toString).collect(Collectors.joining(" ", "{", "}")); + } } diff --git a/src/main/java/org/javamrt/mrt/ASPath.java b/src/main/java/org/javamrt/mrt/ASPath.java index b3e7828..cdf02e1 100755 --- a/src/main/java/org/javamrt/mrt/ASPath.java +++ b/src/main/java/org/javamrt/mrt/ASPath.java @@ -277,19 +277,12 @@ public boolean contains(AS as) { * @author paag */ public String toString() { - try { - if (this.path.size() == 0) { - return ""; - } + return asString(this.path); + } - String result = null; - for (int i = 0; i < this.path.size(); i++) - try { - result = result.concat(" " + this.path.get(i).toString()); - } catch (Exception e) { - result = this.path.get(i).toString(); - } - return result; + public static String asString(final List path) { + try { + return path.stream().map(AS::toString).collect(Collectors.joining(" ")); } catch (Exception e) { return ""; } diff --git a/src/main/java/org/javamrt/mrt/ASSet.java b/src/main/java/org/javamrt/mrt/ASSet.java index cff53bc..438fbc3 100644 --- a/src/main/java/org/javamrt/mrt/ASSet.java +++ b/src/main/java/org/javamrt/mrt/ASSet.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; // import org.javamrt.utils.RecordAccess; @@ -60,10 +61,7 @@ public AS getAS(int i) { } public String toString() { - String result = "(".concat(this.asSet.get(0).toString()); - for (int i = 1; i < asSet.size(); i++) - result = result.concat(" ").concat(this.asSet.get(i).toString()); - return result.concat(")"); + return asSet.stream().map(AS::toString).collect(Collectors.joining(" ", "(", ")")); } } diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 169f0f4..6d71e32 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -273,7 +273,7 @@ public String toString() { if (toStr != null) return toStr; - toStr = new String(); + toStr = ""; for (int i = MRTConstants.ATTRIBUTE_AS_PATH; i <= MRTConstants.ATTRIBUTE_AGGREGATOR; i++) { if (attributes.elementAt(i) != null) { diff --git a/src/main/java/org/javamrt/mrt/ClusterList.java b/src/main/java/org/javamrt/mrt/ClusterList.java index adedb24..ab1bc5f 100644 --- a/src/main/java/org/javamrt/mrt/ClusterList.java +++ b/src/main/java/org/javamrt/mrt/ClusterList.java @@ -49,12 +49,14 @@ public boolean equals(Object o) { return false; } - public String toString() { - StringBuffer result = new StringBuffer(); + public String toString() { + StringBuilder result = new StringBuilder(); - for (int i = 0; i < clusterList.length; i++) - result.append(clusterList[i].getHostAddress() + " "); + for (final InetAddress aClusterList : clusterList) { + result.append(aClusterList.getHostAddress()) + .append(" "); + } - return result.toString(); - } + return result.toString(); + } } diff --git a/src/main/java/org/javamrt/mrt/Community.java b/src/main/java/org/javamrt/mrt/Community.java index 2bb4ef8..d1744b6 100644 --- a/src/main/java/org/javamrt/mrt/Community.java +++ b/src/main/java/org/javamrt/mrt/Community.java @@ -33,11 +33,11 @@ public static Community empty() { } public String toString() { - return toStringBuffer(community).toString(); + return toStringBuilder(community).toString(); } - private static StringBuffer toStringBuffer(byte[] buffer) { - StringBuffer result = new StringBuffer(); + private static StringBuilder toStringBuilder(byte[] buffer) { + StringBuilder result = new StringBuilder(); if (null != buffer) { int len = buffer.length; diff --git a/src/main/java/org/javamrt/mrt/LocalPref.java b/src/main/java/org/javamrt/mrt/LocalPref.java index bdaa7c1..bf2bcbb 100644 --- a/src/main/java/org/javamrt/mrt/LocalPref.java +++ b/src/main/java/org/javamrt/mrt/LocalPref.java @@ -15,7 +15,7 @@ public class LocalPref implements Attribute { } public String toString() { - return "" + localPref; + return Long.toString(localPref); } public long getLocalPref() { diff --git a/src/main/java/org/javamrt/mrt/OriginatorID.java b/src/main/java/org/javamrt/mrt/OriginatorID.java index 680461a..1c35943 100644 --- a/src/main/java/org/javamrt/mrt/OriginatorID.java +++ b/src/main/java/org/javamrt/mrt/OriginatorID.java @@ -16,7 +16,7 @@ public class OriginatorID implements Attribute { } public String toString() { - return "" + id; + return Long.toString(id); } public long originatorId() { From 94e9d9396b74892f400c8d7053c1256199575a76 Mon Sep 17 00:00:00 2001 From: Andre Kampert Date: Thu, 6 Sep 2018 12:04:07 +0200 Subject: [PATCH 45/46] Implement getAsList for all AS instances --- src/main/java/org/javamrt/mrt/AS.java | 9 +++++++++ src/main/java/org/javamrt/mrt/ASConfedSequence.java | 6 ++++++ src/main/java/org/javamrt/mrt/ASConfedSet.java | 6 ++++++ src/main/java/org/javamrt/mrt/ASSet.java | 1 + src/test/java/org/javamrt/mrt/ASPathTest.java | 1 - src/test/java/org/javamrt/mrt/ASTest.java | 13 +++++++++++++ 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/javamrt/mrt/AS.java b/src/main/java/org/javamrt/mrt/AS.java index 3bb7e16..b834e74 100644 --- a/src/main/java/org/javamrt/mrt/AS.java +++ b/src/main/java/org/javamrt/mrt/AS.java @@ -7,7 +7,9 @@ package org.javamrt.mrt; import java.math.BigInteger; +import java.util.Collections; import java.util.Comparator; +import java.util.List; /** * @author paag @@ -146,4 +148,11 @@ public static AS parseString(String asspec) throws Exception { } return result; } + + /** + * @return list of ASNs, especially useful when not interested in whether it is some type of set, but just want to deal with the numbers + */ + public List getASList() { + return Collections.singletonList(this); + } } diff --git a/src/main/java/org/javamrt/mrt/ASConfedSequence.java b/src/main/java/org/javamrt/mrt/ASConfedSequence.java index 24659ae..5e36cb4 100644 --- a/src/main/java/org/javamrt/mrt/ASConfedSequence.java +++ b/src/main/java/org/javamrt/mrt/ASConfedSequence.java @@ -18,7 +18,13 @@ public ASConfedSequence(List asList) { this.asList.addAll(asList); } + @Override public String toString() { return asList.stream().map(AS::toString).collect(Collectors.joining(" ", "[", "]")); } + + @Override + public List getASList() { + return this.asList; + } } diff --git a/src/main/java/org/javamrt/mrt/ASConfedSet.java b/src/main/java/org/javamrt/mrt/ASConfedSet.java index f94f32b..e0b1b1d 100644 --- a/src/main/java/org/javamrt/mrt/ASConfedSet.java +++ b/src/main/java/org/javamrt/mrt/ASConfedSet.java @@ -19,8 +19,14 @@ public ASConfedSet(final List asList) { this.asList.addAll(asList); } + @Override public String toString() { return asList.stream().map(AS::toString).collect(Collectors.joining(" ", "{", "}")); } + + @Override + public List getASList() { + return this.asList; + } } diff --git a/src/main/java/org/javamrt/mrt/ASSet.java b/src/main/java/org/javamrt/mrt/ASSet.java index 438fbc3..459b268 100644 --- a/src/main/java/org/javamrt/mrt/ASSet.java +++ b/src/main/java/org/javamrt/mrt/ASSet.java @@ -40,6 +40,7 @@ public int hashCode() { return asSet.hashCode(); } + @Override public List getASList() { return this.asSet; } diff --git a/src/test/java/org/javamrt/mrt/ASPathTest.java b/src/test/java/org/javamrt/mrt/ASPathTest.java index 8c14f19..b548756 100644 --- a/src/test/java/org/javamrt/mrt/ASPathTest.java +++ b/src/test/java/org/javamrt/mrt/ASPathTest.java @@ -132,5 +132,4 @@ public static List parseMrts(byte[] bytes) { return result; } - } diff --git a/src/test/java/org/javamrt/mrt/ASTest.java b/src/test/java/org/javamrt/mrt/ASTest.java index 9271ccd..cc94dfd 100644 --- a/src/test/java/org/javamrt/mrt/ASTest.java +++ b/src/test/java/org/javamrt/mrt/ASTest.java @@ -2,6 +2,9 @@ import org.testng.annotations.Test; +import java.util.Arrays; +import java.util.Collections; + import static org.testng.AssertJUnit.assertEquals; public class ASTest { @@ -79,4 +82,14 @@ public void should_recognise_4_byte_asn() { assertEquals(true, new AS(65536L).is4Byte()); assertEquals(true, new AS(0xFFFFFFFFL).is4Byte()); } + + @Test + public void getAsList() { + final AS as1 = new AS(1L); + final AS as2 = new AS(2L); + assertEquals(Collections.singletonList(as1), as1.getASList()); + assertEquals(Arrays.asList(as1, as2), new ASSet(Arrays.asList(as1, as2)).getASList()); + assertEquals(Arrays.asList(as1, as2), new ASConfedSet(Arrays.asList(as1, as2)).getASList()); + assertEquals(Arrays.asList(as1, as2), new ASConfedSequence(Arrays.asList(as1, as2)).getASList()); + } } From 85ab9d23fe2ab563963407fb3433d9be56a758e8 Mon Sep 17 00:00:00 2001 From: Oleg Muravskiy Date: Wed, 26 Sep 2018 16:25:17 +0200 Subject: [PATCH 46/46] Do not overwrite ASPath if attribute of type 0 received. Also do not overwrite other attributes with UnsupportedAttribute :) --- src/main/java/org/javamrt/mrt/Attributes.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/javamrt/mrt/Attributes.java b/src/main/java/org/javamrt/mrt/Attributes.java index 6d71e32..c4a9acb 100644 --- a/src/main/java/org/javamrt/mrt/Attributes.java +++ b/src/main/java/org/javamrt/mrt/Attributes.java @@ -6,6 +6,7 @@ package org.javamrt.mrt; +import org.javamrt.progs.route_btoa; import org.javamrt.utils.Debug; import org.javamrt.utils.RecordAccess; @@ -254,7 +255,7 @@ private void decode(byte[] record, int attrLen, int attrBytes) break; default: - attributes.set(type, new UnsupportedAttribute(type, buffer)); + route_btoa.System_err_println("Ignoring unknown attribute type " + type); break; } }