You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2014/12/15 22:12:52 UTC
svn commit: r1645750 - in /vcl/trunk/managementnode/lib/VCL:
Module/OS/Linux/firewall/iptables.pm utils.pm
Author: arkurth
Date: Mon Dec 15 21:12:52 2014
New Revision: 1645750
URL: http://svn.apache.org/r1645750
Log:
VCL-174
Added utils.pm::get_natport_ranges to reduce duplicated code. Added possibility of allowing newline's in the natport_ranges variable.
Modified:
vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm
vcl/trunk/managementnode/lib/VCL/utils.pm
Modified: vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm?rev=1645750&r1=1645749&r2=1645750&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/firewall/iptables.pm Mon Dec 15 21:12:52 2014
@@ -675,10 +675,10 @@ sub configure_nat {
"internal - interface: $internal_interface_name, IP address: $internal_ip_address/$internal_subnet_mask, network: $internal_network_address/$internal_network_bits"
);
- my $natport_ranges_variable = get_variable('natport_ranges') || '49152-65535';
+ my @natport_ranges = get_natport_ranges();
my $destination_ports = '';
- for my $natport_range (split(/[,;]+/, $natport_ranges_variable)) {
- my ($start_port, $end_port) = $natport_range =~ /(\d+)-(\d+)/g;
+ for my $natport_range (@natport_ranges) {
+ my ($start_port, $end_port) = @$natport_range;
if (!defined($start_port)) {
notify($ERRORS{'WARNING'}, 0, "unable to parse NAT port range: '$natport_range'");
next;
Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1645750&r1=1645749&r2=1645750&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Mon Dec 15 21:12:52 2014
@@ -162,6 +162,7 @@ our @EXPORT = qw(
get_management_node_vmhost_info
get_module_info
get_nathost_assigned_public_ports
+ get_natport_ranges
get_next_image_default
get_os_info
get_production_imagerevision_info
@@ -7254,6 +7255,47 @@ sub get_nathost_assigned_public_ports {
#/////////////////////////////////////////////////////////////////////////////
+=head2 get_natport_ranges
+
+ Parameters : none
+ Returns : array
+ Description : Parses the 'natport_ranges' variable. Constucts an array of
+ arrays. The child arrays are in the form:
+ ($start_port, $end_port)
+
+=cut
+
+sub get_natport_ranges {
+ return @{$ENV{natport_ranges}} if defined($ENV{natport_ranges});
+
+ # Retrieve and parse the natport_ranges variable
+ my $natport_ranges_variable = get_variable('natport_ranges') || '49152-65535';
+ my @natport_range_strings = split(/[,;\n]+/, $natport_ranges_variable);
+ my @natport_ranges;
+ for my $natport_range_string (@natport_range_strings) {
+ my ($start_port, $end_port) = $natport_range_string =~ /(\d+)-(\d+)/g;
+ if (!defined($start_port)) {
+ notify($ERRORS{'WARNING'}, 0, "unable to parse NAT port range: '$natport_range_string'");
+ next;
+ }
+
+ # Make sure port range isn't backwards
+ if ($end_port < $start_port) {
+ my $start_port_temp = $start_port;
+ $start_port = $end_port;
+ $end_port = $start_port_temp;
+ }
+
+ push @natport_ranges, [$start_port, $end_port];
+ }
+
+ notify($ERRORS{'DEBUG'}, 0, "parsed natport_ranges variable:\n" . format_data(\@natport_ranges));
+ $ENV{natport_ranges} = \@natport_ranges;
+ return @natport_ranges;
+}
+
+#/////////////////////////////////////////////////////////////////////////////
+
=head2 populate_reservation_natport
Parameters : $reservation_id
@@ -7300,23 +7342,15 @@ sub populate_reservation_natport {
my %available_port_hash;
- # Retrieve and parse the natport_ranges variable
- my $natport_ranges_variable = get_variable('natport_ranges') || '49152-65535';
- my @natport_ranges = split(/[,;]+/, $natport_ranges_variable);
+ # Retrieve the natport range pairs
+ my @natport_ranges = get_natport_ranges();
for my $natport_range (@natport_ranges) {
- my ($start_port, $end_port) = $natport_range =~ /(\d+)-(\d+)/g;
+ my ($start_port, $end_port) = @$natport_range;
if (!defined($start_port)) {
- notify($ERRORS{'WARNING'}, 0, "unable to parse NAT port range: '$natport_range'");
+ notify($ERRORS{'WARNING'}, 0, "unable to parse NAT port range:\n" . format_data($natport_range));
next;
}
- # Make sure port range isn't backwards
- if ($end_port < $start_port) {
- my $start_port_temp = $start_port;
- $start_port = $end_port;
- $end_port = $start_port_temp;
- }
-
# Loop through all of the ports in the range, check if already assigned
for (my $port = $start_port; $port<=$end_port; $port++) {
if (!defined($assigned_port_hash{$port})) {