isisd: Add a hook when writing interface config

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
This commit is contained in:
Christian Franke 2018-09-28 15:39:01 +02:00
parent 215eccb0b8
commit d56afe53aa
5 changed files with 19 additions and 3 deletions

View File

@ -924,6 +924,10 @@ void isis_circuit_print_vty(struct isis_circuit *circuit, struct vty *vty,
return; return;
} }
DEFINE_HOOK(isis_circuit_config_write,
(struct isis_circuit *circuit, struct vty *vty),
(circuit, vty))
int isis_interface_config_write(struct vty *vty) int isis_interface_config_write(struct vty *vty)
{ {
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT); struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
@ -1138,7 +1142,7 @@ int isis_interface_config_write(struct vty *vty)
circuit->passwd.passwd); circuit->passwd.passwd);
write++; write++;
} }
write += circuit_write_mt_settings(circuit, vty); write += hook_call(isis_circuit_config_write, circuit, vty);
} }
vty_endframe(vty, "!\n"); vty_endframe(vty, "!\n");
} }

View 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, int isis_circuit_mt_enabled_set(struct isis_circuit *circuit, uint16_t mtid,
bool enabled); bool enabled);
DECLARE_HOOK(isis_circuit_config_write,
(struct isis_circuit *circuit, struct vty *vty),
(circuit, vty))
#endif /* _ZEBRA_ISIS_CIRCUIT_H */ #endif /* _ZEBRA_ISIS_CIRCUIT_H */

View File

@ -57,6 +57,7 @@
#include "isisd/isis_vty_common.h" #include "isisd/isis_vty_common.h"
#include "isisd/isis_bfd.h" #include "isisd/isis_bfd.h"
#include "isisd/isis_lsp.h" #include "isisd/isis_lsp.h"
#include "isisd/isis_mt.h"
/* Default configuration file name */ /* Default configuration file name */
#define ISISD_DEFAULT_CONFIG "isisd.conf" #define ISISD_DEFAULT_CONFIG "isisd.conf"
@ -216,6 +217,7 @@ int main(int argc, char **argv, char **envp)
isis_route_map_init(); isis_route_map_init();
isis_mpls_te_init(); isis_mpls_te_init();
lsp_init(); lsp_init();
mt_init();
/* create the global 'isis' instance */ /* create the global 'isis' instance */
isis_new(1); isis_new(1);

View File

@ -302,7 +302,7 @@ circuit_get_mt_setting(struct isis_circuit *circuit, uint16_t mtid)
return setting; 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; int written = 0;
struct listnode *node; 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, tlvs_add_mt_set(circuit->area, tlvs, adj->mt_count, adj->mt_set, id,
metric, subtlvs, subtlv_len); metric, subtlvs, subtlv_len);
} }
void mt_init(void)
{
hook_register(isis_circuit_config_write,
circuit_write_mt_settings);
}

View File

@ -109,7 +109,6 @@ void circuit_mt_init(struct isis_circuit *circuit);
void circuit_mt_finish(struct isis_circuit *circuit); void circuit_mt_finish(struct isis_circuit *circuit);
struct isis_circuit_mt_setting * struct isis_circuit_mt_setting *
circuit_get_mt_setting(struct isis_circuit *circuit, uint16_t mtid); 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 ** struct isis_circuit_mt_setting **
circuit_mt_settings(struct isis_circuit *circuit, unsigned int *mt_count); 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, 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, void tlvs_add_mt_p2p(struct isis_tlvs *tlvs, struct isis_circuit *circuit,
uint8_t *id, uint32_t metric, uint8_t *subtlvs, uint8_t *id, uint32_t metric, uint8_t *subtlvs,
uint8_t subtlv_len); uint8_t subtlv_len);
void mt_init(void);
#endif #endif