Author: megabajt                     Date: Mon Oct 29 21:16:37 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- added partial support for system configuration (Ethernet connections should 
work)

---- Files affected:
SOURCES:
   NetworkManager-pld.patch (1.6 -> 1.7) 

---- Diffs:

================================================================
Index: SOURCES/NetworkManager-pld.patch
diff -u SOURCES/NetworkManager-pld.patch:1.6 
SOURCES/NetworkManager-pld.patch:1.7
--- SOURCES/NetworkManager-pld.patch:1.6        Fri May 11 15:03:11 2007
+++ SOURCES/NetworkManager-pld.patch    Mon Oct 29 22:16:32 2007
@@ -1,7 +1,7 @@
-diff -urN NetworkManager-0.6.2-o/configure.in NetworkManager-0.6.2/configure.in
---- NetworkManager-0.6.2-o/configure.in        2006-03-27 09:05:17.000000000 
-0700
-+++ NetworkManager-0.6.2/configure.in  2006-04-03 13:39:20.000000000 -0600
-@@ -60,7 +60,7 @@
+diff -urN NetworkManager-0.6.5.orig/configure.in 
NetworkManager-0.6.5/configure.in
+--- NetworkManager-0.6.5.orig/configure.in     2007-07-23 19:44:13.000000000 
+0200
++++ NetworkManager-0.6.5/configure.in  2007-07-23 20:09:37.000000000 +0200
+@@ -72,7 +72,7 @@
        exit 1
  else
        case $with_distro in
@@ -10,7 +10,7 @@
                *)
                        echo "Your distribution (${with_distro}) is not yet 
supported!  (patches welcome)"
                        exit 1
-@@ -72,6 +72,7 @@
+@@ -85,6 +85,7 @@
  AM_CONDITIONAL(TARGET_DEBIAN, test x"$with_distro" = xdebian)
  AM_CONDITIONAL(TARGET_SLACKWARE, test x"$with_distro" = xslackware)
  AM_CONDITIONAL(TARGET_ARCH, test x"$with_distro" = xarch)
@@ -18,24 +18,26 @@
  
  AC_MSG_CHECKING([for wireless-tools >= 28pre9])
  AC_TRY_COMPILE([#include <iwlib.h>],
-diff -urN NetworkManager-0.6.2-o/src/backends/Makefile.am 
NetworkManager-0.6.2/src/backends/Makefile.am
---- NetworkManager-0.6.2-o/src/backends/Makefile.am    2006-03-09 
13:52:16.000000000 -0700
-+++ NetworkManager-0.6.2/src/backends/Makefile.am      2006-04-03 
13:39:20.000000000 -0600
-@@ -38,6 +38,10 @@
- libnmbackend_la_SOURCES +=    NetworkManagerSlackware.c
+diff -urN NetworkManager-0.6.5.orig/src/backends/Makefile.am 
NetworkManager-0.6.5/src/backends/Makefile.am
+--- NetworkManager-0.6.5.orig/src/backends/Makefile.am 2007-07-23 
19:44:13.000000000 +0200
++++ NetworkManager-0.6.5/src/backends/Makefile.am      2007-07-23 
20:12:37.000000000 +0200
+@@ -42,6 +42,12 @@
+ libnmbackend_la_SOURCES +=    NetworkManagerArch.c
  endif
  
 +if TARGET_PLD
-+libnmbackend_la_SOURCES += NetworkManagerPLD.c
++libnmbackend_la_SOURCES += NetworkManagerPLD.c \
++      shvar.c \
++      shvar.h
 +endif
 +
  libnmbackend_la_LIBADD = $(DBUS_LIBS) $(GTHREAD_LIBS)
  libnmbackend_la_CPPFLAGS =    $(DBUS_CFLAGS)                          \
                                        $(GTHREAD_CFLAGS)                       
        \
-diff -urN NetworkManager-0.6.2-o/src/backends/NetworkManagerPLD.c 
NetworkManager-0.6.2/src/backends/NetworkManagerPLD.c
---- NetworkManager-0.6.2-o/src/backends/NetworkManagerPLD.c    1969-12-31 
17:00:00.000000000 -0700
-+++ NetworkManager-0.6.2/src/backends/NetworkManagerPLD.c      2006-04-03 
13:39:45.000000000 -0600
-@@ -0,0 +1,426 @@
+diff -urN NetworkManager-0.6.5.orig/src/backends/NetworkManagerPLD.c 
NetworkManager-0.6.5/src/backends/NetworkManagerPLD.c
+--- NetworkManager-0.6.5.orig/src/backends/NetworkManagerPLD.c 1970-01-01 
01:00:00.000000000 +0100
++++ NetworkManager-0.6.5/src/backends/NetworkManagerPLD.c      2007-10-29 
21:38:41.000000000 +0100
+@@ -0,0 +1,694 @@
 +/* NetworkManager -- Network link manager
 + *
 + * Narayan Newton <[EMAIL PROTECTED]>
@@ -58,6 +60,7 @@
 + * (C) Copyright 2004 Narayan Newton
 + * (C) Copyright 2005 wrobell <[EMAIL PROTECTED]>
 + * (C) Copyright 2005 Patryk Zawadzki <[EMAIL PROTECTED]>
++ * (C) Copyright 2007 Marcin Banasiak <[EMAIL PROTECTED]>
 + */
 +
 +#include <stdio.h>
@@ -69,10 +72,7 @@
 +#include "nm-device-802-3-ethernet.h"
 +#include "nm-device-802-11-wireless.h"
 +#include "nm-utils.h"
-+
-+/*
-+ *    PLD specific backend based on Slackware backend.
-+ */
++#include "shvar.h"
 +
 +/*
 + * nm_system_init
@@ -82,6 +82,7 @@
 + */
 +void nm_system_init (void)
 +{
++      /* Kill any dhclients lying around */
 +        nm_system_kill_all_dhcp_daemons();
 +}
 +
@@ -93,8 +94,6 @@
 + */
 +void nm_system_device_flush_routes (NMDevice *dev)
 +{
-+      char    buf [100];
-+
 +      g_return_if_fail (dev != NULL);
 +
 +      /* Not really applicable for test devices */
@@ -117,7 +116,7 @@
 +      g_return_if_fail (iface != NULL);
 +
 +      /* Remove routing table entries */
-+      buf = g_strdup_printf ("/sbin/ip route flush dev %s", iface);
++      buf = g_strdup_printf (IP_BINARY_PATH" route flush dev %s", iface);
 +      nm_spawn_process (buf);
 +      g_free (buf);
 +}
@@ -130,8 +129,6 @@
 + */
 +void nm_system_device_flush_addresses (NMDevice *dev)
 +{
-+      char    buf [100];
-+
 +      g_return_if_fail (dev != NULL);
 +
 +      /* Not really applicable for test devices */
@@ -153,23 +150,90 @@
 +      g_return_if_fail (iface != NULL);
 +
 +      /* Remove all IP addresses for a device */
-+      buf = g_strdup_printf ("/sbin/ip addr flush dev %s", iface);
++      buf = g_strdup_printf (IP_BINARY_PATH" addr flush dev %s", iface);
 +      nm_spawn_process (buf);
 +      g_free (buf);
 +}
 +
++typedef struct PLDSystemConfigData
++{
++      NMIP4Config     *config;
++      gboolean        use_dhcp;
++} PLDSystemConfigData;
++
 +/*
-+ * nm_system_device_setup_static_ip4_config
-+ *
-+ * Set up the device with a particular IPv4 address/netmask/gateway.
++ * set_ip4_config_from_resolv_conf
 + *
-+ * Returns:   TRUE    on success
-+ *                    FALSE on error
++ * Add nameservers and search names from a resolv.conf format file.
 + *
 + */
-+gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev)
++static void set_ip4_config_from_resolv_conf (const char *filename, 
NMIP4Config *ip4_config)
 +{
-+      syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not 
implemented yet for this distribution.\n");
++      char *contents = NULL;
++      char **split_contents = NULL;
++      int i, len;
++
++      g_return_if_fail (filename != NULL);
++      g_return_if_fail (ip4_config != NULL);
++
++      if (!g_file_get_contents (filename, &contents, NULL, NULL) || (contents 
== NULL))
++              return;
++
++      if (!(split_contents = g_strsplit (contents, "\n", 0)))
++              goto out;
++
++      len = g_strv_length (split_contents);
++      for (i = 0; i < len; i++)
++      {
++              char *line = split_contents[i];
++
++              /* Ignore comments */
++              if (!line || (line[0] == ';') || (line[0] == '#'))
++                      continue;
++
++              line = g_strstrip (line);
++              if ((strncmp (line, "search", 6) == 0) && (strlen (line) > 6))
++              {
++                      char *searches = g_strdup (line + 7);
++                      char **split_searches = NULL;
++
++                      if (!searches || !strlen (searches))
++                              continue;
++
++                      /* Allow space-separated search domains */
++                      if ((split_searches = g_strsplit (searches, " ", 0)))
++                      {
++                              int m, srch_len;
++
++                              srch_len = g_strv_length (split_searches);
++                              for (m = 0; m < srch_len; m++)
++                              {
++                                      if (split_searches[m])
++                                              nm_ip4_config_add_domain        
(ip4_config, split_searches[m]);
++                              }
++                              g_strfreev (split_searches);
++                      }
++                      else
++                      {
++                              /* Only 1 item, add the whole line */
++                              nm_ip4_config_add_domain        (ip4_config, 
searches);
++                      }
++
++                      g_free (searches);
++              }
++              else if ((strncmp (line, "nameserver", 10) == 0) && (strlen 
(line) > 10))
++              {
++                      guint32 addr = (guint32) (inet_addr (line + 11));
++
++                      if (addr != (guint32) -1)
++                              nm_ip4_config_add_nameserver (ip4_config, addr);
++              }
++      }
++
++      g_strfreev (split_contents);
++
++out:
++      g_free (contents);
 +}
 +
 +/*
@@ -180,9 +244,191 @@
 + * info before setting stuff too.
 + *
 + */
-+void *nm_system_device_get_system_config (NMDevice *dev, struct NMData *data)
++void *nm_system_device_get_system_config (NMDevice *dev, NMData *app_data)
 +{
-+      return NULL;
++      char                    *cfg_file_path = NULL;
++      shvarFile               *file, *gateway_file;
++      char                    *buf = NULL;
++      int                     i, ip[4], prefix;
++      PLDSystemConfigData     *sys_data = NULL;
++      gboolean                error = FALSE;
++
++      g_return_val_if_fail (dev != NULL, NULL);
++
++      /* PLD stores this information in
++       * /etc/sysconfig/interfaces/ifcfg-* where * is the interface
++       * name.
++       */
++
++      sys_data = g_malloc0 (sizeof (PLDSystemConfigData));
++      sys_data->use_dhcp = TRUE;
++
++      cfg_file_path = g_strdup_printf 
(SYSCONFDIR"/sysconfig/interfaces/ifcfg-%s", nm_device_get_iface (dev));
++      if (!cfg_file_path)
++              return sys_data;
++
++      if (!(file = svNewFile (cfg_file_path)))
++      {
++              g_free (cfg_file_path);
++              return sys_data;
++      }
++      g_free (cfg_file_path);
++
++      /* Make sure this config file is for this device */
++      buf = svGetValue (file, "DEVICE");
++      if (!buf || strcmp (buf, nm_device_get_iface (dev)))
++      {
++              free (buf);
++              goto out;
++      }
++
++      if ((buf = svGetValue (file, "BOOTPROTO")))
++      {
++              if (strcasecmp (buf, "dhcp"))
++                      sys_data->use_dhcp = FALSE;
++              free (buf);
++      }
++
++      sys_data->config = nm_ip4_config_new ();
++
++      if (!(sys_data->use_dhcp))
++      {
++              if ((buf = svGetValue (file, "IPADDR")))
++              {
++                      sscanf (buf, "%d.%d.%d.%d/%d", &ip[0], &ip[1], &ip[2], 
&ip[3], &prefix); 
++                      sprintf (buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], 
ip[3]);
++                      nm_ip4_config_set_address (sys_data->config, inet_addr 
(buf));
++                      
++                      if (prefix >= 0 && prefix <= 32)
++                      {
++                              for (i = 0; i <= 3; i++)
++                              {
++                                      switch (prefix)
++                                      {
++                                              case 7:
++                                                      ip[i] = 254;
++                                                      break;
++                                              case 6:
++                                                      ip[i] = 252;
++                                                      break;
++                                              case 5:
++                                                      ip[i] = 248;
++                                                      break;
++                                              case 4:
++                                                      ip[i] = 240;
++                                                      break;
++                                              case 3:
++                                                      ip[i] = 224;
++                                                      break;
++                                              case 2:
++                                                      ip[i] = 192;
++                                                      break;
++                                              case 1:
++                                                      ip[i] = 128;
++                                                      break;
++                                              default:
++                                                      if (prefix >= 8)
++                                                      {
++                                                              ip[i] = 255;
++                                                      }
++                                                      else
++                                                      {
++                                                              ip[i] = 0;
++                                                      }
++                                      }
++                                      prefix = prefix - 8;
++                              }
++                              sprintf (buf, "%d.%d.%d.%d", ip[0], ip[1], 
ip[2], ip[3]);
++                              nm_ip4_config_set_netmask (sys_data->config, 
inet_addr (buf));
++                              free (buf);
++                      }
++                      else
++                      {
++                              nm_warning ("Prefix for device '%s' was invalid 
(should be between 0 and 32). " 
++                                              "Try to make default. ", 
nm_device_get_iface (dev));
++
++                              guint32 addr = nm_ip4_config_get_address 
(sys_data->config);
++
++                              if (((ntohl (addr) & 0xFF000000) >> 24) <= 127)
++                                      nm_ip4_config_set_netmask 
(sys_data->config, htonl (0xFF000000));
++                              else if (((ntohl (addr) & 0xFF000000) >> 24) <= 
191)
++                                      nm_ip4_config_set_netmask 
(sys_data->config, htonl (0xFFFF0000));
++                              else
++                                      nm_ip4_config_set_netmask 
(sys_data->config, htonl (0xFFFFFF00));
++                      }
++              }
++              else
++              {
++                      nm_warning ("Network configuration for device '%s' was 
invalid (non-DHCP configuration, "
++                                              "but no IP address specified.  
Will use DHCP instead.", nm_device_get_iface (dev));
++                      error = TRUE;
++                      goto out;
++              }
++
++              if (gateway_file = svNewFile (SYSCONFDIR"/sysconfig/network"))
++              {
++                      buf = svGetValue (gateway_file, "GATEWAYDEV");
++                      
++                      /* Make sure that GATEWAY is set for this device */
++                      if (!buf || strcmp (buf, nm_device_get_iface (dev)))
++                      {
++                              nm_warning ("Network configuration for device 
'%s' was invalid (non-DHCP configuration, "
++                                          "but no gateway specified - 
GATEWAYDEV set for other device or unset). Will "
++                                          "use DHCP instead.", 
nm_device_get_iface (dev));
++                              
++                              free (buf);
++                              svCloseFile (gateway_file);
++                              error = TRUE;
++                              goto out;
++                      }
++                      
++                      if ((buf = svGetValue (gateway_file, "GATEWAY")))
++                      {                       
++                              nm_ip4_config_set_gateway (sys_data->config, 
inet_addr (buf));
++                              free (buf);
++                              svCloseFile (gateway_file);
++                      }
++                      else
++                      {
++                              nm_warning ("Network configuration for device 
'%s' was invalid (non-DHCP configuration, "
++                                              "but no gateway specified.  
Will use DHCP instead.", nm_device_get_iface (dev));
++                              svCloseFile (gateway_file);
++                              error = TRUE;
++                              goto out;
++                      }
++              }
++
++              if ((buf = svGetValue (file, "BROADCAST")))
++              {
++                      nm_ip4_config_set_broadcast (sys_data->config, 
inet_addr (buf));
++                      free (buf);
++              }
++              else
++              {
++                      guint32 broadcast = ((nm_ip4_config_get_address 
(sys_data->config) & nm_ip4_config_get_netmask (sys_data->config))
++                                                                      | 
~nm_ip4_config_get_netmask (sys_data->config));
++                      nm_ip4_config_set_broadcast (sys_data->config, 
broadcast);
++              }
++      }
++
++      /* If we're using Static IP, grab DNS servers from the config file */
++      if (!sys_data->use_dhcp)
++      {
++              set_ip4_config_from_resolv_conf (SYSCONFDIR"/resolv.conf", 
sys_data->config);
++      }
++
++out:
++      svCloseFile (file);
++      
++      if (error)
++      {
++              sys_data->use_dhcp = TRUE;
++              /* Clear out the config */
++              nm_ip4_config_unref (sys_data->config);
++              sys_data->config = NULL;
++      }
++
++      return (void *)sys_data;
 +}
 +
 +/*
@@ -205,8 +451,8 @@
 + */
 +void nm_system_enable_loopback (void)
 +{
-+      nm_spawn_process ("/sbin/ip link set dev lo up");
-+      nm_spawn_process ("/sbin/ip addr add 127.0.0.1/8 brd 127.255.255.255 
dev lo label loopback");
++      nm_system_device_set_up_down_with_iface ("lo", TRUE);
++      nm_spawn_process (IP_BINARY_PATH" addr add 127.0.0.1/8 brd 
127.255.255.255 dev lo scope host label loopback");
 +}
 +
 +/*
@@ -217,7 +463,7 @@
 + */
 +void nm_system_delete_default_route (void)
 +{
-+      nm_spawn_process ("/sbin/ip route del default");
++      nm_spawn_process (IP_BINARY_PATH" route del default");
 +}
 +
 +/*
@@ -228,7 +474,7 @@
 + */
 +void nm_system_kill_all_dhcp_daemons (void)
 +{
-+      nm_spawn_process ("/bin/killall -q dhcpcd");
++      nm_spawn_process ("/bin/killall -q dhclient");
 +}
 +
 +/*
@@ -275,7 +521,7 @@
 +      eui[0] ^= 2;
 +
 +      /* Add the default link-local IPv6 address to a device */
-+      buf = g_strdup_printf ("/sbin/ip -6 addr add 
fe80::%x%02x:%x%02x:%x%02x:%x%02x/64 dev %s",
++      buf = g_strdup_printf (IP_BINARY_PATH" -6 addr add 
fe80::%x%02x:%x%02x:%x%02x:%x%02x/64 dev %s",
 +                                      eui[0], eui[1], eui[2], eui[3], eui[4], 
eui[5],
 +                                      eui[6], eui[7], nm_device_get_iface 
(dev));
 +      nm_spawn_process (buf);
@@ -295,7 +541,7 @@
 +      g_return_if_fail (iface != NULL);
 +
 +      /* Add default gateway */
-+      buf = g_strdup_printf ("/sbin/ip route add %s dev %s", route, iface);
++      buf = g_strdup_printf (IP_BINARY_PATH" route add %s dev %s", route, 
iface);
 +      nm_spawn_process (buf);
 +      g_free (buf);
 +}
@@ -330,7 +576,7 @@
 +      g_return_if_fail (iface != NULL);
 +
 +      /* Add default gateway */
-+      buf = g_strdup_printf ("/sbin/ip route add default dev %s", iface);
++      buf = g_strdup_printf (IP_BINARY_PATH" route add default dev %s", 
iface);
 +      nm_spawn_process (buf);
 +      g_free (buf);
 +}
@@ -345,7 +591,7 @@
 +void nm_system_flush_loopback_routes (void)
 +{
 +      /* Remove routing table entries for lo */
-+      nm_spawn_process ("/sbin/ip route flush dev lo");
++      nm_spawn_process (IP_BINARY_PATH" route flush dev lo");
 +}
 +
 +/*
@@ -356,7 +602,7 @@
 + */
 +void nm_system_flush_arp_cache (void)
 +{
-+      nm_spawn_process ("/sbin/ip neigh flush all");
++      nm_spawn_process (IP_BINARY_PATH" neigh flush all");
 +}
 +
 +void nm_system_deactivate_all_dialup (GSList *list)
@@ -387,16 +633,40 @@
 +
 +void nm_system_device_free_system_config (NMDevice *dev, void 
*system_config_data)
 +{
++      PLDSystemConfigData *sys_data = (PLDSystemConfigData 
*)system_config_data;
++      
++      g_return_if_fail (dev != NULL);
++          
++      if (!sys_data)
++              return;
++      
++      if (sys_data->config)
++              nm_ip4_config_unref (sys_data->config);
 +}
 +
 +NMIP4Config *nm_system_device_new_ip4_system_config (NMDevice *dev)
 +{
-+              return NULL;
++      PLDSystemConfigData     *sys_data;
++      NMIP4Config             *new_config = NULL;
++          
++      g_return_val_if_fail (dev != NULL, NULL);
++              
++      if ((sys_data = nm_device_get_system_config_data (dev)))
++              new_config = nm_ip4_config_copy (sys_data->config);
++                          
++      return new_config;
 +}
 +
 +gboolean nm_system_device_get_use_dhcp (NMDevice *dev)
 +{
-+              return TRUE;
++      PLDSystemConfigData     *sys_data;
++      
++      g_return_val_if_fail (dev != NULL, TRUE);
++      
++      if ((sys_data = nm_device_get_system_config_data (dev)))
++              return sys_data->use_dhcp;
++                  
++      return TRUE;
 +}
 +
 +/*
@@ -462,3 +732,15 @@
 +{
 +      return 0;
 +}
+diff -urN NetworkManager-0.6.5.orig/src/backends/NetworkManagerRedHat.c 
NetworkManager-0.6.5/src/backends/NetworkManagerRedHat.c
+--- NetworkManager-0.6.5.orig/src/backends/NetworkManagerRedHat.c      
2007-07-23 19:44:13.000000000 +0200
++++ NetworkManager-0.6.5/src/backends/NetworkManagerRedHat.c   2007-10-29 
21:43:12.000000000 +0100
+@@ -927,7 +927,7 @@
+  */
+ gboolean nm_system_should_modify_resolv_conf (void)
+ {
+-      return TRUE;
++      return FALSE;
+ }
+ 
+ 
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/NetworkManager-pld.patch?r1=1.6&r2=1.7&f=u

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to