MoonCIDR provides IP address parsing, CIDR matching, and network range utilities for MoonBit.
git clone https://github.com/lzh123411/21341.git
cd 21341
moon check --deny-warn
moon test --deny-warn
moon run cmd/main## Example
let policy = AclPolicy::deny_by_default()
.deny_address("quarantine", Ipv4Address::parse("10.0.0.13").unwrap())
.allow_network("office", Ipv4Network::parse("10.0.0.0/8").unwrap())
let result = policy.evaluate(Ipv4Address::parse("10.0.0.42").unwrap())
println(result.to_string())moon run cmd/main# deny exceptions must appear before a broad allow
deny host 10.0.0.13 quarantine
allow net 10.0.0.0/8 office
allow range 192.168.1.10 192.168.1.20 workersmoon check --deny-warn
moon test --deny-warn
moon fmt --check
moon infopub struct AclEvaluation {
address : Ipv4Address
decision : AclDecision
matched_rule : String?
} derive(Eq, Debug)fn AclPolicy::parse_lines(lines : Array[String], default_decision : AclDecision) -> Result[AclPolicy, AclParseError]pub struct AddressScanReport {
total : Int
allowed : Int
denied : Int
scope_counts : Array[ScopeCount]
network_hits : Array[NetworkHit]
unmatched : Array[Ipv4Address]
} derive(Debug)pub struct CidrDiagnostic {
severity : DiagnosticSeverity
kind : DiagnosticKind
message : String
} derive(Eq, Debug)fn CidrDiagnostic::new(severity : DiagnosticSeverity, kind : DiagnosticKind, message : String) -> CidrDiagnosticfn Ipv4Network::from_address_and_netmask(address : Ipv4Address, mask : Ipv4Address) -> Result[Ipv4Network, CidrError]fn Ipv4Network::from_address_and_wildcard(address : Ipv4Address, wildcard : Ipv4Address) -> Result[Ipv4Network, CidrError]fn Ipv4Network::nth_subnet(self : Ipv4Network, new_prefix : Int, index : Int) -> Result[Ipv4Network, CidrError]fn Ipv4Network::subnets(self : Ipv4Network, new_prefix : Int) -> Result[Array[Ipv4Network], CidrError]fn Ipv6Address::from_segments(s0 : Int, s1 : Int, s2 : Int, s3 : Int, s4 : Int, s5 : Int, s6 : Int, s7 : Int) -> Result[Ipv6Address, CidrError]fn filter_matching_set(addresses : Array[Ipv4Address], networks : Ipv4NetworkSet) -> Array[Ipv4Address]fn filter_not_matching_set(addresses : Array[Ipv4Address], networks : Ipv4NetworkSet) -> Array[Ipv4Address]fn scan_addresses(addresses : Array[Ipv4Address], policy : AclPolicy, networks : Ipv4NetworkSet) -> AddressScanReportInstall
Download zipMoonCIDR provides IP address parsing, CIDR matching, and network range utilities for MoonBit.