Re: Make NM respect manual setting in ifupdown

2010-04-06 Thread Dan Williams
On Sun, 2010-04-04 at 17:36 +0200, Okkel wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Hello everybody,
 
 Since I'm on Debian, I'm using /etc/network/interfaces to bring up my
 wireless network connection. According to the wpa-supplicant docs at
 /usr/share/doc/wpasupplicant/README.modes.gz one of the ways to do so is
 by using wpa-supplicant scripts. Here's the corresponding part of my
 /etc/network/interfaces:

Hmm, though this is usually done by setting:

managed=false

in /etc/NetworkManager/nm-system-settings.conf
or /etc/NetworkManager/NetworkManager.conf instead, which causes NM to
ignore devices that are listed in your /e/n/i file.

I suppose this enhancement would allow 'managed=true' and let the user
make individual devices unmanaged, which is nice.

The patch isn't quite what we'd need though, since what you really want
to do is to make the device 'unmanaged' if it's marked as 'manual'
in /e/n/i.  Unfortunately the ifupdown plugin isn't well set up to
unmanage individual interfaces right now...  any chance you'd be willing
to work on a patch for that?

asac/tony, any comments here?

Dan

 auto wlan0
 iface wlan0 inet manual
 wpa-driver wext
 wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
 
 The ifupdown plugin ignores the 'manual' setting and tries to read the
 wireless config since it sees wpa-* lines. This results in an error and
 causes NM to take control over the interface.
 The attached patch fixes this behaviour by giving interfaces configured
 as 'manual' the NM_SETTING_MANUAL_SETTING_NAME type.
 
 Thanks in advance,
 Okkel Klaver
 i...@vanhetland.nl
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.10 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
 iEYEARECAAYFAku4sgYACgkQQxTA2p4ePKfS1QCghaDQMzycIN8FlnO+s7i4+qbW
 7xQAn3ClUTOc4YD822npR4lidhu6CPaI
 =vCDR
 -END PGP SIGNATURE-
 differences between files attachment (nm-manual.patch)
 diff -ur network-manager-orig-0.8//system-settings/plugins/ifupdown/parser.c 
 network-manager-0.8//system-settings/plugins/ifupdown/parser.c
 --- network-manager-orig-0.8//system-settings/plugins/ifupdown/parser.c   
 2010-04-03 21:14:49.0 +0200
 +++ network-manager-0.8//system-settings/plugins/ifupdown/parser.c
 2010-04-04 13:18:16.0 +0200
 @@ -55,6 +55,12 @@
   ret_type = NM_SETTING_PPP_SETTING_NAME;
   }
  
 +// Added by Okkel Klaver i...@vanhetland.nl
 +// Make ifupdown plugin respect manual setting
 +if(value  !strcmp(manual, value)) {
 +ret_type = NM_SETTING_MANUAL_SETTING_NAME;
 +}
 +
   while(!ret_type  curr) {
   if(!strncmp(wireless-, curr-key, strlen(wireless-)) ||
  !strncmp(wpa-, curr-key, strlen(wpa-))) {
 @@ -561,16 +567,21 @@
   PLUGIN_PRINT(SCPlugin-Ifupdown, 
 update_connection_setting_from_if_block: name:%s, type:%s, id:%s, uuid: %s,
  block-name, type, idstr, 
 nm_setting_connection_get_uuid (s_con));
  
 +// Modified by Okkel Klaver i...@vanhetland.nl
 +// Make ifupdown plugin respect manual setting
   if (!strcmp (NM_SETTING_WIRED_SETTING_NAME, type))
   update_wired_setting_from_if_block (connection, block); 
   else if (!strcmp (NM_SETTING_WIRELESS_SETTING_NAME, type)) {
   update_wireless_setting_from_if_block (connection, block);
   update_wireless_security_setting_from_if_block (connection, 
 block);
   }
 +else if(!strcmp(NM_SETTING_MANUAL_SETTING_NAME, type))
 +success = TRUE;
  
   update_ip4_setting_from_if_block (connection, block);
  
 - success = nm_connection_verify (connection, error);
 + if(!success)
 +success = nm_connection_verify (connection, error);
  
   g_free (idstr);
   return success;
 diff -ur network-manager-orig-0.8//system-settings/plugins/ifupdown/plugin.h 
 network-manager-0.8//system-settings/plugins/ifupdown/plugin.h
 --- network-manager-orig-0.8//system-settings/plugins/ifupdown/plugin.h   
 2010-04-03 21:14:49.0 +0200
 +++ network-manager-0.8//system-settings/plugins/ifupdown/plugin.h
 2010-04-04 13:18:16.0 +0200
 @@ -35,6 +35,10 @@
  #define SC_IS_PLUGIN_IFUPDOWN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), 
 SC_TYPE_PLUGIN_IFUPDOWN))
  #define SC_PLUGIN_IFUPDOWN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS 
 ((obj), SC_TYPE_PLUGIN_IFUPDOWN, SCPluginIfupdownClass))
  
 +// Added by Okkel Klaver i...@vanhetland.nl
 +// Make ifupdown plugin respect manual setting
 +#define NM_SETTING_MANUAL_SETTING_NAME  manual
 +
  typedef struct _SCPluginIfupdown SCPluginIfupdown;
  typedef struct _SCPluginIfupdownClass SCPluginIfupdownClass;
  
 ___
 NetworkManager-list mailing list
 NetworkManager-list@gnome.org
 http://mail.gnome.org/mailman/listinfo/networkmanager-list


___

Make NM respect manual setting in ifupdown

2010-04-04 Thread Okkel
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hello everybody,

Since I'm on Debian, I'm using /etc/network/interfaces to bring up my
wireless network connection. According to the wpa-supplicant docs at
/usr/share/doc/wpasupplicant/README.modes.gz one of the ways to do so is
by using wpa-supplicant scripts. Here's the corresponding part of my
/etc/network/interfaces:

auto wlan0
iface wlan0 inet manual
wpa-driver wext
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

The ifupdown plugin ignores the 'manual' setting and tries to read the
wireless config since it sees wpa-* lines. This results in an error and
causes NM to take control over the interface.
The attached patch fixes this behaviour by giving interfaces configured
as 'manual' the NM_SETTING_MANUAL_SETTING_NAME type.

Thanks in advance,
Okkel Klaver
i...@vanhetland.nl
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAku4sgYACgkQQxTA2p4ePKfS1QCghaDQMzycIN8FlnO+s7i4+qbW
7xQAn3ClUTOc4YD822npR4lidhu6CPaI
=vCDR
-END PGP SIGNATURE-
diff -ur network-manager-orig-0.8//system-settings/plugins/ifupdown/parser.c network-manager-0.8//system-settings/plugins/ifupdown/parser.c
--- network-manager-orig-0.8//system-settings/plugins/ifupdown/parser.c	2010-04-03 21:14:49.0 +0200
+++ network-manager-0.8//system-settings/plugins/ifupdown/parser.c	2010-04-04 13:18:16.0 +0200
@@ -55,6 +55,12 @@
 		ret_type = NM_SETTING_PPP_SETTING_NAME;
 	}
 
+// Added by Okkel Klaver i...@vanhetland.nl
+// Make ifupdown plugin respect manual setting
+if(value  !strcmp(manual, value)) {
+ret_type = NM_SETTING_MANUAL_SETTING_NAME;
+}
+
 	while(!ret_type  curr) {
 		if(!strncmp(wireless-, curr-key, strlen(wireless-)) ||
 		   !strncmp(wpa-, curr-key, strlen(wpa-))) {
@@ -561,16 +567,21 @@
 	PLUGIN_PRINT(SCPlugin-Ifupdown, update_connection_setting_from_if_block: name:%s, type:%s, id:%s, uuid: %s,
 			   block-name, type, idstr, nm_setting_connection_get_uuid (s_con));
 
+// Modified by Okkel Klaver i...@vanhetland.nl
+// Make ifupdown plugin respect manual setting
 	if (!strcmp (NM_SETTING_WIRED_SETTING_NAME, type))
 		update_wired_setting_from_if_block (connection, block);	
 	else if (!strcmp (NM_SETTING_WIRELESS_SETTING_NAME, type)) {
 		update_wireless_setting_from_if_block (connection, block);
 		update_wireless_security_setting_from_if_block (connection, block);
 	}
+else if(!strcmp(NM_SETTING_MANUAL_SETTING_NAME, type))
+success = TRUE;
 
 	update_ip4_setting_from_if_block (connection, block);
 
-	success = nm_connection_verify (connection, error);
+	if(!success)
+success = nm_connection_verify (connection, error);
 
 	g_free (idstr);
 	return success;
diff -ur network-manager-orig-0.8//system-settings/plugins/ifupdown/plugin.h network-manager-0.8//system-settings/plugins/ifupdown/plugin.h
--- network-manager-orig-0.8//system-settings/plugins/ifupdown/plugin.h	2010-04-03 21:14:49.0 +0200
+++ network-manager-0.8//system-settings/plugins/ifupdown/plugin.h	2010-04-04 13:18:16.0 +0200
@@ -35,6 +35,10 @@
 #define SC_IS_PLUGIN_IFUPDOWN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SC_TYPE_PLUGIN_IFUPDOWN))
 #define SC_PLUGIN_IFUPDOWN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SC_TYPE_PLUGIN_IFUPDOWN, SCPluginIfupdownClass))
 
+// Added by Okkel Klaver i...@vanhetland.nl
+// Make ifupdown plugin respect manual setting
+#define NM_SETTING_MANUAL_SETTING_NAME  manual
+
 typedef struct _SCPluginIfupdown SCPluginIfupdown;
 typedef struct _SCPluginIfupdownClass SCPluginIfupdownClass;
 


nm-manual.patch.sig
Description: PGP signature
___
NetworkManager-list mailing list
NetworkManager-list@gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list