pf-tools commit: r770 [ccaillet-guest] - in /trunk: debian/changelog lib/PFTools/Net.pm sbin/mk_dhcp

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Mon Jul 5 13:49:21 UTC 2010


Author: ccaillet-guest
Date: Mon Jul  5 13:49:20 2010
New Revision: 770

URL: http://svn.debian.org/wsvn/pf-tools/?sc=1&rev=770
Log:
* sbin/mk_dhcp : modifying for accepting more than one dhcpvlan
* lib/PFTools/Net.pm
  - accepting dhcpvlan entry into host definition
  - NEED TO WRITE THE DOC ABOUT THIS !! (delete this entry after doing it!)

Modified:
    trunk/debian/changelog
    trunk/lib/PFTools/Net.pm
    trunk/sbin/mk_dhcp

Modified: trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pf-tools/trunk/debian/changelog?rev=770&op=diff
==============================================================================
--- trunk/debian/changelog (original)
+++ trunk/debian/changelog Mon Jul  5 13:49:20 2010
@@ -72,7 +72,7 @@
     - removed an unused variable.
   * lib/PFTools/Conf.pm:
     - in Init_SUBST(): comment the hostname regexp.
-  *  lib/PFTools/Net.pm:
+  * lib/PFTools/Net.pm:
     - also export cmpif() and Host_class().
     - corrected a few typos in error messages, and a few indentation cases.
     - don't force bonding interfaces names to start with "bond" this also
@@ -87,7 +87,13 @@
     cmdline defined into host definition
   * debian/control : fixing deps for libmd5-perl which is included in perl >= 5.10
 
- -- Christophe Caillet <quadchris at free.fr>  Wed, 09 Jun 2010 11:07:21 +0200
+  [ Olivier Molteni ]
+  * sbin/mk_dhcp : modifying for accepting more than one dhcpvlan
+  * lib/PFTools/Net.pm
+    - accepting dhcpvlan entry into host definition
+    - NEED TO WRITE THE DOC ABOUT THIS !! (delete this entry after doing it!)
+
+ -- Christophe Caillet <quadchris at free.fr>  Mon, 05 Jul 2010 15:45:31 +0200
 
 pf-tools (0.33.1-1) unstable; urgency=low
 

Modified: trunk/lib/PFTools/Net.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Net.pm?rev=770&op=diff
==============================================================================
--- trunk/lib/PFTools/Net.pm (original)
+++ trunk/lib/PFTools/Net.pm Mon Jul  5 13:49:20 2010
@@ -805,6 +805,25 @@
     my $ipincrement = 1;
     if ( defined $S->{'ipincrement'} ) {
 	$ipincrement = $S->{'ipincrement'};
+    }
+
+    # Mlt : Gestion des entrees dhcp pour certains sereurs d'un vlan uniquement
+    # On ajoute un vlan a la liste dhcpclanpartial seulement si il n'est pas
+    # deja present dans cette liste ou dans la liste globale dhcpvlan.
+    # Lors de la generation du dhcpd.conf les entrees presentes dans dhcpvlanpartial
+    # entraineront la creation du subnet correspondant mais seul les hosts correspondants
+    # a des machines qui auront declare des dhcpvlan seront generes.
+    # !!! Il ne peut Y avoir qu'une SEULE entree dhcp de deploiement par machine !!!
+    # !!! entre autre parcequ'il n'y a qu'un seul ether.n par machine :-)        !!!
+    # !!! donc la presence de cette directive au niveau d'une machine annule le  !!!
+    # !!! traitement des autres declaration dans des vlans plus globaux.         !!!
+    if ( defined $S->{dhcpvlan} ) {
+        my $vlan = $S->{dhcpvlan} ;
+        if ( ! grep (/^$vlan$/, @{ $Z->{SOA}->{dhcpvlan} }) ) {
+            if ( ! grep (/^$vlan$/, @{ $Z->{SOA}->{dhcpvlanpartial} }) ) {
+                push (@{ $Z->{SOA}->{dhcpvlanpartial} }, $vlan) ;
+            }
+        }
     }
 
     # Traitement de chaque occurence
@@ -902,6 +921,11 @@
 
 	    delete $M->{'console'} if $M->{'console'} and $M->{'console'} eq 'default';
 
+            # Mlt : Ajout de zone dhcp partielle
+            if ( defined $S->{dhcpvlan} ) {
+                $M->{dhcpvlan} = $S->{dhcpvlan} ;
+            }
+
 	    if ( defined $S->{'bonding'} ) {
 		foreach my $bond ( keys %{$S->{'bonding'}} ) {
 		    if ( defined $S->{'bonding'}->{$bond}->{$mnamindexnum} ) {
@@ -1285,12 +1309,18 @@
     $Z->{'SOA'}->{'negttl'}  = $S->{'negttl'};
     $Z->{'SOA'}->{'ttl'}     = $S->{'ttl'};
 
+    # Mlt : Ajout de zone dhcp partielle
+    # $Z->{SOA}->{dhcpvlan} = Liste des vlans dont TOUTES les machines ont
+    # une entree dans dhcpd.conf
+    # $Z->{SOA}->{dhcpvlanpartial} = Liste des vlans dont SEULEMENT CERTAINES
+    # machines ont une entree dans dhcpd.conf
     if ( defined $S->{'dhcpvlan'} ) {
 	@{ $Z->{'SOA'}->{'dhcpvlan'} } = split( /[,\s]+/, $S->{'dhcpvlan'} );
     }
     else {
 	@{ $Z->{SOA}->{'dhcpvlan'} } = @DEFAULTDHCPVLAN;
     }
+    $Z->{SOA}->{dhcpvlanpartial} = [] ;
 
     if ( $S->{'console'} and $S->{'console'} ne 'default' ) {
 	$Z->{SOA}->{'console'} = $S->{'console'};

Modified: trunk/sbin/mk_dhcp
URL: http://svn.debian.org/wsvn/pf-tools/trunk/sbin/mk_dhcp?rev=770&op=diff
==============================================================================
--- trunk/sbin/mk_dhcp (original)
+++ trunk/sbin/mk_dhcp Mon Jul  5 13:49:20 2010
@@ -52,7 +52,8 @@
 
     print "\n";
 
-    foreach $vlan ( @{ $Z->{'SOA'}->{'dhcpvlan'} } ) {
+    # Mlt : dhcpvlanpartial = subnets ou seulement certaine machines auront une section host
+    foreach $vlan ( @{ $Z->{'SOA'}->{'dhcpvlan'} }, @{ $Z->{SOA}->{dhcpvlanpartial} } ) {
 	printf( "# %s\n",
 	    $Z->{'NETWORK'}->{'BY_NAME'}->{$vlan}->{'comment'} );
 	printf(
@@ -77,9 +78,26 @@
 		my $M = $host->{'SRVLIST'}->{$m};
 
 		foreach $nam ( sort ( keys %{ $M->{'zone'} } ) ) {
-		    if ( $nam =~ /$dhcpvlanregex/ ) {
-			my $nam2 = $1;
 
+                # Mlt : traitement dhcpvlanpartial : ajout des hosts concernes.
+                # !!! Il ne peut Y avoir qu'une SEULE entree dhcp de deploiement par machine !!!
+                # !!! entre autre parcequ'il n'y a qu'un seul ether.n par machine :-)        !!!
+                # !!! donc la presence de cette directive au niveau d'une machine annule le  !!!
+                # !!! traitement des autres declaration dans des vlans plus globaux.         !!!
+                my $nam2 = '' ;
+                if ( $nam =~ /$dhcpvlanregex/ ) {
+                    if ( ! defined $M->{dhcpvlan} ) {
+                        $nam2 = $1;
+                    }
+                }
+                if ( defined $M->{dhcpvlan} ) {
+                    my $dhcpvlanpartialregex = '^([^.]+)\.' . $M->{dhcpvlan} . '(\.*)?$';
+                    if ( $nam =~ /$dhcpvlanpartialregex/ ) {
+                        $nam2 = $1;
+                    }
+                }
+
+                if ( $nam2 ) {
 			my $hostnum = $nam2;
 			$hostnum =~ s/^.*?(\d*)[a-z]*$/$1/;
 			$hostnum =~ s/^0*//;
@@ -89,6 +107,14 @@
 			    printf( "host %s {\n", $nam2 );
 			    printf( "  hardware ethernet %s;\n", $M->{'zone'}->{$nam}->{'ether'} );
 			    printf( "  fixed-address %s.%s;\n", $nam, $Z->{'SOA'}->{'name'} );
+
+                            # Mlt : Option router ...
+                            # Si on trouve une route par defaut sur ce reseau on ajoute l'option routers
+                            foreach my $route ( keys %{ $M->{route}->{$M->{ifup}->{$nam}} } ) {
+                                    if ( $M->{route}->{$M->{ifup}->{$nam}}->{$route} =~  /^default\s([^;]+)/ ) {
+                                            printf( "  option routers %s;\n", $1) ;
+                                    }
+                            }
 
 			    if ( defined( $M->{'filename'} ) && $M->{'filename'} ne "" ) {
 				printf( "  filename \"%s\";\n", $M->{'filename'} );




More information about the pf-tools-commits mailing list