]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_adjacency.c
Merge pull request #5280 from qlyoung/doc-clean-topotest-json
[mirror_frr.git] / isisd / isis_adjacency.c
index b0f2947ec6bbac2baa2506fc64701a83cfc2856f..1d70521e6812da2bb91157c5d59a51179a9fb542 100644 (file)
@@ -32,7 +32,6 @@
 #include "if.h"
 #include "stream.h"
 
-#include "isisd/dict.h"
 #include "isisd/isis_constants.h"
 #include "isisd/isis_common.h"
 #include "isisd/isis_flags.h"
@@ -49,6 +48,7 @@
 #include "isisd/isis_mt.h"
 #include "isisd/isis_tlvs.h"
 #include "isisd/fabricd.h"
+#include "isisd/isis_nb.h"
 
 extern struct isis *isis;
 
@@ -140,12 +140,9 @@ void isis_delete_adj(void *arg)
        /* remove from SPF trees */
        spftree_area_adj_del(adj->circuit->area, adj);
 
-       if (adj->area_addresses)
-               XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->area_addresses);
-       if (adj->ipv4_addresses)
-               XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv4_addresses);
-       if (adj->ipv6_addresses)
-               XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv6_addresses);
+       XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->area_addresses);
+       XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv4_addresses);
+       XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv6_addresses);
 
        adj_mt_finish(adj);
 
@@ -258,6 +255,12 @@ void isis_adj_state_change(struct isis_adjacency *adj,
                        reason ? reason : "unspecified");
        }
 
+       circuit->adj_state_changes++;
+#ifndef FABRICD
+       /* send northbound notification */
+       isis_notif_adj_state_change(adj, new_state, reason);
+#endif /* ifndef FABRICD */
+
        if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
                del = false;
                for (int level = IS_LEVEL_1; level <= IS_LEVEL_2; level++) {
@@ -373,6 +376,20 @@ void isis_adj_print(struct isis_adjacency *adj)
        return;
 }
 
+const char *isis_adj_yang_state(enum isis_adj_state state)
+{
+       switch (state) {
+       case ISIS_ADJ_DOWN:
+               return "down";
+       case ISIS_ADJ_UP:
+               return "up";
+       case ISIS_ADJ_INITIALIZING:
+               return "init";
+       default:
+               return "failed";
+       }
+}
+
 int isis_adj_expire(struct thread *thread)
 {
        struct isis_adjacency *adj;