fix(dracut-functions.sh): ip route parsing
The code for determining local interface and address works
only for peers that are reachable in a single hop.
This is parsed correctly:
192.168.110.1 dev br0 src 192.168.110.160 uid 0 \ cache
But this isn't:
192.168.1.4 via 192.168.110.1 dev br0 src 192.168.110.160 uid 0 \ cache
Fix it.
Fixes: ceca74cc
("dracut-functions: add ip_params_for_remote_addr() helper")
master
parent
9371dcaba3
commit
d754e1c6f0
|
@ -783,13 +783,29 @@ btrfs_devs() {
|
||||||
iface_for_remote_addr() {
|
iface_for_remote_addr() {
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
set -- $(ip -o route get to "$1")
|
set -- $(ip -o route get to "$1")
|
||||||
echo "$3"
|
while [ $# -gt 0 ]; do
|
||||||
|
case $1 in
|
||||||
|
dev)
|
||||||
|
echo "$2"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
local_addr_for_remote_addr() {
|
local_addr_for_remote_addr() {
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
set -- $(ip -o route get to "$1")
|
set -- $(ip -o route get to "$1")
|
||||||
echo "$5"
|
while [ $# -gt 0 ]; do
|
||||||
|
case $1 in
|
||||||
|
src)
|
||||||
|
echo "$2"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
peer_for_addr() {
|
peer_for_addr() {
|
||||||
|
|
Loading…
Reference in New Issue