This function is neede by IPsec to set the routes correctly.
We can now now find a source IP for a given net.
This way is ugly because the source IP
is unpredictable if we get multiple IPs.
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
return ${EXIT_OK}
}
+
+# Get all currently assigned addresse for a given network
+ip_get_assigned_addresses_from_net() {
+ local net=${1}
+ shift
+ local args="$@"
+
+ if ! ip_net_is_valid ${net}; then
+ log ERROR "IP net ${net} is invalid"
+ return ${EXIT_ERROR}
+ fi
+
+ local line
+ local addresses
+
+ # We read the output of $(ip addr show to ${net} ${args})
+ while read -r line; do
+ # We are only interested in lines which start with inet or inet6
+ [[ "${line}" =~ ^(inet6 |inet ) ]] || continue
+
+ # We need the second word the line
+ line=(${line})
+ list_append "addresses" "$(ip_split_prefix "${line[1]}")"
+ done <<< "$(ip addr show to "${net}" ${args})"
+
+ # We sort the list to get the lowest IP as first item
+ list_sort ${addresses}
+}