wg-quick: run PreUp hook after creating interface
Currently PreUp hooks run before the interface is created. This is problematic for moving the device into a Linux VRFs as this will currently clear all assigned IPv6 addressess (possibly a bug), so if we did this in PostUp (i.e. before add_addr) we'll have to manually re-add all assigned addresses. This is obviously less than ideal. Instead create the wg device just before running PreUp hooks. We apply this to all platforms for consistency. Test case: $ ip link add vrf-test type vrf table 1234 $ ip link add wg-test type wireguard $ ip addr add dev wg-test 192.168.42.42/24 $ ip addr add dev wg-test fe80::/64 $ ip -br addr show wg-test wg-test DOWN 192.168.42.42/24 fe80::/64 $ ip link set dev wg-test master vrf-test $ ip -br addr show wg-test wg-test DOWN 192.168.42.42/32 Signed-off-by: Daniel Gröber <dxld@darkboxed.org> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
b4f6b4f229
commit
e6888dd74e
|
@ -452,8 +452,8 @@ cmd_up() {
|
||||||
local i
|
local i
|
||||||
get_real_interface && die "\`$INTERFACE' already exists as \`$REAL_INTERFACE'"
|
get_real_interface && die "\`$INTERFACE' already exists as \`$REAL_INTERFACE'"
|
||||||
trap 'del_if; del_routes; exit' INT TERM EXIT
|
trap 'del_if; del_routes; exit' INT TERM EXIT
|
||||||
execute_hooks "${PRE_UP[@]}"
|
|
||||||
add_if
|
add_if
|
||||||
|
execute_hooks "${PRE_UP[@]}"
|
||||||
set_config
|
set_config
|
||||||
for i in "${ADDRESSES[@]}"; do
|
for i in "${ADDRESSES[@]}"; do
|
||||||
add_addr "$i"
|
add_addr "$i"
|
||||||
|
|
|
@ -420,8 +420,8 @@ cmd_up() {
|
||||||
local i
|
local i
|
||||||
[[ -z $(ifconfig "$INTERFACE" 2>/dev/null) ]] || die "\`$INTERFACE' already exists"
|
[[ -z $(ifconfig "$INTERFACE" 2>/dev/null) ]] || die "\`$INTERFACE' already exists"
|
||||||
trap 'del_if; del_routes; clean_temp; exit' INT TERM EXIT
|
trap 'del_if; del_routes; clean_temp; exit' INT TERM EXIT
|
||||||
execute_hooks "${PRE_UP[@]}"
|
|
||||||
add_if
|
add_if
|
||||||
|
execute_hooks "${PRE_UP[@]}"
|
||||||
set_config
|
set_config
|
||||||
for i in "${ADDRESSES[@]}"; do
|
for i in "${ADDRESSES[@]}"; do
|
||||||
add_addr "$i"
|
add_addr "$i"
|
||||||
|
|
|
@ -327,8 +327,8 @@ cmd_up() {
|
||||||
local i
|
local i
|
||||||
[[ -z $(ip link show dev "$INTERFACE" 2>/dev/null) ]] || die "\`$INTERFACE' already exists"
|
[[ -z $(ip link show dev "$INTERFACE" 2>/dev/null) ]] || die "\`$INTERFACE' already exists"
|
||||||
trap 'del_if; exit' INT TERM EXIT
|
trap 'del_if; exit' INT TERM EXIT
|
||||||
execute_hooks "${PRE_UP[@]}"
|
|
||||||
add_if
|
add_if
|
||||||
|
execute_hooks "${PRE_UP[@]}"
|
||||||
set_config
|
set_config
|
||||||
for i in "${ADDRESSES[@]}"; do
|
for i in "${ADDRESSES[@]}"; do
|
||||||
add_addr "$i"
|
add_addr "$i"
|
||||||
|
|
|
@ -417,8 +417,8 @@ cmd_up() {
|
||||||
local i
|
local i
|
||||||
get_real_interface && die "\`$INTERFACE' already exists as \`$REAL_INTERFACE'"
|
get_real_interface && die "\`$INTERFACE' already exists as \`$REAL_INTERFACE'"
|
||||||
trap 'del_if; del_routes; exit' INT TERM EXIT
|
trap 'del_if; del_routes; exit' INT TERM EXIT
|
||||||
execute_hooks "${PRE_UP[@]}"
|
|
||||||
add_if
|
add_if
|
||||||
|
execute_hooks "${PRE_UP[@]}"
|
||||||
set_config
|
set_config
|
||||||
for i in "${ADDRESSES[@]}"; do
|
for i in "${ADDRESSES[@]}"; do
|
||||||
add_addr "$i"
|
add_addr "$i"
|
||||||
|
|
Loading…
Reference in New Issue