mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 20:55:25 +00:00
eigrpd: Add vrf_id to struct eigrp
Initial setup of adding a vrf_id to the `struct eigrp`. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
1825b8a216
commit
c371cd6bf0
@ -85,7 +85,8 @@ static int eigrpd_instance_create(enum nb_event event,
|
|||||||
/* NOTHING */
|
/* NOTHING */
|
||||||
break;
|
break;
|
||||||
case NB_EV_PREPARE:
|
case NB_EV_PREPARE:
|
||||||
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"));
|
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"),
|
||||||
|
VRF_DEFAULT);
|
||||||
resource->ptr = eigrp;
|
resource->ptr = eigrp;
|
||||||
break;
|
break;
|
||||||
case NB_EV_ABORT:
|
case NB_EV_ABORT:
|
||||||
@ -1181,7 +1182,8 @@ static int lib_interface_eigrp_instance_create(enum nb_event event,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"));
|
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"),
|
||||||
|
VRF_DEFAULT);
|
||||||
eif = eigrp_interface_lookup(eigrp, ifp->name);
|
eif = eigrp_interface_lookup(eigrp, ifp->name);
|
||||||
if (eif == NULL)
|
if (eif == NULL)
|
||||||
return NB_ERR_INCONSISTENCY;
|
return NB_ERR_INCONSISTENCY;
|
||||||
@ -1192,7 +1194,8 @@ static int lib_interface_eigrp_instance_create(enum nb_event event,
|
|||||||
break;
|
break;
|
||||||
case NB_EV_APPLY:
|
case NB_EV_APPLY:
|
||||||
ifp = nb_running_get_entry(dnode, NULL, true);
|
ifp = nb_running_get_entry(dnode, NULL, true);
|
||||||
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"));
|
eigrp = eigrp_get(yang_dnode_get_string(dnode, "./asn"),
|
||||||
|
VRF_DEFAULT);
|
||||||
eif = eigrp_interface_lookup(eigrp, ifp->name);
|
eif = eigrp_interface_lookup(eigrp, ifp->name);
|
||||||
if (eif == NULL)
|
if (eif == NULL)
|
||||||
return NB_ERR_INCONSISTENCY;
|
return NB_ERR_INCONSISTENCY;
|
||||||
|
@ -69,6 +69,8 @@ struct eigrp_metrics {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct eigrp {
|
struct eigrp {
|
||||||
|
vrf_id_t vrf_id;
|
||||||
|
|
||||||
uint16_t AS; /* Autonomous system number */
|
uint16_t AS; /* Autonomous system number */
|
||||||
uint16_t vrid; /* Virtual Router ID */
|
uint16_t vrid; /* Virtual Router ID */
|
||||||
uint8_t k_values[6]; /*Array for K values configuration*/
|
uint8_t k_values[6]; /*Array for K values configuration*/
|
||||||
|
@ -64,8 +64,6 @@ static struct eigrp_master eigrp_master;
|
|||||||
|
|
||||||
struct eigrp_master *eigrp_om;
|
struct eigrp_master *eigrp_om;
|
||||||
|
|
||||||
static struct eigrp *eigrp_new(const char *);
|
|
||||||
|
|
||||||
extern struct zclient *zclient;
|
extern struct zclient *zclient;
|
||||||
extern struct in_addr router_id_zebra;
|
extern struct in_addr router_id_zebra;
|
||||||
|
|
||||||
@ -136,12 +134,13 @@ void eigrp_master_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate new eigrp structure. */
|
/* Allocate new eigrp structure. */
|
||||||
static struct eigrp *eigrp_new(const char *AS)
|
static struct eigrp *eigrp_new(const char *AS, vrf_id_t vrf_id)
|
||||||
{
|
{
|
||||||
struct eigrp *eigrp = XCALLOC(MTYPE_EIGRP_TOP, sizeof(struct eigrp));
|
struct eigrp *eigrp = XCALLOC(MTYPE_EIGRP_TOP, sizeof(struct eigrp));
|
||||||
int eigrp_socket;
|
int eigrp_socket;
|
||||||
|
|
||||||
/* init information relevant to peers */
|
/* init information relevant to peers */
|
||||||
|
eigrp->vrf_id = vrf_id;
|
||||||
eigrp->vrid = 0;
|
eigrp->vrid = 0;
|
||||||
eigrp->AS = atoi(AS);
|
eigrp->AS = atoi(AS);
|
||||||
eigrp->router_id.s_addr = 0;
|
eigrp->router_id.s_addr = 0;
|
||||||
@ -217,13 +216,13 @@ static struct eigrp *eigrp_new(const char *AS)
|
|||||||
return eigrp;
|
return eigrp;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct eigrp *eigrp_get(const char *AS)
|
struct eigrp *eigrp_get(const char *AS, vrf_id_t vrf_id)
|
||||||
{
|
{
|
||||||
struct eigrp *eigrp;
|
struct eigrp *eigrp;
|
||||||
|
|
||||||
eigrp = eigrp_lookup();
|
eigrp = eigrp_lookup();
|
||||||
if (eigrp == NULL) {
|
if (eigrp == NULL) {
|
||||||
eigrp = eigrp_new(AS);
|
eigrp = eigrp_new(AS, vrf_id);
|
||||||
listnode_add(eigrp_om->eigrp, eigrp);
|
listnode_add(eigrp_om->eigrp, eigrp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ extern void eigrp_master_init(void);
|
|||||||
extern void eigrp_terminate(void);
|
extern void eigrp_terminate(void);
|
||||||
extern void eigrp_finish_final(struct eigrp *);
|
extern void eigrp_finish_final(struct eigrp *);
|
||||||
extern void eigrp_finish(struct eigrp *);
|
extern void eigrp_finish(struct eigrp *);
|
||||||
extern struct eigrp *eigrp_get(const char *);
|
extern struct eigrp *eigrp_get(const char *as, vrf_id_t vrf_id);
|
||||||
extern struct eigrp *eigrp_lookup(void);
|
extern struct eigrp *eigrp_lookup(void);
|
||||||
extern void eigrp_router_id_update(struct eigrp *);
|
extern void eigrp_router_id_update(struct eigrp *);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user