Simplify nftables.ml types

This commit is contained in:
jeltz 2022-08-29 22:51:14 +02:00
parent 9d300de0f3
commit e8b7c08b27
Signed by: jeltz
GPG key ID: 800882B66C0C3326

View file

@ -50,9 +50,13 @@ type rule = {
expr : unit stmt list; expr : unit stmt list;
} }
type add_object = AddTable of table | AddChain of chain | AddRule of rule type command =
type flush_object = FlushRuleset | FlushTable of table | FlushChain of chain | FlushRuleset
type command = Add of add_object | Flush of flush_object | AddTable of table
| FlushTable of table
| AddChain of chain
| FlushChain of chain
| AddRule of rule
let string_of_udp : type a. a udp -> string = function let string_of_udp : type a. a udp -> string = function
| UdpSport -> "sport" | UdpSport -> "sport"
@ -164,19 +168,13 @@ let json_of_rule { family; table; chain; expr } =
("expr", `List (List.map json_of_stmt expr)); ("expr", `List (List.map json_of_stmt expr));
]) ])
let json_of_add_object = function
| AddTable t -> json_of_table t
| AddChain c -> json_of_chain c
| AddRule r -> json_of_rule r
let json_of_flush_object = function
| FlushRuleset -> assoc_one "ruleset" `Null
| FlushTable t -> json_of_table t
| FlushChain c -> json_of_chain c
let json_of_command = function let json_of_command = function
| Add a -> assoc_one "add" (json_of_add_object a) | FlushRuleset -> assoc_one "flush" (assoc_one "ruleset" `Null)
| Flush a -> assoc_one "flush" (json_of_flush_object a) | AddTable t -> assoc_one "add" (json_of_table t)
| FlushTable t -> assoc_one "flush" (json_of_table t)
| AddChain c -> assoc_one "add" (json_of_chain c)
| FlushChain c -> assoc_one "flush" (json_of_chain c)
| AddRule r -> assoc_one "add" (json_of_rule r)
let json_of_nftables n = let json_of_nftables n =
assoc_one "nftables" (`List (List.map json_of_command n)) assoc_one "nftables" (`List (List.map json_of_command n))