public IEnumerable <IPAddressRange> EnumerateIPAddresses(string ruleNamePrefix = null) { lock (this) { string prefix = ScrubRuleNamePrefix(ruleNamePrefix); if (blockRules.TryGetValue(prefix, out MemoryFirewallRule rule)) { return(rule.EnumerateIPAddressesRanges()); } else if (blockRulesRanges.TryGetValue(prefix, out MemoryFirewallRuleRanges ruleRanges)) { return(ruleRanges.EnumerateIPAddresses()); } else if (prefix.StartsWith(RulePrefix + "Allow", StringComparison.OrdinalIgnoreCase)) { return(allowRule.EnumerateIPAddressesRanges()); } return(new IPAddressRange[0]); } }
public override IEnumerable <IPAddressRange> EnumerateIPAddresses(string ruleNamePrefix = null) { lock (this) { List <IPAddressRange> results = new List <IPAddressRange>(); string prefix = ScrubRuleNamePrefix(BlockRulePrefix, ruleNamePrefix); foreach (var rule in blockRules) { if (string.IsNullOrWhiteSpace(ruleNamePrefix) || rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { results.AddRange(rule.Value.EnumerateIPAddressesRanges()); } } foreach (var rule in blockRulesRanges) { if (string.IsNullOrWhiteSpace(ruleNamePrefix) || rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { results.AddRange(rule.Value.EnumerateIPAddressesRanges()); } } prefix = ScrubRuleNamePrefix(AllowRulePrefix, ruleNamePrefix); foreach (var rule in allowRuleRanges) { if (string.IsNullOrWhiteSpace(ruleNamePrefix) || rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { results.AddRange(rule.Value.EnumerateIPAddressesRanges()); } } if (string.IsNullOrWhiteSpace(ruleNamePrefix) || allowRule.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { results.AddRange(allowRule.EnumerateIPAddressesRanges()); } return(results); } }