pf-tools/pf-tools: ability to set interface up without ip (neede...

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Tue Nov 18 16:21:08 UTC 2014


details:   http://hg.debian.org/hg/pf-tools/pf-tools/rev/0bb05ffb7c3a
changeset: 1338:0bb05ffb7c3a
user:      shad
date:      Tue Nov 18 17:21:04 2014 +0100
description:
ability to set interface up without ip (needed for openstack)

diffstat:

 lib/PFTools/Conf/Host.pm   |  13 +++++++++++++
 lib/PFTools/Conf/Syntax.pm |   1 +
 lib/PFTools/Utils.pm       |  14 ++++++++++----
 3 files changed, 24 insertions(+), 4 deletions(-)

diffs (79 lines):

diff -r d8e95fb70f60 -r 0bb05ffb7c3a lib/PFTools/Conf/Host.pm
--- a/lib/PFTools/Conf/Host.pm	Thu Oct 23 14:28:52 2014 +0200
+++ b/lib/PFTools/Conf/Host.pm	Tue Nov 18 17:21:04 2014 +0100
@@ -606,6 +606,12 @@
         croak q{ERROR: Invalid subnet_ref object};
     }
 
+    # FIXME allow duplicate fake ip, maybe better if ip was optional in some
+    # case
+    if ( $ipstart eq q{0.0.0.0} ) {
+        return NetAddr::IP->new($ipstart);
+    }
+
     # for some network, NetAddr::IP->prefix() return a range
     # something like '109.3.20.225-255'
     my $prefix = $subnet_ref->prefix();
@@ -785,6 +791,13 @@
         $result->{'options'} = $link_options;
     }
 
+    # Links method(s)
+    if ( my $link_method = $link_section_ref->{ 'method.' . $host_number }
+        || $link_section_ref->{'method'} )
+    {
+        $result->{'method'} = $link_method;
+    }
+
     # Check optional MAC address
     if ( my $mac_address = $link_section_ref->{"mac.$host_number"} ) {
         if (   $mac_address ne q{00:00:00:00:00:00}
diff -r d8e95fb70f60 -r 0bb05ffb7c3a lib/PFTools/Conf/Syntax.pm
--- a/lib/PFTools/Conf/Syntax.pm	Thu Oct 23 14:28:52 2014 +0200
+++ b/lib/PFTools/Conf/Syntax.pm	Tue Nov 18 17:21:04 2014 +0100
@@ -152,6 +152,7 @@
             'slaves'    => 'e(th)?\d+(\s*,\s*e(th)?\d+)+',
             'ipv6'      => 'undefined',
             'iface_opt' => 'undefined',
+            'method'    => 'undefined',
             '@route'    => 'undefined',
             '@route6'   => 'undefined',
         },
diff -r d8e95fb70f60 -r 0bb05ffb7c3a lib/PFTools/Utils.pm
--- a/lib/PFTools/Utils.pm	Thu Oct 23 14:28:52 2014 +0200
+++ b/lib/PFTools/Utils.pm	Tue Nov 18 17:21:04 2014 +0100
@@ -692,8 +692,8 @@
 
     local $OUTPUT_AUTOFLUSH = 1;
     my $errorcount
-        = __do_updateloop( $host_config, $options, $subst_ref, $global_config,
-        \@sortedkeys );
+        = __do_updateloop( $host_config, $options, $subst_ref,
+        $global_config, \@sortedkeys );
 
     print qq{$errorcount error(s) detected.\n};
 
@@ -1457,8 +1457,8 @@
     my $if_part = $host_ref->{'interfaces'}->{$iface};
     my $if_method
         = $if_part->{'method'} ? $if_part->{'method'}
-        : $iface eq 'lo' ? q{loopback}
-        :                  q{static};
+        : $iface eq 'lo'       ? q{loopback}
+        :                        q{static};
     push @iface_lines, qq{auto $iface}, qq{iface $iface inet $if_method};
 
     if ( ( $if_part->{'method'} and $if_part->{'method'} eq 'dhcp' )
@@ -1467,6 +1467,12 @@
         return \@iface_lines;
     }
 
+    if ( $if_part->{'method'} and $if_part->{'method'} eq 'manual' ) {
+        push @iface_lines,
+            qq{\tup\t\tip link set $iface up},
+            qq{\tdown\t\tip link set $iface down};
+        return \@iface_lines;
+    }
     if ( $if_part->{'slaves'} ) {
         push @iface_lines, qq{\tslaves\t\t} . $if_part->{'slaves'};
     }



More information about the pf-tools-commits mailing list