]> git.proxmox.com Git - mirror_frr.git/commitdiff
isisd: Add a hook when writing interface config
authorChristian Franke <chris@opensourcerouting.org>
Fri, 28 Sep 2018 13:39:01 +0000 (15:39 +0200)
committerChristian Franke <chris@opensourcerouting.org>
Fri, 5 Oct 2018 12:05:31 +0000 (14:05 +0200)
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
isisd/isis_circuit.c
isisd/isis_circuit.h
isisd/isis_main.c
isisd/isis_mt.c
isisd/isis_mt.h

index 58c6dfa3682a53f64c74ef705e5d418a153d7e4b..313564d95ba35646687177d73410037696e5b98b 100644 (file)
@@ -924,6 +924,10 @@ void isis_circuit_print_vty(struct isis_circuit *circuit, struct vty *vty,
        return;
 }
 
+DEFINE_HOOK(isis_circuit_config_write,
+           (struct isis_circuit *circuit, struct vty *vty),
+           (circuit, vty))
+
 int isis_interface_config_write(struct vty *vty)
 {
        struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
@@ -1138,7 +1142,7 @@ int isis_interface_config_write(struct vty *vty)
                                        circuit->passwd.passwd);
                                write++;
                        }
-                       write += circuit_write_mt_settings(circuit, vty);
+                       write += hook_call(isis_circuit_config_write, circuit, vty);
                }
                vty_endframe(vty, "!\n");
        }
index 02abbb49ad4af3808aefce32b51130b827749d06..e83424a4addfd668f5f00d7ac30c2ad8dea98248 100644 (file)
@@ -193,4 +193,8 @@ ferr_r isis_circuit_passwd_hmac_md5_set(struct isis_circuit *circuit,
 int isis_circuit_mt_enabled_set(struct isis_circuit *circuit, uint16_t mtid,
                                bool enabled);
 
+DECLARE_HOOK(isis_circuit_config_write,
+           (struct isis_circuit *circuit, struct vty *vty),
+           (circuit, vty))
+
 #endif /* _ZEBRA_ISIS_CIRCUIT_H */
index 474184fbd31290f1e8f0a0b91978dd3f3ad0bd1d..7956ddeaf1aead13f3de7d048f84555f4ae1751f 100644 (file)
@@ -57,6 +57,7 @@
 #include "isisd/isis_vty_common.h"
 #include "isisd/isis_bfd.h"
 #include "isisd/isis_lsp.h"
+#include "isisd/isis_mt.h"
 
 /* Default configuration file name */
 #define ISISD_DEFAULT_CONFIG "isisd.conf"
@@ -216,6 +217,7 @@ int main(int argc, char **argv, char **envp)
        isis_route_map_init();
        isis_mpls_te_init();
        lsp_init();
+       mt_init();
 
        /* create the global 'isis' instance */
        isis_new(1);
index e0227f46563314d28e76f1592bc3d350e3f9d786..1b7fa5a46e360e7fa5937089720cfd4235e8431b 100644 (file)
@@ -302,7 +302,7 @@ circuit_get_mt_setting(struct isis_circuit *circuit, uint16_t mtid)
        return setting;
 }
 
-int circuit_write_mt_settings(struct isis_circuit *circuit, struct vty *vty)
+static int circuit_write_mt_settings(struct isis_circuit *circuit, struct vty *vty)
 {
        int written = 0;
        struct listnode *node;
@@ -551,3 +551,9 @@ void tlvs_add_mt_p2p(struct isis_tlvs *tlvs, struct isis_circuit *circuit,
        tlvs_add_mt_set(circuit->area, tlvs, adj->mt_count, adj->mt_set, id,
                        metric, subtlvs, subtlv_len);
 }
+
+void mt_init(void)
+{
+       hook_register(isis_circuit_config_write,
+                     circuit_write_mt_settings);
+}
index 8c57d24afa4dae95fca6c9afaed6dae0869e677b..515b63f50f024c7329c233c252600714db786f72 100644 (file)
@@ -109,7 +109,6 @@ void circuit_mt_init(struct isis_circuit *circuit);
 void circuit_mt_finish(struct isis_circuit *circuit);
 struct isis_circuit_mt_setting *
 circuit_get_mt_setting(struct isis_circuit *circuit, uint16_t mtid);
-int circuit_write_mt_settings(struct isis_circuit *circuit, struct vty *vty);
 struct isis_circuit_mt_setting **
 circuit_mt_settings(struct isis_circuit *circuit, unsigned int *mt_count);
 bool tlvs_to_adj_mt_set(struct isis_tlvs *tlvs, bool v4_usable, bool v6_usable,
@@ -122,4 +121,5 @@ void tlvs_add_mt_bcast(struct isis_tlvs *tlvs, struct isis_circuit *circuit,
 void tlvs_add_mt_p2p(struct isis_tlvs *tlvs, struct isis_circuit *circuit,
                     uint8_t *id, uint32_t metric, uint8_t *subtlvs,
                     uint8_t subtlv_len);
+void mt_init(void);
 #endif