pf-tools commit: r460 [ccaillet-guest] - /trunk/lib/PFTools/Net.pm

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Wed Mar 7 17:21:32 CET 2007


Author: ccaillet-guest
Date: Wed Mar  7 16:21:32 2007
New Revision: 460

URL: http://svn.debian.org/wsvn/pf-tools/?sc=1&rev=460
Log:
Preventing bareword on hash key by quoting constant key name

Modified:
    trunk/lib/PFTools/Net.pm

Modified: trunk/lib/PFTools/Net.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Net.pm?rev=460&op=diff
==============================================================================
--- trunk/lib/PFTools/Net.pm (original)
+++ trunk/lib/PFTools/Net.pm Wed Mar  7 16:21:32 2007
@@ -179,21 +179,90 @@
     my $hostshort = $1;
     my $hostvlan  = $3;
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N         = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M         = $N->{SRVLIST}->{$hostshort};
+    my $N         = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M         = $N->{'SRVLIST'}->{$hostshort};
 
     if ( !defined($M) ) {
         Abort( $ERR_SYNTAX, "Get_If: " . $host . " not found" );
     }
 
-    return ( $M->{ifup}->{ $host . "." . $vlan } );
+    return ( $M->{'ifup'}->{ $host . "." . $vlan } );
 }
 
 # ($dhcpif, $dhcpaddr) Get_Dhcp_Infos ( $Zone, $host )
 sub Get_Dhcp_Infos {
     my ( $Z, $host ) = @_;
 
-    my $dhcpvlanregex = '^(' . join ( '|', @{ $Z->{SOA}->{dhcpvlan} } ) . ')$';
+    my $dhcpvlanregex = '^(' . join ( '|', @{ $Z->{'SOA'}->{'dhcpvlan'} } ) . ')$';
+
+    my $host2 = $host;
+    $host2 =~ s/^(.+)\.$Z->{'SOA'}->{'name'}$/$1/;
+    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
+    my $hostshort = $1;
+    my $hostvlan  = $3;
+    my $hostclass = Host_class( $hostshort, $Z );
+    my $N         = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M         = $N->{'SRVLIST'}->{$hostshort};
+
+    if ( !defined($M) ) {
+        Abort( $ERR_SYNTAX, "Get_Dhcp_Infos: " . $host . " not found" );
+    }
+
+    foreach my $nam ( sort { cmpif( $M->{'ifup'}->{$a}, $M->{'ifup'}->{$b} ) }
+        keys %{ $M->{'ifup'} } )
+    {
+        my $net = $nam;
+        $net =~ s/^[^\.]+\.//;
+        if ( $net =~ /$dhcpvlanregex/ ) {
+            if ( defined $M->{'zone'}->{$nam}->{'ether'} ) {
+                return ( $M->{'ifup'}->{$nam}, $M->{'zone'}->{$nam}->{'ether'} );
+            }
+            else {
+                return ( $M->{'ifup'}->{$nam}, $M->{'zone'}->{$nam}->{'vmether'} );
+            }
+        }
+
+    }
+    return undef;
+}
+
+sub Get_Ordered_Filtered_Hosts {
+    my ( $Z, @hostsfilter ) = @_;
+
+    my @list;
+
+    my $class;
+    foreach $class ( sort {
+            my $i = $Z->{'SERVERS'}->{'BY_NAME'}->{$a}->{'order'};
+            my $j = $Z->{'SERVERS'}->{'BY_NAME'}->{$b}->{'order'};
+            if ( !defined $i ) { $i = 9999; }
+            if ( !defined $j ) { $j = 9999; }
+            if ( $i == $j ) { return ( $a cmp $b ); }
+            $i <=> $j;
+        } keys %{ $Z->{'SERVERS'}->{'BY_NAME'} }
+      )
+    {
+        my $hostfilter;
+        foreach $hostfilter (@hostsfilter) {
+            my $host;
+            foreach $host (
+                sort keys %{ $Z->{'SERVERS'}->{'BY_NAME'}->{$class}->{'SRVLIST'} } )
+            {
+                if ( $class =~ /$hostfilter/ || $host =~ /$hostfilter/ ) {
+                    push @list, $host;
+                }
+            }
+        }
+    }
+
+    return @list;
+}
+
+# HASREF Get_UM_If ( $Zone, $host )
+sub Get_UM_If {
+    my ( $Z, $host ) = @_;
+
+    my $umif = {};
 
     my $host2 = $host;
     $host2 =~ s/^(.+)\.$Z->{SOA}->{name}$/$1/;
@@ -201,68 +270,68 @@
     my $hostshort = $1;
     my $hostvlan  = $3;
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N         = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M         = $N->{SRVLIST}->{$hostshort};
+    my $N         = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M         = $N->{'SRVLIST'}->{$hostshort};
 
     if ( !defined($M) ) {
         Abort( $ERR_SYNTAX, "Get_Dhcp_Infos: " . $host . " not found" );
     }
 
-    foreach my $nam ( sort { cmpif( $M->{ifup}->{$a}, $M->{ifup}->{$b} ) }
-        keys %{ $M->{ifup} } )
+    foreach my $nam ( sort { cmpif( $M->{'ifup'}->{$a}, $M->{'ifup'}->{$b} ) }
+        keys %{ $M->{'ifup'} } )
     {
         my $net = $nam;
         $net =~ s/^[^\.]+\.//;
-        if ( $net =~ /$dhcpvlanregex/ ) {
-            if ( defined $M->{zone}->{$nam}->{ether} ) {
-                return ( $M->{ifup}->{$nam}, $M->{zone}->{$nam}->{ether} );
+        my $NET = $Z->{'NETWORK'}->{'BY_NAME'}->{$net};
+
+        if ( $M->{'ifup'}->{$nam} =~ m/([^:.\d]+)(\d+)?(\.(\d+))?(:(\d+))?/ ) {
+            my $ai;
+            my $an;
+            my $av;
+            my $aa;
+
+            $ai = $1;
+            if ( defined $2 ) { $an = $2 }
+            if ( defined $4 ) { $av = $4 }
+            if ( defined $6 ) { $aa = $6 }
+
+            my $vlan_raw_device = $ai . ( ( defined $an ) ? $an : '' );
+
+            if ( defined( $umif->{$vlan_raw_device} )
+                && ( $umif->{$vlan_raw_device} ne 'TRUNK' || !defined $av )
+                && $umif->{$vlan_raw_device} ne $NET->{'tag'} )
+            {
+                Abort( $ERR_SYNTAX,
+                    "Get_UM_If[" . $host . "]: "
+                    . $M->{'ifup'}->{$nam}
+                    . " hasn't been remapped properly" );
+            }
+
+            if ( defined $av ) {
+                $umif->{$vlan_raw_device} = 'TRUNK';
             }
             else {
-                return ( $M->{ifup}->{$nam}, $M->{zone}->{$nam}->{vmether} );
-            }
-        }
-
-    }
-    return undef;
-}
-
-sub Get_Ordered_Filtered_Hosts {
-    my ( $Z, @hostsfilter ) = @_;
-
-    my @list;
-
-    my $class;
-    foreach $class ( sort {
-            my $i = $Z->{SERVERS}->{BY_NAME}->{$a}->{order};
-            my $j = $Z->{SERVERS}->{BY_NAME}->{$b}->{order};
-            if ( !defined $i ) { $i = 9999; }
-            if ( !defined $j ) { $j = 9999; }
-            if ( $i == $j ) { return ( $a cmp $b ); }
-            $i <=> $j;
-        } keys %{ $Z->{SERVERS}->{BY_NAME} }
-      )
-    {
-        my $hostfilter;
-        foreach $hostfilter (@hostsfilter) {
-            my $host;
-            foreach $host (
-                sort keys %{ $Z->{SERVERS}->{BY_NAME}->{$class}->{SRVLIST} } )
-            {
-                if ( $class =~ /$hostfilter/ || $host =~ /$hostfilter/ ) {
-                    push @list, $host;
-                }
-            }
-        }
-    }
-
-    return @list;
-}
-
-# HASREF Get_UM_If ( $Zone, $host )
-sub Get_UM_If {
+                $umif->{$vlan_raw_device} = $NET->{'tag'};
+            }
+        }
+        else {
+            $umif->{ $M->{'ifup'}->{$nam} } = $NET->{'tag'};
+        }
+    }
+    return $umif;
+}
+
+sub UMRemap_If {
     my ( $Z, $host ) = @_;
 
-    my $umif = {};
+    #Debug "UMRemap_If called for $host";
+
+    my %umif;
+    my %umvlan;
+    my %iforphan;
+    my %ifmap;
+    my $lastused = -1;
+    my %umtap;
 
     my $host2 = $host;
     $host2 =~ s/^(.+)\.$Z->{SOA}->{name}$/$1/;
@@ -270,21 +339,28 @@
     my $hostshort = $1;
     my $hostvlan  = $3;
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N         = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M         = $N->{SRVLIST}->{$hostshort};
+    my $N         = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M         = $N->{'SRVLIST'}->{$hostshort};
 
     if ( !defined($M) ) {
-        Abort( $ERR_SYNTAX, "Get_Dhcp_Infos: " . $host . " not found" );
-    }
-
-    foreach my $nam ( sort { cmpif( $M->{ifup}->{$a}, $M->{ifup}->{$b} ) }
-        keys %{ $M->{ifup} } )
+        Abort( $ERR_SYNTAX, "UMRemap_If: " . $host . " not found" );
+    }
+
+    foreach my $nam ( sort { cmpif( $M->{'ifup'}->{$a}, $M->{'ifup'}->{$b} ) }
+        keys %{ $M->{'ifup'} } )
     {
         my $net = $nam;
         $net =~ s/^[^\.]+\.//;
-        my $NET = $Z->{NETWORK}->{BY_NAME}->{$net};
-
-        if ( $M->{ifup}->{$nam} =~ m/([^:.\d]+)(\d+)?(\.(\d+))?(:(\d+))?/ ) {
+        my $NET = $Z->{'NETWORK'}->{'BY_NAME'}->{$net};
+
+        if ( !defined( $NET->{'tag'} ) ) {
+            Abort( $ERR_SYNTAX, "UMRemap_If[" . $host . "]: " . $net
+                . ": cannot wire, tag unknown" );
+            exit 1;
+        }
+
+#Debug "IF '$M->{ifup}->{$nam}' -> NET '$net' -> TAG '" . (defined $NET->{tag} ? $NET->{tag} : '?') . "'\n";
+        if ( $M->{'ifup'}->{$nam} =~ m/([^:.\d]+)(\d+)?(\.(\d+))?(:(\d+))?/ ) {
             my $ai;
             my $an;
             my $av;
@@ -295,92 +371,16 @@
             if ( defined $4 ) { $av = $4 }
             if ( defined $6 ) { $aa = $6 }
 
-            my $vlan_raw_device = $ai . ( ( defined $an ) ? $an : '' );
-
-            if ( defined( $umif->{$vlan_raw_device} )
-                && ( $umif->{$vlan_raw_device} ne 'TRUNK' || !defined $av )
-                && $umif->{$vlan_raw_device} ne $NET->{tag} )
-            {
-                Abort( $ERR_SYNTAX,
-                    "Get_UM_If[" . $host . "]: "
-                    . $M->{ifup}->{$nam}
-                    . " hasn't been remapped properly" );
-            }
-
-            if ( defined $av ) {
-                $umif->{$vlan_raw_device} = 'TRUNK';
-            }
-            else {
-                $umif->{$vlan_raw_device} = $NET->{tag};
-            }
-        }
-        else {
-            $umif->{ $M->{ifup}->{$nam} } = $NET->{tag};
-        }
-    }
-    return $umif;
-}
-
-sub UMRemap_If {
-    my ( $Z, $host ) = @_;
-
-    #Debug "UMRemap_If called for $host";
-
-    my %umif;
-    my %umvlan;
-    my %iforphan;
-    my %ifmap;
-    my $lastused = -1;
-    my %umtap;
-
-    my $host2 = $host;
-    $host2 =~ s/^(.+)\.$Z->{SOA}->{name}$/$1/;
-    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
-    my $hostshort = $1;
-    my $hostvlan  = $3;
-    my $hostclass = Host_class( $hostshort, $Z );
-    my $N         = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M         = $N->{SRVLIST}->{$hostshort};
-
-    if ( !defined($M) ) {
-        Abort( $ERR_SYNTAX, "UMRemap_If: " . $host . " not found" );
-    }
-
-    foreach my $nam ( sort { cmpif( $M->{ifup}->{$a}, $M->{ifup}->{$b} ) }
-        keys %{ $M->{ifup} } )
-    {
-        my $net = $nam;
-        $net =~ s/^[^\.]+\.//;
-        my $NET = $Z->{NETWORK}->{BY_NAME}->{$net};
-
-        if ( !defined( $NET->{tag} ) ) {
-            Abort( $ERR_SYNTAX, "UMRemap_If[" . $host . "]: " . $net
-                . ": cannot wire, tag unknown" );
-            exit 1;
-        }
-
-#Debug "IF '$M->{ifup}->{$nam}' -> NET '$net' -> TAG '" . (defined $NET->{tag} ? $NET->{tag} : '?') . "'\n";
-        if ( $M->{ifup}->{$nam} =~ m/([^:.\d]+)(\d+)?(\.(\d+))?(:(\d+))?/ ) {
-            my $ai;
-            my $an;
-            my $av;
-            my $aa;
-
-            $ai = $1;
-            if ( defined $2 ) { $an = $2 }
-            if ( defined $4 ) { $av = $4 }
-            if ( defined $6 ) { $aa = $6 }
-
             if ( $ai eq 'eth' && $lastused < $an ) {
                 $lastused = $an;
             }
 
-            if ( defined $av && defined $NET->{tag} && $av != $NET->{tag} ) {
+            if ( defined $av && defined $NET->{'tag'} && $av != $NET->{'tag'} ) {
                 Abort( $ERR_SYNTAX,
                     "UMRemap_If[" . $host . "]: "
                     . "IF TAG " . $av
                     . " != NET TAG "
-                    . $NET->{tag} );
+                    . $NET->{'tag'} );
                 exit 1;
             }
 
@@ -407,23 +407,23 @@
                     else {
 
 #Debug "$umvlan{'TRUNK'} is already connected to TRUNK, using it for $M->{ifup}->{$nam}\n";
-                        $ifmap{ $M->{ifup}->{$nam} } = $umvlan{'TRUNK'};
+                        $ifmap{ $M->{'ifup'}->{$nam} } = $umvlan{'TRUNK'};
                     }
                 }
                 elsif ( $umif{$vlan_raw_device} ne 'TRUNK'
-                    && $umif{$vlan_raw_device} != $NET->{tag} )
+                    && $umif{$vlan_raw_device} != $NET->{'tag'} )
                 {
 
 #Debug "$vlan_raw_device already connected to UNTAGGED $umif{$vlan_raw_device}, new one needed for UNTAGGED $NET->{tag}\n";
-                    delete $umvlan{ $NET->{tag} };
-                    push @{ $iforphan{ $NET->{tag} } }, $M->{ifup}->{$nam};
+                    delete $umvlan{ $NET->{'tag'} };
+                    push @{ $iforphan{ $NET->{'tag'} } }, $M->{'ifup'}->{$nam};
                 }
             }
             else {
                 if ( !defined $av ) {
-                    $umif{$vlan_raw_device} = $NET->{tag};
-                    if ( !defined $umvlan{ $NET->{tag} } ) {
-                        $umvlan{ $NET->{tag} } = $vlan_raw_device;
+                    $umif{$vlan_raw_device} = $NET->{'tag'};
+                    if ( !defined $umvlan{ $NET->{'tag'} } ) {
+                        $umvlan{ $NET->{'tag'} } = $vlan_raw_device;
                     }
                 }
                 else {
@@ -448,7 +448,7 @@
             Warn( $ERR_SYNTAX,
                 "UMRemap_If[" . $host
                 . "]: Can't parse interface name "
-                . $M->{ifup}->{$nam}
+                . $M->{'ifup'}->{$nam}
                 . ", skipped" );
         }
     }
@@ -507,45 +507,107 @@
         }
     }
 
-    foreach my $nam ( sort { cmpif( $M->{ifup}->{$a}, $M->{ifup}->{$b} ) }
-        keys %{ $M->{ifup} } )
+    foreach my $nam ( sort { cmpif( $M->{'ifup'}->{$a}, $M->{'ifup'}->{$b} ) }
+        keys %{ $M->{'ifup'} } )
     {
         if ( !defined $ifmap{ $M->{ifup}->{$nam} } ) {
-            $M->{ifupremapped}->{$nam} = $M->{ifup}->{$nam};
-            if ( defined $M->{route}->{ $M->{ifup}->{$nam} } ) {
-                $M->{routeremapped}->{ $M->{ifup}->{$nam} } =
-                  $M->{route}->{ $M->{ifup}->{$nam} };
-            }
-            if ( defined $M->{delroute}->{ $M->{ifup}->{$nam} } ) {
-                $M->{delrouteremapped}->{ $M->{ifup}->{$nam} } =
-                  $M->{delroute}->{ $M->{ifup}->{$nam} };
+            $M->{'ifupremapped'}->{$nam} = $M->{'ifup'}->{$nam};
+            if ( defined $M->{'route'}->{ $M->{'ifup'}->{$nam} } ) {
+                $M->{'routeremapped'}->{ $M->{'ifup'}->{$nam} } =
+                  $M->{route}->{ $M->{'ifup'}->{$nam} };
+            }
+            if ( defined $M->{'delroute'}->{ $M->{'ifup'}->{$nam} } ) {
+                $M->{'delrouteremapped'}->{ $M->{'ifup'}->{$nam} } =
+                  $M->{'delroute'}->{ $M->{'ifup'}->{$nam} };
             }
         }
         else {
-            $M->{ifupremapped}->{$nam} = $ifmap{ $M->{ifup}->{$nam} };
-            if ( defined $M->{route}->{ $M->{ifup}->{$nam} } ) {
-                $M->{routeremapped}->{ $ifmap{ $M->{ifup}->{$nam} } } =
-                  $M->{route}->{ $M->{ifup}->{$nam} };
-            }
-            if ( defined $M->{delroute}->{ $M->{ifup}->{$nam} } ) {
-                $M->{delrouteremapped}->{ $ifmap{ $M->{ifup}->{$nam} } } =
-                  $M->{delroute}->{ $M->{ifup}->{$nam} };
-            }
-        }
-    }
-
-    delete $M->{ifup};
-    delete $M->{route};
-    delete $M->{delroute};
-    $M->{ifup}     = $M->{ifupremapped};
-    $M->{route}    = $M->{routeremapped};
-    $M->{delroute} = $M->{delrouteremapped};
-    delete $M->{ifupremapped};
-    delete $M->{routeremapped};
-    delete $M->{delrouteremapped};
+            $M->{'ifupremapped'}->{$nam} = $ifmap{ $M->{'ifup'}->{$nam} };
+            if ( defined $M->{'route'}->{ $M->{ifup}->{$nam} } ) {
+                $M->{'routeremapped'}->{ $ifmap{ $M->{'ifup'}->{$nam} } } =
+                  $M->{'route'}->{ $M->{'ifup'}->{$nam} };
+            }
+            if ( defined $M->{'delroute'}->{ $M->{'ifup'}->{$nam} } ) {
+                $M->{'delrouteremapped'}->{ $ifmap{ $M->{'ifup'}->{$nam} } } =
+                  $M->{'delroute'}->{ $M->{'ifup'}->{$nam} };
+            }
+        }
+    }
+
+    delete $M->{'ifup'};
+    delete $M->{'route'};
+    delete $M->{'delroute'};
+    $M->{'ifup'}     = $M->{'ifupremapped'};
+    $M->{'route'}    = $M->{'routeremapped'};
+    $M->{'delroute'} = $M->{'delrouteremapped'};
+    delete $M->{'ifupremapped'};
+    delete $M->{'routeremapped'};
+    delete $M->{'delrouteremapped'};
 }
 
 sub Get_UM_Filename {
+    my ( $Z, $host ) = @_;
+
+    my $host2 = $host;
+    $host2 =~ s/^(.+)\.$Z->{'SOA'}->{'name'}$/$1/;
+    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
+    my $hostshort = $1;
+    my $hostvlan  = $3;
+
+    if ( !defined $hostshort ) {
+        return undef;
+    }
+
+    my $hostclass = Host_class( $hostshort, $Z );
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M = $N->{'SRVLIST'}->{$hostshort};
+
+    if ( !defined($M) ) {
+        return undef;
+    }
+
+    return ( $M->{'umlfilename'} );
+
+}
+
+sub Get_Initrd_Filename ($$) {
+    my ( $Z, $host ) = @_;
+
+    my $host2 = $host;
+    $host2 =~ s/^(.+)\.$Z->{'SOA'}->{'name'}$/$1/;
+    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
+    my $hostshort = $1;
+    my $hostvlan  = $3;
+
+    if ( !defined $hostshort ) {
+        return undef;
+    }
+
+    my $hostclass = Host_class( $hostshort, $Z );
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M = $N->{'SRVLIST'}->{$hostshort};
+
+    if ( !defined($M) ) {
+        return undef;
+    }
+
+    return ( $M->{'initrd'} );
+}
+
+sub Get_Ramdisk_size_from_Initrd ($) {
+    my ($initrd) = @_;
+    $initrd = "/distrib/tftpboot/$initrd";
+
+    # On ne peut pas utiliser File::stat sans perturber lib-update etc.
+    my @st_initrd = stat $initrd;
+    unless (@st_initrd and $st_initrd[2] & S_IFREG) {
+	Abort( $ERR_OPEN, "Impossible de stat($initrd): $!");
+    }
+
+    return $st_initrd[7] / 1024;
+}
+
+sub Get_Cmdline ($$) {
     my ( $Z, $host ) = @_;
 
     my $host2 = $host;
@@ -559,18 +621,17 @@
     }
 
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M = $N->{SRVLIST}->{$hostshort};
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M = $N->{'SRVLIST'}->{$hostshort};
 
     if ( !defined($M) ) {
         return undef;
     }
 
-    return ( $M->{umlfilename} );
-
-}
-
-sub Get_Initrd_Filename ($$) {
+    return ( $M->{'cmdline'} );
+}
+
+sub Get_Active_Filename {
     my ( $Z, $host ) = @_;
 
     my $host2 = $host;
@@ -584,77 +645,16 @@
     }
 
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M = $N->{SRVLIST}->{$hostshort};
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M = $N->{'SRVLIST'}->{$hostshort};
 
     if ( !defined($M) ) {
         return undef;
     }
 
-    return ( $M->{initrd} );
-}
-
-sub Get_Ramdisk_size_from_Initrd ($) {
-    my ($initrd) = @_;
-    $initrd = "/distrib/tftpboot/$initrd";
-
-    # On ne peut pas utiliser File::stat sans perturber lib-update etc.
-    my @st_initrd = stat $initrd;
-    unless (@st_initrd and $st_initrd[2] & S_IFREG) {
-	Abort( $ERR_OPEN, "Impossible de stat($initrd): $!");
-    }
-
-    return $st_initrd[7] / 1024;
-}
-
-sub Get_Cmdline ($$) {
-    my ( $Z, $host ) = @_;
-
-    my $host2 = $host;
-    $host2 =~ s/^(.+)\.$Z->{SOA}->{name}$/$1/;
-    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
-    my $hostshort = $1;
-    my $hostvlan  = $3;
-
-    if ( !defined $hostshort ) {
-        return undef;
-    }
-
-    my $hostclass = Host_class( $hostshort, $Z );
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M = $N->{SRVLIST}->{$hostshort};
-
-    if ( !defined($M) ) {
-        return undef;
-    }
-
-    return ( $M->{cmdline} );
-}
-
-sub Get_Active_Filename {
-    my ( $Z, $host ) = @_;
-
-    my $host2 = $host;
-    $host2 =~ s/^(.+)\.$Z->{SOA}->{name}$/$1/;
-    $host2 =~ m/^([^.]+)(\.([^.]+))?$/;
-    my $hostshort = $1;
-    my $hostvlan  = $3;
-
-    if ( !defined $hostshort ) {
-        return undef;
-    }
-
-    my $hostclass = Host_class( $hostshort, $Z );
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M = $N->{SRVLIST}->{$hostshort};
-
-    if ( !defined($M) ) {
-        return undef;
-    }
-
-    return ( $M->{umlfilename} ) if ($UML);
-    return ( $M->{vmwfilename} ) if ($VMWARE);
-    return ( $M->{pxefilename} );
+    return ( $M->{'umlfilename'} ) if ($UML);
+    return ( $M->{'vmwfilename'} ) if ($VMWARE);
+    return ( $M->{'pxefilename'} );
 
 }
 
@@ -678,8 +678,8 @@
     }
 
     my $hostclass = Host_class( $hostshort, $Z );
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-    my $M = $N->{SRVLIST}->{$hostshort};
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+    my $M = $N->{'SRVLIST'}->{$hostshort};
 
     return Get_dns_from_zone( $Z, $M, $hostnum );
 }
@@ -692,11 +692,11 @@
     }
 
     my $rawdns;
-    if ( defined $M->{dns} && $M->{dns} ne "" ) {
-        $rawdns = $M->{dns};
+    if ( defined $M->{'dns'} && $M->{'dns'} ne "" ) {
+        $rawdns = $M->{'dns'};
     }
     else {
-        $rawdns = join ( ", ", @{ $Z->{NS} } );
+        $rawdns = join ( ", ", @{ $Z->{'NS'} } );
     }
 
     my @dns;
@@ -729,12 +729,12 @@
 
     # Initialisation de la structure de donnees
     $Z = {};
-    $Z->{NETWORK} = { { 'BY_ADDR', {} }, { 'BY_NAME', {} } };
-    $Z->{SERVERS} = { { 'BY_ADDR', {} }, { 'BY_NAME', {} } };
-    $Z->{SOA}   = {};
-    $Z->{NS}    = [];
-    $Z->{MX}    = [];
-    $Z->{ALIAS} = {};
+    $Z->{'NETWORK'} = { { 'BY_ADDR', {} }, { 'BY_NAME', {} } };
+    $Z->{'SERVERS'} = { { 'BY_ADDR', {} }, { 'BY_NAME', {} } };
+    $Z->{'SOA'}   = {};
+    $Z->{'NS'}    = [];
+    $Z->{'MX'}    = [];
+    $Z->{'ALIAS'} = {};
 
     # Chargement du fichier de configuration reseau
     $C = Load_conf( $fic_conf, 0 );
@@ -778,18 +778,18 @@
 
     # Calcul de la plage d'adresse alouee et du nombre de serveurs a definir
 
-    if ( !defined( $S->{nodes} ) ) {
-        $S->{nodes} = 1;
-    }
-    my $nodeslast = $S->{nodes} - 1;
+    if ( !defined( $S->{'nodes'} ) ) {
+        $S->{'nodes'} = 1;
+    }
+    my $nodeslast = $S->{'nodes'} - 1;
     if ( $nodeslast < 0 ) {
         $nodeslast = 0;
     }
 
-    if ( !defined( $S->{number} ) ) {
-        $S->{number} = 1;
-    }
-    my $last = $S->{number} - 1;
+    if ( !defined( $S->{'number'} ) ) {
+        $S->{'number'} = 1;
+    }
+    my $last = $S->{'number'} - 1;
     if ( $last < 0 ) {
         $last = 0;
     }
@@ -830,20 +830,20 @@
 
     # Initialisation de la structure pour ces serveurs
     my $N = {};
-    $N->{comment} = $S->{comment};
-    $N->{type}    = $S->{type};
+    $N->{'comment'} = $S->{'comment'};
+    $N->{'type'}    = $S->{'type'};
 
     #$N->{range}   = $S->{range};
-    $N->{number} = $S->{number};
-    $N->{nodes}  = $S->{nodes};
-
-    $N->{order} = $S->{order};
+    $N->{'number'} = $S->{'number'};
+    $N->{'nodes'}  = $S->{'nodes'};
+
+    $N->{'order'} = $S->{'order'};
 
     $N->{SRVLIST} = {};
 
     my $ipincrement = 1;
-    if ( defined $S->{ipincrement} ) {
-        $ipincrement = $S->{ipincrement};
+    if ( defined $S->{'ipincrement'} ) {
+        $ipincrement = $S->{'ipincrement'};
     }
 
     # Traitement de chaque occurence
@@ -882,77 +882,77 @@
                 $mnamindexnum = "0";
             }
 
-            $M->{name}     = $mnam;
-            $M->{zone}     = {};
-            $M->{ifup}     = {};
-            $M->{route}    = {};
-            $M->{delroute} = {};
-
-            if ( defined( $S->{filename}->{$mnamindexnum} ) ) {
-                $M->{filename} = $S->{filename}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{filename}->{default} ) ) {
-                $M->{filename} = $S->{filename}->{default};
-            }
-
-            if ( defined( $S->{pxefilename}->{$mnamindexnum} ) ) {
-                $M->{pxefilename} = $S->{pxefilename}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{pxefilename}->{default} ) ) {
-                $M->{pxefilename} = $S->{pxefilename}->{default};
-            }
-
-            if ( defined( $S->{umlfilename}->{$mnamindexnum} ) ) {
-                $M->{umlfilename} = $S->{umlfilename}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{umlfilename}->{default} ) ) {
-                $M->{umlfilename} = $S->{umlfilename}->{default};
-            }
-
-            if ( defined( $S->{vmwfilename}->{$mnamindexnum} ) ) {
-                $M->{vmwfilename} = $S->{vmwfilename}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{vmwfilename}->{default} ) ) {
-                $M->{vmwfilename} = $S->{vmwfilename}->{default};
-            }
-
-            if ( defined( $S->{pxelinuxconf}->{$mnamindexnum} ) ) {
-                $M->{pxelinuxconf} = $S->{pxelinuxconf}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{pxelinuxconf}->{default} ) ) {
-                $M->{pxelinuxconf} = $S->{pxelinuxconf}->{default};
-            }
-
-            if ( defined( $S->{dns}->{$mnamindexnum} ) ) {
-                $M->{dns} = $S->{dns}->{$mnamindexnum};
-            }
-            elsif ( defined( $S->{dns}->{default} ) ) {
-                $M->{dns} = $S->{dns}->{default};
-            }
-
-	    if ( defined( $S->{initrd}->{$mnamindexnum} ) ) {
-		$M->{initrd} = $S->{initrd}->{$mnamindexnum};
+            $M->{'name'}     = $mnam;
+            $M->{'zone'}     = {};
+            $M->{'ifup'}     = {};
+            $M->{'route'}    = {};
+            $M->{'delroute'} = {};
+
+            if ( defined( $S->{'filename'}->{$mnamindexnum} ) ) {
+                $M->{'filename'} = $S->{'filename'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'filename'}->{'default'} ) ) {
+                $M->{'filename'} = $S->{'filename'}->{'default'};
+            }
+
+            if ( defined( $S->{'pxefilename'}->{$mnamindexnum} ) ) {
+                $M->{'pxefilename'} = $S->{'pxefilename'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'pxefilename'}->{'default'} ) ) {
+                $M->{'pxefilename'} = $S->{'pxefilename'}->{'default'};
+            }
+
+            if ( defined( $S->{'umlfilename'}->{$mnamindexnum} ) ) {
+                $M->{'umlfilename'} = $S->{'umlfilename'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'umlfilename'}->{'default'} ) ) {
+                $M->{'umlfilename'} = $S->{'umlfilename'}->{'default'};
+            }
+
+            if ( defined( $S->{'vmwfilename'}->{$mnamindexnum} ) ) {
+                $M->{'vmwfilename'} = $S->{'vmwfilename'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'vmwfilename'}->{'default'} ) ) {
+                $M->{'vmwfilename'} = $S->{'vmwfilename'}->{'default'};
+            }
+
+            if ( defined( $S->{'pxelinuxconf'}->{$mnamindexnum} ) ) {
+                $M->{'pxelinuxconf'} = $S->{'pxelinuxconf'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'pxelinuxconf'}->{'default'} ) ) {
+                $M->{'pxelinuxconf'} = $S->{'pxelinuxconf'}->{'default'};
+            }
+
+            if ( defined( $S->{'dns'}->{$mnamindexnum} ) ) {
+                $M->{'dns'} = $S->{'dns'}->{$mnamindexnum};
+            }
+            elsif ( defined( $S->{'dns'}->{'default'} ) ) {
+                $M->{'dns'} = $S->{'dns'}->{'default'};
+            }
+
+	    if ( defined( $S->{'initrd'}->{$mnamindexnum} ) ) {
+		$M->{'initrd'} = $S->{'initrd'}->{$mnamindexnum};
 	    }
-	    elsif ( defined( $S->{initrd}->{default} ) ) {
-		$M->{initrd} = $S->{initrd}->{default};
+	    elsif ( defined( $S->{'initrd'}->{'default'} ) ) {
+		$M->{'initrd'} = $S->{'initrd'}->{'default'};
 	    }
 	    else {
 		# pour ne pas �re oblig�d'ajouter "initrd.default = initrd" �		# toutes les d�larations de serveurs dans private-network
-		$M->{initrd} = 'initrd';
+		$M->{'initrd'} = 'initrd';
 	    }
 
-	    if ( defined( $S->{cmdline}->{$mnamindexnum} ) ) {
-		$M->{cmdline} = $S->{cmdline}->{$mnamindexnum};
+	    if ( defined( $S->{'cmdline'}->{$mnamindexnum} ) ) {
+		$M->{'cmdline'} = $S->{'cmdline'}->{$mnamindexnum};
 	    }
-	    elsif ( defined( $S->{cmdline}->{default} ) ) {
-		$M->{cmdline} = $S->{cmdline}->{default};
+	    elsif ( defined( $S->{'cmdline'}->{'default'} ) ) {
+		$M->{'cmdline'} = $S->{'cmdline'}->{'default'};
 	    }
 
             # vrrp?
             my $vrrp;
-            foreach $j ( keys %{ $S->{vrrp} } ) {
-                if ( $S->{vrrp}->{$j} eq $s
-                    || ( $S->{vrrp}->{$j} eq "last" && $s == $last ) )
+            foreach $j ( keys %{ $S->{'vrrp'} } ) {
+                if ( $S->{'vrrp'}->{$j} eq $s
+                    || ( $S->{'vrrp'}->{$j} eq "last" && $s == $last ) )
                 {
                     $vrrp = $j;
                     $mnam = $j;
@@ -962,7 +962,7 @@
             my $goteth1 = 0;
 
             # Traitement de chaque interface (ou reseau)
-            foreach $i ( sort { cmpif( $a, $b ) } keys %{ $S->{interface} } ) {
+            foreach $i ( sort { cmpif( $a, $b ) } keys %{ $S->{'interface'} } ) {
                 my $nam;
 
                 if ( $i eq 'eth1' ) {
@@ -980,42 +980,42 @@
                 }
 
                 # Definition de l'entree DNS pour cette interface
-                my $lan = $S->{interface}->{$i};
+                my $lan = $S->{'interface'}->{$i};
 
                 $nam = $mnam . "." . $lan;
 
-                my $addr = $Z->{NETWORK}->{BY_NAME}->{$lan}->{network};
-
-                if ( defined $S->{ipstart}->{$lan} ) {
-                    $start = $S->{ipstart}->{$lan};
-                }
-                elsif ( defined $S->{ipstart}->{default} ) {
-                    $start = $S->{ipstart}->{default};
+                my $addr = $Z->{'NETWORK'}->{'BY_NAME'}->{$lan}->{'network'};
+
+                if ( defined $S->{'ipstart'}->{$lan} ) {
+                    $start = $S->{'ipstart'}->{$lan};
+                }
+                elsif ( defined $S->{'ipstart'}->{'default'} ) {
+                    $start = $S->{'ipstart'}->{'default'};
                 }
                 else {
-                    $start = $S->{ipstart}->{ $S->{shortname} };
+                    $start = $S->{'ipstart'}->{ $S->{'shortname'} };
                 }
 
                 if ( !defined $start ) {
                     Abort( $ERR_SYNTAX, "No ipstart for " . $nam );
                 }
 
-                $M->{zone}->{$nam} = {};
-                $M->{zone}->{$nam}->{FIELD} =
+                $M->{'zone'}->{$nam} = {};
+                $M->{'zone'}->{$nam}->{'FIELD'} =
                   Address( $addr, $start, $ipindex );
-                $M->{zone}->{$nam}->{TYPE} = 'A';
+                $M->{'zone'}->{$nam}->{'TYPE'} = 'A';
 
                 # Adresse ethernet (pas forcement avec dhcp, eg tftp)
-                if ( defined( $S->{ether}->{$mnamindexnum} ) ) {
-                    $M->{zone}->{$nam}->{ether} = $S->{ether}->{$mnamindexnum};
-                }
-
-                if ( defined( $S->{vmether}->{$mnamindexnum} ) ) {
-                    $M->{zone}->{$nam}->{vmether} =
-                      $S->{vmether}->{$mnamindexnum};
-                }
-                elsif ( defined( $S->{ether}->{$mnamindexnum} ) ) {
-                    $M->{zone}->{$nam}->{vmether} = '00:50:56:' . sprintf(
+                if ( defined( $S->{'ether'}->{$mnamindexnum} ) ) {
+                    $M->{'zone'}->{$nam}->{'ether'} = $S->{'ether'}->{$mnamindexnum};
+                }
+
+                if ( defined( $S->{'vmether'}->{$mnamindexnum} ) ) {
+                    $M->{'zone'}->{$nam}->{'vmether'} =
+                      $S->{'vmether'}->{$mnamindexnum};
+                }
+                elsif ( defined( $S->{'ether'}->{$mnamindexnum} ) ) {
+                    $M->{'zone'}->{$nam}->{'vmether'} = '00:50:56:' . sprintf(
                         "%02x:%02x:%02x",
                         unpack( "L", $mnam ) % 255,         # L : long unsigned,
                         unpack( "L", reverse $mnam ) % 255,
@@ -1024,56 +1024,56 @@
                 }
 
                 # Definition de l'alias DNS principal
-                if ( $S->{shortname} eq $lan ) {
-                    $M->{zone}->{$mnam} = {};
-                    $M->{zone}->{$mnam}->{FIELD} = $nam;
-                    $M->{zone}->{$mnam}->{TYPE}  = 'CNAME';
+                if ( $S->{'shortname'} eq $lan ) {
+                    $M->{'zone'}->{$mnam} = {};
+                    $M->{'zone'}->{$mnam}->{'FIELD'} = $nam;
+                    $M->{'zone'}->{$mnam}->{'TYPE'}  = 'CNAME';
                 }
 
                 # Alias de vlan pour la classe
-                if ( !defined( $Z->{ALIAS}->{ $srv . '.' . $lan } ) ) {
-                    $Z->{ALIAS}->{ $srv . '.' . $lan } = [];
+                if ( !defined( $Z->{'ALIAS'}->{ $srv . '.' . $lan } ) ) {
+                    $Z->{'ALIAS'}->{ $srv . '.' . $lan } = [];
                 }
                 if (
-                    scalar( grep( /^$nam$/, $Z->{ALIAS}->{ $srv . '.' . $lan } )
+                    scalar( grep( /^$nam$/, $Z->{'ALIAS'}->{ $srv . '.' . $lan } )
                     ) == 0 )
                 {
-                    push ( @{ $Z->{ALIAS}->{ $srv . '.' . $lan } },
-                        $M->{zone}->{$nam}->{FIELD} );
+                    push ( @{ $Z->{'ALIAS'}->{ $srv . '.' . $lan } },
+                        $M->{'zone'}->{$nam}->{'FIELD'} );
                 }
 
                 # Alias de vlan pour le cluster
                 if ( $nodeslast > 0 ) {
                     if ( !defined
-                        ( $Z->{ALIAS}->{ $srv . $cnamindex . '.' . $lan } ) )
+                        ( $Z->{'ALIAS'}->{ $srv . $cnamindex . '.' . $lan } ) )
                     {
-                        $Z->{ALIAS}->{ $srv . $cnamindex . '.' . $lan } = [];
+                        $Z->{'ALIAS'}->{ $srv . $cnamindex . '.' . $lan } = [];
                     }
                     if (
                         scalar(
                         grep( /^$nam$/,
-                        $Z->{ALIAS}->{ $srv . $cnamindex . '.' . $lan } ) ) ==
+                        $Z->{'ALIAS'}->{ $srv . $cnamindex . '.' . $lan } ) ) ==
                         0 )
                     {
-                        push ( @{ $Z->{ALIAS}->{ $srv
+                        push ( @{ $Z->{'ALIAS'}->{ $srv
                             . $cnamindex . '.'
-                            . $lan } }, $M->{zone}->{$nam}->{FIELD} );
+                            . $lan } }, $M->{'zone'}->{$nam}->{'FIELD'} );
                     }
                 }
 
                 # Definition de l'entree dans /etc/network/interface
-                if ( defined( $S->{dhcp} ) && $i eq $S->{dhcp} ) {
-                    $M->{ifup}->{dhcp} = $j;
+                if ( defined( $S->{'dhcp'} ) && $i eq $S->{'dhcp'} ) {
+                    $M->{'ifup'}->{'dhcp'} = $j;
                 }
                 else {
-                    $M->{ifup}->{$nam} = $j;
+                    $M->{'ifup'}->{$nam} = $j;
                 }
 
                 # Traitement des routes
                 my $r;
                 foreach $r ( keys %{ $S->{$i} } ) {
                     if ( $r =~ m/^route/ ) {
-                        $M->{route}->{$j}->{$r} = $S->{$i}->{$r};
+                        $M->{'route'}->{$j}->{$r} = $S->{$i}->{$r};
                     }
                 }
 
@@ -1081,41 +1081,41 @@
                 my $dr;
                 foreach $dr ( keys %{ $S->{$i} } ) {
                     if ( $dr =~ m/^delroute/ ) {
-                        $M->{delroute}->{$j}->{$dr} = $S->{$i}->{$dr};
+                        $M->{'delroute'}->{$j}->{$dr} = $S->{$i}->{$dr};
                     }
                 }
 
                 # Traitement des mtu
-                if ( defined( $S->{$i}->{mtu} ) ) {
-                    $M->{mtu}->{$j} = $S->{$i}->{mtu};
+                if ( defined( $S->{$i}->{'mtu'} ) ) {
+                    $M->{'mtu'}->{$j} = $S->{$i}->{'mtu'};
                 }
 
                 # Traitement des media
-                if ( defined( $S->{$i}->{media} ) ) {
-                    $M->{media}->{$j} = $S->{$i}->{media};
+                if ( defined( $S->{$i}->{'media'} ) ) {
+                    $M->{'media'}->{$j} = $S->{$i}->{'media'};
                 }
 
                 # Traitement des noarp
-                if ( defined( $S->{$i}->{noarp} ) ) {
-                    $M->{noarp}->{$j} = $S->{$i}->{noarp};
+                if ( defined( $S->{$i}->{'noarp'} ) ) {
+                    $M->{'noarp'}->{$j} = $S->{$i}->{'noarp'};
                 }
             }
 
             # Definition des alias DNS
-            foreach $j ( keys %{ $S->{alias} } ) {
+            foreach $j ( keys %{ $S->{'alias'} } ) {
                 my $lan;
                 my $nam;
                 my $addr;
 
                 # Alias par machine
-                $lan = $S->{alias}->{$j};
+                $lan = $S->{'alias'}->{$j};
                 $nam = $j . $mnamindex;
 
                 # ne pas ecraser si shortname deja existant
-                if ( !defined $M->{zone}->{$nam} ) {
-                    $M->{zone}->{$nam} = {};
-                    $M->{zone}->{$nam}->{FIELD} = $mnam . "." . $lan;
-                    $M->{zone}->{$nam}->{TYPE}  = 'CNAME';
+                if ( !defined $M->{'zone'}->{$nam} ) {
+                    $M->{'zone'}->{$nam} = {};
+                    $M->{'zone'}->{$nam}->{'FIELD'} = $mnam . "." . $lan;
+                    $M->{'zone'}->{$nam}->{'TYPE'}  = 'CNAME';
                 }
 
 # Alias "round robin" pour l'ensemble de cette classe de serveurs
@@ -1125,47 +1125,47 @@
                 #    $Z->{ALIAS}->{$j} = [];
                 #}
                 #push ( @{ $Z->{ALIAS}->{$j} }, $M->{zone}->{$nam}->{FIELD} );
-                if ( $s == 0 && $n == 0 && !defined $M->{zone}->{$j} ) {
-                    $M->{zone}->{$j} = {};
-                    $M->{zone}->{$j}->{FIELD} = $srv . "." . $lan;
-                    $M->{zone}->{$j}->{TYPE}  = 'CNAME';
+                if ( $s == 0 && $n == 0 && !defined $M->{'zone'}->{$j} ) {
+                    $M->{'zone'}->{$j} = {};
+                    $M->{'zone'}->{$j}->{'FIELD'} = $srv . "." . $lan;
+                    $M->{'zone'}->{$j}->{'TYPE'}  = 'CNAME';
                 }
                 if ( $nodeslast > 0
                     && $s == 0
                     && $n == 0
-                    && !defined $M->{zone}->{ $j . $cnamindex } )
+                    && !defined $M->{'zone'}->{ $j . $cnamindex } )
                 {
-                    $M->{zone}->{ $j . $cnamindex } = {};
-                    $M->{zone}->{ $j . $cnamindex }->{FIELD} =
+                    $M->{'zone'}->{ $j . $cnamindex } = {};
+                    $M->{'zone'}->{ $j . $cnamindex }->{'FIELD'} =
                       $srv . $cnamindex . "." . $lan;
-                    $M->{zone}->{ $j . $cnamindex }->{TYPE} = 'CNAME';
+                    $M->{'zone'}->{ $j . $cnamindex }->{'TYPE'} = 'CNAME';
                 }
             }
 
             # Insertion du serveur dans sa classe
-            $N->{SRVLIST}->{$mnam} = $M;
+            $N->{'SRVLIST'}->{$mnam} = $M;
         }
 
         # Vips du cluster
     }
 
     # Insertion de la classe de serveurs dans la structure principale
-    if ( defined $S->{ipstart}->{ $S->{shortname} } ) {
-        $start = $S->{ipstart}->{ $S->{shortname} };
+    if ( defined $S->{'ipstart'}->{ $S->{'shortname'} } ) {
+        $start = $S->{'ipstart'}->{ $S->{'shortname'} };
     }
     else {
-        $start = $S->{ipstart}->{default};
-    }
-
-    $Z->{SERVERS}->{BY_ADDR}
-      ->{ Address( $Z->{NETWORK}->{BY_NAME}->{ $S->{shortname} }->{network},
+        $start = $S->{'ipstart'}->{'default'};
+    }
+
+    $Z->{'SERVERS'}->{'BY_ADDR'}
+      ->{ Address( $Z->{'NETWORK'}->{'BY_NAME'}->{ $S->{'shortname'} }->{'network'},
           $start, 0 ) } = $N;
-    $Z->{SERVERS}->{BY_NAME}->{$srv} = $N;
+    $Z->{'SERVERS'}->{'BY_NAME'}->{$srv} = $N;
 
     # Remapping UM
     if ($UML) {
         my $mnam;
-        foreach $mnam ( keys %{ $N->{SRVLIST} } ) {
+        foreach $mnam ( keys %{ $N->{'SRVLIST'} } ) {
             UMRemap_If( $Z, $mnam );
         }
     }
@@ -1189,10 +1189,10 @@
     my $soa;
 
     # Verification de l'unicite de la declaration
-    if ( defined( $Z->{SOA}->{name} ) ) {
+    if ( defined( $Z->{'SOA'}->{'name'} ) ) {
         Abort( $ERR_SYNTAX,
             "Declaration zone dupliquee ("
-            . $Z->{SOA}->{name} . ") et (" . $zone . ")" );
+            . $Z->{'SOA'}->{'name'} . ") et (" . $zone . ")" );
     }
 
     # Ajout des informations SOA
@@ -1204,48 +1204,48 @@
     $t_secs = time();
     $t_text = localtime($t_secs);
 
-    $mail = $S->{mail};
+    $mail = $S->{'mail'};
     $mail =~ s/@/\./;
     $mail =~ s/([^\.])$/$1./;
 
-    $soa = $S->{soa};
+    $soa = $S->{'soa'};
     $soa =~ s/([^\.])$/$1./;
 
-    if ( defined $S->{serial} && $S->{serial} =~ m|([\d.]+)| ) {
+    if ( defined $S->{'serial'} && $S->{'serial'} =~ m|([\d.]+)| ) {
         my $rev = $1;
 
         $rev =~ s/\.//g;
 
-        $Z->{SOA}->{serial} = $rev . "\t; Serial (" . $S->{serial} . ")";
+        $Z->{'SOA'}->{'serial'} = $rev . "\t; Serial (" . $S->{'serial'} . ")";
     }
     else {
-        $Z->{SOA}->{serial} = $t_secs . "\t; Serial (" . $t_text . ")";
-    }
-    $Z->{SOA}->{name}    = $zone;
-    $Z->{SOA}->{comment} = $S->{comment};
-    $Z->{SOA}->{soa}     = $soa;
-    $Z->{SOA}->{mail}    = $mail;
-    $Z->{SOA}->{refresh} = $S->{refresh};
-    $Z->{SOA}->{retry}   = $S->{retry};
-    $Z->{SOA}->{expire}  = $S->{expire};
-    $Z->{SOA}->{negttl}  = $S->{negttl};
-    $Z->{SOA}->{ttl}     = $S->{ttl};
-
-    if ( defined $S->{dhcpvlan} ) {
-        @{ $Z->{SOA}->{dhcpvlan} } = split ( /[,\s]+/, $S->{dhcpvlan} );
+        $Z->{'SOA'}->{'serial'} = $t_secs . "\t; Serial (" . $t_text . ")";
+    }
+    $Z->{'SOA'}->{'name'}    = $zone;
+    $Z->{'SOA'}->{'comment'} = $S->{'comment'};
+    $Z->{'SOA'}->{'soa'}     = $soa;
+    $Z->{'SOA'}->{'mail'}    = $mail;
+    $Z->{'SOA'}->{'refresh'} = $S->{'refresh'};
+    $Z->{'SOA'}->{'retry'}   = $S->{'retry'};
+    $Z->{'SOA'}->{'expire'}  = $S->{'expire'};
+    $Z->{'SOA'}->{'negttl'}  = $S->{'negttl'};
+    $Z->{'SOA'}->{'ttl'}     = $S->{'ttl'};
+
+    if ( defined $S->{'dhcpvlan'} ) {
+        @{ $Z->{'SOA'}->{'dhcpvlan'} } = split ( /[,\s]+/, $S->{'dhcpvlan'} );
     }
     else {
-        @{ $Z->{SOA}->{dhcpvlan} } = @DEFAULTDHCPVLAN;
+        @{ $Z->{SOA}->{'dhcpvlan'} } = @DEFAULTDHCPVLAN;
     }
 
     # Ajout des champs NS
-    foreach $c ( sort ( keys %{ $S->{ns} } ) ) {
-        push ( @{ $Z->{NS} }, $S->{ns}->{$c} );
+    foreach $c ( sort ( keys %{ $S->{'ns'} } ) ) {
+        push ( @{ $Z->{'NS'} }, $S->{'ns'}->{$c} );
     }
 
     # Ajout des champs MX
-    foreach $c ( sort ( keys %{ $S->{mx} } ) ) {
-        push ( @{ $Z->{MX} }, $S->{mx}->{$c} );
+    foreach $c ( sort ( keys %{ $S->{'mx'} } ) ) {
+        push ( @{ $Z->{'MX'} }, $S->{'mx'}->{$c} );
     }
 }
 
@@ -1262,36 +1262,36 @@
     my $N = {};
 
     # Verification des declarations
-    if ( !defined( $S->{network} ) ) {
+    if ( !defined( $S->{'network'} ) ) {
         Abort( $ERR_SYNTAX,
             "Adresse de reseau manquante pour le reseau " . $net );
     }
 
-    if ( !defined( $S->{netmask} ) ) {
+    if ( !defined( $S->{'netmask'} ) ) {
         Abort( $ERR_SYNTAX,
             "Masque de reseau manquant pour le reseau " . $net );
     }
-    if ( defined( $Z->{NETWORK}->{ $S->{network} } ) ) {
+    if ( defined( $Z->{'NETWORK'}->{ $S->{'network'} } ) ) {
         Abort( $ERR_SYNTAX,
             "Adresse de reseau dupliquee ("
-            . $S->{network}
+            . $S->{'network'}
             . ") pour le reseau " . $net );
     }
 
     # Calcul des adresses, netmasks et broadcasts
-    $N->{name}      = $net;
-    $N->{network}   = $S->{network};
-    $N->{netmask}   = $S->{netmask};
-    $N->{broadcast} = Broadcast( $N->{network}, $N->{netmask} );
-    $N->{prefix}    = netmask2prefix( $S->{netmask} );
-    $N->{mtu}       = $S->{mtu};
-    $N->{tag}       = $S->{tag};
-    $N->{media}     = $S->{media};
-    $N->{comment}   = $S->{comment};
+    $N->{'name'}      = $net;
+    $N->{'network'}   = $S->{'network'};
+    $N->{'netmask'}   = $S->{'netmask'};
+    $N->{'broadcast'} = Broadcast( $N->{'network'}, $N->{'netmask'} );
+    $N->{'prefix'}    = netmask2prefix( $S->{'netmask'} );
+    $N->{'mtu'}       = $S->{'mtu'};
+    $N->{'tag'}       = $S->{'tag'};
+    $N->{'media'}     = $S->{'media'};
+    $N->{'comment'}   = $S->{'comment'};
 
     # Insertion dans la structure principale
-    $Z->{NETWORK}->{BY_ADDR}->{ $N->{network} } = $N;
-    $Z->{NETWORK}->{BY_NAME}->{ $N->{name} }    = $N;
+    $Z->{'NETWORK'}->{'BY_ADDR'}->{ $N->{'network'} } = $N;
+    $Z->{'NETWORK'}->{'BY_NAME'}->{ $N->{'name'} }    = $N;
 }
 
 #
@@ -1305,13 +1305,13 @@
 
 # !!!!!! Attention ne marchera pas si la classe se termine par de chiffres !!!!
     # Gros fix qui tache
-    if ( defined $Z->{SERVERS}->{BY_NAME}->{$h} ) {
+    if ( defined $Z->{'SERVERS'}->{'BY_NAME'}->{$h} ) {
         return ($h);
     }
 
     # Gros fix qui tache encore plus...
     $h =~ s/(\d)[a-z]+$/$1/;
-    if ( defined $Z->{SERVERS}->{BY_NAME}->{$h} ) {
+    if ( defined $Z->{'SERVERS'}->{'BY_NAME'}->{$h} ) {
         return ($h);
     }
 
@@ -1403,7 +1403,7 @@
     my $s;
 
     my $dhcpvlanregex =
-      '^([^.]+)\.(' . join ( '|', @{ $Z->{SOA}->{dhcpvlan} } ) . ')(\.*)?$';
+      '^([^.]+)\.(' . join ( '|', @{ $Z->{'SOA'}->{'dhcpvlan'} } ) . ')(\.*)?$';
 
     open( FIC, ">" . $fic ) || die "Cannot open " . $fic . " : " . $!;
     $oldout = select(FIC);
@@ -1418,32 +1418,32 @@
 
     print "\n";
 
-    foreach $vlan ( @{ $Z->{SOA}->{dhcpvlan} } ) {
-        printf( "# %s\n", $Z->{NETWORK}->{BY_NAME}->{$vlan}->{comment} );
+    foreach $vlan ( @{ $Z->{'SOA'}->{'dhcpvlan'} } ) {
+        printf( "# %s\n", $Z->{'NETWORK'}->{'BY_NAME'}->{$vlan}->{'comment'} );
         printf(
             "subnet %s netmask %s {\n}\n\n",
-            $Z->{NETWORK}->{BY_NAME}->{$vlan}->{network},
-            $Z->{NETWORK}->{BY_NAME}->{$vlan}->{netmask}
+            $Z->{'NETWORK'}->{'BY_NAME'}->{$vlan}->{'network'},
+            $Z->{'NETWORK'}->{'BY_NAME'}->{$vlan}->{'netmask'}
         );
     }
 
     print "\n";
 
-    foreach $s ( sort ( keys %{ $Z->{SERVERS}->{BY_ADDR} } ) ) {
+    foreach $s ( sort ( keys %{ $Z->{'SERVERS'}->{'BY_ADDR'} } ) ) {
         my $m;
-        my $N = $Z->{SERVERS}->{BY_ADDR}->{$s};
-
-        print "# ",         $N->{comment}, "\n";
-        print "# number: ", $N->{number},  "\n";
-        print "# nodes:  ", $N->{nodes},   "\n"
-          if ( defined( $N->{nodes} ) && $N->{nodes} > 1 );
+        my $N = $Z->{'SERVERS'}->{'BY_ADDR'}->{$s};
+
+        print "# ",         $N->{'comment'}, "\n";
+        print "# number: ", $N->{'number'},  "\n";
+        print "# nodes:  ", $N->{'nodes'},   "\n"
+          if ( defined( $N->{'nodes'} ) && $N->{'nodes'} > 1 );
         print "\n";
 
-        foreach $m ( sort ( keys %{ $N->{SRVLIST} } ) ) {
+        foreach $m ( sort ( keys %{ $N->{'SRVLIST'} } ) ) {
             my $nam;
-            my $M = $N->{SRVLIST}->{$m};
-
-            foreach $nam ( sort ( keys %{ $M->{zone} } ) ) {
+            my $M = $N->{'SRVLIST'}->{$m};
+
+            foreach $nam ( sort ( keys %{ $M->{'zone'} } ) ) {
                 if ( $nam =~ /$dhcpvlanregex/ ) {
                     my $nam2 = $1;
 
@@ -1456,42 +1456,42 @@
                         $hostnum = 0;
                     }
 
-                    if ( defined( $M->{zone}->{$nam}->{ether} ) ) {
+                    if ( defined( $M->{'zone'}->{$nam}->{'ether'} ) ) {
                         printf( "host %s {\n", $nam2 );
                         printf(
                             "  hardware ethernet %s;\n",
-                            $M->{zone}->{$nam}->{ether}
+                            $M->{'zone'}->{$nam}->{'ether'}
                         );
                         printf(
                             "  fixed-address %s.%s;\n", $nam,
-                            $Z->{SOA}->{name}
+                            $Z->{'SOA'}->{'name'}
                         );
 
-                        if ( defined( $M->{filename} ) && $M->{filename} ne "" )
+                        if ( defined( $M->{'filename'} ) && $M->{'filename'} ne "" )
                         {
-                            printf( "  filename \"%s\";\n", $M->{filename} );
+                            printf( "  filename \"%s\";\n", $M->{'filename'} );
                         }
 
-                        if ( $M->{initrd} ) {
-			    printf qq{# initrd "%s";\n}, $M->{initrd};
+                        if ( $M->{'initrd'} ) {
+			    printf qq{# initrd "%s";\n}, $M->{'initrd'};
                         }
 
-                        if ( $M->{cmdline} ) {
-			    printf qq{# cmdline "%s";\n}, $M->{cmdline};
+                        if ( $M->{'cmdline'} ) {
+			    printf qq{# cmdline "%s";\n}, $M->{'cmdline'};
                         }
 
-                        if ( defined( $M->{pxefilename} )
-                            && $M->{pxefilename} ne "" )
+                        if ( defined( $M->{'pxefilename'} )
+                            && $M->{'pxefilename'} ne "" )
                         {
                             printf( "# pxefilename \"%s\";\n",
-                                $M->{pxefilename} );
+                                $M->{'pxefilename'} );
                         }
 
-                        if ( defined( $M->{pxelinuxconf} )
-                            && $M->{pxelinuxconf} ne "" )
+                        if ( defined( $M->{'pxelinuxconf'} )
+                            && $M->{'pxelinuxconf'} ne "" )
                         {
                             printf( "  option option-209 \"%s\";\n",
-                                $M->{pxelinuxconf} );
+                                $M->{'pxelinuxconf'} );
                         }
 
                         my @dns = Get_dns_from_zone( $Z, $M, $hostnum );
@@ -1503,30 +1503,30 @@
 
                         print "}\n\n";
                     }
-                    if ( defined( $M->{zone}->{$nam}->{vmether} )
+                    if ( defined( $M->{'zone'}->{$nam}->{'vmether'} )
                         && ( $VMWARE || $UML ) )
                     {
                         printf( "host %s {\n", $nam2 );
                         printf(
                             "  hardware ethernet %s;\n",
-                            $M->{zone}->{$nam}->{vmether}
+                            $M->{'zone'}->{$nam}->{'vmether'}
                         );
                         printf(
                             "  fixed-address %s.%s;\n", $nam,
-                            $Z->{SOA}->{name}
+                            $Z->{'SOA'}->{'name'}
                         );
 
-                        if ( defined( $M->{vmwfilename} )
-                            && $M->{vmwfilename} ne "" )
+                        if ( defined( $M->{'vmwfilename'} )
+                            && $M->{'vmwfilename'} ne "" )
                         {
-                            printf( "  filename \"%s\";\n", $M->{vmwfilename} );
+                            printf( "  filename \"%s\";\n", $M->{'vmwfilename'} );
                         }
 
-                        if ( defined( $M->{pxelinuxconf} )
-                            && $M->{pxelinuxconf} ne "" )
+                        if ( defined( $M->{'pxelinuxconf'} )
+                            && $M->{'pxelinuxconf'} ne "" )
                         {
                             printf( "  option option-209 \"%s\";\n",
-                                $M->{pxelinuxconf} );
+                                $M->{'pxelinuxconf'} );
                         }
 
                         my @dns = Get_dns_from_zone( $Z, $M, $hostnum );
@@ -1562,34 +1562,34 @@
     close(PXETEMPLATE);
 
     my $dhcpvlanregex =
-      '^([^.]+)\.(' . join ( '|', @{ $Z->{SOA}->{dhcpvlan} } ) . ')(\.*)?$';
-
-    foreach $s ( sort ( keys %{ $Z->{SERVERS}->{BY_ADDR} } ) ) {
+      '^([^.]+)\.(' . join ( '|', @{ $Z->{'SOA'}->{'dhcpvlan'} } ) . ')(\.*)?$';
+
+    foreach $s ( sort ( keys %{ $Z->{'SERVERS'}->{'BY_ADDR'} } ) ) {
         my $m;
-        my $N = $Z->{SERVERS}->{BY_ADDR}->{$s};
-
-        foreach $m ( sort ( keys %{ $N->{SRVLIST} } ) ) {
+        my $N = $Z->{'SERVERS'}->{'BY_ADDR'}->{$s};
+
+        foreach $m ( sort ( keys %{ $N->{'SRVLIST'} } ) ) {
             my $nam;
-            my $M = $N->{SRVLIST}->{$m};
-
-            foreach $nam ( sort ( keys %{ $M->{zone} } ) ) {
+            my $M = $N->{'SRVLIST'}->{$m};
+
+            foreach $nam ( sort ( keys %{ $M->{'zone'} } ) ) {
                 if ( $nam =~ /$dhcpvlanregex/ ) {
                     my $nam2 = $1;
 
                     #my $vlan2 = $2;
-                    if ( defined( $M->{zone}->{$nam}->{ether} )
-                        && defined( $M->{filename} )
-                        && defined( $M->{pxefilename} ) )
+                    if ( defined( $M->{'zone'}->{$nam}->{'ether'} )
+                        && defined( $M->{'filename'} )
+                        && defined( $M->{'pxefilename'} ) )
                     {
-                        if ( $M->{filename} ne 'pxelinux.0' ) {
+                        if ( $M->{'filename'} ne 'pxelinux.0' ) {
                             Warn( $ERR_SYNTAX,
                                 "Mk_pxelinuxconf[" . $nam2
                                 . "]: pxefilename exists but filename is not pxelinux.0!"
                             );
                         }
-                        my $addr = Resolv( $nam . '.' . $Z->{SOA}->{name}, $Z );
+                        my $addr = Resolv( $nam . '.' . $Z->{'SOA'}->{'name'}, $Z );
                         if ( defined $addr
-                            && $addr ne $nam . '.' . $Z->{SOA}->{name} )
+                            && $addr ne $nam . '.' . $Z->{'SOA'}->{'name'} )
                         {
                             my $hexaddr =
                               sprintf( '%02X%02X%02X%02X',
@@ -1609,10 +1609,10 @@
                               s/%KERNEL%/$M->{pxefilename}/gs;
 			    $temptemplatecontent =~
 			      s/%INITRD%/$M->{initrd}/gs;
-			    my $ramdisk_size = Get_Ramdisk_size_from_Initrd($M->{initrd});
+			    my $ramdisk_size = Get_Ramdisk_size_from_Initrd($M->{'initrd'});
 			    $temptemplatecontent =~
 			      s/%RAMDISK_SIZE%/$ramdisk_size/gs;
-			    my $cmdline = $M->{cmdline} || '';
+			    my $cmdline = $M->{'cmdline'} || '';
 			    $temptemplatecontent =~
 			      s/%CMDLINE%/$cmdline/gs;
                             print PXELINUXCFG $temptemplatecontent;
@@ -1639,25 +1639,25 @@
     print ";;\n";
     print ";; Fichier de configuration BIND\n";
     print ";;\n";
-    print ";; ", $Z->{SOA}->{comment}, "\n";
+    print ";; ", $Z->{'SOA'}->{'comment'}, "\n";
     print
 ";;============================================================================\n\n";
     print "\n";
-    printf "\$TTL %s\n", $Z->{SOA}->{ttl};
-    printf "%-29s IN SOA\t%s %s (\n", '@', $Z->{SOA}->{soa}, $Z->{SOA}->{mail};
-    printf "%-30s%s\n",   '', $Z->{SOA}->{serial};
-    printf "%-30s%s\n",   '', $Z->{SOA}->{refresh};
-    printf "%-30s%s\n",   '', $Z->{SOA}->{retry};
-    printf "%-30s%s\n",   '', $Z->{SOA}->{expire};
-    printf "%-30s%s\n",   '', $Z->{SOA}->{negttl};
+    printf "\$TTL %s\n", $Z->{'SOA'}->{'ttl'};
+    printf "%-29s IN SOA\t%s %s (\n", '@', $Z->{'SOA'}->{'soa'}, $Z->{'SOA'}->{'mail'};
+    printf "%-30s%s\n",   '', $Z->{'SOA'}->{'serial'};
+    printf "%-30s%s\n",   '', $Z->{'SOA'}->{'refresh'};
+    printf "%-30s%s\n",   '', $Z->{'SOA'}->{'retry'};
+    printf "%-30s%s\n",   '', $Z->{'SOA'}->{'expire'};
+    printf "%-30s%s\n",   '', $Z->{'SOA'}->{'negttl'};
     printf "%-30s%s\n\n", '', ')';
 
-    foreach $n ( @{ $Z->{NS} } ) {
+    foreach $n ( @{ $Z->{'NS'} } ) {
         printf "%-29s IN NS\t%s\n", '', $n;
     }
     print "\n";
 
-    foreach $m ( @{ $Z->{MX} } ) {
+    foreach $m ( @{ $Z->{'MX'} } ) {
         printf "%-29s IN MX\t%s\n", '', $m;
     }
     print "\n";
@@ -1694,16 +1694,16 @@
     print
 ";;============================================================================\n\n";
 
-    foreach $n ( sort ( keys %{ $Z->{NETWORK}->{BY_ADDR} } ) ) {
-        my $N = $Z->{NETWORK}->{BY_ADDR}->{$n};
-        print "; ", $N->{comment}, "\n";
+    foreach $n ( sort ( keys %{ $Z->{'NETWORK'}->{'BY_ADDR'} } ) ) {
+        my $N = $Z->{'NETWORK'}->{'BY_ADDR'}->{$n};
+        print "; ", $N->{'comment'}, "\n";
         print
 ";----------------------------------------------------------------------------\n";
-        printf( "%-29s IN A\t%s\n", "network." . $N->{name}, $N->{network} );
-        printf( "%-29s IN A\t%s\n", "netmask." . $N->{name}, $N->{netmask} );
-        printf( "%-29s IN A\t%s\n", "prefix." . $N->{name},  $N->{prefix} );
-        printf( "%-29s IN A\t%s\n", "broadcast." . $N->{name},
-            $N->{broadcast} );
+        printf( "%-29s IN A\t%s\n", "network." . $N->{'name'}, $N->{'network'} );
+        printf( "%-29s IN A\t%s\n", "netmask." . $N->{'name'}, $N->{'netmask'} );
+        printf( "%-29s IN A\t%s\n", "prefix." . $N->{'name'},  $N->{'prefix'} );
+        printf( "%-29s IN A\t%s\n", "broadcast." . $N->{'name'},
+            $N->{'broadcast'} );
         print "\n";
     }
 
@@ -1713,22 +1713,22 @@
     print
 ";;============================================================================\n\n";
 
-    foreach $s ( sort ( keys %{ $Z->{SERVERS}->{BY_ADDR} } ) ) {
-        my $N = $Z->{SERVERS}->{BY_ADDR}->{$s};
-        print "; ",         $N->{comment}, "\n";
-        print "; number: ", $N->{number},  "\n";
-        print "; nodes:  ", $N->{nodes},   "\n"
-          if ( defined( $N->{nodes} ) && $N->{nodes} > 1 );
+    foreach $s ( sort ( keys %{ $Z->{'SERVERS'}->{'BY_ADDR'} } ) ) {
+        my $N = $Z->{'SERVERS'}->{'BY_ADDR'}->{$s};
+        print "; ",         $N->{'comment'}, "\n";
+        print "; number: ", $N->{'number'},  "\n";
+        print "; nodes:  ", $N->{'nodes'},   "\n"
+          if ( defined( $N->{'nodes'} ) && $N->{'nodes'} > 1 );
         print
 ";----------------------------------------------------------------------------\n";
 
-        foreach $m ( sort ( keys %{ $N->{SRVLIST} } ) ) {
-            my $M = $N->{SRVLIST}->{$m};
+        foreach $m ( sort ( keys %{ $N->{'SRVLIST'} } ) ) {
+            my $M = $N->{'SRVLIST'}->{$m};
             my $nam;
 
-            foreach $nam ( sort ( keys %{ $M->{zone} } ) ) {
-                printf( "%-29s IN %s\t%s\n", $nam, $M->{zone}->{$nam}->{TYPE},
-                    $M->{zone}->{$nam}->{FIELD} );
+            foreach $nam ( sort ( keys %{ $M->{'zone'} } ) ) {
+                printf( "%-29s IN %s\t%s\n", $nam, $M->{'zone'}->{$nam}->{'TYPE'},
+                    $M->{'zone'}->{$nam}->{'FIELD'} );
             }
             print "\n";
         }
@@ -1740,10 +1740,10 @@
     print
 ";;============================================================================\n\n";
 
-    foreach $j ( sort ( keys %{ $Z->{ALIAS} } ) ) {
+    foreach $j ( sort ( keys %{ $Z->{'ALIAS'} } ) ) {
         my $i;
 
-        foreach $i ( sort ( @{ $Z->{ALIAS}->{$j} } ) ) {
+        foreach $i ( sort ( @{ $Z->{'ALIAS'}->{$j} } ) ) {
             printf( "%-29s IN A\t%s\n", $j, $i );
         }
     }
@@ -1770,14 +1770,14 @@
     my $resolve   = 0;
 
     # Recherche des informations dans la base de configuration
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
     if ( !ref($N) ) {
         Abort( $ERR_SYNTAX,
             "La classe de serveurs "
             . $hostclass
             . " n'existe pas dans la configuration" );
     }
-    my $M = $N->{SRVLIST}->{$host};
+    my $M = $N->{'SRVLIST'}->{$host};
 
     if ( !ref($M) ) {
         Abort( $ERR_SYNTAX,
@@ -1794,10 +1794,10 @@
     print "iface lo inet loopback\n";
 
     # Ajout de l'interface automatique si presente
-    if ( defined( $M->{ifup}->{dhcp} ) ) {
-        print "auto ",  $M->{ifup}->{dhcp}, "\n";
-        print "iface ", $M->{ifup}->{dhcp}, " inet dhcp\n";
-        Mk_routes( $M, $Z, $M->{ifup}->{dhcp} );
+    if ( defined( $M->{'ifup'}->{'dhcp'} ) ) {
+        print "auto ",  $M->{'ifup'}->{'dhcp'}, "\n";
+        print "iface ", $M->{'ifup'}->{'dhcp'}, " inet dhcp\n";
+        Mk_routes( $M, $Z, $M->{'ifup'}->{'dhcp'} );
     }
     else {
         $resolve = 1;
@@ -1805,70 +1805,70 @@
 
     # Ajout des interfaces statiques
     #foreach $nam ( sort { $M->{ifup}->{$a} cmp $M->{ifup}->{$b} }
-    foreach my $nam ( sort { cmpif( $M->{ifup}->{$a}, $M->{ifup}->{$b} ) }
-        keys %{ $M->{ifup} } )
+    foreach my $nam ( sort { cmpif( $M->{'ifup'}->{$a}, $M->{'ifup'}->{$b} ) }
+        keys %{ $M->{'ifup'} } )
     {
         next if ( $nam eq 'dhcp' );
 
-        print "\nauto ", $M->{ifup}->{$nam}, "\n";
-        print "iface ",  $M->{ifup}->{$nam}, " inet static\n";
+        print "\nauto ", $M->{'ifup'}->{$nam}, "\n";
+        print "iface ",  $M->{'ifup'}->{$nam}, " inet static\n";
 
         my $net = $nam;
         $net =~ s/^[^\.]+\.//;
-        my $NET = $Z->{NETWORK}->{BY_NAME}->{$net};
+        my $NET = $Z->{'NETWORK'}->{'BY_NAME'}->{$net};
 
         if ($resolve) {
-            print "\taddress         ", $M->{zone}->{$nam}->{FIELD}, "\n";
-            print "\tnetmask         ", $NET->{netmask},   "\n";
-            print "\tbroadcast       ", $NET->{broadcast}, "\n";
-            print "\tnetwork         ", $NET->{network},   "\n";
+            print "\taddress         ", $M->{'zone'}->{$nam}->{'FIELD'}, "\n";
+            print "\tnetmask         ", $NET->{'netmask'},   "\n";
+            print "\tbroadcast       ", $NET->{'broadcast'}, "\n";
+            print "\tnetwork         ", $NET->{'network'},   "\n";
         }
         else {
-            print "\taddress         " . $nam . '.' . $Z->{SOA}->{name} . "\n";
+            print "\taddress         " . $nam . '.' . $Z->{'SOA'}->{'name'} . "\n";
             print "\tnetmask         netmask." . $net . '.'
-              . $Z->{SOA}->{name} . "\n";
+              . $Z->{'SOA'}->{'name'} . "\n";
             print "\tbroadcast       broadcast." . $net . '.'
-              . $Z->{SOA}->{name} . "\n";
+              . $Z->{'SOA'}->{'name'} . "\n";
             print "\tnetwork         network." . $net . '.'
-              . $Z->{SOA}->{name} . "\n";
+              . $Z->{'SOA'}->{'name'} . "\n";
         }
 
         my $defaultmtu = ($UML) ? 1496 : 1500;
-        if ( $M->{ifup}->{$nam} =~ m/^([^:.]+)\.(\d+)(:\d+)?$/ ) {
+        if ( $M->{'ifup'}->{$nam} =~ m/^([^:.]+)\.(\d+)(:\d+)?$/ ) {
             my $ifname = $1;
             my $iftag  = $2;
 
             print "\tvlan_raw_device " . $ifname . "\n";
             $defaultmtu = 1496;
 
-            if ( defined( $NET->{tag} ) && $NET->{tag} != $iftag ) {
+            if ( defined( $NET->{'tag'} ) && $NET->{'tag'} != $iftag ) {
                 Warn( $ERR_SYNTAX,
                     "Les tags de "
-                    . $M->{ifup}->{$nam}
+                    . $M->{'ifup'}->{$nam}
                     . " et de " . $net
                     . " different (" . $iftag . "!="
-                    . $NET->{tag} . ")!" );
-            }
-        }
-
-        if ( defined( $NET->{mtu} ) ) {
-            $defaultmtu = $NET->{mtu};
+                    . $NET->{'tag'} . ")!" );
+            }
+        }
+
+        if ( defined( $NET->{'mtu'} ) ) {
+            $defaultmtu = $NET->{'mtu'};
         }
 
         print "\tup              ifconfig "
-          . $M->{ifup}->{$nam} . " mtu "
-          . ( ( defined( $M->{mtu}->{ $M->{ifup}->{$nam} } ) )
-          ? $M->{mtu}->{ $M->{ifup}->{$nam} }
+          . $M->{'ifup'}->{$nam} . " mtu "
+          . ( ( defined( $M->{'mtu'}->{ $M->{'ifup'}->{$nam} } ) )
+          ? $M->{'mtu'}->{ $M->{'ifup'}->{$nam} }
           : $defaultmtu ) . " "
-          . ( ( defined( $M->{noarp}->{ $M->{ifup}->{$nam} } ) ) ? "-arp"
+          . ( ( defined( $M->{'noarp'}->{ $M->{'ifup'}->{$nam} } ) ) ? "-arp"
           : "arp" ) . "\n";
 
         my $defaultmedia = "autoneg on";
-        if ( defined( $NET->{media} ) ) {
-            $defaultmedia = $NET->{media};
-        }
-        if ( defined( $M->{media}->{ $M->{ifup}->{$nam} } ) ) {
-            $defaultmedia = $M->{media}->{ $M->{ifup}->{$nam} };
+        if ( defined( $NET->{'media'} ) ) {
+            $defaultmedia = $NET->{'media'};
+        }
+        if ( defined( $M->{'media'}->{ $M->{'ifup'}->{$nam} } ) ) {
+            $defaultmedia = $M->{'media'}->{ $M->{'ifup'}->{$nam} };
         }
 
         my @defaultmedia = split ( ' ', $defaultmedia );
@@ -1921,7 +1921,7 @@
               . " || true\n";
         }
 
-        Mk_routes( $M, $Z, $M->{ifup}->{$nam} );
+        Mk_routes( $M, $Z, $M->{'ifup'}->{$nam} );
 
     }
     print "\n";
@@ -1958,60 +1958,60 @@
         return undef;
     }
 
-    my $N = $Z->{SERVERS}->{BY_NAME}->{$hostclass};
-
-    my $M = $N->{SRVLIST}->{$hostshort};
-
-    if ( defined( $M->{zone}->{$host2}->{FIELD} ) ) {
-        if ( $M->{zone}->{$host2}->{TYPE} eq "CNAME" ) {
+    my $N = $Z->{'SERVERS'}->{'BY_NAME'}->{$hostclass};
+
+    my $M = $N->{'SRVLIST'}->{$hostshort};
+
+    if ( defined( $M->{'zone'}->{$host2}->{'FIELD'} ) ) {
+        if ( $M->{'zone'}->{$host2}->{'TYPE'} eq "CNAME" ) {
             return (
                 Resolv(
-                    $M->{zone}->{$host2}->{FIELD} . '.' . $Z->{SOA}->{name},
+                    $M->{'zone'}->{$host2}->{'FIELD'} . '.' . $Z->{'SOA'}->{'name'},
                     $Z
                 )
             );
         }
         else {
-            return ( $M->{zone}->{$host2}->{FIELD} );
-        }
-    }
-
-    foreach $i ( keys %{ $Z->{SERVERS}->{BY_NAME} } ) {
-        my $N2 = $Z->{SERVERS}->{BY_NAME}->{$i};
-        foreach $j ( keys %{ $N2->{SRVLIST} } ) {
-            my $M2 = $N2->{SRVLIST}->{$j};
-            if ( defined( $M2->{zone}->{$host2}->{FIELD} ) ) {
-                if ( $M2->{zone}->{$host2}->{TYPE} eq "CNAME" ) {
+            return ( $M->{'zone'}->{$host2}->{'FIELD'} );
+        }
+    }
+
+    foreach $i ( keys %{ $Z->{'SERVERS'}->{'BY_NAME'} } ) {
+        my $N2 = $Z->{'SERVERS'}->{'BY_NAME'}->{$i};
+        foreach $j ( keys %{ $N2->{'SRVLIST'} } ) {
+            my $M2 = $N2->{'SRVLIST'}->{$j};
+            if ( defined( $M2->{'zone'}->{$host2}->{'FIELD'} ) ) {
+                if ( $M2->{'zone'}->{$host2}->{'TYPE'} eq "CNAME" ) {
                     return (
                         Resolv(
-                            $M2->{zone}->{$host2}->{FIELD} . '.'
-                            . $Z->{SOA}->{name},
+                            $M2->{'zone'}->{$host2}->{'FIELD'} . '.'
+                            . $Z->{'SOA'}->{'name'},
                             $Z
                         )
                     );
                 }
                 else {
-                    return ( $M2->{zone}->{$host2}->{FIELD} );
-                }
-            }
-        }
-    }
-
-    if ( defined( $Z->{ALIAS}->{$host2} ) ) {
+                    return ( $M2->{'zone'}->{$host2}->{'FIELD'} );
+                }
+            }
+        }
+    }
+
+    if ( defined( $Z->{'ALIAS'}->{$host2} ) ) {
         if (wantarray) {
-            return ( @{ $Z->{ALIAS}->{$host2} } );
+            return ( @{ $Z->{'ALIAS'}->{$host2} } );
         }
         else {
-            return ( $Z->{ALIAS}->{$host2}
-                [ int( rand( $#{ $Z->{ALIAS}->{$host2} } + 1 ) ) ] );
+            return ( $Z->{'ALIAS'}->{$host2}
+                [ int( rand( $#{ $Z->{'ALIAS'}->{$host2} } + 1 ) ) ] );
         }
     }
 
     if ( defined($hostvlan)
         && $hostvlan ne ""
-        && defined( $Z->{NETWORK}->{BY_NAME}->{$hostvlan} ) )
+        && defined( $Z->{'NETWORK'}->{'BY_NAME'}->{$hostvlan} ) )
     {
-        return ( $Z->{NETWORK}->{BY_NAME}->{$hostvlan}->{$hostshort} );
+        return ( $Z->{'NETWORK'}->{'BY_NAME'}->{$hostvlan}->{$hostshort} );
     }
 
     return undef;
@@ -2027,8 +2027,8 @@
     my ( $M, $Z, $iface ) = @_;
 
     my $r;
-    foreach $r ( sort ( keys %{ $M->{route}->{$iface} } ) ) {
-        my ( $dst, @gw ) = split ( /\s+/, $M->{route}->{$iface}->{$r} );
+    foreach $r ( sort ( keys %{ $M->{'route'}->{$iface} } ) ) {
+        my ( $dst, @gw ) = split ( /\s+/, $M->{'route'}->{$iface}->{$r} );
         my $gw;
         my @gw2;
         foreach $gw (@gw) {
@@ -2043,14 +2043,14 @@
                 push @gw2, $gw;
             }
         }
-        if ( $Z->{NETWORK}->{BY_NAME}->{$dst} ) {
+        if ( $Z->{'NETWORK'}->{'BY_NAME'}->{$dst} ) {
             if ( $#gw2 >= 2 ) {
                 print "\tup              ip route add ";
 
-                print $Z->{NETWORK}->{BY_NAME}->{$dst}->{network};
+                print $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{'network'};
                 print "/";
                 print netmask2prefix(
-                    $Z->{NETWORK}->{BY_NAME}->{$dst}->{netmask} );
+                    $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{'netmask'} );
 
                 print " scope global";
 
@@ -2064,11 +2064,11 @@
                 print "\tup              route add -net ";
 
                 #print "network.".$dst.".".$Z->{SOA}->{name};
-                print $Z->{NETWORK}->{BY_NAME}->{$dst}->{network};
+                print $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{'network'};
                 print " netmask ";
 
                 #print "netmask.".$dst.".".$Z->{SOA}->{name};
-                print $Z->{NETWORK}->{BY_NAME}->{$dst}->{netmask};
+                print $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{'netmask'};
 
                 print " gateway " . $gw2[0] if ( defined $gw2[0] );
 
@@ -2135,15 +2135,15 @@
         }
     }
 
-    foreach $r ( sort ( keys %{ $M->{delroute}->{$iface} } ) ) {
-        my ($dst) = split ( /\s+/, $M->{route}->{$iface}->{$r} );
-
-        if ( $Z->{NETWORK}->{BY_NAME}->{$dst} ) {
+    foreach $r ( sort ( keys %{ $M->{'delroute'}->{$iface} } ) ) {
+        my ($dst) = split ( /\s+/, $M->{'route'}->{$iface}->{$r} );
+
+        if ( $Z->{'NETWORK'}->{'BY_NAME'}->{$dst} ) {
             print "\tup              ip route del ";
 
-            print $Z->{NETWORK}->{BY_NAME}->{$dst}->{network};
+            print $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{network};
             print "/";
-            print netmask2prefix( $Z->{NETWORK}->{BY_NAME}->{$dst}->{netmask} );
+            print netmask2prefix( $Z->{'NETWORK'}->{'BY_NAME'}->{$dst}->{'netmask'} );
 
             print " scope global";
 




More information about the Pf-tools-commits mailing list