at 25.11-pre 1.3 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8with lib; 9 10let 11 cfg = config.networking.rxe; 12 13in 14{ 15 ###### interface 16 17 options = { 18 networking.rxe = { 19 enable = mkEnableOption "RDMA over converged ethernet"; 20 interfaces = mkOption { 21 type = types.listOf types.str; 22 default = [ ]; 23 example = [ "eth0" ]; 24 description = '' 25 Enable RDMA on the listed interfaces. The corresponding virtual 26 RDMA interfaces will be named rxe_\<interface\>. 27 UDP port 4791 must be open on the respective ethernet interfaces. 28 ''; 29 }; 30 }; 31 }; 32 33 ###### implementation 34 35 config = mkIf cfg.enable { 36 37 systemd.services.rxe = { 38 description = "RoCE interfaces"; 39 40 wantedBy = [ "multi-user.target" ]; 41 after = [ 42 "systemd-modules-load.service" 43 "network-online.target" 44 ]; 45 wants = [ 46 "network-pre.target" 47 "network-online.target" 48 ]; 49 50 serviceConfig = { 51 Type = "oneshot"; 52 RemainAfterExit = true; 53 ExecStart = map ( 54 x: "${pkgs.iproute2}/bin/rdma link add rxe_${x} type rxe netdev ${x}" 55 ) cfg.interfaces; 56 57 ExecStop = map (x: "${pkgs.iproute2}/bin/rdma link delete rxe_${x}") cfg.interfaces; 58 }; 59 }; 60 }; 61}