|
|
|
@ -7,45 +7,34 @@ type zone =
|
|
|
|
|
| ZoneList of zone list
|
|
|
|
|
| ZoneExclude of zone
|
|
|
|
|
|
|
|
|
|
type addrs =
|
|
|
|
|
| ZoneName of string
|
|
|
|
|
| Ipv4 of V4.Prefix.t
|
|
|
|
|
| Ipv6 of V6.Prefix.t
|
|
|
|
|
type addrs = ZoneName of string | Ipv4 of V4.Prefix.t | Ipv6 of V6.Prefix.t
|
|
|
|
|
|
|
|
|
|
type l4_rule =
|
|
|
|
|
| TcpRule of { sport: int list; dport: int list }
|
|
|
|
|
| UdpRule of { sport: int list; dport: int list }
|
|
|
|
|
| TcpRule of { sport : int list; dport : int list }
|
|
|
|
|
| UdpRule of { sport : int list; dport : int list }
|
|
|
|
|
| IcmpRule
|
|
|
|
|
|
|
|
|
|
type rule = { src: addrs list; dest: addrs list; l4: l4_rule }
|
|
|
|
|
|
|
|
|
|
type config = { zones: (string * zone) list; rules: rule list }
|
|
|
|
|
|
|
|
|
|
type rule = { src : addrs list; dest : addrs list; l4 : l4_rule }
|
|
|
|
|
type config = { zones : (string * zone list) list; rules : rule list }
|
|
|
|
|
|
|
|
|
|
(* TODO *)
|
|
|
|
|
let zone_of_json _ =
|
|
|
|
|
Zone "xxx"
|
|
|
|
|
let zone_of_json _ = [ Zone "xxx" ]
|
|
|
|
|
|
|
|
|
|
let addrs_of_json json =
|
|
|
|
|
let open Yojson.Basic.Util in
|
|
|
|
|
let value = json |> to_string in
|
|
|
|
|
let addrs = ZoneName value in
|
|
|
|
|
let addrs = match V6.Prefix.of_string value with
|
|
|
|
|
| Ok p -> Ipv6 p
|
|
|
|
|
| Error _ -> addrs
|
|
|
|
|
let addrs =
|
|
|
|
|
match V6.Prefix.of_string value with Ok p -> Ipv6 p | Error _ -> addrs
|
|
|
|
|
in
|
|
|
|
|
match V4.Prefix.of_string value with
|
|
|
|
|
| Ok p -> Ipv4 p
|
|
|
|
|
| Error _ -> addrs
|
|
|
|
|
match V4.Prefix.of_string value with Ok p -> Ipv4 p | Error _ -> addrs
|
|
|
|
|
|
|
|
|
|
let addrs_list_of_json json =
|
|
|
|
|
let open Yojson.Basic.Util in
|
|
|
|
|
let elems = json |> to_list in
|
|
|
|
|
List.map addrs_of_json elems
|
|
|
|
|
|
|
|
|
|
let to_list_force = function
|
|
|
|
|
| `List l -> l
|
|
|
|
|
| _ -> []
|
|
|
|
|
let to_list_force = function `List l -> l | _ -> []
|
|
|
|
|
|
|
|
|
|
let to_int_list json =
|
|
|
|
|
let open Yojson.Basic.Util in
|
|
|
|
|