public bool DeleteRule(string ruleName) { RunProcess("iptables", true, out IReadOnlyList <string> lines, "-L --line-numbers"); string ruleNameWithSpaces = " " + ruleName + " "; foreach (string line in lines) { if (line.Contains(ruleNameWithSpaces, StringComparison.OrdinalIgnoreCase)) { // rule number is first piece of the line int index = line.IndexOf(' '); int ruleNum = int.Parse(line.Substring(0, index)); // remove the rule from iptables RunProcess("iptables", true, $"-D INPUT {ruleNum}"); SaveTableToDisk(); // remove the set DeleteSet(ruleName); return(true); } } return(firewall6.DeleteRule(ruleName)); }