From: Alexander Marx Date: Wed, 9 Apr 2014 14:23:55 +0000 (+0200) Subject: Firewall: Fix 10510 - Show all protocols from servicegroups (GRE,IPIP,IPV6,...) X-Git-Tag: v2.15-rc2~35^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=712500d0dcb95a761c528211d23c664bd1033128;p=ipfire-2.x.git Firewall: Fix 10510 - Show all protocols from servicegroups (GRE,IPIP,IPV6,...) --- diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi index e9957943af..28ae464c60 100644 --- a/html/cgi-bin/firewall.cgi +++ b/html/cgi-bin/firewall.cgi @@ -1264,42 +1264,30 @@ sub get_serviceports my $udp; my $icmp; @protocols=(); + my @specprot=("IPIP","IPV6","IGMP","GRE","AH","ESP"); if($type eq 'service'){ foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){ if ($customservice{$key}[0] eq $name){ - push (@protocols,$customservice{$key}[2]); + push (@protocols," ".$customservice{$key}[2]); } } }elsif($type eq 'group'){ foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } keys %customservicegrp){ if ($customservicegrp{$key}[0] eq $name){ - foreach my $key1 (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){ - if ($customservice{$key1}[0] eq $customservicegrp{$key}[2]){ - if($customservice{$key1}[2] eq 'TCP'){ - $tcp='TCP'; - }elsif($customservice{$key1}[2] eq 'ICMP'){ - $icmp='ICMP'; - }elsif($customservice{$key1}[2] eq 'UDP'){ - $udp='UDP'; + if ($customservicegrp{$key}[2] ~~ @specprot){ + push (@protocols," ".$customservicegrp{$key}[2]); + }else{ + foreach my $key1 (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){ + if ($customservice{$key1}[0] eq $customservicegrp{$key}[2]){ + if (!grep(/$customservice{$key1}[2]/, @protocols)){ + push (@protocols," ".$customservice{$key1}[2]); + } } } } } } } - if($tcp && $udp && $icmp){ - push (@protocols,"TCP,UDP,
ICMP"); - return @protocols; - } - if($tcp){ - push (@protocols,"TCP"); - } - if($udp){ - push (@protocols,"UDP"); - } - if($icmp){ - push (@protocols,"ICMP"); - } return @protocols; } sub getcolor