patches/system-tools-backends-04-network.diff
changeset 15458 d8b95dba8695
parent 13331 826c87c3ca5b
--- a/patches/system-tools-backends-04-network.diff	Fri Mar 20 10:14:17 2009 +0000
+++ b/patches/system-tools-backends-04-network.diff	Fri Mar 20 15:36:32 2009 +0000
@@ -32,8 +32,9 @@
    &gst_report_end ();
  
    &gst_xml_print_begin  ("enable-iface");
---- system-tools-backends-1.4.2.orig/network.pl.in	Thu Aug 21 05:46:02 2008
-+++ system-tools-backends-1.4.2/network.pl.in	Sat Aug 30 06:10:46 2008
+diff -up system-tools-backends-1.4.2/network.pl.in-clean system-tools-backends-1.4.2/network.pl.in
+--- system-tools-backends-1.4.2/network.pl.in-clean	2006-01-02 15:50:54.000000000 +0000
++++ system-tools-backends-1.4.2/network.pl.in	2009-03-13 11:39:51.202396844 +0000
 @@ -28,8 +28,10 @@
  use Socket;
  
@@ -45,7 +46,7 @@
    $SCRIPTSDIR = ".";
    $DOTIN = ".in";
  }
-@@ -117,6 +119,457 @@
+@@ -117,6 +119,457 @@ sub gst_network_get_freebsd_wireless_ifa
    return \@ifaces;
  }
  
@@ -503,7 +504,7 @@
  # Returns an array with the wireless devices found
  sub gst_network_get_wireless_ifaces
  {
-@@ -124,6 +577,7 @@
+@@ -124,6 +577,7 @@ sub gst_network_get_wireless_ifaces
      
    return &gst_network_get_linux_wireless_ifaces   if ($plat eq "Linux");
    return &gst_network_get_freebsd_wireless_ifaces if ($plat eq "FreeBSD");
@@ -511,7 +512,7 @@
  }
  
  # set of functions for enabling an interface
-@@ -138,40 +592,142 @@
+@@ -138,39 +592,171 @@ sub gst_network_config_wireless
  
    if ($essid)
    {
@@ -572,13 +573,12 @@
 +      $nis_state = $1;
 +      $nis_state = "$1_temporary" if ( $2 eq "(temporary)");
 +      last;
-     }
++    }
 +  }
 +  &gst_file_close ($fd);
 +  return $nis_state;
 +}
- 
--    &gst_file_run ($command);
++
 +sub gst_network_sunos_nis_is_available
 +{
 +  my ($fd, $is_available);
@@ -587,15 +587,39 @@
 +  return 0 if $fd eq undef;
 +  $is_available = 0;
 +  while (<$fd>) {
-+    if (/^([_0-9a-zA-Z\.]*)/) {
++    if (/^([_0-9a-zA-Z\.]+)/) {
 +      $is_available = 1;
 +      last;
-+    }
-   }
+     }
++  }
 +  &gst_file_close ($fd);
 +  return $is_available;
- }
++}
++
++sub gst_network_sunos_set_nsswitch
++{
++  my ($namesvc) = @_;
++  my ($new_nsswitch, $old_nsswitch);
  
+-    &gst_file_run ($command);
++  $old_nsswitch = "/etc/nsswitch.conf";
++  $new_nsswitch = undef;
++
++  if ( $namesvc eq "dns" ) {
++      $new_nsswitch = "/etc/nsswitch.dns";
++  }
++  elsif ( $namesvc eq "nis" ) {
++      $new_nsswitch = "/etc/nsswitch.nis";
++  }
++
++  if ( $new_nsswitch ) {
++    &gst_file_backup( $old_nsswitch ) if (&gst_file_exists ($old_nsswitch));
++
++    &gst_file_copy( $new_nsswitch, $old_nsswitch );
++  }
++}
++
++
 +sub gst_network_sunos_nis_client_set
 +{
 +  my ($enable) = @_;
@@ -607,20 +631,27 @@
 +    if ($nis_state eq "false_temporary")
 +    {
 +      &gst_file_run ("svcadm enable svc:/network/nis/client");
-+      $nis_is_available = &gst_file_run ("ypwhich");
++      $nis_is_available = &gst_network_sunos_nis_is_available();
 +      if (not $nis_is_available)
 +      {
 +      	&gst_file_run ("svcadm disable -t svc:/network/nis/client");
++        &gst_network_sunos_set_nsswitch( "dns" );
++      }
++      else 
++      {
++        &gst_network_sunos_set_nsswitch( "nis" );
 +      }
 +    }
 +  } else {
-+    $nis_is_available = &gst_file_run ("ypwhich");
++    $nis_is_available = &gst_network_sunos_nis_is_available();
 +    if ( (($nis_state eq "true") || ($nis_state eq "true_temporary")) && not $nis_is_available )
 +      {
 +        gst_file_run ("svcadm disable -t svc:/network/nis/client");
 +      }
-+  }
-+}
++    &gst_network_sunos_set_nsswitch( "dns" );
+   }
+ }
+ 
  sub gst_network_enable_iface
  {
    my ($hash, $dev, $command_ifconfig) = @_;
@@ -640,7 +671,7 @@
    {
 -    if (&gst_file_locate_tool ("dhclient3"))
 +    if ($$tool{"system"} eq "SunOS")
-     {
++    {
 +
 +      &gst_file_run ("ifconfig $dev plumb"); # XXX - inet6???
 +      if (&gst_network_get_interface_type($dev) eq "wireless" ) {
@@ -662,11 +693,10 @@
 +      &gst_file_run ("cp -p $resolv_conf $SYSCONFDIR/inet/gnome-system-tools/resolv.conf.$dev.bak");
 +    }
 +    elsif (&gst_file_locate_tool ("dhclient3"))
-+    {
+     {
        $command = "dhclient3 -pf /var/run/dhclient.$dev.pid $dev";
      }
-     elsif (&gst_file_locate_tool ("dhclient"))
-@@ -189,11 +745,36 @@
+@@ -189,11 +775,36 @@ sub gst_network_enable_iface
      $command .= " $dev";
      $command .= " $address" if ($address);
      $command .= " netmask $netmask" if ($netmask);
@@ -705,7 +735,7 @@
  }
  
  sub gst_network_get_chat_file
-@@ -352,6 +933,10 @@
+@@ -352,6 +963,10 @@ sub gst_network_autodetect_modem
    {
      @arr = ("/dev/modem", "/dev/cuaa0", "/dev/cuaa1", "/dev/cuaa2", "/dev/cuaa3");
    }
@@ -716,7 +746,7 @@
    
    foreach $tty (@arr) {
      $temp = `pppd lcp-max-configure 1 nodetach noauth nocrtscts $tty connect \"chat -t1 \'\' AT OK\" 2>/dev/null`;
-@@ -480,7 +1065,9 @@
+@@ -480,7 +1095,9 @@ sub gst_network_get_broadcast_ping_cmd
    my %cmd_map =
        (
         "debian-2.2" => "ping -c 2 -i 1 -n $bcast",
@@ -727,7 +757,7 @@
         );
    my %dist_map =
        (
-@@ -499,6 +1086,8 @@
+@@ -499,6 +1116,8 @@ sub gst_network_get_broadcast_ping_cmd
         "ubuntu-5.04"  => "debian-2.2",
         "ubuntu-5.10"  => "debian-2.2",
         "ubuntu-6.04"  => "debian-2.2",
@@ -736,7 +766,7 @@
         "mandrake-7.1" => "debian-2.2",
         "mandrake-7.2" => "debian-2.2",
         "mandrake-9.0" => "debian-2.2",
-@@ -778,6 +1367,8 @@
+@@ -778,6 +1397,8 @@ sub gst_network_get_interface_type
  {
    my ($dev) = @_;
    my (@wireless_ifaces, $wi, $type);
@@ -745,7 +775,7 @@
  
    return $types_cache{$dev} if (exists $types_cache{$dev});
  
-@@ -804,7 +1395,7 @@
+@@ -804,7 +1425,7 @@ sub gst_network_get_interface_type
        $types_cache{$dev} = "modem";
      }
    }
@@ -754,7 +784,7 @@
    {
      $types_cache{$dev} = "ethernet";
    }
-@@ -820,6 +1411,19 @@
+@@ -820,6 +1441,19 @@ sub gst_network_get_interface_type
    {
      $types_cache{$dev} = "loopback";
    }
@@ -774,7 +804,7 @@
  
    return $types_cache{$dev};
  }
-@@ -895,6 +1499,66 @@
+@@ -895,12 +1529,73 @@ sub gst_network_linux_interfaces_get_inf
    return \%ifaces;
  }
  
@@ -841,7 +871,6 @@
  sub gst_network_interfaces_get_info
  {
    my (%ifaces);
-@@ -901,6 +1565,7 @@
  
    $ifaces = &gst_network_linux_interfaces_get_info   if ($$tool{"system"} eq "Linux");
    $ifaces = &gst_network_freebsd_interfaces_get_info if ($$tool{"system"} eq "FreeBSD");
@@ -849,7 +878,7 @@
  
    foreach $dev (keys %$ifaces)
    {
-@@ -925,12 +1590,18 @@
+@@ -925,12 +1620,18 @@ sub gst_network_active_interfaces_get
    &gst_report_enter ();
    &gst_report ("network_iface_active_get");
  
@@ -869,7 +898,7 @@
      s/:? .*//;
      next if /^$/;
      push @ret, $_;
-@@ -1182,6 +1853,208 @@
+@@ -1182,6 +1883,208 @@ sub gst_network_freebsd_ifaces_get_exist
    return @ret;
  }
  
@@ -1078,7 +1107,7 @@
  sub gst_network_suse70_parse_iface_num
  {
    my ($file, $dev) = @_;
-@@ -1637,9 +2510,7 @@
+@@ -1637,9 +2540,7 @@ sub gst_network_interfaces_get
    # clear unneeded hash elements
    foreach $i (keys %$hash)
    {
@@ -1088,7 +1117,7 @@
    }
  
    foreach $i (@ifaces)
-@@ -1672,7 +2543,7 @@
+@@ -1672,7 +2573,7 @@ sub gst_network_interfaces_get
    $dev = "ppp0" if ($$tool{"system"} eq "Linux");
    $dev = "tun0" if ($$tool{"system"} eq "FreeBSD");
  
@@ -1097,7 +1126,7 @@
    {
      $$hash{$dev}{"dev"} = $dev;
      $$hash{$dev}{"enabled"} = 0;
-@@ -1683,6 +2554,63 @@
+@@ -1683,6 +2584,63 @@ sub gst_network_interfaces_get
    return \%$hash;
  }
  
@@ -1161,7 +1190,7 @@
  sub gst_network_conf_get
  {
    my %dist_attrib;
-@@ -1743,6 +2671,12 @@
+@@ -1743,6 +2701,12 @@ sub gst_network_rh72_get_file
    return "$dev.$i";
  }
  
@@ -1174,7 +1203,7 @@
  sub gst_network_deb22_get_file
  {
    my ($iface) = @_;
-@@ -1816,6 +2750,8 @@
+@@ -1816,6 +2780,8 @@ sub gst_network_get_file
            "ubuntu-5.04" => \&gst_network_deb22_get_file,    
            "ubuntu-5.10" => \&gst_network_deb22_get_file,    
            "ubuntu-6.04" => \&gst_network_deb22_get_file,    
@@ -1183,7 +1212,7 @@
            "suse-7.0"     => \&gst_network_suse70_get_file,
            "suse-9.0"     => \&gst_network_deb22_get_file,
            "suse-9.1"     => \&gst_network_deb22_get_file,
-@@ -1851,6 +2787,15 @@
+@@ -1851,6 +2817,15 @@ sub gst_network_get_file
  
  sub gst_network_get_gateway_data
  {
@@ -1199,7 +1228,7 @@
    my ($fd, $gateway, $dev);
  
    $fd = &gst_file_run_pipe_read ("route -n");
-@@ -1868,6 +2813,25 @@
+@@ -1868,6 +2843,25 @@ sub gst_network_get_gateway_data
    return ($gateway, $dev);
  }
  
@@ -1225,7 +1254,7 @@
  sub gst_network_get_default_gatewaydev
  {
    my ($gateway, $dev) = &gst_network_get_gateway_data ();
-@@ -1890,10 +2854,15 @@
+@@ -1890,10 +2884,15 @@ sub gst_network_route_set_default_gw
    # Just in case. This means that no static gateway is needed.
    return if $gateway eq "";
  
@@ -1243,7 +1272,7 @@
      {
        $curr_gateway = $1;
        if ($gatewaydev ne "")
-@@ -1910,8 +2879,14 @@
+@@ -1910,8 +2909,14 @@ sub gst_network_route_set_default_gw
    if (($curr_gateway    ne $gateway) ||
        ($curr_gatewaydev ne $gatewaydev))
    {
@@ -1260,7 +1289,7 @@
    }
  }
  
-@@ -3822,28 +4797,57 @@
+@@ -3822,28 +4827,57 @@ sub gst_network_suse9_get_dev_name
    return $dev;
  }
  
@@ -1330,7 +1359,7 @@
  
    return \@arr;
  }
-@@ -3936,6 +4940,8 @@
+@@ -3936,6 +4970,8 @@ sub gst_network_ensure_loopback_interfac
            "ubuntu-5.04" => "lo",    
            "ubuntu-5.10" => "lo",    
            "ubuntu-6.04" => "lo",    
@@ -1339,7 +1368,7 @@
            "suse-7.0"     => "",
            "suse-9.0"     => "",
            "suse-9.1"     => "",
-@@ -3970,7 +4976,7 @@
+@@ -3970,7 +5006,7 @@ sub gst_network_ensure_loopback_interfac
      my %iface = (
                   "auto" => 1,
                   "user" => 0,
@@ -1348,7 +1377,7 @@
                   "address" => "127.0.0.1",
                   "netmask" => "255.0.0.0",
                   "broadcast" => "127.255.255.255",
-@@ -4021,16 +5027,27 @@
+@@ -4021,16 +5057,27 @@ sub gst_network_ensure_loopback_staticho
  {
    my ($statichost, $hostname, $old_hostname, $lo_ip) = @_;
    my $i;
@@ -1378,7 +1407,7 @@
    }
  }
  
-@@ -4101,6 +5118,8 @@
+@@ -4101,6 +5148,8 @@ sub gst_network_get_parse_table
            "ubuntu-5.04" => "debian-2.2",
            "ubuntu-5.10" => "debian-2.2",
            "ubuntu-6.04" => "debian-2.2",
@@ -1387,7 +1416,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -4479,6 +5498,79 @@
+@@ -4479,6 +5528,79 @@ sub gst_network_get_parse_table
         [ "gatewaydev",    \&gst_network_get_gateway_dev_from_address, "%interface%", "%gateway%" ],
         ]
       },
@@ -1467,7 +1496,7 @@
     );
    
    my $dist = $dist_map{$gst_dist};
-@@ -4522,6 +5614,8 @@
+@@ -4522,6 +5644,8 @@ sub gst_network_get_interface_parse_tabl
            "ubuntu-5.04" => "debian-3.0",
            "ubuntu-5.10" => "debian-3.0",
            "ubuntu-6.04" => "debian-3.0",
@@ -1476,7 +1505,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -5318,7 +6412,115 @@
+@@ -5318,7 +6442,115 @@ sub gst_network_get_interface_parse_tabl
         [ "persist",            \&gst_network_get_freebsd5_ppp_persist, [ STARTIF, IFACE ]],
        ]
      },
@@ -1593,7 +1622,7 @@
    
    my $dist = $dist_map{$gst_dist};
    return %{$dist_tables{$dist}} if $dist;
-@@ -5360,6 +6562,8 @@
+@@ -5360,6 +6592,8 @@ sub gst_network_get_replace_table
            "ubuntu-5.04" => "debian-2.2",
            "ubuntu-5.10" => "debian-2.2",
            "ubuntu-6.04" => "debian-2.2",
@@ -1602,7 +1631,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -5723,7 +6927,69 @@
+@@ -5723,7 +6957,69 @@ sub gst_network_get_replace_table
         [ "gateway",       \&gst_replace_sh,               RC_CONF, "defaultrouter" ],
         [ "interface",     \&gst_network_interfaces_set,   OLD_HASH ]
         ]
@@ -1673,7 +1702,7 @@
  	  );
    
    my $dist = $dist_map{$gst_dist};
-@@ -5766,6 +7032,8 @@
+@@ -5766,6 +7062,8 @@ sub gst_network_get_interface_replace_ta
            "ubuntu-5.04" => "debian-3.0",
            "ubuntu-5.10" => "debian-3.0",
            "ubuntu-6.04" => "debian-3.0",
@@ -1682,7 +1711,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -6522,7 +7790,109 @@
+@@ -6522,7 +7820,109 @@ sub gst_network_get_interface_replace_ta
         [ "dial_command",   \&gst_network_replace_pppconf_dial_command, [ PPPCONF, STARTIF, IFACE ]],
         [ "volume",         \&gst_network_replace_pppconf_volume,       [ PPPCONF, STARTIF, IFACE ]],
        ]
@@ -1793,3 +1822,4 @@
    );
    
    my $dist = $dist_map{$gst_dist};
+