diff options
author | Gaurav Sinha <gaurav.sinha@vyatta.com> | 2012-09-04 13:31:48 -0700 |
---|---|---|
committer | Gaurav Sinha <gaurav.sinha@vyatta.com> | 2012-09-04 13:31:48 -0700 |
commit | 18145aee4e7666013c44afb4bc9078051aec41b8 (patch) | |
tree | dbae3967822d6eb9b4ed3556e2c6898d7a1658ef /lib | |
parent | 9dc90a9ea4d350fbee1c44a5e87f880e7bb0cefa (diff) | |
download | vyatta-conntrack-tcp_udp_addition.tar.gz vyatta-conntrack-tcp_udp_addition.zip |
tcp_udp support, initial changestcp_udp_addition
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Vyatta/Conntrack/RuleIgnore.pm | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/lib/Vyatta/Conntrack/RuleIgnore.pm b/lib/Vyatta/Conntrack/RuleIgnore.pm index 7c3f668..27ed237 100644 --- a/lib/Vyatta/Conntrack/RuleIgnore.pm +++ b/lib/Vyatta/Conntrack/RuleIgnore.pm @@ -22,14 +22,13 @@ my $DEBUG = 'false'; sub rule { my ( $self ) = @_; - my ($rule, $srcrule, $dstrule, $err_str); - my $tcp_and_udp = 0; + my ($rule1, $rule2, $srcrule, $dstrule, $err_str); # set CLI rule num as comment my @level_nodes = split (' ', $self->{_comment}); - $rule .= " -m comment --comment \"$level_nodes[2]-$level_nodes[4]\" "; + $rule1 .= " -m comment --comment \"$level_nodes[2]-$level_nodes[4]\" "; if (defined($self->{_interface})) { - $rule .= " -i $self->{_interface} "; + $rule1 .= " -i $self->{_interface} "; } ($srcrule, $err_str) = $src->rule(); if (defined($err_str)) { @@ -41,17 +40,33 @@ sub rule { Vyatta::Config::outputError(["Conntrack"], "Conntrack config error: $err_str"); exit 1; } + if (defined($self->{_protocol})) { - if ($self->{_protocol} =~ m/^!/) { - my $protocol = substr($self->{_protocol}, 1); - $rule .= " ! -p $protocol"; + if ($self->{_protocol} eq 'tcp_udp') { + $rule2 = $rule1; + #break protcol as tcp and udp, two rules + if ($self->{_protocol} =~ m/^!/) { + $rule1 .= " ! -p tcp"; + $rule2 .= " ! -p udp"; + } else { + $rule1 .= " -p tcp "; + $rule2 .= " -p udp "; + } } else { - $rule .= " -p $self->{_protocol}"; + if ($self->{_protocol} =~ m/^!/) { + my $protocol = substr($self->{_protocol}, 1); + $rule1 .= " ! -p $protocol"; + } else { + $rule1 .= " -p $self->{_protocol}"; + } } } - - $rule .= " $srcrule $dstrule "; - return $rule; + + $rule1 .= " $srcrule $dstrule "; + if ($rule2) { + $rule2 .= " $srcrule $dstrule "; + } + return ($rule1, $rule2); } sub new { |