Skip to content

Releases: bgpkit/bgpkit-parser

v0.10.2

07 Mar 02:07
0e255f0
Compare
Choose a tag to compare

Highlights

  • added new ip_version filter type with values of ipv4 or ipv6
    • library users can use this filter to filter BGP messages by IP version
    • CLI users can specify -4 or -6 to filter BGP messages by IP version
  • add new dependency security checkups using cargo audit
    • all new releases will need to pass cargo audit checks before being published
    • weekly cargo audit checks added to the CI pipeline

v0.10.1

23 Feb 23:30
19a100f
Compare
Choose a tag to compare

Highlights

  • updating oneio to v0.16.2
    • switching to flate2 with zlib-ng for handling gzip files, which is significantly faster than the default pure-Rust implementation

v0.10.0

11 Feb 18:45
209234a
Compare
Choose a tag to compare

Version 0.10.0 is a major release with a lot of changes and improvements.

Highlights

MRT Encoding

bgpkit-parser now supports encoding MRT messages. The following MRT message types are supported:

  • TableDumpV1
  • TableDumpV2
  • BGP4MP
    It also supports encoding BMP messages into MRT files.

Example of writing BgpElems into a file RIB dump file:

let mut encoder = bgpkit_parser::encoder::MrtRibEncoder::new();
for elem in parser {
  encoder.process_elem(&elem);
}
let mut writer = oneio::get_writer("filtered.rib.gz").unwrap();
writer.write_all(encoder.export_bytes().as_ref()).unwrap();
drop(writer);

Another example of writing BgpElem to BGP updates bytes:

let mut encoder = bgpkit_parser::encoder::MrtUpdatesEncoder::new();
let mut elem = BgpElem::default();
elem.peer_ip = IpAddr::V4("10.0.0.1".parse().unwrap());
elem.peer_asn = Asn::from(65000);
elem.prefix.prefix = "10.250.0.0/24".parse().unwrap();
encoder.process_elem(&elem);
elem.prefix.prefix = "10.251.0.0/24".parse().unwrap();
encoder.process_elem(&elem);
let bytes = encoder.export_bytes();

let mut cursor = Cursor::new(bytes.clone());
while cursor.has_remaining() {
let parsed = parse_mrt_record(&mut cursor).unwrap();
  dbg!(&parsed);
}

See encoder module for more details.

Better developer experiences

  • added several utility functions to BgpElem
    • .is_announcement(): check if the BGP element is an announcement
    • .get_as_path_opt(): get the AS path if it exists and no AS set or confederated segments
    • .get_origin_asn_opt(): get the origin ASN if it exists
  • full serde serialization support
  • add BgpElem to PSV (pipe-separated values) conversion
  • improved time-related filters parsing
    • ts_start start_ts ts_end end_ts are all supported
  • many quality of life improvements by @jmeggitt

Improved testing coverage

TLS backend choice

  • by default, bgpkit-parser now uses rustls as the default TLS backend
    • openssl is still supported, but it is no longer the default
    • openssl support can be enabled by using the native-tls feature flag and set default features to false

Added RFCs support

Fixes

  • fixed a bug where when multiple AsSequences are present, only the first one is parsed
  • fixed a bug where the parser panics when messages are truncated

Other changes

  • Move pybgpkit to its own repository at https://github.com/bgpkit/pybgpkit
  • CLI build feature changed from build-binary to cli
  • add more ways to install compiled bgpkit-parser CLI
    • homebrew on macOS: brew install bgpkit/tap/bgpkit-parser
    • other platforms: cargo binstall bgpkit-parser

v0.10.0-beta.3

08 Feb 16:29
7f31cdb
Compare
Choose a tag to compare
v0.10.0-beta.3 Pre-release
Pre-release

Highlights

Bytes::split_to will panic if not enough bytes available.
We added multiple safety checks to make sure enough bytes are available before calling .split_to() function.
If not enough bytes available, it will send out a TruncatedMsg error.
The current iterator will catch the error and skip the remainder of the message.

Breaking changes

  • remove IoNotEnoughBytes, and use TruncatedMsg when not enough bytes available to read

Other changes

  • bump bytes crate version to 1.5.0

v0.10.0-beta.2

29 Jan 16:59
6ce81c5
Compare
Choose a tag to compare
v0.10.0-beta.2 Pre-release
Pre-release

Highlights

  • switch to rustls as default TLS backend and remove unnecessary build dependencies and feature flags
    • updated oneio to v0.16.0
    • remove openssl and vendored-openssl dependency and feature flag for building CLI binary
    • remove ureq dev-dependency

Release process changes

  • added cargo binstall support
  • added SHA256 checksum to corresponding release binary files

v0.10.0-beta.1

03 Jan 23:42
6970e56
Compare
Choose a tag to compare
v0.10.0-beta.1 Pre-release
Pre-release
  • add TableDumpV2 support: #146
  • increase code test coverage to 92%: #147

V0.10.0-alpha.8 better PSV output

06 Dec 20:01
1bb47cd
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: v0.10.0-alpha.7...v0.10.0-alpha.8

V0.10.0-alpha.7 Fix end-of-rib detection

14 Nov 21:54
33618df
Compare
Choose a tag to compare

What's Changed

  • fix end-of-rib detection for empty nlri object by @digizeph in #139

Full Changelog: v0.10.0-alpha.6...v0.10.0-alpha.7

V0.10.0 Alpha 6 utilities + end-of-RIB detection

14 Nov 16:26
8ec667b
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.10.0-alpha.5...v0.10.0-alpha.6

V0.10.0-alpha.5 BMP listener example

31 Oct 20:54
09062c3
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: v0.10.0-alpha.4...v0.10.0-alpha.5