]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: delete interface if you can in upper level protocol 5009/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 19 Sep 2019 13:59:00 +0000 (09:59 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 19 Sep 2019 17:34:06 +0000 (13:34 -0400)
In an upper level protocol, delete the interface on notification
about deletion.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib/if.c
lib/zclient.c
lib/zclient.h

index 5a46a8026d03f5d2afd43246c115881591ba4ffa..87d0ea968b9acd0814c2f2fde4f031dae69e5fa6 100644 (file)
--- a/lib/if.c
+++ b/lib/if.c
@@ -187,6 +187,8 @@ void if_destroy_via_zapi(struct interface *ifp)
                (*ifp_master.destroy_hook)(ifp);
 
        if_set_index(ifp, IFINDEX_INTERNAL);
+       if (!ifp->configured)
+               if_delete(ifp);
 }
 
 void if_up_via_zapi(struct interface *ifp)
index 6ba71eba49cea2e1431ffdc3429bf49f70091b29..9129466685c9662ae8bd540a74728d9d5a20195c 100644 (file)
@@ -49,6 +49,9 @@ enum event { ZCLIENT_SCHEDULE, ZCLIENT_READ, ZCLIENT_CONNECT };
 /* Prototype for event manager. */
 static void zclient_event(enum event, struct zclient *);
 
+static void zebra_interface_if_set_value(struct stream *s,
+                                        struct interface *ifp);
+
 struct zclient_options zclient_options_default = {.receive_notify = false};
 
 struct sockaddr_storage zclient_addr;
@@ -1696,7 +1699,8 @@ struct interface *zebra_interface_link_params_read(struct stream *s,
        return ifp;
 }
 
-void zebra_interface_if_set_value(struct stream *s, struct interface *ifp)
+static void zebra_interface_if_set_value(struct stream *s,
+                                        struct interface *ifp)
 {
        uint8_t link_params_status = 0;
        ifindex_t old_ifindex;
index 37f20a6bf0b050a26f1c473f0deffddacfcb49d8..5f9edc36ffc7120e1a8535af0d06437765cba3b8 100644 (file)
@@ -621,7 +621,6 @@ zebra_interface_nbr_address_read(int, struct stream *, vrf_id_t);
 extern struct interface *zebra_interface_vrf_update_read(struct stream *s,
                                                         vrf_id_t vrf_id,
                                                         vrf_id_t *new_vrf_id);
-extern void zebra_interface_if_set_value(struct stream *, struct interface *);
 extern void zebra_router_id_update_read(struct stream *s, struct prefix *rid);
 
 extern struct interface *zebra_interface_link_params_read(struct stream *s,