summary refs log tree commit diff
path: root/pkgs/os-specific/linux/iproute
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2017-09-23 17:55:33 +0200
committerRobin Gloster <mail@glob.in>2017-09-23 17:55:33 +0200
commit08b09fdc5cff4249c9986f2403d2e4cea6e62feb (patch)
treec9031e38dc5ee93d877bf539be9352eda59a61d0 /pkgs/os-specific/linux/iproute
parent694e7e08d65d6d66b5e50a02c7a329ecec598f3c (diff)
downloadnixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar.gz
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar.bz2
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar.lz
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar.xz
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.tar.zst
nixlib-08b09fdc5cff4249c9986f2403d2e4cea6e62feb.zip
fanctl, fan module: remove
This has been broken nearly all the time due to the patches needed to
iproute2 not being compatible with the newer versions we have been
shipping. As long as Ubuntu does not manage to upstream these changes
so they are maintained with iproute2 and we don't have a maintainer
updating these patches to new iproute2 versions it is not feasible to
have this available.
Diffstat (limited to 'pkgs/os-specific/linux/iproute')
-rw-r--r--pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch65
-rw-r--r--pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch133
-rw-r--r--pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch177
-rw-r--r--pkgs/os-specific/linux/iproute/default.nix12
4 files changed, 1 insertions, 386 deletions
diff --git a/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch b/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch
deleted file mode 100644
index 733a5122d136..000000000000
--- a/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-Description: POC fan driver support
- POC Fan driver support
-Author: Jay Vosburgh <jay.vosburgh@canonical.com>
-
-Index: iproute2-4.1.1/include/linux/if_tunnel.h
-===================================================================
---- iproute2-4.1.1.orig/include/linux/if_tunnel.h
-+++ iproute2-4.1.1/include/linux/if_tunnel.h
-@@ -75,6 +75,9 @@ enum {
- 	IFLA_IPTUN_ENCAP_SPORT,
- 	IFLA_IPTUN_ENCAP_DPORT,
-	IFLA_IPTUN_COLLECT_METADATA,
-+
-+	IFLA_IPTUN_FAN_UNDERLAY = 32,
-+
- 	__IFLA_IPTUN_MAX,
- };
- #define IFLA_IPTUN_MAX	(__IFLA_IPTUN_MAX - 1)
-Index: iproute2-4.1.1/ip/link_iptnl.c
-===================================================================
---- iproute2-4.1.1.orig/ip/link_iptnl.c
-+++ iproute2-4.1.1/ip/link_iptnl.c
-@@ -66,6 +66,7 @@ static int iptunnel_parse_opt(struct lin
- 	__u32 link = 0;
- 	__u32 laddr = 0;
- 	__u32 raddr = 0;
-+	__u32 underlay = 0;
- 	__u8 ttl = 0;
- 	__u8 tos = 0;
- 	__u8 pmtudisc = 1;
-@@ -174,6 +175,9 @@ get_failed:
- 				raddr = get_addr32(*argv);
- 			else
- 				raddr = 0;
-+		} else if (strcmp(*argv, "underlay") == 0) {
-+			NEXT_ARG();
-+			underlay = get_addr32(*argv);
- 		} else if (strcmp(*argv, "local") == 0) {
- 			NEXT_ARG();
- 			if (strcmp(*argv, "any"))
-@@ -318,6 +322,9 @@ get_failed:
- 		}
- 	}
- 
-+	if (underlay)
-+		addattr32(n, 1024, IFLA_IPTUN_FAN_UNDERLAY, underlay);
-+
- 	return 0;
- }
- 
-@@ -349,6 +356,14 @@ static void iptunnel_print_opt(struct li
- 
- 	fprintf(f, "local %s ", local);
- 
-+	if (tb[IFLA_IPTUN_FAN_UNDERLAY]) {
-+		unsigned addr = rta_getattr_u32(tb[IFLA_IPTUN_FAN_UNDERLAY]);
-+
-+		if (addr)
-+			fprintf(f, "underlay %s ",
-+				format_host_r(AF_INET, 4, &addr, s1, sizeof(s1)));
-+	}
-+
- 	if (tb[IFLA_IPTUN_LINK] && rta_getattr_u32(tb[IFLA_IPTUN_LINK])) {
- 		unsigned link = rta_getattr_u32(tb[IFLA_IPTUN_LINK]);
- 		const char *n = if_indextoname(link, s2);
diff --git a/pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch b/pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch
deleted file mode 100644
index 634daa0de29f..000000000000
--- a/pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-Description: Fan driver support v3
- Fan driver support v3
-Author: Jay Vosburgh <jay.vosburgh@canonical.com>
-Index: iproute2-4.1.1/include/linux/if_tunnel.h
-===================================================================
---- iproute2-4.1.1.orig/include/linux/if_tunnel.h
-+++ iproute2-4.1.1/include/linux/if_tunnel.h
-@@ -59,6 +59,7 @@ enum {
- 	IFLA_IPTUN_ENCAP_DPORT,
- 
- 	IFLA_IPTUN_FAN_UNDERLAY = 32,
-+	IFLA_IPTUN_FAN_MAP = 33,
- 
- 	__IFLA_IPTUN_MAX,
- };
-@@ -134,4 +135,20 @@ enum {
- };
- 
- #define IFLA_VTI_MAX	(__IFLA_VTI_MAX - 1)
-+
-+enum {
-+	IFLA_FAN_UNSPEC,
-+	IFLA_FAN_MAPPING,
-+	__IFLA_FAN_MAX,
-+};
-+
-+#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1)
-+
-+struct ip_tunnel_fan_map {
-+	__be32		underlay;
-+	__be32		overlay;
-+	__u16		underlay_prefix;
-+	__u16		overlay_prefix;
-+};
-+
- #endif /* _IF_TUNNEL_H_ */
-Index: iproute2-4.1.1/ip/link_iptnl.c
-===================================================================
---- iproute2-4.1.1.orig/ip/link_iptnl.c
-+++ iproute2-4.1.1/ip/link_iptnl.c
-@@ -49,6 +49,42 @@ static void usage(int sit)
- 	print_usage(stderr, sit);
- 	exit(-1);
- }
-+static int fan_parse_map(int *argcp, char ***argvp, struct nlmsghdr *n)
-+{
-+	inet_prefix underlay, overlay;
-+	struct ip_tunnel_fan_map map;
-+	struct rtattr *nest;
-+	char **argv = *argvp;
-+	int argc = *argcp;
-+
-+	nest = addattr_nest(n, 1024, IFLA_IPTUN_FAN_MAP);
-+	while (argc > 0) {
-+		char *colon = strchr(*argv, ':');
-+
-+		if (!colon)
-+			break;
-+		*colon = '\0';
-+
-+		if (get_prefix(&overlay, *argv, AF_INET))
-+			invarg("invalid fan-map overlay", *argv);
-+		if (get_prefix(&underlay, colon + 1, AF_INET))
-+			invarg("invalid fan-map underlay", colon + 1);
-+		
-+		memcpy(&map.underlay, underlay.data, 4);
-+		map.underlay_prefix = underlay.bitlen;
-+		memcpy(&map.overlay, overlay.data, 4);
-+		map.overlay_prefix = overlay.bitlen;
-+
-+		argc--, argv++;
-+
-+		addattr_l(n, 1024, IFLA_FAN_MAPPING, &map, sizeof(map));
-+	}
-+	addattr_nest_end(n, nest);
-+
-+	*argcp = argc;
-+	*argvp = argv;
-+	return 0;
-+}
- 
- static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv,
- 			      struct nlmsghdr *n)
-@@ -178,6 +214,10 @@ get_failed:
- 		} else if (strcmp(*argv, "underlay") == 0) {
- 			NEXT_ARG();
- 			underlay = get_addr32(*argv);
-+		} else if (strcmp(*argv, "fan-map") == 0) {
-+			NEXT_ARG();
-+			if (fan_parse_map(&argc, &argv, n))
-+				invarg("invalid fan-map", *argv);
- 		} else if (strcmp(*argv, "local") == 0) {
- 			NEXT_ARG();
- 			if (strcmp(*argv, "any"))
-@@ -328,6 +368,28 @@ get_failed:
- 	return 0;
- }
- 
-+static void fan_print_map(FILE *f, struct rtattr *attr)
-+{
-+	char b1[INET_ADDRSTRLEN], b2[INET_ADDRSTRLEN];
-+	struct ip_tunnel_fan_map *m;
-+	struct rtattr *i;
-+	int rem;
-+	int p;
-+
-+	fprintf(f, "fan-map ");
-+
-+	rem = RTA_PAYLOAD(attr);
-+	for (i = RTA_DATA(attr); RTA_OK(i, rem); i = RTA_NEXT(i, rem)) {
-+		p = RTA_PAYLOAD(i);
-+		m = RTA_DATA(i);
-+		fprintf(f, "%s/%d:%s/%d ",
-+			rt_addr_n2a_r(AF_INET, p, &m->overlay, b1, INET_ADDRSTRLEN),
-+			m->overlay_prefix,
-+			rt_addr_n2a_r(AF_INET, p, &m->underlay, b2, INET_ADDRSTRLEN),
-+			m->underlay_prefix);
-+	}
-+}
-+
- static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
- {
- 	char s1[1024];
-@@ -364,6 +426,9 @@ static void iptunnel_print_opt(struct li
- 				format_host(AF_INET, 4, &addr, s1, sizeof(s1)));
- 	}
- 
-+	if (tb[IFLA_IPTUN_FAN_MAP])
-+		fan_print_map(f, tb[IFLA_IPTUN_FAN_MAP]);
-+
- 	if (tb[IFLA_IPTUN_LINK] && rta_getattr_u32(tb[IFLA_IPTUN_LINK])) {
- 		unsigned link = rta_getattr_u32(tb[IFLA_IPTUN_LINK]);
- 		const char *n = if_indextoname(link, s2);
diff --git a/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch b/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch
deleted file mode 100644
index 070023d0b923..000000000000
--- a/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-Description: Fan driver support VXLAN (p4)
- Fan driver setup support for vxlan interfaces.
-
-Index: iproute2-4.3.0/include/linux/if_link.h
-===================================================================
---- iproute2-4.3.0.orig/include/linux/if_link.h
-+++ iproute2-4.3.0/include/linux/if_link.h
-@@ -392,6 +392,7 @@ enum {
- 	IFLA_VXLAN_COLLECT_METADATA,
- 	IFLA_VXLAN_LABEL,
- 	IFLA_VXLAN_GPE,
-+	IFLA_VXLAN_FAN_MAP = 33,
- 	__IFLA_VXLAN_MAX
- };
- #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
-Index: iproute2-4.3.0/include/linux/if_tunnel.h
-===================================================================
---- iproute2-4.3.0.orig/include/linux/if_tunnel.h
-+++ iproute2-4.3.0/include/linux/if_tunnel.h
-@@ -145,7 +145,7 @@ enum {
- 
- #define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1)
- 
--struct ip_tunnel_fan_map {
-+struct ifla_fan_map {
- 	__be32		underlay;
- 	__be32		overlay;
- 	__u16		underlay_prefix;
-Index: iproute2-4.3.0/ip/iplink_vxlan.c
-===================================================================
---- iproute2-4.3.0.orig/ip/iplink_vxlan.c
-+++ iproute2-4.3.0/ip/iplink_vxlan.c
-@@ -15,7 +15,10 @@
- #include <net/if.h>
- #include <linux/ip.h>
- #include <linux/if_link.h>
-+#include <linux/types.h>
- #include <arpa/inet.h>
-+#include <linux/in6.h>
-+#include <linux/if_tunnel.h>
- 
- #include "rt_names.h"
- #include "utils.h"
-@@ -43,6 +46,45 @@ static void explain(void)
- 	print_explain(stderr);
- }
- 
-+static int fan_parse_map(int *argcp, char ***argvp, struct nlmsghdr *n)
-+{
-+	inet_prefix underlay, overlay;
-+	struct ifla_fan_map map;
-+	struct rtattr *nest;
-+	char **argv = *argvp;
-+	int argc = *argcp;
-+
-+	nest = addattr_nest(n, 1024, IFLA_VXLAN_FAN_MAP);
-+	while (argc > 0) {
-+		char *colon = strchr(*argv, ':');
-+
-+		if (!colon) {
-+			PREV_ARG();
-+			break;
-+		}
-+		*colon = '\0';
-+
-+		if (get_prefix(&overlay, *argv, AF_INET))
-+			invarg("invalid fan-map overlay", *argv);
-+		if (get_prefix(&underlay, colon + 1, AF_INET))
-+			invarg("invalid fan-map underlay", colon + 1);
-+
-+		memcpy(&map.underlay, underlay.data, 4);
-+		map.underlay_prefix = underlay.bitlen;
-+		memcpy(&map.overlay, overlay.data, 4);
-+		map.overlay_prefix = overlay.bitlen;
-+
-+		argc--, argv++;
-+
-+		addattr_l(n, 1024, IFLA_FAN_MAPPING, &map, sizeof(map));
-+	}
-+	addattr_nest_end(n, nest);
-+
-+	*argcp = argc;
-+	*argvp = argv;
-+	return 0;
-+}
-+
- static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv,
- 			  struct nlmsghdr *n)
- {
-@@ -201,6 +243,10 @@ static int vxlan_parse_opt(struct link_u
- 			gbp = 1;
- 		} else if (!matches(*argv, "gpe")) {
- 			gpe = 1;
-+		} else if (!matches(*argv, "fan-map")) {
-+			NEXT_ARG();
-+			if (fan_parse_map(&argc, &argv, n))
-+				invarg("invalid fan-map", *argv);
- 		} else if (matches(*argv, "help") == 0) {
- 			explain();
- 			return -1;
-@@ -279,6 +325,28 @@ static int vxlan_parse_opt(struct link_u
- 	return 0;
- }
- 
-+static void fan_print_map(FILE *f, struct rtattr *attr)
-+{
-+	char b1[INET_ADDRSTRLEN], b2[INET_ADDRSTRLEN];
-+	struct ifla_fan_map *m;
-+	struct rtattr *i;
-+	int rem;
-+	int p;
-+
-+	fprintf(f, "fan-map ");
-+
-+	rem = RTA_PAYLOAD(attr);
-+	for (i = RTA_DATA(attr); RTA_OK(i, rem); i = RTA_NEXT(i, rem)) {
-+		p = RTA_PAYLOAD(i);
-+		m = RTA_DATA(i);
-+		fprintf(f, "%s/%d:%s/%d ",
-+			rt_addr_n2a_r(AF_INET, p, &m->overlay, b1, INET_ADDRSTRLEN),
-+			m->overlay_prefix,
-+			rt_addr_n2a_r(AF_INET, p, &m->underlay, b2, INET_ADDRSTRLEN),
-+			m->underlay_prefix);
-+	}
-+}
-+
- static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
- {
- 	__u32 vni;
-@@ -321,6 +389,9 @@ static void vxlan_print_opt(struct link_
- 		}
- 	}
- 
-+	if (tb[IFLA_VXLAN_FAN_MAP])
-+		fan_print_map(f, tb[IFLA_VXLAN_FAN_MAP]);
-+
- 	if (tb[IFLA_VXLAN_LOCAL]) {
- 		__be32 addr = rta_getattr_u32(tb[IFLA_VXLAN_LOCAL]);
- 		if (addr)
-Index: iproute2-4.3.0/ip/link_iptnl.c
-===================================================================
---- iproute2-4.3.0.orig/ip/link_iptnl.c
-+++ iproute2-4.3.0/ip/link_iptnl.c
-@@ -49,10 +49,11 @@ static void usage(int sit)
- 	print_usage(stderr, sit);
- 	exit(-1);
- }
-+
- static int fan_parse_map(int *argcp, char ***argvp, struct nlmsghdr *n)
- {
- 	inet_prefix underlay, overlay;
--	struct ip_tunnel_fan_map map;
-+	struct ifla_fan_map map;
- 	struct rtattr *nest;
- 	char **argv = *argvp;
- 	int argc = *argcp;
-@@ -61,8 +62,10 @@ static int fan_parse_map(int *argcp, cha
- 	while (argc > 0) {
- 		char *colon = strchr(*argv, ':');
- 
--		if (!colon)
-+		if (!colon) {
-+			PREV_ARG();
- 			break;
-+		}
- 		*colon = '\0';
- 
- 		if (get_prefix(&overlay, *argv, AF_INET))
-@@ -371,7 +374,7 @@ get_failed:
- static void fan_print_map(FILE *f, struct rtattr *attr)
- {
- 	char b1[INET_ADDRSTRLEN], b2[INET_ADDRSTRLEN];
--	struct ip_tunnel_fan_map *m;
-+	struct ifla_fan_map *m;
- 	struct rtattr *i;
- 	int rem;
- 	int p;
diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix
index 404e21bcbce0..1d312be42ec7 100644
--- a/pkgs/os-specific/linux/iproute/default.nix
+++ b/pkgs/os-specific/linux/iproute/default.nix
@@ -1,6 +1,4 @@
-{ fetchurl, stdenv, lib, flex, bison, db, iptables, pkgconfig
-, enableFan ? false
-}:
+{ fetchurl, stdenv, lib, flex, bison, db, iptables, pkgconfig }:
 
 stdenv.mkDerivation rec {
   name = "iproute2-${version}";
@@ -11,14 +9,6 @@ stdenv.mkDerivation rec {
     sha256 = "0zdxdsxyaazl85xhwskvsmpyzwf5qp21cvjsi1lw3xnrc914q2if";
   };
 
-  patches = lib.optionals enableFan [
-    # These patches were pulled from:
-    # https://launchpad.net/ubuntu/xenial/+source/iproute2
-    ./1000-ubuntu-poc-fan-driver.patch
-    ./1001-ubuntu-poc-fan-driver-v3.patch
-    ./1002-ubuntu-poc-fan-driver-vxlan.patch
-  ];
-
   preConfigure = ''
     patchShebangs ./configure
     sed -e '/ARPDDIR/d' -i Makefile