diff options
| author | Christian Poessinger <christian@poessinger.com> | 2020-08-16 14:27:03 +0200 | 
|---|---|---|
| committer | Christian Poessinger <christian@poessinger.com> | 2020-08-16 14:33:16 +0200 | 
| commit | b17b8a0129f42c757c1e9a740664406e8da3dd42 (patch) | |
| tree | 54912f1b9b9c2198c55ec617a1260ab1bc9acdb0 | |
| parent | 3104c0ea8284ac5039e1dbab4a3ccd193e748ede (diff) | |
| download | vyos-1x-b17b8a0129f42c757c1e9a740664406e8da3dd42.tar.gz vyos-1x-b17b8a0129f42c757c1e9a740664406e8da3dd42.zip | |
dhclient: T2277: remove VRF route when DHCP client exits
| -rw-r--r-- | src/etc/dhcp/dhclient-enter-hooks.d/03-vyos-ipwrapper | 2 | ||||
| -rw-r--r-- | src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup | 10 | 
2 files changed, 9 insertions, 3 deletions
| diff --git a/src/etc/dhcp/dhclient-enter-hooks.d/03-vyos-ipwrapper b/src/etc/dhcp/dhclient-enter-hooks.d/03-vyos-ipwrapper index 1e102c2d7..d1161e704 100644 --- a/src/etc/dhcp/dhclient-enter-hooks.d/03-vyos-ipwrapper +++ b/src/etc/dhcp/dhclient-enter-hooks.d/03-vyos-ipwrapper @@ -20,7 +20,6 @@ function iptovtysh () {      local VTYSH_NETADDR=""      local VTYSH_GATEWAY=""      local VTYSH_DEV="" -    local VTYSH_VRF_NAME=$(basename /sys/class/net/eth1/upper_* | sed -e 's/upper_//')      # convert default route to 0.0.0.0/0      if [ "$4" == "default" ] ; then          VTYSH_NETADDR="0.0.0.0/0" @@ -43,6 +42,7 @@ function iptovtysh () {      fi      # Add route to VRF routing table +    local VTYSH_VRF_NAME=$(basename /sys/class/net/$VTYSH_DEV/upper_* | sed -e 's/upper_//')      if [ -n $VTYSH_VRF_NAME ]; then          VTYSH_VRF="vrf $VTYSH_VRF_NAME"      fi diff --git a/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup b/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup index 01981ad04..b768e1ae5 100644 --- a/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup +++ b/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup @@ -15,8 +15,14 @@ if [[ $reason =~ (EXPIRE|FAIL|RELEASE|STOP) ]]; then      # try to delete default ip route       for router in $old_routers; do -        logmsg info "Deleting default route: via $router dev ${interface}" -        ip -4 route del default via $router dev ${interface} +        # check if we are bound to a VRF +        local vrf_name=$(basename /sys/class/net/${interface}/upper_* | sed -e 's/upper_//') +        if [ -n $vrf_name ]; then +            vrf="vrf $vrf_name" +        fi + +        logmsg info "Deleting default route: via $router dev ${interface} ${vrf}" +        ip -4 route del default via $router dev ${interface} ${vrf}      done      # delete rfc3442 routes | 
