| Crates.io | as2org-rs |
| lib.rs | as2org-rs |
| version | 1.1.1 |
| created_at | 2024-06-24 20:50:50.367399+00 |
| updated_at | 2025-10-30 00:17:53.712351+00 |
| description | A library helps accessing CAIDA's as-to-organization mapping data. |
| homepage | |
| repository | https://github.com/bgpkit/as2org-rs |
| max_upload_size | |
| id | 1282559 |
| size | 92,479 |
as2org-rs: utility crate for accessing CAIDA AS to organization mappingThis readme is generated from the library's doc comments using cargo-readme. Please refer to the Rust docs website for the full documentation
as2org-rs: Access CAIDA AS-to-Organization mappings in Rust
This crate provides a small, dependency-light helper for reading and querying CAIDA's AS Organizations dataset. It downloads (or opens a local/remote path) the newline-delimited JSON (JSONL) files published by CAIDA and exposes a simple API to:
The crate supports local files, HTTP(S) URLs, and gz-compressed inputs via
the oneio crate.
Add the dependency to your Cargo.toml:
[dependencies]
as2org-rs = "1"
Public return type:
As2orgAsInfo contains:
asn: the AS numbername: the name provided for the individual AS numbercountry_code: the registration country code of the organizationorg_id: the CAIDA/WHOIS organization identifierorg_name: the organization's namesource: the RIR or NIR database that contained this entryLoad the most recent dataset and run typical queries:
use as2org_rs::As2org;
// Construct from the latest public dataset (requires network access)
let as2org = As2org::new(None).unwrap();
// Look up one ASN
let info = as2org.get_as_info(15169).unwrap();
assert_eq!(info.org_id.is_empty(), false);
// List all siblings for an ASN (ASNs under the same org)
let siblings = as2org.get_siblings(15169).unwrap();
assert!(siblings.iter().any(|s| s.asn == 36040));
// Check whether two ASNs are siblings
assert!(as2org.are_siblings(15169, 36040));
You can also point to a local file path or a remote URL (HTTP/HTTPS), gzipped or plain:
use as2org_rs::As2org;
// From a local jsonl.gz file
let as2org = As2org::new(Some("/path/to/20250101.as-org2info.jsonl.gz".into())).unwrap();
// From an explicit HTTPS URL
let as2org = As2org::new(Some("https://publicdata.caida.org/datasets/as-organizations/20250101.as-org2info.jsonl.gz".into())).unwrap();
Constructors and helper functions return anyhow::Result<T>. For lookups,
the API returns Option<_> when a requested ASN or organization is missing.
None to As2org::new so the
crate can discover and fetch the latest dataset URL.MIT