1{ stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
2
3import ./generic.nix (args // rec {
4 mptcpVersion = "0.91.3";
5 modDirVersion = "4.1.38";
6 version = "${modDirVersion}-mptcp_v${mptcpVersion}";
7
8 extraMeta = {
9 branch = "4.1";
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 = "0vqjnkzcbbvyq24w3cryfmw7hhws1xqkkxqcv71szkbqqs6mcr14";
16 };
17
18 kernelPatches = args.kernelPatches;
19
20 extraConfig = ''
21 IPV6 y
22 MPTCP y
23 IP_MULTIPLE_TABLES y
24
25 # Enable advanced path-managers...
26 MPTCP_PM_ADVANCED y
27 MPTCP_FULLMESH y
28 MPTCP_NDIFFPORTS y
29 # ... but use none by default.
30 # The default is safer if source policy routing is not setup.
31 DEFAULT_DUMMY y
32 DEFAULT_MPTCP_PM default
33
34 # MPTCP scheduler selection.
35 # Disabled as the only non-default is the useless round-robin.
36 MPTCP_SCHED_ADVANCED n
37 DEFAULT_MPTCP_SCHED default
38
39 # Smarter TCP congestion controllers
40 TCP_CONG_LIA m
41 TCP_CONG_OLIA m
42 TCP_CONG_WVEGAS m
43 TCP_CONG_BALIA m
44 '';
45
46 features.iwlwifi = true;
47 features.efiBootStub = true;
48 features.needsCifsUtils = true;
49 features.netfilterRPFilter = true;
50} // (args.argsOverride or {}))