diff --git a/nftables.ml b/nftables.ml index 13992ba..abfbf07 100644 --- a/nftables.ml +++ b/nftables.ml @@ -50,9 +50,13 @@ type rule = { expr : unit stmt list; } -type add_object = AddTable of table | AddChain of chain | AddRule of rule -type flush_object = FlushRuleset | FlushTable of table | FlushChain of chain -type command = Add of add_object | Flush of flush_object +type command = + | FlushRuleset + | 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 | UdpSport -> "sport" @@ -164,19 +168,13 @@ let json_of_rule { family; table; chain; 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 - | Add a -> assoc_one "add" (json_of_add_object a) - | Flush a -> assoc_one "flush" (json_of_flush_object a) + | FlushRuleset -> assoc_one "flush" (assoc_one "ruleset" `Null) + | 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 = assoc_one "nftables" (`List (List.map json_of_command n))