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