APID-based virtual switch for SpaceOS inter-guest routing
1type apid_range = { lo : int; hi : int }
2
3let apid_range lo hi = { lo; hi }
4let in_range { lo; hi } apid = apid >= lo && apid <= hi
5
6type tenant = {
7 name : string;
8 apids : apid_range;
9 can_send_to : apid_range list;
10}
11
12type t = { tenants : tenant list; socket_dir : string }
13
14let system_range = { lo = 0x001; hi = 0x00F }
15let idle_apid = 0x7FF
16
17let pp fmt t =
18 Fmt.pf fmt "Config(%d tenants, %s)" (List.length t.tenants) t.socket_dir
19
20let socket_path config tenant =
21 Filename.concat config.socket_dir (tenant.name ^ ".sock")