patches/system-tools-backends-04-network.diff
branchgnome-2-20
changeset 11015 551ee45655ff
parent 9229 10515817e498
--- a/patches/system-tools-backends-04-network.diff	Mon Apr 21 07:00:04 2008 +0000
+++ b/patches/system-tools-backends-04-network.diff	Mon Apr 21 08:20:52 2008 +0000
@@ -1,6 +1,5 @@
-diff -ru /var/tmp/clean/system-tools-backends-1.4.2/network-conf.in system-tools-backends-1.4.2/network-conf.in
---- /var/tmp/clean/system-tools-backends-1.4.2/network-conf.in	2006-01-02 15:32:33.000000000 +0000
-+++ system-tools-backends-1.4.2/network-conf.in	2006-03-13 10:14:56.148512000 +0000
+--- system-tools-backends-1.4.2.orig/network-conf.in	Mon Jan  2 23:32:33 2006
++++ system-tools-backends-1.4.2/network-conf.in	Fri Dec 14 16:00:43 2007
 @@ -77,7 +77,8 @@
                "vine-3.0", "vine-3.1",
                "ark", 
@@ -11,9 +10,8 @@
  
  $description =<<"end_of_description;";
         Configures all network parameters and interfaces.
-
---- system-tools-backends-1.4.2.orig/network.pl.in	Mon Jan  2 23:50:54 2006
-+++ system-tools-backends-1.4.2/network.pl.in	Thu Feb  8 20:17:02 2007
+--- 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	2008-04-16 15:06:28.967577874 +0100
 @@ -28,8 +28,10 @@
  use Socket;
  
@@ -25,7 +23,7 @@
    $SCRIPTSDIR = ".";
    $DOTIN = ".in";
  }
-@@ -117,6 +119,455 @@
+@@ -117,6 +119,457 @@ sub gst_network_get_freebsd_wireless_ifa
    return \@ifaces;
  }
  
@@ -127,6 +125,8 @@
 +    if ( $output ne "" ) {
 +        return $output;
 +    }
++  } elsif (($buf = &gst_network_get_default_gateway ()) ne NULL) {
++	return $buf;
 +  }
 +  return "";
 +}
@@ -459,13 +459,13 @@
 +  my (@ifaces);
 +
 +  # First let's get all ethernet and wireless interfaces
-+  $fd = &gst_file_run_pipe_read ("dladm show-dev");
++  $fd = &gst_file_run_pipe_read ("dladm show-link -p");
 +
 +  unless ($fd eq undef)  {
 +    while (<$fd>)
 +    {
 +      chomp;
-+      if (/^\s*(\S*)\s*link:*(.*)/)
++      if (/^\s*LINK="(\S*)".*/)
 +      {
 +        push @ifaces, $1;
 +      }
@@ -481,7 +481,7 @@
  # Returns an array with the wireless devices found
  sub gst_network_get_wireless_ifaces
  {
-@@ -124,6 +575,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");
@@ -489,7 +489,7 @@
  }
  
  # set of functions for enabling an interface
-@@ -138,23 +590,39 @@
+@@ -138,39 +592,81 @@ sub gst_network_config_wireless
  
    if ($essid)
    {
@@ -541,7 +541,6 @@
    }
  }
  
-@@ -161,17 +629,43 @@
  sub gst_network_enable_iface
  {
    my ($hash, $dev, $command_ifconfig) = @_;
@@ -561,7 +560,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" ) {
@@ -583,11 +582,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 +683,36 @@
+@@ -189,11 +685,36 @@ sub gst_network_enable_iface
      $command .= " $dev";
      $command .= " $address" if ($address);
      $command .= " netmask $netmask" if ($netmask);
@@ -626,7 +624,7 @@
  }
  
  sub gst_network_get_chat_file
-@@ -352,6 +871,10 @@
+@@ -352,6 +873,10 @@ sub gst_network_autodetect_modem
    {
      @arr = ("/dev/modem", "/dev/cuaa0", "/dev/cuaa1", "/dev/cuaa2", "/dev/cuaa3");
    }
@@ -637,7 +635,7 @@
    
    foreach $tty (@arr) {
      $temp = `pppd lcp-max-configure 1 nodetach noauth nocrtscts $tty connect \"chat -t1 \'\' AT OK\" 2>/dev/null`;
-@@ -480,7 +1003,9 @@
+@@ -480,7 +1005,9 @@ sub gst_network_get_broadcast_ping_cmd
    my %cmd_map =
        (
         "debian-2.2" => "ping -c 2 -i 1 -n $bcast",
@@ -648,7 +646,7 @@
         );
    my %dist_map =
        (
-@@ -499,6 +1024,8 @@
+@@ -499,6 +1026,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",
@@ -657,7 +655,7 @@
         "mandrake-7.1" => "debian-2.2",
         "mandrake-7.2" => "debian-2.2",
         "mandrake-9.0" => "debian-2.2",
-@@ -778,6 +1305,8 @@
+@@ -778,6 +1307,8 @@ sub gst_network_get_interface_type
  {
    my ($dev) = @_;
    my (@wireless_ifaces, $wi, $type);
@@ -666,7 +664,7 @@
  
    return $types_cache{$dev} if (exists $types_cache{$dev});
  
-@@ -804,7 +1333,7 @@
+@@ -804,7 +1335,7 @@ sub gst_network_get_interface_type
        $types_cache{$dev} = "modem";
      }
    }
@@ -675,7 +673,7 @@
    {
      $types_cache{$dev} = "ethernet";
    }
-@@ -820,6 +1349,19 @@
+@@ -820,6 +1351,19 @@ sub gst_network_get_interface_type
    {
      $types_cache{$dev} = "loopback";
    }
@@ -695,7 +693,7 @@
  
    return $types_cache{$dev};
  }
-@@ -895,6 +1437,62 @@
+@@ -895,12 +1439,73 @@ sub gst_network_linux_interfaces_get_inf
    return \%ifaces;
  }
  
@@ -707,13 +705,13 @@
 +  &gst_report ("network_iface_active_get");
 +
 +  # First let's get all real network nterfaces known to the kernel
-+  $fd = &gst_file_run_pipe_read ("dladm show-link");
++  $fd = &gst_file_run_pipe_read ("dladm show-link -p");
 +
 +  unless ($fd eq undef)  {
 +    while (<$fd>)
 +    {
 +      chomp;
-+      if (/^.*device: (.*)\s*/)
++      if (/^.*LINK="([^"]*)".*/)
 +      {
 +        $dev = $1;
 +        $ifaces{$dev}{"dev"}    = $dev;
@@ -746,6 +744,10 @@
 +      $ifaces{$dev}{"addr"}    = $1 if /inet[ \t]+([^ \t]+)/i;
 +      $ifaces{$dev}{"mask"}    = $1 if /netmask[ \t]+([^ \t]+)/i;
 +      $ifaces{$dev}{"bcast"}   = $1 if /broadcast[ \t]+([^ \t]+)/i;
++      if ( $ifaces{$dev}{"mask"} =~ /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ )
++       {
++        $ifaces{$dev}{"mask"} = sprintf ("%d.%d.%d.%d", hex($1), hex($2), hex($3), hex($4));
++       }
 +    }
 +  }
 +  
@@ -758,7 +760,6 @@
  sub gst_network_interfaces_get_info
  {
    my (%ifaces);
-@@ -901,6 +1499,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");
@@ -766,7 +767,7 @@
  
    foreach $dev (keys %$ifaces)
    {
-@@ -925,12 +1524,18 @@
+@@ -925,12 +1530,18 @@ sub gst_network_active_interfaces_get
    &gst_report_enter ();
    &gst_report ("network_iface_active_get");
  
@@ -786,7 +787,7 @@
      s/:? .*//;
      next if /^$/;
      push @ret, $_;
-@@ -1182,6 +1787,208 @@
+@@ -1182,6 +1793,208 @@ sub gst_network_freebsd_ifaces_get_exist
    return @ret;
  }
  
@@ -995,7 +996,17 @@
  sub gst_network_suse70_parse_iface_num
  {
    my ($file, $dev) = @_;
-@@ -1672,7 +2479,7 @@
+@@ -1637,9 +2450,7 @@ sub gst_network_interfaces_get
+   # clear unneeded hash elements
+   foreach $i (keys %$hash)
+   {
+-    delete $$hash{$i}{"addr"};
+     delete $$hash{$i}{"bcast"};
+-    delete $$hash{$i}{"mask"};
+   }
+ 
+   foreach $i (@ifaces)
+@@ -1672,7 +2483,7 @@ sub gst_network_interfaces_get
    $dev = "ppp0" if ($$tool{"system"} eq "Linux");
    $dev = "tun0" if ($$tool{"system"} eq "FreeBSD");
  
@@ -1004,7 +1015,7 @@
    {
      $$hash{$dev}{"dev"} = $dev;
      $$hash{$dev}{"enabled"} = 0;
-@@ -1683,6 +2490,63 @@
+@@ -1683,6 +2494,63 @@ sub gst_network_interfaces_get
    return \%$hash;
  }
  
@@ -1068,7 +1079,7 @@
  sub gst_network_conf_get
  {
    my %dist_attrib;
-@@ -1743,6 +2607,12 @@
+@@ -1743,6 +2611,12 @@ sub gst_network_rh72_get_file
    return "$dev.$i";
  }
  
@@ -1081,7 +1092,7 @@
  sub gst_network_deb22_get_file
  {
    my ($iface) = @_;
-@@ -1816,6 +2686,8 @@
+@@ -1816,6 +2690,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,    
@@ -1090,7 +1101,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 +2723,15 @@
+@@ -1851,6 +2727,15 @@ sub gst_network_get_file
  
  sub gst_network_get_gateway_data
  {
@@ -1106,7 +1117,7 @@
    my ($fd, $gateway, $dev);
  
    $fd = &gst_file_run_pipe_read ("route -n");
-@@ -1868,6 +2749,25 @@
+@@ -1868,6 +2753,25 @@ sub gst_network_get_gateway_data
    return ($gateway, $dev);
  }
  
@@ -1117,7 +1128,7 @@
 +  $fd = &gst_file_run_pipe_read ("netstat -rn");
 +  while (<$fd>)
 +  {
-+    if (/^default[ \t]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)[ \t]+.*[ \t]([a-zA-Z0-9]*)/)
++    if (/^default[ \t]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)[ \t]+.*[ \t]([a-zA-Z0-9]*[0-9])/)
 +    {
 +      $gateway = $1;
 +      $dev = $2;
@@ -1132,7 +1143,7 @@
  sub gst_network_get_default_gatewaydev
  {
    my ($gateway, $dev) = &gst_network_get_gateway_data ();
-@@ -1890,10 +2790,15 @@
+@@ -1890,10 +2794,15 @@ sub gst_network_route_set_default_gw
    # Just in case. This means that no static gateway is needed.
    return if $gateway eq "";
  
@@ -1150,7 +1161,7 @@
      {
        $curr_gateway = $1;
        if ($gatewaydev ne "")
-@@ -1910,8 +2815,14 @@
+@@ -1910,8 +2819,14 @@ sub gst_network_route_set_default_gw
    if (($curr_gateway    ne $gateway) ||
        ($curr_gatewaydev ne $gatewaydev))
    {
@@ -1167,7 +1178,7 @@
    }
  }
  
-@@ -3822,28 +4733,57 @@
+@@ -3822,28 +4737,57 @@ sub gst_network_suse9_get_dev_name
    return $dev;
  }
  
@@ -1237,7 +1248,7 @@
  
    return \@arr;
  }
-@@ -3936,6 +4876,8 @@
+@@ -3936,6 +4880,8 @@ sub gst_network_ensure_loopback_interfac
            "ubuntu-5.04" => "lo",    
            "ubuntu-5.10" => "lo",    
            "ubuntu-6.04" => "lo",    
@@ -1246,7 +1257,7 @@
            "suse-7.0"     => "",
            "suse-9.0"     => "",
            "suse-9.1"     => "",
-@@ -3970,7 +4912,7 @@
+@@ -3970,7 +4916,7 @@ sub gst_network_ensure_loopback_interfac
      my %iface = (
                   "auto" => 1,
                   "user" => 0,
@@ -1255,7 +1266,37 @@
                   "address" => "127.0.0.1",
                   "netmask" => "255.0.0.0",
                   "broadcast" => "127.255.255.255",
-@@ -4101,6 +5043,8 @@
+@@ -4021,16 +4967,27 @@ sub gst_network_ensure_loopback_staticho
+ {
+   my ($statichost, $hostname, $old_hostname, $lo_ip) = @_;
+   my $i;
++  my ($plat) = $$tool{"system"};
+ 
+   if (exists $$statichost{$lo_ip})
+   {
+     my $localhost = $$statichost{$lo_ip};
+     &gst_network_statichost_remove_alias ($localhost, $old_hostname) if ($old_hostname);
+-    &gst_network_statichost_add_alias ($localhost, $hostname);
++    if ($plat ne "SunOS")
++    {
++      &gst_network_statichost_add_alias ($localhost, $hostname);
++    }
+   }
+   else
+   {
+-    $$statichost{$lo_ip} = [ ("localhost", "localhost.localdomain", $hostname) ];
++    if ($plat eq "SunOS")
++    {
++      $$statichost{$lo_ip} = [ ("localhost", "localhost.localdomain") ];
++    }
++    else
++    {
++      $$statichost{$lo_ip} = [ ("localhost", "localhost.localdomain", $hostname) ];
++    }
+   }
+ }
+ 
+@@ -4101,6 +5058,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",
@@ -1264,7 +1305,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -4479,6 +5423,79 @@
+@@ -4479,6 +5438,79 @@ sub gst_network_get_parse_table
         [ "gatewaydev",    \&gst_network_get_gateway_dev_from_address, "%interface%", "%gateway%" ],
         ]
       },
@@ -1344,7 +1385,7 @@
     );
    
    my $dist = $dist_map{$gst_dist};
-@@ -4522,6 +5539,8 @@
+@@ -4522,6 +5554,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",
@@ -1353,7 +1394,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -5318,7 +6337,115 @@
+@@ -5318,7 +6352,115 @@ sub gst_network_get_interface_parse_tabl
         [ "persist",            \&gst_network_get_freebsd5_ppp_persist, [ STARTIF, IFACE ]],
        ]
      },
@@ -1470,7 +1511,7 @@
    
    my $dist = $dist_map{$gst_dist};
    return %{$dist_tables{$dist}} if $dist;
-@@ -5360,6 +6487,8 @@
+@@ -5360,6 +6502,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",
@@ -1479,7 +1520,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -5723,7 +6852,69 @@
+@@ -5723,7 +6867,69 @@ sub gst_network_get_replace_table
         [ "gateway",       \&gst_replace_sh,               RC_CONF, "defaultrouter" ],
         [ "interface",     \&gst_network_interfaces_set,   OLD_HASH ]
         ]
@@ -1550,7 +1591,7 @@
  	  );
    
    my $dist = $dist_map{$gst_dist};
-@@ -5766,6 +6957,8 @@
+@@ -5766,6 +6972,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",
@@ -1559,7 +1600,7 @@
            "suse-7.0"     => "suse-7.0",
            "suse-9.0"     => "suse-9.0",
            "suse-9.1"     => "suse-9.0",
-@@ -6522,7 +7715,109 @@
+@@ -6522,7 +7730,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 ]],
        ]
@@ -1670,3 +1711,4 @@
    );
    
    my $dist = $dist_map{$gst_dist};
+