diff options
Diffstat (limited to 'pkgs/tools/networking/network-manager')
8 files changed, 146 insertions, 6 deletions
diff --git a/pkgs/tools/networking/network-manager/0.9.8.nix b/pkgs/tools/networking/network-manager/0.9.8.nix new file mode 100644 index 000000000000..fe19550bc67f --- /dev/null +++ b/pkgs/tools/networking/network-manager/0.9.8.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchurl, intltool, pkgconfig, dbus_glib +, udev, libnl, libuuid, gnutls, dhcp +, libgcrypt, perl }: + +stdenv.mkDerivation rec { + name = "network-manager-${version}"; + version = "0.9.8.10"; + + src = fetchurl { + url = "mirror://gnome/sources/NetworkManager/0.9/NetworkManager-${version}.tar.xz"; + sha256 = "0wn9qh8r56r8l19dqr68pdl1rv3zg1dv47rfy6fqa91q7li2fk86"; + }; + + preConfigure = '' + substituteInPlace tools/glib-mkenums --replace /usr/bin/perl ${perl}/bin/perl + ''; + + # Right now we hardcode quite a few paths at build time. Probably we should + # patch networkmanager to allow passing these path in config file. This will + # remove unneeded build-time dependencies. + configureFlags = [ + "--with-distro=exherbo" + "--with-dhclient=${dhcp}/sbin/dhclient" + "--with-dhcpcd=no" + "--with-iptables=no" + "--with-udev-dir=\${out}/lib/udev" + "--with-resolvconf=no" + "--sysconfdir=/etc" "--localstatedir=/var" + "--with-dbus-sys-dir=\${out}/etc/dbus-1/system.d" + "--with-crypto=gnutls" "--disable-more-warnings" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-kernel-firmware-dir=/run/current-system/firmware" + "--disable-ppp" + ]; + + buildInputs = [ udev libnl libuuid gnutls libgcrypt ]; + + propagatedBuildInputs = [ dbus_glib ]; + + nativeBuildInputs = [ intltool pkgconfig ]; + + patches = + [ ./libnl-3.2.25.patch + ./nixos-purity.patch + ]; + + preInstall = + '' + installFlagsArray=( "sysconfdir=$out/etc" "localstatedir=$out/var" ) + ''; + + meta = with stdenv.lib; { + homepage = http://projects.gnome.org/NetworkManager/; + description = "Network configuration and management tool"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/tools/networking/network-manager/default.nix b/pkgs/tools/networking/network-manager/default.nix index 30aff794baa0..82067561654d 100644 --- a/pkgs/tools/networking/network-manager/default.nix +++ b/pkgs/tools/networking/network-manager/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { name = "network-manager-${version}"; - version = "1.0.2"; + version = "1.0.6"; src = fetchurl { url = "mirror://gnome/sources/NetworkManager/1.0/NetworkManager-${version}.tar.xz"; - sha256 = "1zq8jm1rc7n7amqa9xz1v93w2jnczg6942gyijsdpgllfiq8b4rm"; + sha256 = "38ea002403e3b884ffa9aae25aea431d2a8420f81f4919761c83fb92648254bd"; }; preConfigure = '' @@ -51,6 +51,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ intltool pkgconfig ]; + patches = [ ./nm-platform.patch ]; + preInstall = '' installFlagsArray=( "sysconfdir=$out/etc" "localstatedir=$out/var" ) diff --git a/pkgs/tools/networking/network-manager/libnl-3.2.25.patch b/pkgs/tools/networking/network-manager/libnl-3.2.25.patch new file mode 100644 index 000000000000..17c2966b7064 --- /dev/null +++ b/pkgs/tools/networking/network-manager/libnl-3.2.25.patch @@ -0,0 +1,61 @@ +diff --git a/src/nm-netlink-monitor.c b/src/nm-netlink-monitor.c +index ba8053e..5ac39d3 100644 +--- a/src/nm-netlink-monitor.c ++++ b/src/nm-netlink-monitor.c +@@ -177,40 +177,15 @@ link_msg_handler (struct nl_object *obj, void *arg) + static int + event_msg_recv (struct nl_msg *msg, void *arg) + { +- struct nl_sock *nlh = arg; +- struct nlmsghdr *hdr = nlmsg_hdr (msg); + struct ucred *creds = nlmsg_get_creds (msg); +- const struct sockaddr_nl *snl; +- guint32 local_port; +- gboolean accept_msg = FALSE; +- +- /* Only messages sent from the kernel */ +- if (!creds || creds->uid != 0) { +- nm_log_dbg (LOGD_HW, "ignoring netlink message from UID %d", +- creds ? creds->uid : -1); +- return NL_SKIP; +- } +- +- snl = nlmsg_get_src (msg); +- g_assert (snl); +- +- /* Accept any messages from the kernel */ +- if (hdr->nlmsg_pid == 0 || snl->nl_pid == 0) +- accept_msg = TRUE; + +- /* And any multicast message directed to our netlink PID, since multicast +- * currently requires CAP_ADMIN to use. +- */ +- local_port = nl_socket_get_local_port (nlh); +- if ((hdr->nlmsg_pid == local_port) && snl->nl_groups) +- accept_msg = TRUE; +- +- if (accept_msg == FALSE) { +- nm_log_dbg (LOGD_HW, "ignoring netlink message from PID %d (local PID %d, multicast %d)", +- hdr->nlmsg_pid, +- local_port, +- (hdr->nlmsg_flags & NLM_F_MULTI)); +- return NL_SKIP; ++ if (!creds || creds->pid || creds->uid || creds->gid) { ++ if (creds) ++ nm_log_dbg (LOGD_HW, "netlink: received non-kernel message (pid %d uid %d gid %d)", ++ creds->pid, creds->uid, creds->gid); ++ else ++ nm_log_dbg (LOGD_HW, "netlink: received message without credentials"); ++ return NL_STOP; + } + + return NL_OK; +@@ -285,7 +260,7 @@ nlh_setup (struct nl_sock *nlh, + { + int err; + +- nl_socket_modify_cb (nlh, NL_CB_MSG_IN, NL_CB_CUSTOM, event_msg_recv, cb_data); ++ nl_socket_modify_cb (nlh, NL_CB_MSG_IN, NL_CB_CUSTOM, event_msg_recv, NULL); + + if (valid_func) + nl_socket_modify_cb (nlh, NL_CB_VALID, NL_CB_CUSTOM, valid_func, cb_data); diff --git a/pkgs/tools/networking/network-manager/nm-platform.patch b/pkgs/tools/networking/network-manager/nm-platform.patch new file mode 100644 index 000000000000..880d1a2e4921 --- /dev/null +++ b/pkgs/tools/networking/network-manager/nm-platform.patch @@ -0,0 +1,17 @@ +diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c +index 8803377..14e5726 100644 +--- a/src/platform/nm-platform.c ++++ b/src/platform/nm-platform.c +@@ -39,6 +39,12 @@ + #include "nm-enum-types.h" + #include "nm-core-internal.h" + ++#if HAVE_LIBNL_INET6_ADDR_GEN_MODE && HAVE_KERNEL_INET6_ADDR_GEN_MODE ++#include <linux/if_link.h> ++#else ++#define IN6_ADDR_GEN_MODE_NONE 1 ++#endif ++ + #define ADDRESS_LIFETIME_PADDING 5 + + G_STATIC_ASSERT (sizeof ( ((NMPlatformLink *) NULL)->addr.data ) == NM_UTILS_HWADDR_LEN_MAX); diff --git a/pkgs/tools/networking/network-manager/openconnect.nix b/pkgs/tools/networking/network-manager/openconnect.nix index 9416923c9e1e..0009aaf6b440 100644 --- a/pkgs/tools/networking/network-manager/openconnect.nix +++ b/pkgs/tools/networking/network-manager/openconnect.nix @@ -4,7 +4,9 @@ stdenv.mkDerivation rec { name = "${pname}${if withGnome then "-gnome" else ""}-${version}"; pname = "NetworkManager-openconnect"; - version = networkmanager.version; + version = "1.0.2"; + +# FixMe: Change version back to "networkmanager.version" src = fetchurl { url = "mirror://gnome/sources/${pname}/1.0/${pname}-${version}.tar.xz"; diff --git a/pkgs/tools/networking/network-manager/openvpn.nix b/pkgs/tools/networking/network-manager/openvpn.nix index d4e1b50489c8..be0264571953 100644 --- a/pkgs/tools/networking/network-manager/openvpn.nix +++ b/pkgs/tools/networking/network-manager/openvpn.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/${pname}/1.0/${pname}-${version}.tar.xz"; - sha256 = "1c2b74xhkjifc3g6n53gr2aj4s98qf0vydmqvbhl5azxqx5q4hqn"; + sha256 = "132xwkgyfnpma7m6b06jhrd1g9xk5dlpx8alnsf03ls3z92bd0n9"; }; buildInputs = [ openvpn networkmanager libsecret ] diff --git a/pkgs/tools/networking/network-manager/pptp.nix b/pkgs/tools/networking/network-manager/pptp.nix index 1dfce02981a3..1b1cf69119e4 100644 --- a/pkgs/tools/networking/network-manager/pptp.nix +++ b/pkgs/tools/networking/network-manager/pptp.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/${pname}/1.0/${pname}-${version}.tar.xz"; - sha256 = "05r06f7f990z908jjnmmryrlshy28wcx7fbvnslmx9nicih7rjrp"; + sha256 = "1gn1f8r32wznk4rsn2lg2slw1ccli00svz0fi4bx0qiylimlbyln"; }; buildInputs = [ networkmanager pptp ppp libsecret ] diff --git a/pkgs/tools/networking/network-manager/vpnc.nix b/pkgs/tools/networking/network-manager/vpnc.nix index 1435e5ebf7c3..5f3ab00ebc43 100644 --- a/pkgs/tools/networking/network-manager/vpnc.nix +++ b/pkgs/tools/networking/network-manager/vpnc.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/${pname}/1.0/${pname}-${version}.tar.xz"; - sha256 = "0055vshgnva969vb91k8zpdan34r9gy0ck3q3b9b616k0p2vy5ry"; + sha256 = "0hycplnc78688sgpzdh3ifra6chascrh751mckqkp1j553bri0jk"; }; buildInputs = [ vpnc networkmanager libsecret ] |