use crate::types::Language;
pub struct BaseModuleInfo {
pub name: &'static str,
pub language: Language,
}
const BASE_MODULES: &[BaseModuleInfo] = &[
BaseModuleInfo {
name: "SNMPv2-SMI",
language: Language::SMIv2,
},
BaseModuleInfo {
name: "SNMPv2-TC",
language: Language::SMIv2,
},
BaseModuleInfo {
name: "SNMPv2-CONF",
language: Language::SMIv2,
},
BaseModuleInfo {
name: "RFC1155-SMI",
language: Language::SMIv1,
},
BaseModuleInfo {
name: "RFC1065-SMI",
language: Language::SMIv1,
},
BaseModuleInfo {
name: "RFC-1212",
language: Language::SMIv1,
},
BaseModuleInfo {
name: "RFC-1215",
language: Language::SMIv1,
},
];
pub fn is_base_module(name: &str) -> bool {
base_module_from_name(name).is_some()
}
pub fn base_module_from_name(name: &str) -> Option<&'static BaseModuleInfo> {
BASE_MODULES.iter().find(|module| module.name == name)
}
pub fn base_module_names() -> &'static [&'static str] {
static NAMES: &[&str] = &[
"SNMPv2-SMI",
"SNMPv2-TC",
"SNMPv2-CONF",
"RFC1155-SMI",
"RFC1065-SMI",
"RFC-1212",
"RFC-1215",
];
NAMES
}
pub(crate) fn embedded_content(name: &str) -> Option<&'static [u8]> {
match name {
"SNMPv2-SMI" => Some(include_bytes!("embedded/SNMPv2-SMI")),
"SNMPv2-TC" => Some(include_bytes!("embedded/SNMPv2-TC")),
"SNMPv2-CONF" => Some(include_bytes!("embedded/SNMPv2-CONF")),
"RFC1155-SMI" => Some(include_bytes!("embedded/RFC1155-SMI")),
"RFC1065-SMI" => Some(include_bytes!("embedded/RFC1065-SMI")),
"RFC-1212" => Some(include_bytes!("embedded/RFC-1212")),
"RFC-1215" => Some(include_bytes!("embedded/RFC-1215")),
_ => None,
}
}