summaryrefslogtreecommitdiffstats
path: root/isisd/isis_circuit.h
diff options
context:
space:
mode:
authorIgor Ryzhov <iryzhov@nfware.com>2021-04-28 00:57:21 +0200
committerIgor Ryzhov <iryzhov@nfware.com>2021-04-29 16:05:21 +0200
commitbcf220815632500f9646cb0b4c13f498afa4edf6 (patch)
treec886adf613df11059b980959086bd59c3491f013 /isisd/isis_circuit.h
parentisisd: update link params after circuit is up (diff)
downloadfrr-bcf220815632500f9646cb0b4c13f498afa4edf6.tar.xz
frr-bcf220815632500f9646cb0b4c13f498afa4edf6.zip
isisd: allow arbitrary order of area/interface configuration
Currently we don't allow to configure the interface before the area is configured. This approach has the following issues: 1. The area config can be deleted even when we have an interface config relying on it. The code is not ready for that - we'll have a whole bunch of stale pointers if user does that. 2. The code doesn't correctly process the event of changing the VRF for an interface. There is no mechanism to ensure that the area exists in the new VRF so currently the circuit still stays in the old VRF. This commit allows an arbitrary order of area/interface configuration. There is no more need to configure the area before configuring the interface. This change fixes both the issues. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'isisd/isis_circuit.h')
-rw-r--r--isisd/isis_circuit.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h
index 72722d821..45c0a7e0e 100644
--- a/isisd/isis_circuit.h
+++ b/isisd/isis_circuit.h
@@ -122,6 +122,7 @@ struct isis_circuit {
/*
* Configurables
*/
+ char *tag; /* area tag */
struct isis_passwd passwd; /* Circuit rx/tx password */
int is_type; /* circuit is type == level of circuit
* differentiated from circuit type (media) */
@@ -180,7 +181,7 @@ struct isis_circuit {
DECLARE_QOBJ_TYPE(isis_circuit);
void isis_circuit_init(void);
-struct isis_circuit *isis_circuit_new(struct isis *isis);
+struct isis_circuit *isis_circuit_new(struct interface *ifp, const char *tag);
void isis_circuit_del(struct isis_circuit *circuit);
struct isis_circuit *circuit_lookup_by_ifp(struct interface *ifp,
struct list *list);
@@ -207,8 +208,6 @@ void isis_circuit_print_vty(struct isis_circuit *circuit, struct vty *vty,
size_t isis_circuit_pdu_size(struct isis_circuit *circuit);
void isis_circuit_stream(struct isis_circuit *circuit, struct stream **stream);
-struct isis_circuit *isis_circuit_create(struct isis_area *area,
- struct interface *ifp);
void isis_circuit_af_set(struct isis_circuit *circuit, bool ip_router,
bool ipv6_router);
ferr_r isis_circuit_passive_set(struct isis_circuit *circuit, bool passive);