Am 11.03.2011 13:24, schrieb Philipp Kern: > Hi, > > are all those patches already applied in unstable? I do assume this now > and the ACKs are dependent on that. > FWIW, the attached patch is the one I intended to upload given the feedback so far.
Cheers, Michael -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?
diff --git a/debian/changelog b/debian/changelog index 46daaec..3d344b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +network-manager (0.8.1-6+squeeze1) stable; urgency=low + + * debian/patches/82-core-handle-device-removal.patch + - Cherry-pick patch from upstream to correctly handle device removal when + properties are unreadable. (Closes: #605570) + * debian/patches/83-dnsmasq-send-no-config-file-instead-of-a-bogus-one.patch + - Newer versions of dnsmasq validate the option parameters more strictly. + Instead of passing a bogus file name simply use --conf-file without + additional parameters. (Closes: #615082) + * debian/ifblacklist_migrate.sh + - Only comment out iface lines if we have an exact match for the network + interface. (Closes: #612247) + * debian/patches/51-normalized-keys.patch + - Normalize keys in ifupdown parser, so we accept options with either + hyphens or underscores, like e.g. bridge_ports and bridge-ports. + (Closes: #609831) + + -- Michael Biebl <bi...@debian.org> Fri, 11 Mar 2011 14:49:51 +0100 + network-manager (0.8.1-6) unstable; urgency=low * debian/patches/40-umanaged-interfaces.patch diff --git a/debian/ifblacklist_migrate.sh b/debian/ifblacklist_migrate.sh index 1d41266..c30971c 100644 --- a/debian/ifblacklist_migrate.sh +++ b/debian/ifblacklist_migrate.sh @@ -41,7 +41,7 @@ for i in $auto_ifs; do if test x$nulled_line != x; then line_count=$(expr $line_count + 1) fi - done + done if test $line_count -eq 0 -a $word_count -gt 0; then ifaces_to_disable="$ifaces_to_disable $i" @@ -59,7 +59,7 @@ if [ -n "$ifaces_to_disable" ]; then cp $NIF_FILE "$NIF_FILE.bak-${backup_suffix}" for i in $ifaces_to_disable; do echo -n "Disabling interface: $i ... " - sed -i -e "s/^\([ \t]*iface.*$i.*\)$/#NetworkManager#\1/" $NIF_FILE + sed -i -e "s/^\([ \t]*iface.*[ \t]$i[ \t].*\)$/#NetworkManager#\1/" $NIF_FILE echo done. done fi diff --git a/debian/patches/50-bridge-interfaces.patch b/debian/patches/50-bridge-interfaces.patch index f58ba5d..de243fb 100644 --- a/debian/patches/50-bridge-interfaces.patch +++ b/debian/patches/50-bridge-interfaces.patch @@ -1,8 +1,8 @@ Index: network-manager/system-settings/plugins/ifupdown/plugin.c =================================================================== ---- network-manager.orig/system-settings/plugins/ifupdown/plugin.c 2010-12-04 16:41:38.000000000 +0100 -+++ network-manager/system-settings/plugins/ifupdown/plugin.c 2010-12-04 16:51:51.810906877 +0100 -@@ -360,9 +360,49 @@ +--- network-manager.orig/system-settings/plugins/ifupdown/plugin.c 2011-03-11 14:47:00.272832466 +0100 ++++ network-manager/system-settings/plugins/ifupdown/plugin.c 2011-03-11 14:47:01.272832466 +0100 +@@ -360,9 +360,51 @@ while (block) { if(!strcmp ("auto", block->type) || !strcmp ("allow-hotplug", block->type)) g_hash_table_insert (auto_ifaces, block->name, GUINT_TO_POINTER (1)); @@ -15,11 +15,13 @@ Index: network-manager/system-settings/plugins/ifupdown/plugin.c + /* Try to find bridge ports */ + const char *ports = ifparser_getkey (block, "bridge_ports"); + if (ports) { -+ PLUGIN_PRINT("SCPlugin-Ifupdown", "found bridge ports %s for %s", ports, block->name); -+ char **port_ifaces = g_strsplit_set (ports, " \t", -1); -+ + int i; + int state = 0; ++ char **port_ifaces; ++ ++ PLUGIN_PRINT("SCPlugin-Ifupdown", "found bridge ports %s for %s", ports, block->name); ++ ++ port_ifaces = g_strsplit_set (ports, " \t", -1); + for (i = 0; i < g_strv_length (port_ifaces); i++) { + char *token = port_ifaces[i]; + /* Skip crazy stuff like regex or all */ @@ -53,7 +55,7 @@ Index: network-manager/system-settings/plugins/ifupdown/plugin.c /* Remove any connection for this block that was previously found */ exported = g_hash_table_lookup (priv->iface_connections, block->name); if (exported) { -@@ -385,6 +425,7 @@ +@@ -385,6 +427,7 @@ g_hash_table_insert (priv->well_known_interfaces, block->name, "known"); PLUGIN_PRINT("SCPlugin-Ifupdown", "adding mapping %s to well_known_interfaces", block->name); } diff --git a/debian/patches/51-normalized-keys.patch b/debian/patches/51-normalized-keys.patch new file mode 100644 index 0000000..750eb13 --- /dev/null +++ b/debian/patches/51-normalized-keys.patch @@ -0,0 +1,37 @@ +Index: network-manager/system-settings/plugins/ifupdown/interface_parser.c +=================================================================== +--- network-manager.orig/system-settings/plugins/ifupdown/interface_parser.c 2011-03-11 14:38:52.996832466 +0100 ++++ network-manager/system-settings/plugins/ifupdown/interface_parser.c 2011-03-11 14:47:12.580832465 +0100 +@@ -51,6 +51,7 @@ + void add_data(const char *key,const char *data) + { + if_data *ret; ++ char *idx; + + // Check if there is a block where we can attach our data + if (first == NULL) +@@ -58,6 +59,11 @@ + + ret = (if_data*) calloc(1,sizeof(struct _if_data)); + ret->key = g_strdup(key); ++ // Normalize keys. Convert '_' to '-', as ifupdown accepts both variants. ++ // When querying keys via ifparser_getkey(), use '-'. ++ while ((idx = strrchr(ret->key, '_'))) { ++ *idx = '-'; ++ } + ret->data = g_strdup(data); + + if (last->info == NULL) +Index: network-manager/system-settings/plugins/ifupdown/plugin.c +=================================================================== +--- network-manager.orig/system-settings/plugins/ifupdown/plugin.c 2011-03-11 14:47:01.272832466 +0100 ++++ network-manager/system-settings/plugins/ifupdown/plugin.c 2011-03-11 14:47:12.580832465 +0100 +@@ -366,7 +366,7 @@ + /* Bridge configuration */ + if(!strncmp ("br", block->name, 2)) { + /* Try to find bridge ports */ +- const char *ports = ifparser_getkey (block, "bridge_ports"); ++ const char *ports = ifparser_getkey (block, "bridge-ports"); + if (ports) { + int i; + int state = 0; diff --git a/debian/patches/82-core-handle-device-removal.patch b/debian/patches/82-core-handle-device-removal.patch new file mode 100644 index 0000000..0e9ae6d --- /dev/null +++ b/debian/patches/82-core-handle-device-removal.patch @@ -0,0 +1,34 @@ +From aff8f48190458c7dc894ad0ec07c935dc530abab Mon Sep 17 00:00:00 2001 +From: Dan Williams <d...@redhat.com> +Date: Tue, 23 Nov 2010 13:10:01 -0600 +Subject: [PATCH] core: handle device removal when properties are unreadable + +By the time we get the udev device removal notification we may not +be able to read properties, since the device has already been +removed from sysfs. That means we can't get the ifindex, so we need +to fall back to the interface name. But we always want to prefer +the ifindex since that will never change as long as the device is +connected, unlike the interface name. +--- + src/nm-manager.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +Index: network-manager/src/nm-manager.c +=================================================================== +--- network-manager.orig/src/nm-manager.c 2011-03-11 14:38:52.924832466 +0100 ++++ network-manager/src/nm-manager.c 2011-03-11 14:49:20.272832466 +0100 +@@ -1842,6 +1842,14 @@ + + ifindex = g_udev_device_get_property_as_int (udev_device, "IFINDEX"); + device = find_device_by_ifindex (self, ifindex); ++ if (!device) { ++ /* On removal we won't always be able to read properties anymore, as ++ * they may have already been removed from sysfs. Instead, we just ++ * have to fall back to the device's interface name. ++ */ ++ device = find_device_by_iface (self, g_udev_device_get_name (udev_device)); ++ } ++ + if (device) + priv->devices = remove_one_device (self, priv->devices, device, FALSE, TRUE); + } diff --git a/debian/patches/83-dnsmasq-send-no-config-file-instead-of-a-bogus-one.patch b/debian/patches/83-dnsmasq-send-no-config-file-instead-of-a-bogus-one.patch new file mode 100644 index 0000000..01a2e65 --- /dev/null +++ b/debian/patches/83-dnsmasq-send-no-config-file-instead-of-a-bogus-one.patch @@ -0,0 +1,41 @@ +From 6bf63e913c8246345167f937963c2c14da59ee23 Mon Sep 17 00:00:00 2001 +From: Dan Williams <d...@redhat.com> +Date: Fri, 4 Mar 2011 23:52:44 -0600 +Subject: [PATCH] dnsmasq: send no config file instead of a bogus one (lp:725041) (debian #615082) + +--- + src/dnsmasq-manager/nm-dnsmasq-manager.c | 12 ++---------- + 1 files changed, 2 insertions(+), 10 deletions(-) + +Index: network-manager/src/dnsmasq-manager/nm-dnsmasq-manager.c +=================================================================== +--- network-manager.orig/src/dnsmasq-manager/nm-dnsmasq-manager.c 2011-03-11 14:38:52.884832466 +0100 ++++ network-manager/src/dnsmasq-manager/nm-dnsmasq-manager.c 2011-03-11 14:49:25.000832466 +0100 +@@ -253,7 +253,6 @@ + struct in_addr addr; + char buf[INET_ADDRSTRLEN + 15]; + char localaddr[INET_ADDRSTRLEN + 1]; +- int i; + + dm_binary = nm_find_dnsmasq (); + if (!dm_binary) { +@@ -277,17 +276,10 @@ + /* dnsmasq may read from it's default config file location, which if that + * location is a valid config file, it will combine with the options here + * and cause undesirable side-effects. Like sending bogus IP addresses +- * as the gateway or whatever. So give dnsmasq a bogus config file +- * location to avoid screwing up the configuration we're passing to it. ++ * as the gateway or whatever. So tell dnsmasq not to use any config file ++ * at all. + */ +- memset (buf, 0, sizeof (buf)); +- strcpy (buf, "/tmp/"); +- for (i = 5; i < 15; i++) +- buf[i] = (char) (g_random_int_range ((guint32) 'a', (guint32) 'z') & 0xFF); +- strcat (buf, ".conf"); +- + nm_cmd_line_add_string (cmd, "--conf-file"); +- nm_cmd_line_add_string (cmd, buf); + + nm_cmd_line_add_string (cmd, "--no-hosts"); + nm_cmd_line_add_string (cmd, "--keep-in-foreground"); diff --git a/debian/patches/series b/debian/patches/series index 012269a..610d86d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,6 @@ 30-typo_fix.patch 40-umanaged-interfaces.patch 50-bridge-interfaces.patch +51-normalized-keys.patch +82-core-handle-device-removal.patch +83-dnsmasq-send-no-config-file-instead-of-a-bogus-one.patch
signature.asc
Description: OpenPGP digital signature