in proxy_agent/src/redirector/windows/bpf_api.rs [46:113]
fn init_ebpf_lib() -> Option<Library> {
let program_files_dir = env::var("ProgramFiles").unwrap_or("C:\\Program Files".to_string());
let program_files_dir = PathBuf::from(program_files_dir);
let ebpf_for_windows_dir = program_files_dir.join("ebpf-for-windows");
let bpf_api_file_path = ebpf_for_windows_dir.join(EBPF_API_FILE_NAME);
logger::write_information(format!(
"Try to load ebpf api file from: {}",
misc_helpers::path_to_string(&bpf_api_file_path)
));
match load_ebpf_api(&bpf_api_file_path) {
Ok(ebpf_lib) => {
if !EBPF_API_VERSION.initialized() {
// fetch the product version of this dll
match proxy_agent_shared::windows::get_file_product_version(&bpf_api_file_path) {
Ok(v) => {
if let Err(e) = EBPF_API_VERSION.set(v) {
event_logger::write_event(
LoggerLevel::Error,
format!("{}", e),
"EBPF_API_VERSION.set",
"redirector",
logger::AGENT_LOGGER_KEY,
);
}
}
Err(e) => {
event_logger::write_event(
LoggerLevel::Warn,
format!("{}", e),
"get_file_product_version",
"redirector",
logger::AGENT_LOGGER_KEY,
);
}
}
}
return Some(ebpf_lib);
}
Err(e) => {
event_logger::write_event(
LoggerLevel::Warn,
format!("{}", e),
"load_ebpf_api",
"redirector",
logger::AGENT_LOGGER_KEY,
);
}
}
logger::write_warning("Try to load ebpf api file from default system path".to_string());
match load_ebpf_api(&PathBuf::from(EBPF_API_FILE_NAME)) {
Ok(ebpf_lib) => {
return Some(ebpf_lib);
}
Err(e) => {
event_logger::write_event(
LoggerLevel::Warn,
format!("{}", e),
"load_ebpf_api",
"redirector",
logger::AGENT_LOGGER_KEY,
);
}
}
None
}