]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospf6d: fix using vrf interface as a loopback
authorIgor Ryzhov <iryzhov@nfware.com>
Fri, 28 May 2021 13:14:34 +0000 (16:14 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Fri, 28 May 2021 13:14:34 +0000 (16:14 +0300)
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
ospf6d/ospf6_interface.c

index 9a738aa5b534fdcd80c7b9f9aa57093c5c033695..f037ea1f4dbc0669713a5446fd69df89fe374e7e 100644 (file)
@@ -109,7 +109,7 @@ static uint8_t ospf6_default_iftype(struct interface *ifp)
 {
        if (if_is_pointopoint(ifp))
                return OSPF_IFTYPE_POINTOPOINT;
-       else if (if_is_loopback(ifp))
+       else if (if_is_loopback_or_vrf(ifp))
                return OSPF_IFTYPE_LOOPBACK;
        else
                return OSPF_IFTYPE_BROADCAST;
@@ -390,7 +390,7 @@ void ospf6_interface_state_update(struct interface *ifp)
 
        if (if_is_operative(ifp)
            && (ospf6_interface_get_linklocal_address(oi->interface)
-               || if_is_loopback(oi->interface)))
+               || if_is_loopback_or_vrf(oi->interface)))
                thread_execute(master, interface_up, oi, 0);
        else
                thread_execute(master, interface_down, oi, 0);
@@ -734,7 +734,7 @@ int interface_up(struct thread *thread)
 
        /* check interface has a link-local address */
        if (!(ospf6_interface_get_linklocal_address(oi->interface)
-             || if_is_loopback(oi->interface))) {
+             || if_is_loopback_or_vrf(oi->interface))) {
                if (IS_OSPF6_DEBUG_INTERFACE)
                        zlog_debug(
                                "Interface %s has no link local address, can't execute [InterfaceUp]",
@@ -800,7 +800,7 @@ int interface_up(struct thread *thread)
 
        /* Schedule Hello */
        if (!CHECK_FLAG(oi->flag, OSPF6_INTERFACE_PASSIVE)
-           && !if_is_loopback(oi->interface)) {
+           && !if_is_loopback_or_vrf(oi->interface)) {
                oi->thread_send_hello = NULL;
                thread_add_event(master, ospf6_hello_send, oi, 0,
                                 &oi->thread_send_hello);
@@ -2106,7 +2106,7 @@ DEFUN (no_ipv6_ospf6_passive,
        THREAD_OFF(oi->thread_sso);
 
        /* don't send hellos over loopback interface */
-       if (!if_is_loopback(oi->interface))
+       if (!if_is_loopback_or_vrf(oi->interface))
                thread_add_event(master, ospf6_hello_send, oi, 0,
                                 &oi->thread_send_hello);