From c5796d524e5cf4be0ed4f2b92876d124f10f0c63 Mon Sep 17 00:00:00 2001 From: Mu Qiao Date: Tue, 25 Jan 2011 02:46:46 +0000 Subject: Fix parsing dhclient.conf wrt bug #352638 (Portage version: 2.1.9.25/cvs/Linux x86_64) --- net-misc/networkmanager/ChangeLog | 9 +- .../networkmanager-0.8.2-shared-connection.patch | 70 +++++----- .../networkmanager/networkmanager-0.8.2-r3.ebuild | 152 -------------------- .../networkmanager/networkmanager-0.8.2-r4.ebuild | 153 +++++++++++++++++++++ 4 files changed, 198 insertions(+), 186 deletions(-) delete mode 100644 net-misc/networkmanager/networkmanager-0.8.2-r3.ebuild create mode 100644 net-misc/networkmanager/networkmanager-0.8.2-r4.ebuild (limited to 'net-misc/networkmanager') diff --git a/net-misc/networkmanager/ChangeLog b/net-misc/networkmanager/ChangeLog index 5b8aba707266..1c3b07937167 100644 --- a/net-misc/networkmanager/ChangeLog +++ b/net-misc/networkmanager/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-misc/networkmanager # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.93 2011/01/24 07:31:48 qiaomuf Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.94 2011/01/25 02:46:46 qiaomuf Exp $ + +*networkmanager-0.8.2-r4 (25 Jan 2011) + + 25 Jan 2011; Mu Qiao -networkmanager-0.8.2-r3.ebuild, + +networkmanager-0.8.2-r4.ebuild, + files/networkmanager-0.8.2-shared-connection.patch: + Fix parsing dhclient.conf wrt bug #352638 *networkmanager-0.8.2-r3 (24 Jan 2011) diff --git a/net-misc/networkmanager/files/networkmanager-0.8.2-shared-connection.patch b/net-misc/networkmanager/files/networkmanager-0.8.2-shared-connection.patch index 8ffdf17915b8..3ce883aa7c1c 100644 --- a/net-misc/networkmanager/files/networkmanager-0.8.2-shared-connection.patch +++ b/net-misc/networkmanager/files/networkmanager-0.8.2-shared-connection.patch @@ -1,24 +1,20 @@ -From 5a67c7a5ad341fa84091287eb6452458c7ee24b0 Mon Sep 17 00:00:00 2001 +From d252fad6aa69aefa17b592111c2db23864f63907 Mon Sep 17 00:00:00 2001 From: Mu Qiao -Date: Wed, 5 Jan 2011 13:30:08 +0800 -Subject: [PATCH] Support shared and link-local method for ipv4 - Signed-off-by: Mu Qiao - fix flush_to_file, return TRUE when nothing changed - ssid do not lose quotes anymore - do not delete old connection when ssid is not changed +Date: Tue, 25 Jan 2011 10:31:53 +0000 +Subject: [PATCH] shared-connection Signed-off-by: Mu Qiao --- - system-settings/plugins/ifnet/connection_parser.c | 92 ++++++++++++++------ + system-settings/plugins/ifnet/connection_parser.c | 90 ++++++++++++++------ system-settings/plugins/ifnet/net_parser.c | 55 +++++++----- system-settings/plugins/ifnet/net_parser.h | 4 +- - system-settings/plugins/ifnet/net_utils.c | 4 + + system-settings/plugins/ifnet/net_utils.c | 6 +- .../plugins/ifnet/nm-ifnet-connection.c | 8 +- system-settings/plugins/ifnet/wpa_parser.c | 21 +++-- - 6 files changed, 123 insertions(+), 61 deletions(-) + 6 files changed, 122 insertions(+), 62 deletions(-) diff --git a/system-settings/plugins/ifnet/connection_parser.c b/system-settings/plugins/ifnet/connection_parser.c -index f9fae51..539f33c 100644 +index f9fae51..9b5ddc1 100644 --- a/system-settings/plugins/ifnet/connection_parser.c +++ b/system-settings/plugins/ifnet/connection_parser.c @@ -557,7 +557,7 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) @@ -30,7 +26,7 @@ index f9fae51..539f33c 100644 gboolean is_static_block = is_static_ip4 (conn_name); ip_block *iblock = NULL; -@@ -569,12 +569,42 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) +@@ -569,13 +569,41 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) && strstr (value, "nogateway") ? TRUE : FALSE, NULL); if (!is_static_block) { @@ -40,6 +36,7 @@ index f9fae51..539f33c 100644 - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); - PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Using DHCP for %s", - conn_name); +- } else { + method = ifnet_get_data (conn_name, "config"); + if (!method){ + g_set_error (error, ifnet_plugin_error_quark (), 0, @@ -59,16 +56,14 @@ index f9fae51..539f33c 100644 + NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); + nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); + return; -+ } -+ else if (!strcmp (method, "shared")){ ++ } else if (!strcmp (method, "shared")){ + g_object_set (ip4_setting, + NM_SETTING_IP4_CONFIG_METHOD, + NM_SETTING_IP4_CONFIG_METHOD_SHARED, + NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); + nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); + return; -+ } -+ else { ++ } else { + g_set_error (error, ifnet_plugin_error_quark (), 0, + "Unknown config for %s", conn_name); + g_object_unref (ip4_setting); @@ -76,10 +71,11 @@ index f9fae51..539f33c 100644 + } + PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Using %s method for %s", + method, conn_name); - } else { ++ }else { iblock = convert_ip4_config_block (conn_name); if (!iblock) { -@@ -625,7 +655,7 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) + g_set_error (error, ifnet_plugin_error_quark (), 0, +@@ -625,7 +653,7 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) } /* add dhcp hostname and client id */ @@ -88,7 +84,7 @@ index f9fae51..539f33c 100644 gchar *dhcp_hostname, *client_id; get_dhcp_hostname_and_client_id (&dhcp_hostname, &client_id); -@@ -712,7 +742,6 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) +@@ -712,7 +740,6 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) iblock = iblock->next; destroy_ip_block (current_iblock); } @@ -96,7 +92,7 @@ index f9fae51..539f33c 100644 /* Finally add setting to connection */ nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); } -@@ -1243,10 +1272,10 @@ parse_wpa_psk (gchar * psk, GError ** error) +@@ -1243,10 +1270,10 @@ parse_wpa_psk (gchar * psk, GError ** error) * the passphrase contains spaces. */ @@ -110,7 +106,7 @@ index f9fae51..539f33c 100644 /* Verify the hex PSK; 64 digits */ if (!is_hex (p)) { g_set_error (error, ifnet_plugin_error_quark (), -@@ -1254,7 +1283,7 @@ parse_wpa_psk (gchar * psk, GError ** error) +@@ -1254,7 +1281,7 @@ parse_wpa_psk (gchar * psk, GError ** error) "Invalid WPA_PSK (contains non-hexadecimal characters)"); goto out; } @@ -119,7 +115,7 @@ index f9fae51..539f33c 100644 } else { strip_string (p, '"'); -@@ -1276,6 +1305,7 @@ parse_wpa_psk (gchar * psk, GError ** error) +@@ -1276,6 +1303,7 @@ parse_wpa_psk (gchar * psk, GError ** error) } out: @@ -127,7 +123,7 @@ index f9fae51..539f33c 100644 return hashed; } -@@ -2085,7 +2115,8 @@ write_wireless_security_setting (NMConnection * connection, +@@ -2085,7 +2113,8 @@ write_wireless_security_setting (NMConnection * connection, } else if (!strcmp (key_mgmt, "wpa-eap")) { wpa_set_data (conn_name, "key_mgmt", "WPA-EAP"); wpa = TRUE; @@ -137,7 +133,7 @@ index f9fae51..539f33c 100644 if (auth_alg) { if (!strcmp (auth_alg, "shared")) -@@ -2180,8 +2211,11 @@ write_wireless_security_setting (NMConnection * connection, +@@ -2180,8 +2209,11 @@ write_wireless_security_setting (NMConnection * connection, g_string_append (quoted, psk); g_string_append_c (quoted, '"'); } @@ -151,7 +147,7 @@ index f9fae51..539f33c 100644 if (quoted) g_string_free (quoted, TRUE); } else -@@ -2190,15 +2224,19 @@ write_wireless_security_setting (NMConnection * connection, +@@ -2190,15 +2222,19 @@ write_wireless_security_setting (NMConnection * connection, return TRUE; } @@ -175,22 +171,20 @@ index f9fae51..539f33c 100644 wpa_add_security (ssid); } -@@ -2443,8 +2481,12 @@ write_ip4_setting (NMConnection * connection, gchar * conn_name, +@@ -2443,7 +2479,11 @@ write_ip4_setting (NMConnection * connection, gchar * conn_name, } ifnet_set_data (conn_name, "config", ips->str); g_string_free (ips, TRUE); - } else -- ifnet_set_data (conn_name, "config", "dhcp"); + } else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) + ifnet_set_data (conn_name, "config", "shared"); + else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL)) + ifnet_set_data (conn_name, "config", "autoip"); + else -+ ifnet_set_data (conn_name, "config", "dhcp"); + ifnet_set_data (conn_name, "config", "dhcp"); /* DNS Servers */ - ifnet_set_data (conn_name, "dns_servers", NULL); -@@ -2858,7 +2900,7 @@ get_wired_name () +@@ -2858,7 +2898,7 @@ get_wired_name () for (; i < 256; i++) { gchar *conn_name = g_strdup_printf ("eth%d", i); @@ -199,7 +193,7 @@ index f9fae51..539f33c 100644 return conn_name; } else g_free (conn_name); -@@ -2875,7 +2917,7 @@ get_ppp_name () +@@ -2875,7 +2915,7 @@ get_ppp_name () for (; i < 256; i++) { gchar *conn_name = g_strdup_printf ("ppp%d", i); @@ -208,7 +202,7 @@ index f9fae51..539f33c 100644 return conn_name; } else g_free (conn_name); -@@ -2982,7 +3024,7 @@ ifnet_add_new_connection (NMConnection * connection, +@@ -2982,7 +3022,7 @@ ifnet_add_new_connection (NMConnection * connection, goto out; } @@ -354,7 +348,7 @@ index 73a44c8..b71a01f 100644 gboolean ifnet_delete_network (gchar * conn_name); #endif diff --git a/system-settings/plugins/ifnet/net_utils.c b/system-settings/plugins/ifnet/net_utils.c -index 2dc253c..7e52f10 100644 +index 2dc253c..83b4325 100644 --- a/system-settings/plugins/ifnet/net_utils.c +++ b/system-settings/plugins/ifnet/net_utils.c @@ -278,6 +278,10 @@ is_static_ip4 (gchar * conn_name) @@ -368,6 +362,16 @@ index 2dc253c..7e52f10 100644 dhcp6 = strstr (data, "dhcp6"); if (dhcp6) { gchar *dhcp4; +@@ -942,8 +946,8 @@ get_dhcp_hostname_and_client_id (char **hostname, char **client_id) + else if ((tmp = strstr (line, "send host-name")) != NULL) { + tmp += strlen ("send host-name"); + g_strstrip (tmp); +- strip_string (tmp, '"'); + strip_string (tmp, ';'); ++ strip_string (tmp, '"'); + if (tmp[0] != '\0') + *hostname = g_strdup (tmp); + else diff --git a/system-settings/plugins/ifnet/nm-ifnet-connection.c b/system-settings/plugins/ifnet/nm-ifnet-connection.c index e47495c..ebe2581 100644 --- a/system-settings/plugins/ifnet/nm-ifnet-connection.c diff --git a/net-misc/networkmanager/networkmanager-0.8.2-r3.ebuild b/net-misc/networkmanager/networkmanager-0.8.2-r3.ebuild deleted file mode 100644 index a36ccfb1af60..000000000000 --- a/net-misc/networkmanager/networkmanager-0.8.2-r3.ebuild +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8.2-r3.ebuild,v 1.1 2011/01/24 07:31:48 qiaomuf Exp $ - -EAPI="2" - -inherit gnome.org linux-info - -# NetworkManager likes itself with capital letters -MY_PN=${PN/networkmanager/NetworkManager} -MY_P=${MY_PN}-${PV} - -DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent." -HOMEPAGE="http://www.gnome.org/projects/NetworkManager/" -SRC_URI="${SRC_URI//${PN}/${MY_PN}}" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86" -IUSE="avahi bluetooth doc nss gnutls dhclient dhcpcd kernel_linux resolvconf connection-sharing" - -RDEPEND=">=sys-apps/dbus-1.2 - >=dev-libs/dbus-glib-0.75 - >=net-wireless/wireless-tools-28_pre9 - >=sys-fs/udev-145[extras] - >=dev-libs/glib-2.18 - >=sys-auth/polkit-0.92 - >=dev-libs/libnl-1.1 - >=net-misc/modemmanager-0.4 - >=net-wireless/wpa_supplicant-0.5.10[dbus] - bluetooth? ( net-wireless/bluez ) - || ( sys-libs/e2fsprogs-libs =dev-libs/nss-3.11 ) - !nss? ( dev-libs/libgcrypt - net-libs/gnutls ) ) - !gnutls? ( >=dev-libs/nss-3.11 ) - dhclient? ( - dhcpcd? ( >=net-misc/dhcpcd-4.0.0_rc3 ) - !dhcpcd? ( net-misc/dhcp ) ) - !dhclient? ( >=net-misc/dhcpcd-4.0.0_rc3 ) - resolvconf? ( net-dns/openresolv ) - connection-sharing? ( - net-dns/dnsmasq - net-firewall/iptables )" - -DEPEND="${RDEPEND} - dev-util/pkgconfig - dev-util/intltool - >=net-dialup/ppp-2.4.5 - doc? ( >=dev-util/gtk-doc-1.8 )" - -S=${WORKDIR}/${MY_P} - -sysfs_deprecated_check() { - ebegin "Checking for SYSFS_DEPRECATED support" - - if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then - eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile your kernel" - eerror "or NetworkManager will not work correctly." - eerror "See http://bugs.gentoo.org/333639 for more info." - die "CONFIG_SYSFS_DEPRECATED_V2 support detected!" - fi - eend $? -} - -pkg_setup() { - - if use kernel_linux; then - get_version - if linux_config_exists; then - sysfs_deprecated_check - else - ewarn "Was unable to determine your kernel .config" - ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, NetworkManager will not work correctly." - ewarn "See http://bugs.gentoo.org/333639 for more info." - fi - - fi -} - -src_prepare() { - # dbus policy patch - epatch "${FILESDIR}/${P}-confchanges.patch" - # accept "gw" in /etc/conf.d/net (bug #339215) - epatch "${FILESDIR}/${P}-accept-gw.patch" - # fix shared connection wrt bug #350476 - epatch "${FILESDIR}/${P}-shared-connection.patch" - # Backports #1 - epatch "${FILESDIR}/${P}-1.patch" -} - -src_configure() { - ECONF="--disable-more-warnings - --localstatedir=/var - --with-distro=gentoo - --with-dbus-sys-dir=/etc/dbus-1/system.d - --with-udev-dir=/etc/udev - --with-iptables=/sbin/iptables - $(use_enable doc gtk-doc) - $(use_with doc docs) - $(use_with resolvconf)" - - # default is dhcpcd (if none or both are specified), ISC dchclient otherwise - if use dhclient ; then - if use dhcpcd ; then - ECONF="${ECONF} --with-dhcpcd --without-dhclient" - else - ECONF="${ECONF} --with-dhclient --without-dhcpcd" - fi - else - ECONF="${ECONF} --with-dhcpcd --without-dhclient" - fi - - # default is NSS (if none or both are specified), GnuTLS otherwise - if use gnutls ; then - if use nss ; then - ECONF="${ECONF} --with-crypto=nss" - else - ECONF="${ECONF} --with-crypto=gnutls" - fi - else - ECONF="${ECONF} --with-crypto=nss" - fi - - econf ${ECONF} -} - -src_install() { - emake DESTDIR="${D}" install || die "emake install failed" - - # Need to keep the /var/run/NetworkManager directory - keepdir /var/run/NetworkManager - - # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts - keepdir /etc/NetworkManager/dispatcher.d - - dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed" - - # Add keyfile plugin support - keepdir /etc/NetworkManager/system-connections - insinto /etc/NetworkManager - newins "${FILESDIR}/nm-system-settings.conf-ifnet" nm-system-settings.conf \ - || die "newins failed" -} - -pkg_postinst() { - elog "You will need to reload DBus if this is your first time installing" - elog "NetworkManager, or if you're upgrading from 0.7 or older." - elog "" -} diff --git a/net-misc/networkmanager/networkmanager-0.8.2-r4.ebuild b/net-misc/networkmanager/networkmanager-0.8.2-r4.ebuild new file mode 100644 index 000000000000..746a6fea973a --- /dev/null +++ b/net-misc/networkmanager/networkmanager-0.8.2-r4.ebuild @@ -0,0 +1,153 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8.2-r4.ebuild,v 1.1 2011/01/25 02:46:46 qiaomuf Exp $ + +EAPI="2" + +inherit gnome.org linux-info + +# NetworkManager likes itself with capital letters +MY_PN=${PN/networkmanager/NetworkManager} +MY_P=${MY_PN}-${PV} + +DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent." +HOMEPAGE="http://www.gnome.org/projects/NetworkManager/" +SRC_URI="${SRC_URI//${PN}/${MY_PN}}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86" +IUSE="avahi bluetooth doc nss gnutls dhclient dhcpcd kernel_linux resolvconf connection-sharing" + +RDEPEND=">=sys-apps/dbus-1.2 + >=dev-libs/dbus-glib-0.75 + >=net-wireless/wireless-tools-28_pre9 + >=sys-fs/udev-145[extras] + >=dev-libs/glib-2.18 + >=sys-auth/polkit-0.92 + >=dev-libs/libnl-1.1 + >=net-misc/modemmanager-0.4 + >=net-wireless/wpa_supplicant-0.5.10[dbus] + bluetooth? ( net-wireless/bluez ) + || ( sys-libs/e2fsprogs-libs =dev-libs/nss-3.11 ) + !nss? ( dev-libs/libgcrypt + net-libs/gnutls ) ) + !gnutls? ( >=dev-libs/nss-3.11 ) + dhclient? ( + dhcpcd? ( >=net-misc/dhcpcd-4.0.0_rc3 ) + !dhcpcd? ( net-misc/dhcp ) ) + !dhclient? ( >=net-misc/dhcpcd-4.0.0_rc3 ) + resolvconf? ( net-dns/openresolv ) + connection-sharing? ( + net-dns/dnsmasq + net-firewall/iptables )" + +DEPEND="${RDEPEND} + dev-util/pkgconfig + dev-util/intltool + >=net-dialup/ppp-2.4.5 + doc? ( >=dev-util/gtk-doc-1.8 )" + +S=${WORKDIR}/${MY_P} + +sysfs_deprecated_check() { + ebegin "Checking for SYSFS_DEPRECATED support" + + if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then + eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile your kernel" + eerror "or NetworkManager will not work correctly." + eerror "See http://bugs.gentoo.org/333639 for more info." + die "CONFIG_SYSFS_DEPRECATED_V2 support detected!" + fi + eend $? +} + +pkg_setup() { + + if use kernel_linux; then + get_version + if linux_config_exists; then + sysfs_deprecated_check + else + ewarn "Was unable to determine your kernel .config" + ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, NetworkManager will not work correctly." + ewarn "See http://bugs.gentoo.org/333639 for more info." + fi + + fi +} + +src_prepare() { + # dbus policy patch + epatch "${FILESDIR}/${P}-confchanges.patch" + # accept "gw" in /etc/conf.d/net (bug #339215) + epatch "${FILESDIR}/${P}-accept-gw.patch" + # fix shared connection wrt bug #350476 + # fix parsing dhclient.conf wrt bug #352638 + epatch "${FILESDIR}/${P}-shared-connection.patch" + # Backports #1 + epatch "${FILESDIR}/${P}-1.patch" +} + +src_configure() { + ECONF="--disable-more-warnings + --localstatedir=/var + --with-distro=gentoo + --with-dbus-sys-dir=/etc/dbus-1/system.d + --with-udev-dir=/etc/udev + --with-iptables=/sbin/iptables + $(use_enable doc gtk-doc) + $(use_with doc docs) + $(use_with resolvconf)" + + # default is dhcpcd (if none or both are specified), ISC dchclient otherwise + if use dhclient ; then + if use dhcpcd ; then + ECONF="${ECONF} --with-dhcpcd --without-dhclient" + else + ECONF="${ECONF} --with-dhclient --without-dhcpcd" + fi + else + ECONF="${ECONF} --with-dhcpcd --without-dhclient" + fi + + # default is NSS (if none or both are specified), GnuTLS otherwise + if use gnutls ; then + if use nss ; then + ECONF="${ECONF} --with-crypto=nss" + else + ECONF="${ECONF} --with-crypto=gnutls" + fi + else + ECONF="${ECONF} --with-crypto=nss" + fi + + econf ${ECONF} +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + # Need to keep the /var/run/NetworkManager directory + keepdir /var/run/NetworkManager + + # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts + keepdir /etc/NetworkManager/dispatcher.d + + dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed" + + # Add keyfile plugin support + keepdir /etc/NetworkManager/system-connections + insinto /etc/NetworkManager + newins "${FILESDIR}/nm-system-settings.conf-ifnet" nm-system-settings.conf \ + || die "newins failed" +} + +pkg_postinst() { + elog "You will need to reload DBus if this is your first time installing" + elog "NetworkManager, or if you're upgrading from 0.7 or older." + elog "" +} -- cgit v1.2.3-65-gdbad