% vim set ft=prolog % rule(src, dst, proto, port, source(..)). :- module(firewall, [ fw_rule/2, retract_all_from/1]). :- use_module(hosts, [ router_link/3]). :- dynamic fw_rule/2. rule_is_from(fw_rule(_, Attr), From) :- Attr.from=From. rules_from(From, Rules) :- findall(fw_rule(Host, Attr), (fw_rule(Host, Attr), Attr.from=From), Rules). retract_all_from(From) :- rules_from(From, Rules), retract_rules(Rules). retract_rules([R|Rules]) :- retract(R), retract_rules(Rules). retract_rules([]).