summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/vyatta-conntrack-ignore.pl18
1 files changed, 11 insertions, 7 deletions
diff --git a/scripts/vyatta-conntrack-ignore.pl b/scripts/vyatta-conntrack-ignore.pl
index 701c8b8..37a1534 100644
--- a/scripts/vyatta-conntrack-ignore.pl
+++ b/scripts/vyatta-conntrack-ignore.pl
@@ -71,26 +71,30 @@ sub handle_rule_creation {
my $node = new Vyatta::Conntrack::RuleIgnore;
my ($rule_string);
- do_interface_check($rule);
+ do_minimalrule_check($rule);
$node->setup("system conntrack ignore rule $rule");
$rule_string = $node->rule();
apply_ignore_policy($rule_string, $rule, $num_rules);
}
-# mandate only one interface configuration per rule
-sub do_interface_check {
+# mandate atleast inbound interface / source ip / dest ip or protocol per rule
+sub do_minimalrule_check {
my ($rule) = @_;
my $config = new Vyatta::Config;
- my $intf_nos = $config->listNodes("system conntrack ignore rule $rule inbound-interface");
- if (($intf_nos > 1)) {
- Vyatta::Config::outputError(["Conntrack"], "Conntrack config error: configure at most one inbound interface in rule $rule");
+ my $intf = $config->exists("system conntrack ignore rule $rule inbound-interface");
+ my $src = $config->exists("system conntrack ignore rule $rule source address");
+ my $dst = $config->exists("system conntrack ignore rule $rule destination address");
+ my $protocol = $config->exists("system conntrack ignore rule $rule protocol");
+
+ if ( (!$intf) and (!$src) and (!$dst) and (!$protocol)) {
+ Vyatta::Config::outputError(["Conntrack"], "Conntrack config error: No inbound-interface, source / destination address, protocol found in rule @_ ");
exit 1;
}
}
sub handle_rule_modification {
my ($rule, $num_rules) = @_;
- do_interface_check($rule);
+ do_minimalrule_check($rule);
handle_rule_deletion($rule);
handle_rule_creation($rule, $num_rules);
}