pub struct NacmRule {
pub name: String,
pub module_name: Option<String>,
pub rpc_name: Option<String>,
pub path: Option<String>,
pub access_operations: HashSet<Operation>,
pub effect: RuleEffect,
pub order: u32,
pub context: Option<String>,
pub log_if_permit: bool,
pub log_if_deny: bool,
}Expand description
NACM Rule structure (extended to match XML format)
Represents a single NACM access control rule. Each rule defines:
- What it applies to (module, RPC, path)
- Which operations it covers
- Whether it permits or denies access
- Its precedence order (lower numbers = higher priority)
§Fields
name- Human-readable identifier for the rulemodule_name- YANG module this rule applies to (None = any module)rpc_name- Specific RPC name (None = any RPC, “*” = wildcard)path- XPath or data path (None = any path, “/” = root)access_operations- Set of operations this rule coverseffect- Whether to permit or deny matching requestsorder- Rule precedence (lower = higher priority)context- Request context this rule applies to (Tail-f extension)log_if_permit- Log when this rule permits access (Tail-f extension)log_if_deny- Log when this rule denies access (Tail-f extension)
§Examples
use nacm_validator::{NacmRule, RuleEffect, Operation};
use std::collections::HashSet;
let mut ops = HashSet::new();
ops.insert(Operation::Read);
let rule = NacmRule {
name: "allow-read-interfaces".to_string(),
module_name: Some("ietf-interfaces".to_string()),
rpc_name: None,
path: Some("/interfaces".to_string()),
access_operations: ops,
effect: RuleEffect::Permit,
order: 10,
context: None,
log_if_permit: false,
log_if_deny: false,
};Fields§
§name: StringUnique name for this rule
module_name: Option<String>YANG module name this rule applies to (None = any module)
rpc_name: Option<String>RPC name this rule applies to (None = any RPC)
path: Option<String>XPath or data path (None = any path)
access_operations: HashSet<Operation>Set of operations covered by this rule
effect: RuleEffectWhether this rule permits or denies access
order: u32Rule precedence - lower numbers have higher priority
context: Option<String>Request context pattern this rule applies to (Tail-f extension)
log_if_permit: boolLog when this rule permits access (Tail-f extension)
log_if_deny: boolLog when this rule denies access (Tail-f extension)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for NacmRule
impl RefUnwindSafe for NacmRule
impl Send for NacmRule
impl Sync for NacmRule
impl Unpin for NacmRule
impl UnwindSafe for NacmRule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more