diff options
Diffstat (limited to 'libvyosconfig')
| -rw-r--r-- | libvyosconfig/Makefile | 4 | ||||
| -rw-r--r-- | libvyosconfig/lib/bindings.ml | 37 |
2 files changed, 39 insertions, 2 deletions
diff --git a/libvyosconfig/Makefile b/libvyosconfig/Makefile index c93f26118..db67de62a 100644 --- a/libvyosconfig/Makefile +++ b/libvyosconfig/Makefile @@ -42,8 +42,8 @@ all: sharedlib PHONY: depends depends: sudo sh -c 'eval $$(opam env --root=/opt/opam --set-root) ;\ - opam pin add vyos1x-config https://github.com/vyos/vyos1x-config.git#6cf3918875b11dd94f9dc380b4083cc4258da74c -y ; \ - opam pin add vyconf https://github.com/vyos/vyconf.git#ee86cf713f45d3bcd735440f432b5b7b57a31ca8 -y' + opam pin add vyos1x-config https://github.com/vyos/vyos1x-config.git#6ebd5d80f9a212beba6352494392ae811f66d64e -y ; \ + opam pin add vyconf https://github.com/vyos/vyconf.git#2c16a5ad7171362d71ff241adab873fa3752b784 -y' sharedlib: depends $(BUILDDIR)/libvyosconfig$(EXTDLL) diff --git a/libvyosconfig/lib/bindings.ml b/libvyosconfig/lib/bindings.ml index 3510a9016..5d0478e02 100644 --- a/libvyosconfig/lib/bindings.ml +++ b/libvyosconfig/lib/bindings.ml @@ -12,6 +12,7 @@ module RT = Reference_tree module TA = Tree_alg module CM = Commit module VC = Vycall_client +module CDict = Config_dict module I = Internal.Make(Config_tree) module IR = Internal.Make(Reference_tree) @@ -94,6 +95,31 @@ let write_internal c_ptr file = with Internal.Write_error msg -> error_message := msg +let render_json_reference_tree c_ptr = + RT.render_json (Root.get c_ptr) + +let read_internal_reference_tree file = + (* alert exn Internal.read_internal: + [Internal.Read_error] caught + *) + try + error_message := ""; + let rt = (IR.read_internal[@alert "-exn"]) file in + Ctypes.Root.create rt + with Internal.Read_error msg -> + error_message := msg; Ctypes.null + +let write_internal_reference_tree c_ptr file = + (* alert exn Internal.write_internal: + [Internal.Write_error] caught + *) + try + error_message := ""; + let ct = Root.get c_ptr in + (IR.write_internal[@alert "-exn"]) ct file + with Internal.Write_error msg -> + error_message := msg + let create_node c_ptr path = (* alert exn CT.create_node: [Vytree.Empty_path] caught @@ -465,6 +491,13 @@ let validate_tree_filter c_ptr rt_cache_path validator_dir = with Internal.Read_error msg -> error_message := msg; c_ptr +let config_dict c_ptr_c c_ptr_r c_ptr_m path get_node with_defaults = + let ct = Root.get c_ptr_c in + let rt = Root.get c_ptr_r in + let mask = Root.get c_ptr_m in + let path = split_on_whitespace path in + let with_node = not get_node in + CDict.config_dict ~with_defaults:with_defaults ~with_first_node:with_node rt ct mask path module Stubs(I : Cstubs_inverted.INTERNAL) = struct @@ -480,6 +513,9 @@ struct let () = I.internal "to_commands" ((ptr void) @-> string @-> returning string) render_commands let () = I.internal "read_internal" (string @-> returning (ptr void)) read_internal let () = I.internal "write_internal" ((ptr void) @-> string @-> returning void) write_internal + let () = I.internal "to_json_reference_tree" ((ptr void) @-> returning string) render_json_reference_tree + let () = I.internal "read_internal_reference_tree" (string @-> returning (ptr void)) read_internal_reference_tree + let () = I.internal "write_internal_reference_tree" ((ptr void) @-> string @-> returning void) write_internal_reference_tree let () = I.internal "create_node" ((ptr void) @-> string @-> returning int) create_node let () = I.internal "set_add_value" ((ptr void) @-> string @-> string @-> returning int) set_add_value let () = I.internal "set_replace_value" ((ptr void) @-> string @-> string @-> returning int) set_replace_value @@ -505,4 +541,5 @@ struct let () = I.internal "reference_tree_to_json" (string @-> string @-> string @-> returning int) reference_tree_to_json let () = I.internal "mask_tree" ((ptr void) @-> (ptr void) @-> returning (ptr void)) mask_tree let () = I.internal "validate_tree_filter" ((ptr void) @-> string @-> string @-> returning (ptr void)) validate_tree_filter + let () = I.internal "config_dict" ((ptr void) @-> (ptr void) @-> (ptr void) @-> string @-> bool @-> bool @-> returning string) config_dict end |
