Skip to content

Latest commit

 

History

History
247 lines (172 loc) · 8.91 KB

CHANGELOG.md

File metadata and controls

247 lines (172 loc) · 8.91 KB

Changelog

All notable changes to this project will be documented in this file.

v0.10.11-beta.1 - 2024-10-16

Highlights

  • Improved RIS Live message types and handling
  • clean up dependencies
    • models feature is removed, and all dependencies are now required dependencies for the crate
    • models module no-longer requires dependencies introduced by parser, like bytes for encoding
  • decouple oneio from parser feature
    • oneio is no-longer a required dependency for the parser
    • users can now use parser feature without oneio (with --no-default-features specified)
      • to create a new parser, one needs to user BgpkitParser::from_reader function instead of BgpkitParser::new
    • downstream libraries that only utilize parser code (such as RIS Live parsing) no-longer have to depend on oneio

v0.10.10 - 2024-08-05

Highlights

  • update oneio to v0.17.0
    • now users can set env var ONEIO_ACCEPT_INVALID_CERTS=true to disable certificate validation, useful in some environment where users do not manage certificates

v0.10.9 - 2024-04-12

BMP messages SDK improvements

  • expose all pub structs and enums for BMP messages
    • this allows users to access struct definitions and operate on them directly
  • added Copy to BmpMsgType, BmpPeerType and BmpPerPeerHeader, PerPeerFlags, BmpPeerType
  • implemented Default, PartialEq, Eq and Hash for BmpPerPeerHeader
    • this allows users and compare and hash BmpPerPeerHeader structs
    • also implemented .strip_timestamp() to remove the timestamp from the BmpPerPeerHeader struct for cases where the timestamp is not needed
  • rename MessageBody to BmpMessageBody
  • derive Clone, PartialEq to BmpMessage and MessageBody
  • added serialization/deserialization support for BmpMessage and BmpMessageBody

v0.10.8 - 2024-04-05

Highlights

  • improve support for more BMP data types and better error handling (#163)
    • added explicit enum PeerDownReason, TerminationReason, PeerUpTlvType instead of saving them as integers
    • added support for AFI-SAFI gauge for StatisticsReport message
      • this fixes issue #162
    • added UnknownTlvType and UnknownTlvValue errors for parsing BMP TLV records
    • added Clone and PartialEq derives to most of the BMP message structs

v0.10.7 - 2024-03-30

Highlights

  • improve end-of-RIB marker detection (#161)

v0.10.6 - 2024-03-30

Bug fix

  • fixed an code panic issue where malformed RIB dump entry with non-existing peer ID causes a panic
    • also removed a number of unwraps in the code to handle errors more gracefully
    • see issue #157 for details

v0.10.5 - 2024-03-26

Highlights

  • by default handles only gzip and bzip2 files
    • to support xz and lz files, use the optional feature xz and lz

v0.10.4 - 2024-03-20

Hot fix

  • update oneio to v0.16.4
    • add http2 and charset feature flag to reqwest

v0.10.3 - 2024-03-20

Highlights

  • fixed an panic issue when sometimes merging AS path segments of 4-byte ASN path and 2-byte ASN path
    • see issue #156 for details
  • update oneio to v0.16.3
    • gzip decompression depends on flate2's rust-backend feature instead of zlib-ng which requires cmake to build

v0.10.2 - 2024-03-06

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 - 2024-02-23

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 - 2024-02-12

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 - 2024-02-08

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 - 2024-01-29

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 - 2024-01-03

  • add TableDumpV2 support: #146
  • increase code test coverage to 92%: #147