1{ stdenv, fetchurl, perl, buildLinux, ... } @ args:
2
3import ./generic.nix (args // rec {
4 mptcpVersion = "0.90";
5 modDirVersion = "3.18.20";
6 version = "${modDirVersion}-mptcp_v${mptcpVersion}";
7
8 extraMeta = {
9 branch = "3.18";
10 maintainers = stdenv.lib.maintainers.layus;
11 };
12
13 src = fetchurl {
14 url = "https://github.com/multipath-tcp/mptcp/archive/v${mptcpVersion}.tar.gz";
15 sha256 = "1wzdvd1j1wqjkysj98g451y6mxr9a5hff5kn9inxwbzm9yg4icj5";
16 };
17
18 extraConfig = ''
19 IPV6 y
20 MPTCP y
21 IP_MULTIPLE_TABLES y
22
23 # Enable advanced path-managers...
24 MPTCP_PM_ADVANCED y
25 MPTCP_FULLMESH y
26 MPTCP_NDIFFPORTS y
27 # ... but use none by default.
28 # The default is safer if source policy routing is not setup.
29 DEFAULT_DUMMY y
30 DEFAULT_MPTCP_PM "default"
31
32 # MPTCP scheduler selection.
33 # Disabled as the only non-default is the useless round-robin.
34 MPTCP_SCHED_ADVANCED n
35 DEFAULT_MPTCP_SCHED "default"
36
37 # Smarter TCP congestion controllers
38 TCP_CONG_LIA m
39 TCP_CONG_OLIA m
40 TCP_CONG_WVEGAS m
41 TCP_CONG_BALIA m
42 '';
43
44 features.iwlwifi = true;
45 features.efiBootStub = true;
46 features.needsCifsUtils = true;
47 features.canDisableNetfilterConntrackHelpers = true;
48 features.netfilterRPFilter = true;
49} // (args.argsOverride or {}))