#define EIGRP_TOPOLOGY_TYPE_REMOTE_EXTERNAL 2 // Remote external network
/*EIGRP TT entry flags*/
-#define EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG (1 << 0)
-#define EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG (1 << 1)
-#define EIGRP_NEIGHBOR_ENTRY_INTABLE_FLAG (1 << 2)
-#define EIGRP_NEIGHBOR_ENTRY_EXTERNAL_FLAG (1 << 3)
+#define EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG (1 << 0)
+#define EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG (1 << 1)
+#define EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG (1 << 2)
+#define EIGRP_NEXTHOP_ENTRY_EXTERNAL_FLAG (1 << 3)
/*EIGRP FSM state count, event count*/
#define EIGRP_FSM_STATE_MAX 5
list_delete(successors);
}
-void show_ip_eigrp_neighbor_entry(struct vty *vty, struct eigrp *eigrp,
- struct eigrp_neighbor_entry *te, int *first)
+void show_ip_eigrp_nexthop_entry(struct vty *vty, struct eigrp *eigrp,
+ struct eigrp_nexthop_entry *te, int *first)
{
if (te->reported_distance == EIGRP_MAX_METRIC)
return;
int);
extern void show_ip_eigrp_prefix_entry(struct vty *,
struct eigrp_prefix_entry *);
-extern void show_ip_eigrp_neighbor_entry(struct vty *, struct eigrp *,
- struct eigrp_neighbor_entry *, int *);
+extern void show_ip_eigrp_nexthop_entry(struct vty *, struct eigrp *,
+ struct eigrp_nexthop_entry *, int *);
extern void eigrp_debug_init(void);
// Loading base information from message
// struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *entry = msg->entry;
+ struct eigrp_nexthop_entry *entry = msg->entry;
u_char actual_state = prefix->state;
enum metric_change change;
if (entry == NULL) {
- entry = eigrp_neighbor_entry_new();
+ entry = eigrp_nexthop_entry_new();
entry->adv_router = msg->adv_router;
entry->ei = msg->adv_router->ei;
entry->prefix = prefix;
switch (actual_state) {
case EIGRP_FSM_STATE_PASSIVE: {
- struct eigrp_neighbor_entry *head =
+ struct eigrp_nexthop_entry *head =
listnode_head(prefix->entries);
if (head->reported_distance < prefix->fdistance) {
}
case EIGRP_FSM_STATE_ACTIVE_0: {
if (msg->packet_type == EIGRP_OPC_REPLY) {
- struct eigrp_neighbor_entry *head =
+ struct eigrp_nexthop_entry *head =
listnode_head(prefix->entries);
listnode_delete(prefix->rij, entry->adv_router);
return EIGRP_FSM_EVENT_LR_FCN;
} else if (msg->packet_type == EIGRP_OPC_QUERY
&& (entry->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_QACT;
}
}
case EIGRP_FSM_STATE_ACTIVE_1: {
if (msg->packet_type == EIGRP_OPC_QUERY
- && (entry->flags & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ && (entry->flags & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_QACT;
} else if (msg->packet_type == EIGRP_OPC_REPLY) {
listnode_delete(prefix->rij, entry->adv_router);
if (change == METRIC_INCREASE
&& (entry->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_DINC;
} else if (prefix->rij->count) {
return EIGRP_FSM_KEEP_STATE;
}
} else if (msg->packet_type == EIGRP_OPC_UPDATE && change == 1
&& (entry->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_DINC;
}
return EIGRP_FSM_KEEP_STATE;
}
case EIGRP_FSM_STATE_ACTIVE_2: {
if (msg->packet_type == EIGRP_OPC_REPLY) {
- struct eigrp_neighbor_entry *head =
+ struct eigrp_nexthop_entry *head =
listnode_head(prefix->entries);
listnode_delete(prefix->rij, entry->adv_router);
if (change == METRIC_INCREASE
&& (entry->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_DINC;
} else if (prefix->rij->count) {
return EIGRP_FSM_KEEP_STATE;
}
} else if (msg->packet_type == EIGRP_OPC_UPDATE && change == 1
&& (entry->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)) {
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) {
return EIGRP_FSM_EVENT_DINC;
}
return EIGRP_FSM_KEEP_STATE;
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
struct list *successors = eigrp_topology_get_successor(prefix);
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
assert(successors); // If this is NULL we have shit the bed, fun huh?
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
struct list *successors = eigrp_topology_get_successor(prefix);
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
assert(successors); // If this is NULL somebody poked us in the eye.
int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg)
{
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *ne = listnode_head(prefix->entries);
+ struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries);
if (prefix->state == EIGRP_FSM_STATE_PASSIVE) {
if (!eigrp_metrics_is_same(prefix->reported_metric,
{
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *ne = listnode_head(prefix->entries);
+ struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries);
prefix->fdistance = prefix->distance = prefix->rdistance =
ne->distance;
int eigrp_fsm_event_dinc(struct eigrp_fsm_action_message *msg)
{
struct list *successors = eigrp_topology_get_successor(msg->prefix);
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
assert(successors); // Trump and his big hands
{
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *ne = listnode_head(prefix->entries);
+ struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries);
prefix->state = EIGRP_FSM_STATE_PASSIVE;
prefix->distance = prefix->rdistance = ne->distance;
{
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *best_successor;
+ struct eigrp_nexthop_entry *best_successor;
struct list *successors = eigrp_topology_get_successor(prefix);
assert(successors); // Routing without a stack
int eigrp_fsm_event_qact(struct eigrp_fsm_action_message *msg)
{
struct list *successors = eigrp_topology_get_successor(msg->prefix);
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
assert(successors); // Cats and no Dogs
int eigrp_if_up(struct eigrp_interface *ei)
{
struct eigrp_prefix_entry *pe;
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
struct eigrp_metrics metric;
struct eigrp_interface *ei2;
struct listnode *node, *nnode;
/*Add connected entry to topology table*/
- ne = eigrp_neighbor_entry_new();
+ ne = eigrp_nexthop_entry_new();
ne->ei = ei;
ne->reported_metric = metric;
ne->total_metric = metric;
ne->distance = eigrp_calculate_metrics(eigrp, metric);
ne->reported_distance = 0;
ne->adv_router = eigrp->neighbor_self;
- ne->flags = EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG;
+ ne->flags = EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG;
struct prefix dest_addr;
eigrp_prefix_entry_add(eigrp->topology_table, pe);
listnode_add(eigrp->topology_changes_internalIPV4, pe);
- eigrp_neighbor_entry_add(pe, ne);
+ eigrp_nexthop_entry_add(pe, ne);
for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode, ei2)) {
eigrp_update_send(ei2);
struct eigrp_fsm_action_message msg;
ne->prefix = pe;
- eigrp_neighbor_entry_add(pe, ne);
+ eigrp_nexthop_entry_add(pe, ne);
msg.packet_type = EIGRP_OPC_UPDATE;
msg.eigrp = eigrp;
DEFINE_MTYPE(EIGRPD, EIGRP_AUTH_TLV, "EIGRP AUTH TLV")
DEFINE_MTYPE(EIGRPD, EIGRP_AUTH_SHA256_TLV, "EIGRP SHA TLV")
DEFINE_MTYPE(EIGRPD, EIGRP_PREFIX_ENTRY, "EIGRP Prefix")
-DEFINE_MTYPE(EIGRPD, EIGRP_NEIGHBOR_ENTRY, "EIGRP Neighbor Entry")
+DEFINE_MTYPE(EIGRPD, EIGRP_NEXTHOP_ENTRY, "EIGRP Nexthop Entry")
DEFINE_MTYPE(EIGRPD, EIGRP_FSM_MSG, "EIGRP FSM Message")
DECLARE_MTYPE(EIGRP_AUTH_TLV)
DECLARE_MTYPE(EIGRP_AUTH_SHA256_TLV)
DECLARE_MTYPE(EIGRP_PREFIX_ENTRY)
-DECLARE_MTYPE(EIGRP_NEIGHBOR_ENTRY)
+DECLARE_MTYPE(EIGRP_NEXTHOP_ENTRY)
DECLARE_MTYPE(EIGRP_FSM_MSG)
#endif /* _FRR_EIGRP_MEMORY_H */
eigrp_nbr_delete(nbr);
}
-int eigrp_nbr_split_horizon_check(struct eigrp_neighbor_entry *ne, struct eigrp_interface *ei)
+int eigrp_nbr_split_horizon_check(struct eigrp_nexthop_entry *ne, struct eigrp_interface *ei)
{
if (ne->distance == EIGRP_MAX_METRIC)
return 0;
struct in_addr);
extern void eigrp_nbr_hard_restart(struct eigrp_neighbor *nbr, struct vty *vty);
-extern int eigrp_nbr_split_horizon_check(struct eigrp_neighbor_entry *ne,
+extern int eigrp_nbr_split_horizon_check(struct eigrp_nexthop_entry *ne,
struct eigrp_interface *ei);
#endif /* _ZEBRA_EIGRP_NEIGHBOR_H */
}
u_int32_t eigrp_calculate_total_metrics(struct eigrp *eigrp,
- struct eigrp_neighbor_entry *entry)
+ struct eigrp_nexthop_entry *entry)
{
entry->total_metric = entry->reported_metric;
uint64_t temp_delay = (uint64_t)entry->total_metric.delay
extern u_int32_t eigrp_calculate_metrics(struct eigrp *, struct eigrp_metrics);
extern u_int32_t eigrp_calculate_total_metrics(struct eigrp *,
- struct eigrp_neighbor_entry *);
+ struct eigrp_nexthop_entry *);
extern u_char eigrp_metrics_is_same(struct eigrp_metrics, struct eigrp_metrics);
extern void eigrp_external_routes_refresh(struct eigrp *, int);
* know)*/
if (dest != NULL) {
struct eigrp_fsm_action_message msg;
- struct eigrp_neighbor_entry *entry =
+ struct eigrp_nexthop_entry *entry =
eigrp_prefix_entry_lookup(dest->entries,
nbr);
msg.packet_type = EIGRP_OPC_SIAQUERY;
* know)*/
if (dest != NULL) {
struct eigrp_fsm_action_message msg;
- struct eigrp_neighbor_entry *entry =
+ struct eigrp_nexthop_entry *entry =
eigrp_prefix_entry_lookup(dest->entries,
nbr);
msg.packet_type = EIGRP_OPC_SIAQUERY;
};
/* EIGRP Topology table record structure */
-struct eigrp_neighbor_entry {
+struct eigrp_nexthop_entry {
struct eigrp_prefix_entry *prefix;
u_int32_t reported_distance; // distance reported by neighbor
u_int32_t distance; // sum of reported distance and link cost to
u_char packet_type; // UPDATE, QUERY, SIAQUERY, SIAREPLY
struct eigrp *eigrp; // which thread sent mesg
struct eigrp_neighbor *adv_router; // advertising neighbor
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
struct eigrp_prefix_entry *prefix;
msg_data_t data_type; // internal or external tlv type
struct eigrp_metrics metrics;
static int eigrp_prefix_entry_cmp(struct eigrp_prefix_entry *,
struct eigrp_prefix_entry *);
static void eigrp_prefix_entry_del(struct eigrp_prefix_entry *);
-static int eigrp_neighbor_entry_cmp(struct eigrp_neighbor_entry *,
- struct eigrp_neighbor_entry *);
+static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *,
+ struct eigrp_nexthop_entry *);
/*
* Returns linkedlist used as topology table
sizeof(struct eigrp_prefix_entry));
new->entries = list_new();
new->rij = list_new();
- new->entries->cmp = (int (*)(void *, void *))eigrp_neighbor_entry_cmp;
+ new->entries->cmp = (int (*)(void *, void *))eigrp_nexthop_entry_cmp;
new->distance = new->fdistance = new->rdistance = EIGRP_MAX_METRIC;
new->destination = NULL;
/*
* Topology entry comparison
*/
-static int eigrp_neighbor_entry_cmp(struct eigrp_neighbor_entry *entry1,
- struct eigrp_neighbor_entry *entry2)
+static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *entry1,
+ struct eigrp_nexthop_entry *entry2)
{
if (entry1->distance < entry2->distance)
return -1;
* Returns new topology entry
*/
-struct eigrp_neighbor_entry *eigrp_neighbor_entry_new()
+struct eigrp_nexthop_entry *eigrp_nexthop_entry_new()
{
- struct eigrp_neighbor_entry *new;
+ struct eigrp_nexthop_entry *new;
- new = XCALLOC(MTYPE_EIGRP_NEIGHBOR_ENTRY,
- sizeof(struct eigrp_neighbor_entry));
+ new = XCALLOC(MTYPE_EIGRP_NEXTHOP_ENTRY,
+ sizeof(struct eigrp_nexthop_entry));
new->reported_distance = EIGRP_MAX_METRIC;
new->distance = EIGRP_MAX_METRIC;
/*
* Adding topology entry to topology node
*/
-void eigrp_neighbor_entry_add(struct eigrp_prefix_entry *node,
- struct eigrp_neighbor_entry *entry)
+void eigrp_nexthop_entry_add(struct eigrp_prefix_entry *node,
+ struct eigrp_nexthop_entry *entry)
{
struct list *l = list_new();
/*
* Deleting topology entry from topology node
*/
-void eigrp_neighbor_entry_delete(struct eigrp_prefix_entry *node,
- struct eigrp_neighbor_entry *entry)
+void eigrp_nexthop_entry_delete(struct eigrp_prefix_entry *node,
+ struct eigrp_nexthop_entry *entry)
{
if (listnode_lookup(node->entries, entry) != NULL) {
listnode_delete(node->entries, entry);
eigrp_zebra_route_delete(node->destination);
- XFREE(MTYPE_EIGRP_NEIGHBOR_ENTRY, entry);
+ XFREE(MTYPE_EIGRP_NEXTHOP_ENTRY, entry);
}
}
struct list *eigrp_topology_get_successor(struct eigrp_prefix_entry *table_node)
{
struct list *successors = list_new();
- struct eigrp_neighbor_entry *data;
+ struct eigrp_nexthop_entry *data;
struct listnode *node1, *node2;
for (ALL_LIST_ELEMENTS(table_node->entries, node1, node2, data)) {
- if (data->flags & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG) {
+ if (data->flags & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG) {
listnode_add(successors, data);
}
}
return successors;
}
-struct eigrp_neighbor_entry *
+struct eigrp_nexthop_entry *
eigrp_prefix_entry_lookup(struct list *entries, struct eigrp_neighbor *nbr)
{
- struct eigrp_neighbor_entry *data;
+ struct eigrp_nexthop_entry *data;
struct listnode *node, *nnode;
for (ALL_LIST_ELEMENTS(entries, node, nnode, data)) {
if (data->adv_router == nbr) {
{
struct listnode *node1, *node11, *node2, *node22;
struct eigrp_prefix_entry *prefix;
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
/* create new empty list for prefixes storage */
struct list *prefixes = list_new();
{
struct eigrp *eigrp = msg->eigrp;
struct eigrp_prefix_entry *prefix = msg->prefix;
- struct eigrp_neighbor_entry *entry = msg->entry;
+ struct eigrp_nexthop_entry *entry = msg->entry;
enum metric_change change = METRIC_SAME;
u_int32_t new_reported_distance;
void eigrp_topology_update_node_flags(struct eigrp_prefix_entry *dest)
{
struct listnode *node;
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
struct eigrp *eigrp = eigrp_lookup();
for (ALL_LIST_ELEMENTS_RO(dest->entries, node, entry)) {
<= (uint64_t)(dest->distance * eigrp->variance))
&& entry->distance != EIGRP_MAX_METRIC) // is successor
{
- entry->flags |= EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG;
- entry->flags &= ~EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG;
+ entry->flags |= EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG;
+ entry->flags &= ~EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG;
} else if (entry->reported_distance
< dest->fdistance) // is feasible successor
{
- entry->flags |= EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG;
- entry->flags &= ~EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG;
+ entry->flags |= EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG;
+ entry->flags &= ~EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG;
} else {
- entry->flags &= ~EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG;
- entry->flags &= ~EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG;
+ entry->flags &= ~EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG;
+ entry->flags &= ~EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG;
}
}
}
struct list *successors =
eigrp_topology_get_successor_max(prefix, eigrp->max_paths);
struct listnode *node;
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
if (successors) {
eigrp_zebra_route_add(prefix->destination,
successors);
for (ALL_LIST_ELEMENTS_RO(successors, node, entry))
- entry->flags |= EIGRP_NEIGHBOR_ENTRY_INTABLE_FLAG;
+ entry->flags |= EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG;
list_delete(successors);
} else {
eigrp_zebra_route_delete(prefix->destination);
for (ALL_LIST_ELEMENTS_RO(prefix->entries, node, entry))
- entry->flags &= ~EIGRP_NEIGHBOR_ENTRY_INTABLE_FLAG;
+ entry->flags &= ~EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG;
}
}
{
struct listnode *node1, *node11, *node2, *node22;
struct eigrp_prefix_entry *prefix;
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
for (ALL_LIST_ELEMENTS(eigrp->topology_table, node1, node11, prefix)) {
for (ALL_LIST_ELEMENTS(prefix->entries, node2, node22, entry)) {
{
struct listnode *node1, *node2;
- struct eigrp_neighbor_entry *entry;
+ struct eigrp_nexthop_entry *entry;
for (ALL_LIST_ELEMENTS(prefix->entries, node1, node2, entry)) {
if (entry->distance == EIGRP_MAX_METRIC) {
- eigrp_neighbor_entry_delete(prefix, entry);
+ eigrp_nexthop_entry_delete(prefix, entry);
}
}
if (prefix->distance == EIGRP_MAX_METRIC
extern struct list *eigrp_topology_new(void);
extern void eigrp_topology_init(struct list *);
extern struct eigrp_prefix_entry *eigrp_prefix_entry_new(void);
-extern struct eigrp_neighbor_entry *eigrp_neighbor_entry_new(void);
+extern struct eigrp_nexthop_entry *eigrp_nexthop_entry_new(void);
extern void eigrp_topology_free(struct list *);
extern void eigrp_topology_cleanup(struct list *);
extern void eigrp_prefix_entry_add(struct list *, struct eigrp_prefix_entry *);
-extern void eigrp_neighbor_entry_add(struct eigrp_prefix_entry *,
- struct eigrp_neighbor_entry *);
+extern void eigrp_nexthop_entry_add(struct eigrp_prefix_entry *,
+ struct eigrp_nexthop_entry *);
extern void eigrp_prefix_entry_delete(struct list *,
struct eigrp_prefix_entry *);
-extern void eigrp_neighbor_entry_delete(struct eigrp_prefix_entry *,
- struct eigrp_neighbor_entry *);
+extern void eigrp_nexthop_entry_delete(struct eigrp_prefix_entry *,
+ struct eigrp_nexthop_entry *);
extern void eigrp_topology_delete_all(struct list *);
extern unsigned int eigrp_topology_table_isempty(struct list *);
extern struct eigrp_prefix_entry *
extern struct list *
eigrp_topology_get_successor_max(struct eigrp_prefix_entry *pe,
unsigned int maxpaths);
-extern struct eigrp_neighbor_entry *
+extern struct eigrp_nexthop_entry *
eigrp_prefix_entry_lookup(struct list *, struct eigrp_neighbor *);
extern struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *,
struct eigrp_neighbor *);
/* set delay to MAX */
fsm_msg.metrics.delay = EIGRP_MAX_METRIC;
- struct eigrp_neighbor_entry *entry =
+ struct eigrp_nexthop_entry *entry =
eigrp_prefix_entry_lookup(prefix->entries, nbr);
fsm_msg.packet_type = EIGRP_OPC_UPDATE;
struct eigrp_neighbor *nbr;
struct TLV_IPv4_Internal_type *tlv;
struct eigrp_prefix_entry *pe;
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
u_int32_t flags;
u_int16_t type;
u_int16_t length;
dest);
struct eigrp_fsm_action_message msg;
- struct eigrp_neighbor_entry *entry =
+ struct eigrp_nexthop_entry *entry =
eigrp_prefix_entry_lookup(dest->entries,
nbr);
pe->state = EIGRP_FSM_STATE_PASSIVE;
pe->nt = EIGRP_TOPOLOGY_TYPE_REMOTE;
- ne = eigrp_neighbor_entry_new();
+ ne = eigrp_nexthop_entry_new();
ne->ei = ei;
ne->adv_router = nbr;
ne->reported_metric = tlv->metric;
pe->fdistance = pe->distance = pe->rdistance =
ne->distance;
ne->prefix = pe;
- ne->flags = EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG;
+ ne->flags = EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG;
eigrp_prefix_entry_add(eigrp->topology_table,
pe);
- eigrp_neighbor_entry_add(pe, ne);
+ eigrp_nexthop_entry_add(pe, ne);
pe->distance = pe->fdistance = pe->rdistance =
ne->distance;
pe->reported_metric = ne->total_metric;
{
struct eigrp_packet *ep;
u_int16_t length = EIGRP_HEADER_LEN;
- struct eigrp_neighbor_entry *te;
+ struct eigrp_nexthop_entry *te;
struct eigrp_prefix_entry *pe;
struct listnode *node, *node2, *nnode, *nnode2;
struct eigrp_interface *ei = nbr->ei;
has_tlv = 0;
for (ALL_LIST_ELEMENTS(ei->eigrp->topology_changes_internalIPV4, node,
nnode, pe)) {
- struct eigrp_neighbor_entry *ne;
+ struct eigrp_nexthop_entry *ne;
if (!(pe->req_action & EIGRP_FSM_NEED_UPDATE))
continue;
/* prepare message for FSM */
struct eigrp_fsm_action_message fsm_msg;
- struct eigrp_neighbor_entry *entry =
+ struct eigrp_nexthop_entry *entry =
eigrp_prefix_entry_lookup(pe->entries, nbr);
fsm_msg.packet_type = EIGRP_OPC_UPDATE;
struct eigrp *eigrp;
struct listnode *node, *node2;
struct eigrp_prefix_entry *tn;
- struct eigrp_neighbor_entry *te;
+ struct eigrp_nexthop_entry *te;
int first;
eigrp = eigrp_lookup();
for (ALL_LIST_ELEMENTS_RO(tn->entries, node2, te)) {
if (argc == 5
|| (((te->flags
- & EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)
- == EIGRP_NEIGHBOR_ENTRY_SUCCESSOR_FLAG)
+ & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)
+ == EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)
|| ((te->flags
- & EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG)
- == EIGRP_NEIGHBOR_ENTRY_FSUCCESSOR_FLAG))) {
- show_ip_eigrp_neighbor_entry(vty, eigrp, te,
+ & EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG)
+ == EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG))) {
+ show_ip_eigrp_nexthop_entry(vty, eigrp, te,
&first);
first = 0;
}
{
struct zapi_route api;
struct zapi_nexthop *api_nh;
- struct eigrp_neighbor_entry *te;
+ struct eigrp_nexthop_entry *te;
struct listnode *node;
int count = 0;