5 个版本 (3 个重大更新)
新增 0.4.1 | 2024年8月8日 |
---|---|
0.4.0 | 2024年8月7日 |
0.3.0 | 2024年1月31日 |
0.2.0 | 2023年10月9日 |
0.1.0 | 2023年3月5日 |
#626 在 网络编程
每月222 次下载
在 2 个包中使用 (通过 netgauze-flow-pkt)
140KB
3K SLoC
生成 IPFIX 信息元素的 Rust 代码绑定
示例
要在 build.rs
中包含生成的 IANA 和自定义注册信息元素,请添加以下代码
use std::env;
use netgauze_ipfix_code_generator::{Config, generate, RegistrySource, RegistryType, SourceConfig};
const IPFIX_URL: &str = "https://www.iana.org/assignments/ipfix/ipfix.xml";
fn main() {
let out_dir = env::var_os("OUT_DIR").expect("Couldn't find OUT_DIR in OS env variables");
let manifest_dir = env!("CARGO_MANIFEST_DIR");
let registry_path = std::path::Path::new(&manifest_dir).join("registry");
// Add custom registry, the xml file must follow the IANA schema
let nokia_path = registry_path
.join("nokia.xml")
.into_os_string()
.into_string()
.expect("Couldn't load nokia registry file");
let nokia_source = SourceConfig::new(
RegistrySource::File(nokia_path),
RegistryType::IanaXML,
637,
"nokia".to_string(),
"Nokia".to_string(),
);
let iana_source = SourceConfig::new(
RegistrySource::Http(IPFIX_URL.to_string()),
RegistryType::IanaXML,
0,
"iana".to_string(),
"IANA".to_string(),
);
let configs = Config::new(iana_source, vec![nokia_source]);
generate(&out_dir, &configs).unwrap();
println!("cargo:rerun-if-changed=build.rs");
}
依赖
~6–18MB
~259K SLoC