From 2e4366189139169f83ebe44802092fc97b2ec4eb Mon Sep 17 00:00:00 2001 From: Gaurav Sinha Date: Fri, 9 Dec 2011 13:50:59 -0800 Subject: Bug 7675:Allow any and combination of any with port in conntrack entry show / deletion commands --- scripts/vyatta-delete-conntrack.pl | 73 ++++++++++++++++++++++++----------- scripts/vyatta-show-conntrack.pl | 78 +++++++++++++++++++++++++++----------- 2 files changed, 106 insertions(+), 45 deletions(-) (limited to 'scripts') diff --git a/scripts/vyatta-delete-conntrack.pl b/scripts/vyatta-delete-conntrack.pl index ceccdd8..7294c14 100755 --- a/scripts/vyatta-delete-conntrack.pl +++ b/scripts/vyatta-delete-conntrack.pl @@ -160,6 +160,9 @@ if ($family eq "ipv4") { $sourceIP = $address[0]; $sourcePort = $address[1]; + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0.0.0.0"; + } #Validate the entered IP and port my( $success, $err ) = isValidPortNumber($sourcePort); if (!(isIpAddress($sourceIP))and !($sourceIP eq "0.0.0.0")) { @@ -183,6 +186,9 @@ if ($family eq "ipv4") { $destIP = $address[0]; $destPort = $address[1]; + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0.0.0.0"; + } #Validate the entered IP and port my( $success, $err ) = isValidPortNumber($destPort); if (!(isIpAddress($destIP))and !($destIP eq "0.0.0.0")) { @@ -200,6 +206,13 @@ if ($family eq "ipv4") { } $command .= " --orig-port-dst $destPort"; } + #support any for 0.0.0.0 + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0.0.0.0"; + } + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0.0.0.0"; + } if ((defined $sourceIP) and !($sourceIP eq "0.0.0.0")) { # Check if IP address is a valid IPv4 address @@ -234,14 +247,16 @@ if ($family eq "ipv4") { $sourceIP = substr($address[0], 1); $sourcePort = substr($address[1], 1); my( $success, $err ) = isValidPortNumber($sourcePort); - if (validateType('ipv6', $sourceIP, 'quiet')) { - if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { - die "Please enter a valid source IPv6 address\n"; + if ($sourceIP ne "any") { + if (validateType('ipv6', $sourceIP, 'quiet')) { + if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid source IPv6 address\n"; + } + } else { + if(!defined($success)) { + die "Please enter a valid source IPv6 address and port \n"; + } } - } else { - if(!defined($success)) { - die "Please enter a valid source IPv6 address and port \n"; - } } if(!defined($success)) { die "Please enter a valid source port \n"; @@ -250,12 +265,14 @@ if ($family eq "ipv4") { } } else { #IPv6-address without port - if (validateType('ipv6', $sourceIP, 'quiet')) { - if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + if ($sourceIP ne "any") { + if (validateType('ipv6', $sourceIP, 'quiet')) { + if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid source IPv6 address\n"; + } + } else { die "Please enter a valid source IPv6 address\n"; } - } else { - die "Please enter a valid source IPv6 address\n"; } } } @@ -270,14 +287,16 @@ if ($family eq "ipv4") { $destIP = substr($address[0], 1); $destPort = substr($address[1], 1); my( $success, $err ) = isValidPortNumber($destPort); - if (validateType('ipv6', $destIP, 'quiet')) { - if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { - die "Please enter a valid destination IPv6 address\n"; + if ($destIP ne "any") { + if (validateType('ipv6', $destIP, 'quiet')) { + if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid destination IPv6 address\n"; + } + } else { + if(!defined($success)) { + die "Please enter a valid destination IPv6 address and port \n"; + } } - } else { - if(!defined($success)) { - die "Please enter a valid destination IPv6 address and port \n"; - } } if(!defined($success)) { die "Please enter a valid destination port \n"; @@ -286,15 +305,25 @@ if ($family eq "ipv4") { } } else { #IPv6-address without port - if (validateType('ipv6', $destIP, 'quiet')) { - if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + if ($destIP ne "any") { + if (validateType('ipv6', $destIP, 'quiet')) { + if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid destination IPv6 address\n"; + } + } else { die "Please enter a valid destination IPv6 address\n"; } - } else { - die "Please enter a valid destination IPv6 address\n"; } } } + + # Support "any" keyword + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0:0:0:0:0:0:0:0"; + } + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0:0:0:0:0:0:0:0"; + } if (($sourceIP) and ($sourceIP ne "0:0:0:0:0:0:0:0")) { $command .= " -s $sourceIP"; } diff --git a/scripts/vyatta-show-conntrack.pl b/scripts/vyatta-show-conntrack.pl index 17457b1..95c2341 100755 --- a/scripts/vyatta-show-conntrack.pl +++ b/scripts/vyatta-show-conntrack.pl @@ -164,9 +164,12 @@ if ($family eq "ipv4") { $sourceIP = $address[0]; $sourcePort = $address[1]; + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0.0.0.0"; + } # Check if IP address is a valid IPv4 address my( $success, $err ) = isValidPortNumber($sourcePort); - if (!(isIpAddress($sourceIP))and !($sourceIP eq "0.0.0.0")) { + if (!(isIpAddress($sourceIP)) and !($sourceIP eq "0.0.0.0")) { if(!defined($success)) { #both IP and port are invalid die "Please enter a valid source IPv4 address and port \n"; @@ -186,6 +189,11 @@ if ($family eq "ipv4") { my @address = split(/:/, $destIP); $destIP = $address[0]; $destPort = $address[1]; + + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0.0.0.0"; + } + my( $success, $err ) = isValidPortNumber($destPort); if (!(isIpAddress($destIP))and !($destIP eq "0.0.0.0")) { if(!defined($success)) { @@ -202,6 +210,13 @@ if ($family eq "ipv4") { } $command .= " --orig-port-dst $destPort"; } + + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0.0.0.0"; + } + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0.0.0.0"; + } if ((defined $sourceIP) and !($sourceIP eq "0.0.0.0")) { # Check if IP address is a valid IPv4 address @@ -235,15 +250,18 @@ if ($family eq "ipv4") { } $sourceIP = substr($address[0], 1); $sourcePort = substr($address[1], 1); + my( $success, $err ) = isValidPortNumber($sourcePort); - if (validateType('ipv6', $sourceIP, 'quiet')) { - if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { - die "Please enter a valid source IPv6 address\n"; + if ($sourceIP ne "any") { + if (validateType('ipv6', $sourceIP, 'quiet')) { + if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid source IPv6 address\n"; + } + } else { + if(!defined($success)) { + die "Please enter a valid source IPv6 address and port \n"; + } } - } else { - if(!defined($success)) { - die "Please enter a valid source IPv6 address and port \n"; - } } if(!defined($success)) { die "Please enter a valid source port \n"; @@ -252,12 +270,14 @@ if ($family eq "ipv4") { } } else { #IPv6-address without port - if (validateType('ipv6', $sourceIP, 'quiet')) { - if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + if ($sourceIP ne "any") { + if (validateType('ipv6', $sourceIP, 'quiet')) { + if ($sourceIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid source IPv6 address\n"; + } + } else { die "Please enter a valid source IPv6 address\n"; } - } else { - die "Please enter a valid source IPv6 address\n"; } } } @@ -271,15 +291,18 @@ if ($family eq "ipv4") { if (@address) { $destIP = substr($address[0], 1); $destPort = substr($address[1], 1); + my( $success, $err ) = isValidPortNumber($destPort); - if (validateType('ipv6', $destIP, 'quiet')) { - if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { - die "Please enter a valid destination IPv6 address\n"; + if ($destIP ne "any") { + if (validateType('ipv6', $destIP, 'quiet')) { + if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid destination IPv6 address\n"; + } + } else { + if(!defined($success)) { + die "Please enter a valid destination IPv6 address and port \n"; + } } - } else { - if(!defined($success)) { - die "Please enter a valid destination IPv6 address and port \n"; - } } if(!defined($success)) { die "Please enter a valid destination port \n"; @@ -288,14 +311,23 @@ if ($family eq "ipv4") { } } else { #IPv6-address without port - if (validateType('ipv6', $destIP, 'quiet')) { - if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + if ($destIP ne "any") { + if (validateType('ipv6', $destIP, 'quiet')) { + if ($destIP =~ m/[^ABCDEFabcdef0123456789:\[\]]/) { + die "Please enter a valid destination IPv6 address\n"; + } + } else { die "Please enter a valid destination IPv6 address\n"; } - } else { - die "Please enter a valid destination IPv6 address\n"; } } + } + # Support "any" keyword + if ((defined $destIP) and ($destIP eq "any")) { + $destIP = "0:0:0:0:0:0:0:0"; + } + if ((defined $sourceIP) and ($sourceIP eq "any")) { + $sourceIP = "0:0:0:0:0:0:0:0"; } if (($sourceIP) and ($sourceIP ne "0:0:0:0:0:0:0:0")) { $command .= " -s $sourceIP"; -- cgit v1.2.3