]> git.ipfire.org Git - people/stevee/network.git/commitdiff
zone: add config hid functions
authorJonatan Schlag <jonatan.schlag@ipfire.org>
Wed, 26 Jul 2017 08:44:37 +0000 (10:44 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 27 Jul 2017 09:41:29 +0000 (11:41 +0200)
These are the basic functions to work with hids.

Fixes: #11406
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/functions/functions.zone

index f46fc84f313ad2c20c7b4864ce23cf2472ca3119..0ee0140cf79af86f6c9d26a20d4ba9e664955b56 100644 (file)
@@ -656,6 +656,68 @@ zone_config_list_ids() {
        echo ${ids}
 }
 
+# List all hids of a zone
+zone_config_list_hids() {
+       assert [ $# -eq 1 ]
+
+       local zone=${1}
+
+       local config
+       for config in $(zone_configs_list ${zone}); do
+               zone_config_get_hid "${zone}" "${config}"
+       done
+}
+
+# get the hid from a given config
+zone_config_get_hid() {
+       assert [ $# -eq 2 ]
+
+       local zone=${1}
+       local config=${2}
+
+       local hook="$(zone_config_get_hook "${zone}" "${config}")"
+
+       hook_exec "config" "${hook}" "hid" "${zone}" "${config}"
+}
+
+# Checks if a hid is valid for a given zone
+zone_config_hid_is_valid() {
+       assert [ $# -eq 2]
+
+       local zone=${1}
+       local hid=${2}
+
+       local _hid
+       for _hid in $(zone_config_list_hids "${zone}"); do
+               if [[ ${_hid} = ${hid} ]]; then
+                       return ${EXIT_TRUE}
+               fi
+       done
+
+       return ${EXIT_FALSE}
+}
+
+# This function converts a hid to a id
+zone_config_convert_hid_to_id() {
+       assert [ $# -eq 2 ]
+
+       local zone=${1}
+       local hid=${2}
+
+       local config
+       for config in $(zone_configs_list ${zone}); do
+               # Get hook from config
+               local hook="$(zone_config_get_hook "${zone}" "${config}")"
+
+               if [[ "$(hook_exec "config" "${hook}" "hid" "${zone}" "${config}")" == "${hid}" ]]; then
+                       config_get_id_from_config "${config}"
+                       return ${EXIT_TRUE}
+               fi
+       done
+
+       return ${EXIT_FALSE}
+}
+
 zone_show() {
        local zone=${1}
 
@@ -1114,6 +1176,23 @@ zone_config_id_is_valid() {
        [ -f ${zone_path}/configs/*.${id} ];
 }
 
+# This function checks if a given hid is valid for a zone
+# Return True when yes and false when no
+zone_config_hid_is_valid() {
+       assert [ $# -eq 2 ]
+       local zone=${1}
+       local hid=${2}
+
+       local _hid
+       for _hid in $(zone_config_list_hids ${zone}); do
+               if [[ ${_hid} == ${hid} ]]; then
+                       return ${EXIT_TRUE}
+               fi
+       done
+
+       return ${EXIT_FALSE}
+}
+
 zone_config_get_hook_from_id() {
        # Returns the hook for a given id
        assert [ $# -eq 2 ]