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 --- src/functions/functions.ip | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/src/functions/functions.ip b/src/functions/functions.ip index 3b43da7..70bd92c 100644 --- a/src/functions/functions.ip +++ b/src/functions/functions.ip @@ -205,3 +205,31 @@ ip_address_del() {
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} +}
Okay, I will merge this one.
Best, -Michael
On Wed, 2018-02-28 at 16:31 +0000, Jonatan Schlag wrote:
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
src/functions/functions.ip | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/src/functions/functions.ip b/src/functions/functions.ip index 3b43da7..70bd92c 100644 --- a/src/functions/functions.ip +++ b/src/functions/functions.ip @@ -205,3 +205,31 @@ ip_address_del() {
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}
+}
All merged.
On Wed, 2018-02-28 at 17:21 +0000, Michael Tremer wrote:
Okay, I will merge this one.
Best, -Michael
On Wed, 2018-02-28 at 16:31 +0000, Jonatan Schlag wrote:
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
src/functions/functions.ip | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/src/functions/functions.ip b/src/functions/functions.ip index 3b43da7..70bd92c 100644 --- a/src/functions/functions.ip +++ b/src/functions/functions.ip @@ -205,3 +205,31 @@ ip_address_del() {
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}
+}