This function is needed to implement the id feature
described in #11405

Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
 src/functions/functions.zone | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/functions/functions.zone b/src/functions/functions.zone
index fcc7bfa..90d7e11 100644
--- a/src/functions/functions.zone
+++ b/src/functions/functions.zone
@@ -1061,6 +1061,26 @@ zone_config_id_is_valid() {
 	[ -f ${zone_path}/configs/*.${id} ];
 }
 
+zone_config_get_hook_from_id() {
+	# Returns the hook for a given id
+	assert [ $# -eq 2 ]
+	local zone=${1}
+	local id=${2}
+
+	local config
+	for config in $(zone_configs_list "${zone}"); do
+		if [[ ${config} == *.${id} ]]; then
+			local config_hook="$(zone_config_get_hook "${zone}" "${config}")"
+			assert isset config_hook
+			print "${config_hook}"
+			return "${EXIT_OK}"
+		fi
+	done
+
+	# If we get here the zone has no config with the given id
+	return ${EXIT_ERROR}
+}
+
 zone_has_ip() {
 	device_has_ip $@
 }
-- 
2.6.3