diff options
author | Donnie Savage <diivious@hotmail.com> | 2020-12-11 22:09:47 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@nvidia.com> | 2021-01-12 13:45:48 +0100 |
commit | dc4accdd53be819b961710b71049fd37e94c915d (patch) | |
tree | 7f054b8ef1ae3ea205c48ea4fdfdcdf7981544c5 /eigrpd | |
parent | eigrpd: Create eigrp_yang.h and move stuff around (diff) | |
download | frr-dc4accdd53be819b961710b71049fd37e94c915d.tar.xz frr-dc4accdd53be819b961710b71049fd37e94c915d.zip |
eigrpd: Rename nexthop_entry and prefix_entry to better names
Rename struct eigrp_nexthop_entry to struct eigrp_route_descriptor
Rename struct eigrp_prefix_entry to struct eigrp_prefix_descriptor
Fix all the associated function names as well.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Donnie SAvage <diivious@hotmail.com>
Diffstat (limited to 'eigrpd')
-rw-r--r-- | eigrpd/eigrp_const.h | 8 | ||||
-rw-r--r-- | eigrpd/eigrp_dump.c | 10 | ||||
-rw-r--r-- | eigrpd/eigrp_dump.h | 10 | ||||
-rw-r--r-- | eigrpd/eigrp_fsm.c | 52 | ||||
-rw-r--r-- | eigrpd/eigrp_interface.c | 21 | ||||
-rw-r--r-- | eigrpd/eigrp_memory.c | 4 | ||||
-rw-r--r-- | eigrpd/eigrp_memory.h | 4 | ||||
-rw-r--r-- | eigrpd/eigrp_neighbor.c | 2 | ||||
-rw-r--r-- | eigrpd/eigrp_neighbor.h | 2 | ||||
-rw-r--r-- | eigrpd/eigrp_network.c | 2 | ||||
-rw-r--r-- | eigrpd/eigrp_network.h | 2 | ||||
-rw-r--r-- | eigrpd/eigrp_packet.c | 2 | ||||
-rw-r--r-- | eigrpd/eigrp_packet.h | 17 | ||||
-rw-r--r-- | eigrpd/eigrp_query.c | 12 | ||||
-rw-r--r-- | eigrpd/eigrp_reply.c | 19 | ||||
-rw-r--r-- | eigrpd/eigrp_routemap.c | 4 | ||||
-rw-r--r-- | eigrpd/eigrp_siaquery.c | 10 | ||||
-rw-r--r-- | eigrpd/eigrp_siareply.c | 10 | ||||
-rw-r--r-- | eigrpd/eigrp_structs.h | 30 | ||||
-rw-r--r-- | eigrpd/eigrp_topology.c | 124 | ||||
-rw-r--r-- | eigrpd/eigrp_topology.h | 52 | ||||
-rw-r--r-- | eigrpd/eigrp_update.c | 56 | ||||
-rw-r--r-- | eigrpd/eigrp_vty.c | 24 | ||||
-rw-r--r-- | eigrpd/eigrp_zebra.c | 2 |
24 files changed, 253 insertions, 226 deletions
diff --git a/eigrpd/eigrp_const.h b/eigrpd/eigrp_const.h index d3d9bca82..149cf00ef 100644 --- a/eigrpd/eigrp_const.h +++ b/eigrpd/eigrp_const.h @@ -122,10 +122,10 @@ enum metric_change { METRIC_DECREASE, METRIC_SAME, METRIC_INCREASE }; #define EIGRP_TOPOLOGY_TYPE_REMOTE_EXTERNAL 2 // Remote external network /*EIGRP TT entry flags*/ -#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) +#define EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG (1 << 0) +#define EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG (1 << 1) +#define EIGRP_ROUTE_DESCRIPTOR_INTABLE_FLAG (1 << 2) +#define EIGRP_ROUTE_DESCRIPTOR_EXTERNAL_FLAG (1 << 3) /*EIGRP FSM state count, event count*/ #define EIGRP_FSM_STATE_MAX 5 diff --git a/eigrpd/eigrp_dump.c b/eigrpd/eigrp_dump.c index dfce2acad..e1ad51a9d 100644 --- a/eigrpd/eigrp_dump.c +++ b/eigrpd/eigrp_dump.c @@ -236,7 +236,8 @@ void show_ip_eigrp_topology_header(struct vty *vty, struct eigrp *eigrp) "Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply\n r - reply Status, s - sia Status\n\n"); } -void show_ip_eigrp_prefix_entry(struct vty *vty, struct eigrp_prefix_entry *tn) +void show_ip_eigrp_prefix_descriptor(struct vty *vty, + struct eigrp_prefix_descriptor *tn) { struct list *successors = eigrp_topology_get_successor(tn); @@ -251,14 +252,15 @@ void show_ip_eigrp_prefix_entry(struct vty *vty, struct eigrp_prefix_entry *tn) list_delete(&successors); } -void show_ip_eigrp_nexthop_entry(struct vty *vty, struct eigrp *eigrp, - struct eigrp_nexthop_entry *te, bool *first) +void show_ip_eigrp_route_descriptor(struct vty *vty, struct eigrp *eigrp, + struct eigrp_route_descriptor *te, + bool *first) { if (te->reported_distance == EIGRP_MAX_METRIC) return; if (*first) { - show_ip_eigrp_prefix_entry(vty, te->prefix); + show_ip_eigrp_prefix_descriptor(vty, te->prefix); *first = false; } diff --git a/eigrpd/eigrp_dump.h b/eigrpd/eigrp_dump.h index 348356bb3..0d512fc63 100644 --- a/eigrpd/eigrp_dump.h +++ b/eigrpd/eigrp_dump.h @@ -151,11 +151,11 @@ extern void show_ip_eigrp_interface_sub(struct vty *, struct eigrp *, struct eigrp_interface *); extern void show_ip_eigrp_neighbor_sub(struct vty *, struct eigrp_neighbor *, int); -extern void show_ip_eigrp_prefix_entry(struct vty *, - struct eigrp_prefix_entry *); -extern void show_ip_eigrp_nexthop_entry(struct vty *vty, struct eigrp *eigrp, - struct eigrp_nexthop_entry *ne, - bool *first); +extern void show_ip_eigrp_prefix_descriptor(struct vty *vty, + struct eigrp_prefix_descriptor *tn); +extern void show_ip_eigrp_route_descriptor(struct vty *vty, struct eigrp *eigrp, + struct eigrp_route_descriptor *ne, + bool *first); extern void eigrp_debug_init(void); diff --git a/eigrpd/eigrp_fsm.c b/eigrpd/eigrp_fsm.c index a69a3eec0..fb7336879 100644 --- a/eigrpd/eigrp_fsm.c +++ b/eigrpd/eigrp_fsm.c @@ -262,13 +262,13 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) { // Loading base information from message // struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *entry = msg->entry; + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *entry = msg->entry; uint8_t actual_state = prefix->state; enum metric_change change; if (entry == NULL) { - entry = eigrp_nexthop_entry_new(); + entry = eigrp_route_descriptor_new(); entry->adv_router = msg->adv_router; entry->ei = msg->adv_router->ei; entry->prefix = prefix; @@ -286,7 +286,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) switch (actual_state) { case EIGRP_FSM_STATE_PASSIVE: { - struct eigrp_nexthop_entry *head = + struct eigrp_route_descriptor *head = listnode_head(prefix->entries); if (head->reported_distance < prefix->fdistance) { @@ -307,7 +307,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) } case EIGRP_FSM_STATE_ACTIVE_0: { if (msg->packet_type == EIGRP_OPC_REPLY) { - struct eigrp_nexthop_entry *head = + struct eigrp_route_descriptor *head = listnode_head(prefix->entries); listnode_delete(prefix->rij, entry->adv_router); @@ -322,7 +322,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) return EIGRP_FSM_EVENT_LR_FCN; } else if (msg->packet_type == EIGRP_OPC_QUERY && (entry->flags - & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG)) { return EIGRP_FSM_EVENT_QACT; } @@ -332,14 +332,14 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) } case EIGRP_FSM_STATE_ACTIVE_1: { if (msg->packet_type == EIGRP_OPC_QUERY - && (entry->flags & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + && (entry->flags & EIGRP_ROUTE_DESCRIPTOR_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_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG)) { return EIGRP_FSM_EVENT_DINC; } else if (prefix->rij->count) { return EIGRP_FSM_KEEP_STATE; @@ -350,7 +350,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) } else if (msg->packet_type == EIGRP_OPC_UPDATE && change == METRIC_INCREASE && (entry->flags - & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG)) { return EIGRP_FSM_EVENT_DINC; } return EIGRP_FSM_KEEP_STATE; @@ -359,7 +359,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) } case EIGRP_FSM_STATE_ACTIVE_2: { if (msg->packet_type == EIGRP_OPC_REPLY) { - struct eigrp_nexthop_entry *head = + struct eigrp_route_descriptor *head = listnode_head(prefix->entries); listnode_delete(prefix->rij, entry->adv_router); @@ -385,7 +385,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) if (change == METRIC_INCREASE && (entry->flags - & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG)) { return EIGRP_FSM_EVENT_DINC; } else if (prefix->rij->count) { return EIGRP_FSM_KEEP_STATE; @@ -396,7 +396,7 @@ eigrp_get_fsm_event(struct eigrp_fsm_action_message *msg) } else if (msg->packet_type == EIGRP_OPC_UPDATE && change == METRIC_INCREASE && (entry->flags - & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)) { + & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG)) { return EIGRP_FSM_EVENT_DINC; } return EIGRP_FSM_KEEP_STATE; @@ -434,9 +434,9 @@ int eigrp_fsm_event(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_nq_fcn(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; + struct eigrp_prefix_descriptor *prefix = msg->prefix; struct list *successors = eigrp_topology_get_successor(prefix); - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; assert(successors); // If this is NULL we have shit the bed, fun huh? @@ -461,9 +461,9 @@ int eigrp_fsm_event_nq_fcn(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_q_fcn(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; + struct eigrp_prefix_descriptor *prefix = msg->prefix; struct list *successors = eigrp_topology_get_successor(prefix); - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; assert(successors); // If this is NULL somebody poked us in the eye. @@ -487,8 +487,8 @@ int eigrp_fsm_event_q_fcn(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries); + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *ne = listnode_head(prefix->entries); if (prefix->state == EIGRP_FSM_STATE_PASSIVE) { if (!eigrp_metrics_is_same(prefix->reported_metric, @@ -515,8 +515,8 @@ int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_lr(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries); + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *ne = listnode_head(prefix->entries); prefix->fdistance = prefix->distance = prefix->rdistance = ne->distance; prefix->reported_metric = ne->total_metric; @@ -545,7 +545,7 @@ int eigrp_fsm_event_lr(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_dinc(struct eigrp_fsm_action_message *msg) { struct list *successors = eigrp_topology_get_successor(msg->prefix); - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; assert(successors); // Trump and his big hands @@ -566,8 +566,8 @@ int eigrp_fsm_event_dinc(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_lr_fcs(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *ne = listnode_head(prefix->entries); + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *ne = listnode_head(prefix->entries); prefix->state = EIGRP_FSM_STATE_PASSIVE; prefix->distance = prefix->rdistance = ne->distance; @@ -598,8 +598,8 @@ int eigrp_fsm_event_lr_fcs(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_lr_fcn(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *best_successor; + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *best_successor; struct list *successors = eigrp_topology_get_successor(prefix); assert(successors); // Routing without a stack @@ -628,7 +628,7 @@ int eigrp_fsm_event_lr_fcn(struct eigrp_fsm_action_message *msg) int eigrp_fsm_event_qact(struct eigrp_fsm_action_message *msg) { struct list *successors = eigrp_topology_get_successor(msg->prefix); - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; assert(successors); // Cats and no Dogs diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c index dd43dd047..8400102c8 100644 --- a/eigrpd/eigrp_interface.c +++ b/eigrpd/eigrp_interface.c @@ -229,8 +229,8 @@ void eigrp_del_if_params(struct eigrp_if_params *eip) int eigrp_if_up(struct eigrp_interface *ei) { - struct eigrp_prefix_entry *pe; - struct eigrp_nexthop_entry *ne; + struct eigrp_prefix_descriptor *pe; + struct eigrp_route_descriptor *ne; struct eigrp_metrics metric; struct eigrp_interface *ei2; struct listnode *node, *nnode; @@ -263,14 +263,14 @@ int eigrp_if_up(struct eigrp_interface *ei) /*Add connected entry to topology table*/ - ne = eigrp_nexthop_entry_new(); + ne = eigrp_route_descriptor_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_NEXTHOP_ENTRY_SUCCESSOR_FLAG; + ne->flags = EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG; struct prefix dest_addr; @@ -280,7 +280,7 @@ int eigrp_if_up(struct eigrp_interface *ei) &dest_addr); if (pe == NULL) { - pe = eigrp_prefix_entry_new(); + pe = eigrp_prefix_descriptor_new(); pe->serno = eigrp->serno; pe->destination = (struct prefix *)prefix_ipv4_new(); prefix_copy(pe->destination, &dest_addr); @@ -292,10 +292,10 @@ int eigrp_if_up(struct eigrp_interface *ei) pe->state = EIGRP_FSM_STATE_PASSIVE; pe->fdistance = eigrp_calculate_metrics(eigrp, metric); pe->req_action |= EIGRP_FSM_NEED_UPDATE; - eigrp_prefix_entry_add(eigrp->topology_table, pe); + eigrp_prefix_descriptor_add(eigrp->topology_table, pe); listnode_add(eigrp->topology_changes_internalIPV4, pe); - eigrp_nexthop_entry_add(eigrp, pe, ne); + eigrp_route_descriptor_add(eigrp, pe, ne); for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode, ei2)) { eigrp_update_send(ei2); @@ -307,7 +307,7 @@ int eigrp_if_up(struct eigrp_interface *ei) struct eigrp_fsm_action_message msg; ne->prefix = pe; - eigrp_nexthop_entry_add(eigrp, pe, ne); + eigrp_route_descriptor_add(eigrp, pe, ne); msg.packet_type = EIGRP_OPC_UPDATE; msg.eigrp = eigrp; @@ -416,7 +416,7 @@ uint8_t eigrp_default_iftype(struct interface *ifp) void eigrp_if_free(struct eigrp_interface *ei, int source) { struct prefix dest_addr; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; struct eigrp *eigrp = ei->eigrp; if (source == INTERFACE_DOWN_BY_VTY) { @@ -429,7 +429,8 @@ void eigrp_if_free(struct eigrp_interface *ei, int source) pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table, &dest_addr); if (pe) - eigrp_prefix_entry_delete(eigrp, eigrp->topology_table, pe); + eigrp_prefix_descriptor_delete(eigrp, eigrp->topology_table, + pe); eigrp_if_down(ei); diff --git a/eigrpd/eigrp_memory.c b/eigrpd/eigrp_memory.c index 85b14c28c..57ca78534 100644 --- a/eigrpd/eigrp_memory.c +++ b/eigrpd/eigrp_memory.c @@ -37,6 +37,6 @@ DEFINE_MTYPE(EIGRPD, EIGRP_IPV4_INT_TLV, "EIGRP IPv4 TLV") DEFINE_MTYPE(EIGRPD, EIGRP_SEQ_TLV, "EIGRP SEQ TLV") 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_NEXTHOP_ENTRY, "EIGRP Nexthop Entry") +DEFINE_MTYPE(EIGRPD, EIGRP_PREFIX_DESCRIPTOR, "EIGRP Prefix") +DEFINE_MTYPE(EIGRPD, EIGRP_ROUTE_DESCRIPTOR, "EIGRP Nexthop Entry") DEFINE_MTYPE(EIGRPD, EIGRP_FSM_MSG, "EIGRP FSM Message") diff --git a/eigrpd/eigrp_memory.h b/eigrpd/eigrp_memory.h index e4d02c09d..21ecba2aa 100644 --- a/eigrpd/eigrp_memory.h +++ b/eigrpd/eigrp_memory.h @@ -36,8 +36,8 @@ DECLARE_MTYPE(EIGRP_IPV4_INT_TLV) DECLARE_MTYPE(EIGRP_SEQ_TLV) DECLARE_MTYPE(EIGRP_AUTH_TLV) DECLARE_MTYPE(EIGRP_AUTH_SHA256_TLV) -DECLARE_MTYPE(EIGRP_PREFIX_ENTRY) -DECLARE_MTYPE(EIGRP_NEXTHOP_ENTRY) +DECLARE_MTYPE(EIGRP_PREFIX_DESCRIPTOR) +DECLARE_MTYPE(EIGRP_ROUTE_DESCRIPTOR) DECLARE_MTYPE(EIGRP_FSM_MSG) #endif /* _FRR_EIGRP_MEMORY_H */ diff --git a/eigrpd/eigrp_neighbor.c b/eigrpd/eigrp_neighbor.c index 2d5bb0a7d..1da2f7a10 100644 --- a/eigrpd/eigrp_neighbor.c +++ b/eigrpd/eigrp_neighbor.c @@ -343,7 +343,7 @@ void eigrp_nbr_hard_restart(struct eigrp_neighbor *nbr, struct vty *vty) eigrp_nbr_delete(nbr); } -int eigrp_nbr_split_horizon_check(struct eigrp_nexthop_entry *ne, +int eigrp_nbr_split_horizon_check(struct eigrp_route_descriptor *ne, struct eigrp_interface *ei) { if (ne->distance == EIGRP_MAX_METRIC) diff --git a/eigrpd/eigrp_neighbor.h b/eigrpd/eigrp_neighbor.h index 1c308fa98..80ab1eded 100644 --- a/eigrpd/eigrp_neighbor.h +++ b/eigrpd/eigrp_neighbor.h @@ -54,6 +54,6 @@ extern struct eigrp_neighbor * eigrp_nbr_lookup_by_addr_process(struct eigrp *eigrp, struct in_addr addr); extern void eigrp_nbr_hard_restart(struct eigrp_neighbor *nbr, struct vty *vty); -extern int eigrp_nbr_split_horizon_check(struct eigrp_nexthop_entry *ne, +extern int eigrp_nbr_split_horizon_check(struct eigrp_route_descriptor *ne, struct eigrp_interface *ei); #endif /* _ZEBRA_EIGRP_NEIGHBOR_H */ diff --git a/eigrpd/eigrp_network.c b/eigrpd/eigrp_network.c index 51b499895..cb8f52c6d 100644 --- a/eigrpd/eigrp_network.c +++ b/eigrpd/eigrp_network.c @@ -380,7 +380,7 @@ uint32_t eigrp_calculate_metrics(struct eigrp *eigrp, } uint32_t eigrp_calculate_total_metrics(struct eigrp *eigrp, - struct eigrp_nexthop_entry *entry) + struct eigrp_route_descriptor *entry) { struct eigrp_interface *ei = entry->ei; diff --git a/eigrpd/eigrp_network.h b/eigrpd/eigrp_network.h index 7839fc946..831810abe 100644 --- a/eigrpd/eigrp_network.h +++ b/eigrpd/eigrp_network.h @@ -45,7 +45,7 @@ extern void eigrp_adjust_sndbuflen(struct eigrp *, unsigned int); extern uint32_t eigrp_calculate_metrics(struct eigrp *, struct eigrp_metrics); extern uint32_t eigrp_calculate_total_metrics(struct eigrp *, - struct eigrp_nexthop_entry *); + struct eigrp_route_descriptor *); extern uint8_t eigrp_metrics_is_same(struct eigrp_metrics, struct eigrp_metrics); extern void eigrp_external_routes_refresh(struct eigrp *, int); diff --git a/eigrpd/eigrp_packet.c b/eigrpd/eigrp_packet.c index f5f6ab5df..252cd647a 100644 --- a/eigrpd/eigrp_packet.c +++ b/eigrpd/eigrp_packet.c @@ -1144,7 +1144,7 @@ struct TLV_IPv4_Internal_type *eigrp_read_ipv4_tlv(struct stream *s) } uint16_t eigrp_add_internalTLV_to_stream(struct stream *s, - struct eigrp_prefix_entry *pe) + struct eigrp_prefix_descriptor *pe) { uint16_t length; diff --git a/eigrpd/eigrp_packet.h b/eigrpd/eigrp_packet.h index f354615fd..ed8c212a2 100644 --- a/eigrpd/eigrp_packet.h +++ b/eigrpd/eigrp_packet.h @@ -56,8 +56,9 @@ extern void eigrp_fifo_reset(struct eigrp_fifo *); extern void eigrp_send_packet_reliably(struct eigrp_neighbor *); extern struct TLV_IPv4_Internal_type *eigrp_read_ipv4_tlv(struct stream *); -extern uint16_t eigrp_add_internalTLV_to_stream(struct stream *, - struct eigrp_prefix_entry *); +extern uint16_t +eigrp_add_internalTLV_to_stream(struct stream *s, + struct eigrp_prefix_descriptor *pe); extern uint16_t eigrp_add_authTLV_MD5_to_stream(struct stream *, struct eigrp_interface *); extern uint16_t eigrp_add_authTLV_SHA256_to_stream(struct stream *, @@ -113,8 +114,8 @@ extern uint32_t eigrp_query_send_all(struct eigrp *); /* * These externs are found in eigrp_reply.c */ -extern void eigrp_send_reply(struct eigrp_neighbor *, - struct eigrp_prefix_entry *); +extern void eigrp_send_reply(struct eigrp_neighbor *neigh, + struct eigrp_prefix_descriptor *pe); extern void eigrp_reply_receive(struct eigrp *, struct ip *, struct eigrp_header *, struct stream *, struct eigrp_interface *, int); @@ -122,8 +123,8 @@ extern void eigrp_reply_receive(struct eigrp *, struct ip *, /* * These externs are found in eigrp_siaquery.c */ -extern void eigrp_send_siaquery(struct eigrp_neighbor *, - struct eigrp_prefix_entry *); +extern void eigrp_send_siaquery(struct eigrp_neighbor *neigh, + struct eigrp_prefix_descriptor *pe); extern void eigrp_siaquery_receive(struct eigrp *, struct ip *, struct eigrp_header *, struct stream *, struct eigrp_interface *, int); @@ -131,8 +132,8 @@ extern void eigrp_siaquery_receive(struct eigrp *, struct ip *, /* * These externs are found in eigrp_siareply.c */ -extern void eigrp_send_siareply(struct eigrp_neighbor *, - struct eigrp_prefix_entry *); +extern void eigrp_send_siareply(struct eigrp_neighbor *neigh, + struct eigrp_prefix_descriptor *pe); extern void eigrp_siareply_receive(struct eigrp *, struct ip *, struct eigrp_header *, struct stream *, struct eigrp_interface *, int); diff --git a/eigrpd/eigrp_query.c b/eigrpd/eigrp_query.c index 84dcf5e2d..0ab7b59db 100644 --- a/eigrpd/eigrp_query.c +++ b/eigrpd/eigrp_query.c @@ -58,7 +58,7 @@ uint32_t eigrp_query_send_all(struct eigrp *eigrp) { struct eigrp_interface *iface; struct listnode *node, *node2, *nnode2; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; uint32_t counter; if (eigrp == NULL) { @@ -118,7 +118,7 @@ void eigrp_query_receive(struct eigrp *eigrp, struct ip *iph, dest_addr.family = AF_INET; dest_addr.u.prefix4 = tlv->destination; dest_addr.prefixlen = tlv->prefix_length; - struct eigrp_prefix_entry *dest = + struct eigrp_prefix_descriptor *dest = eigrp_topology_table_lookup_ipv4( eigrp->topology_table, &dest_addr); @@ -126,9 +126,9 @@ void eigrp_query_receive(struct eigrp *eigrp, struct ip *iph, * know)*/ if (dest != NULL) { struct eigrp_fsm_action_message msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(dest->entries, - nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup( + dest->entries, nbr); msg.packet_type = EIGRP_OPC_QUERY; msg.eigrp = eigrp; msg.data_type = EIGRP_INT; @@ -164,7 +164,7 @@ void eigrp_send_query(struct eigrp_interface *ei) uint16_t length = EIGRP_HEADER_LEN; struct listnode *node, *nnode, *node2, *nnode2; struct eigrp_neighbor *nbr; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; bool has_tlv = false; bool new_packet = true; uint16_t eigrp_mtu = EIGRP_PACKET_MTU(ei->ifp->mtu); diff --git a/eigrpd/eigrp_reply.c b/eigrpd/eigrp_reply.c index 26bb27d7a..d16482173 100644 --- a/eigrpd/eigrp_reply.c +++ b/eigrpd/eigrp_reply.c @@ -61,20 +61,21 @@ #include "eigrpd/eigrp_memory.h" #include "eigrpd/eigrp_errors.h" -void eigrp_send_reply(struct eigrp_neighbor *nbr, struct eigrp_prefix_entry *pe) +void eigrp_send_reply(struct eigrp_neighbor *nbr, + struct eigrp_prefix_descriptor *pe) { struct eigrp_packet *ep; uint16_t length = EIGRP_HEADER_LEN; struct eigrp_interface *ei = nbr->ei; struct eigrp *eigrp = ei->eigrp; - struct eigrp_prefix_entry *pe2; + struct eigrp_prefix_descriptor *pe2; // TODO: Work in progress /* Filtering */ /* get list from eigrp process */ - pe2 = XCALLOC(MTYPE_EIGRP_PREFIX_ENTRY, - sizeof(struct eigrp_prefix_entry)); - memcpy(pe2, pe, sizeof(struct eigrp_prefix_entry)); + pe2 = XCALLOC(MTYPE_EIGRP_PREFIX_DESCRIPTOR, + sizeof(struct eigrp_prefix_descriptor)); + memcpy(pe2, pe, sizeof(struct eigrp_prefix_descriptor)); if (eigrp_update_prefix_apply(eigrp, ei, EIGRP_FILTER_OUT, pe2->destination)) { @@ -122,7 +123,7 @@ void eigrp_send_reply(struct eigrp_neighbor *nbr, struct eigrp_prefix_entry *pe) eigrp_send_packet_reliably(nbr); } - XFREE(MTYPE_EIGRP_PREFIX_ENTRY, pe2); + XFREE(MTYPE_EIGRP_PREFIX_DESCRIPTOR, pe2); } /*EIGRP REPLY read function*/ @@ -161,7 +162,7 @@ void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph, dest_addr.family = AF_INET; dest_addr.u.prefix4 = tlv->destination; dest_addr.prefixlen = tlv->prefix_length; - struct eigrp_prefix_entry *dest = + struct eigrp_prefix_descriptor *dest = eigrp_topology_table_lookup_ipv4(eigrp->topology_table, &dest_addr); /* @@ -177,8 +178,8 @@ void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph, } struct eigrp_fsm_action_message msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(dest->entries, nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup(dest->entries, nbr); if (eigrp_update_prefix_apply(eigrp, ei, EIGRP_FILTER_IN, &dest_addr)) { diff --git a/eigrpd/eigrp_routemap.c b/eigrpd/eigrp_routemap.c index e15f77795..5183e645e 100644 --- a/eigrpd/eigrp_routemap.c +++ b/eigrpd/eigrp_routemap.c @@ -265,8 +265,8 @@ route_match_metric(void *rule, struct prefix *prefix, route_map_object_t type, // uint32_t *metric; // uint32_t check; // struct rip_info *rinfo; - // struct eigrp_nexthop_entry *te; - // struct eigrp_prefix_entry *pe; + // struct eigrp_route_descriptor *te; + // struct eigrp_prefix_descriptor *pe; // struct listnode *node, *node2, *nnode, *nnode2; // struct eigrp *e; // diff --git a/eigrpd/eigrp_siaquery.c b/eigrpd/eigrp_siaquery.c index ff3832546..027700fe1 100644 --- a/eigrpd/eigrp_siaquery.c +++ b/eigrpd/eigrp_siaquery.c @@ -87,7 +87,7 @@ void eigrp_siaquery_receive(struct eigrp *eigrp, struct ip *iph, dest_addr.family = AFI_IP; dest_addr.u.prefix4 = tlv->destination; dest_addr.prefixlen = tlv->prefix_length; - struct eigrp_prefix_entry *dest = + struct eigrp_prefix_descriptor *dest = eigrp_topology_table_lookup_ipv4( eigrp->topology_table, &dest_addr); @@ -95,9 +95,9 @@ void eigrp_siaquery_receive(struct eigrp *eigrp, struct ip *iph, * know)*/ if (dest != NULL) { struct eigrp_fsm_action_message msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(dest->entries, - nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup( + dest->entries, nbr); msg.packet_type = EIGRP_OPC_SIAQUERY; msg.eigrp = eigrp; msg.data_type = EIGRP_INT; @@ -114,7 +114,7 @@ void eigrp_siaquery_receive(struct eigrp *eigrp, struct ip *iph, } void eigrp_send_siaquery(struct eigrp_neighbor *nbr, - struct eigrp_prefix_entry *pe) + struct eigrp_prefix_descriptor *pe) { struct eigrp_packet *ep; uint16_t length = EIGRP_HEADER_LEN; diff --git a/eigrpd/eigrp_siareply.c b/eigrpd/eigrp_siareply.c index d3dd123f9..590b224d6 100644 --- a/eigrpd/eigrp_siareply.c +++ b/eigrpd/eigrp_siareply.c @@ -86,7 +86,7 @@ void eigrp_siareply_receive(struct eigrp *eigrp, struct ip *iph, dest_addr.family = AFI_IP; dest_addr.u.prefix4 = tlv->destination; dest_addr.prefixlen = tlv->prefix_length; - struct eigrp_prefix_entry *dest = + struct eigrp_prefix_descriptor *dest = eigrp_topology_table_lookup_ipv4( eigrp->topology_table, &dest_addr); @@ -94,9 +94,9 @@ void eigrp_siareply_receive(struct eigrp *eigrp, struct ip *iph, * know)*/ if (dest != NULL) { struct eigrp_fsm_action_message msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(dest->entries, - nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup( + dest->entries, nbr); msg.packet_type = EIGRP_OPC_SIAQUERY; msg.eigrp = eigrp; msg.data_type = EIGRP_INT; @@ -113,7 +113,7 @@ void eigrp_siareply_receive(struct eigrp *eigrp, struct ip *iph, } void eigrp_send_siareply(struct eigrp_neighbor *nbr, - struct eigrp_prefix_entry *pe) + struct eigrp_prefix_descriptor *pe) { struct eigrp_packet *ep; uint16_t length = EIGRP_HEADER_LEN; diff --git a/eigrpd/eigrp_structs.h b/eigrpd/eigrp_structs.h index 3ac6d0261..cddab57dd 100644 --- a/eigrpd/eigrp_structs.h +++ b/eigrpd/eigrp_structs.h @@ -48,6 +48,16 @@ struct eigrp_metrics { uint8_t flags; }; +struct eigrp_extdata { + uint32_t orig; + uint32_t as; + uint32_t tag; + uint32_t metric; + uint16_t reserved; + uint8_t protocol; + uint8_t flags; +}; + struct eigrp { vrf_id_t vrf_id; @@ -430,7 +440,7 @@ enum GR_type { EIGRP_GR_MANUAL, EIGRP_GR_FILTER }; //--------------------------------------------------------------------------------------------------------------------------------------------- /* EIGRP Topology table node structure */ -struct eigrp_prefix_entry { +struct eigrp_prefix_descriptor { struct list *entries, *rij; uint32_t fdistance; // FD uint32_t rdistance; // RD @@ -453,8 +463,14 @@ struct eigrp_prefix_entry { }; /* EIGRP Topology table record structure */ -struct eigrp_nexthop_entry { - struct eigrp_prefix_entry *prefix; +struct eigrp_route_descriptor { + uint16_t type; + uint16_t afi; + + struct eigrp_prefix_descriptor *prefix; + struct eigrp_neighbor *adv_router; + struct in_addr nexthop; + uint32_t reported_distance; // distance reported by neighbor uint32_t distance; // sum of reported distance and link cost to // advertised neighbor @@ -462,7 +478,9 @@ struct eigrp_nexthop_entry { struct eigrp_metrics reported_metric; struct eigrp_metrics total_metric; - struct eigrp_neighbor *adv_router; // ip address of advertising neighbor + struct eigrp_metrics metric; + struct eigrp_extdata extdata; + uint8_t flags; // used for marking successor and FS struct eigrp_interface *ei; // pointer for case of connected entry @@ -481,8 +499,8 @@ struct eigrp_fsm_action_message { uint8_t packet_type; // UPDATE, QUERY, SIAQUERY, SIAREPLY struct eigrp *eigrp; // which thread sent mesg struct eigrp_neighbor *adv_router; // advertising neighbor - struct eigrp_nexthop_entry *entry; - struct eigrp_prefix_entry *prefix; + struct eigrp_route_descriptor *entry; + struct eigrp_prefix_descriptor *prefix; msg_data_t data_type; // internal or external tlv type struct eigrp_metrics metrics; enum metric_change change; diff --git a/eigrpd/eigrp_topology.c b/eigrpd/eigrp_topology.c index 2dbee1669..8c3de2a90 100644 --- a/eigrpd/eigrp_topology.c +++ b/eigrpd/eigrp_topology.c @@ -52,8 +52,8 @@ #include "eigrpd/eigrp_fsm.h" #include "eigrpd/eigrp_memory.h" -static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *, - struct eigrp_nexthop_entry *); +static int eigrp_route_descriptor_cmp(struct eigrp_route_descriptor *rd1, + struct eigrp_route_descriptor *rd2); /* * Returns linkedlist used as topology table @@ -70,14 +70,14 @@ struct route_table *eigrp_topology_new(void) * Returns new created toplogy node * cmp - assigned function for comparing topology entry */ -struct eigrp_prefix_entry *eigrp_prefix_entry_new(void) +struct eigrp_prefix_descriptor *eigrp_prefix_descriptor_new(void) { - struct eigrp_prefix_entry *new; - new = XCALLOC(MTYPE_EIGRP_PREFIX_ENTRY, - sizeof(struct eigrp_prefix_entry)); + struct eigrp_prefix_descriptor *new; + new = XCALLOC(MTYPE_EIGRP_PREFIX_DESCRIPTOR, + sizeof(struct eigrp_prefix_descriptor)); new->entries = list_new(); new->rij = list_new(); - new->entries->cmp = (int (*)(void *, void *))eigrp_nexthop_entry_cmp; + new->entries->cmp = (int (*)(void *, void *))eigrp_route_descriptor_cmp; new->distance = new->fdistance = new->rdistance = EIGRP_MAX_METRIC; new->destination = NULL; @@ -87,8 +87,8 @@ struct eigrp_prefix_entry *eigrp_prefix_entry_new(void) /* * Topology entry comparison */ -static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *entry1, - struct eigrp_nexthop_entry *entry2) +static int eigrp_route_descriptor_cmp(struct eigrp_route_descriptor *entry1, + struct eigrp_route_descriptor *entry2) { if (entry1->distance < entry2->distance) return -1; @@ -102,12 +102,12 @@ static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *entry1, * Returns new topology entry */ -struct eigrp_nexthop_entry *eigrp_nexthop_entry_new(void) +struct eigrp_route_descriptor *eigrp_route_descriptor_new(void) { - struct eigrp_nexthop_entry *new; + struct eigrp_route_descriptor *new; - new = XCALLOC(MTYPE_EIGRP_NEXTHOP_ENTRY, - sizeof(struct eigrp_nexthop_entry)); + new = XCALLOC(MTYPE_EIGRP_ROUTE_DESCRIPTOR, + sizeof(struct eigrp_route_descriptor)); new->reported_distance = EIGRP_MAX_METRIC; new->distance = EIGRP_MAX_METRIC; @@ -126,8 +126,8 @@ void eigrp_topology_free(struct eigrp *eigrp, struct route_table *table) /* * Adding topology node to topology table */ -void eigrp_prefix_entry_add(struct route_table *topology, - struct eigrp_prefix_entry *pe) +void eigrp_prefix_descriptor_add(struct route_table *topology, + struct eigrp_prefix_descriptor *pe) { struct route_node *rn; @@ -146,9 +146,9 @@ void eigrp_prefix_entry_add(struct route_table *topology, /* * Adding topology entry to topology node */ -void eigrp_nexthop_entry_add(struct eigrp *eigrp, - struct eigrp_prefix_entry *node, - struct eigrp_nexthop_entry *entry) +void eigrp_route_descriptor_add(struct eigrp *eigrp, + struct eigrp_prefix_descriptor *node, + struct eigrp_route_descriptor *entry) { struct list *l = list_new(); @@ -168,10 +168,11 @@ void eigrp_nexthop_entry_add(struct eigrp *eigrp, /* * Deleting topology node from topology table */ -void eigrp_prefix_entry_delete(struct eigrp *eigrp, struct route_table *table, - struct eigrp_prefix_entry *pe) +void eigrp_prefix_descriptor_delete(struct eigrp *eigrp, + struct route_table *table, + struct eigrp_prefix_descriptor *pe) { - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; struct listnode *node, *nnode; struct route_node *rn; @@ -189,7 +190,7 @@ void eigrp_prefix_entry_delete(struct eigrp *eigrp, struct route_table *table, listnode_delete(eigrp->topology_changes_internalIPV4, pe); for (ALL_LIST_ELEMENTS(pe->entries, node, nnode, ne)) - eigrp_nexthop_entry_delete(eigrp, pe, ne); + eigrp_route_descriptor_delete(eigrp, pe, ne); list_delete(&pe->entries); list_delete(&pe->rij); eigrp_zebra_route_delete(eigrp, pe->destination); @@ -198,20 +199,20 @@ void eigrp_prefix_entry_delete(struct eigrp *eigrp, struct route_table *table, rn->info = NULL; route_unlock_node(rn); // Lookup above route_unlock_node(rn); // Initial creation - XFREE(MTYPE_EIGRP_PREFIX_ENTRY, pe); + XFREE(MTYPE_EIGRP_PREFIX_DESCRIPTOR, pe); } /* * Deleting topology entry from topology node */ -void eigrp_nexthop_entry_delete(struct eigrp *eigrp, - struct eigrp_prefix_entry *node, - struct eigrp_nexthop_entry *entry) +void eigrp_route_descriptor_delete(struct eigrp *eigrp, + struct eigrp_prefix_descriptor *node, + struct eigrp_route_descriptor *entry) { if (listnode_lookup(node->entries, entry) != NULL) { listnode_delete(node->entries, entry); eigrp_zebra_route_delete(eigrp, node->destination); - XFREE(MTYPE_EIGRP_NEXTHOP_ENTRY, entry); + XFREE(MTYPE_EIGRP_ROUTE_DESCRIPTOR, entry); } } @@ -222,7 +223,7 @@ void eigrp_topology_delete_all(struct eigrp *eigrp, struct route_table *topology) { struct route_node *rn; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; for (rn = route_top(topology); rn; rn = route_next(rn)) { pe = rn->info; @@ -230,15 +231,15 @@ void eigrp_topology_delete_all(struct eigrp *eigrp, if (!pe) continue; - eigrp_prefix_entry_delete(eigrp, topology, pe); + eigrp_prefix_descriptor_delete(eigrp, topology, pe); } } -struct eigrp_prefix_entry * +struct eigrp_prefix_descriptor * eigrp_topology_table_lookup_ipv4(struct route_table *table, struct prefix *address) { - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; struct route_node *rn; rn = route_node_lookup(table, address); @@ -259,14 +260,15 @@ eigrp_topology_table_lookup_ipv4(struct route_table *table, * That way we can clean up all the list_new and list_delete's * that we are doing. DBS */ -struct list *eigrp_topology_get_successor(struct eigrp_prefix_entry *table_node) +struct list * +eigrp_topology_get_successor(struct eigrp_prefix_descriptor *table_node) { struct list *successors = list_new(); - struct eigrp_nexthop_entry *data; + struct eigrp_route_descriptor *data; struct listnode *node1, *node2; for (ALL_LIST_ELEMENTS(table_node->entries, node1, node2, data)) { - if (data->flags & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG) { + if (data->flags & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG) { listnode_add(successors, data); } } @@ -283,7 +285,7 @@ struct list *eigrp_topology_get_successor(struct eigrp_prefix_entry *table_node) } struct list * -eigrp_topology_get_successor_max(struct eigrp_prefix_entry *table_node, +eigrp_topology_get_successor_max(struct eigrp_prefix_descriptor *table_node, unsigned int maxpaths) { struct list *successors = eigrp_topology_get_successor(table_node); @@ -300,10 +302,10 @@ eigrp_topology_get_successor_max(struct eigrp_prefix_entry *table_node, return successors; } -struct eigrp_nexthop_entry * -eigrp_prefix_entry_lookup(struct list *entries, struct eigrp_neighbor *nbr) +struct eigrp_route_descriptor * +eigrp_route_descriptor_lookup(struct list *entries, struct eigrp_neighbor *nbr) { - struct eigrp_nexthop_entry *data; + struct eigrp_route_descriptor *data; struct listnode *node, *nnode; for (ALL_LIST_ELEMENTS(entries, node, nnode, data)) { if (data->adv_router == nbr) { @@ -319,8 +321,8 @@ struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *eigrp, struct eigrp_neighbor *nbr) { struct listnode *node2, *node22; - struct eigrp_nexthop_entry *entry; - struct eigrp_prefix_entry *pe; + struct eigrp_route_descriptor *entry; + struct eigrp_prefix_descriptor *pe; struct route_node *rn; /* create new empty list for prefixes storage */ @@ -348,8 +350,8 @@ enum metric_change eigrp_topology_update_distance(struct eigrp_fsm_action_message *msg) { struct eigrp *eigrp = msg->eigrp; - struct eigrp_prefix_entry *prefix = msg->prefix; - struct eigrp_nexthop_entry *entry = msg->entry; + struct eigrp_prefix_descriptor *prefix = msg->prefix; + struct eigrp_route_descriptor *entry = msg->entry; enum metric_change change = METRIC_SAME; uint32_t new_reported_distance; @@ -413,7 +415,7 @@ distance_done: void eigrp_topology_update_all_node_flags(struct eigrp *eigrp) { - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; struct route_node *rn; if (!eigrp) @@ -430,10 +432,10 @@ void eigrp_topology_update_all_node_flags(struct eigrp *eigrp) } void eigrp_topology_update_node_flags(struct eigrp *eigrp, - struct eigrp_prefix_entry *dest) + struct eigrp_prefix_descriptor *dest) { struct listnode *node; - struct eigrp_nexthop_entry *entry; + struct eigrp_route_descriptor *entry; for (ALL_LIST_ELEMENTS_RO(dest->entries, node, entry)) { if (entry->reported_distance < dest->fdistance) { @@ -444,29 +446,29 @@ void eigrp_topology_update_node_flags(struct eigrp *eigrp, && entry->distance != EIGRP_MAX_METRIC) { // is successor entry->flags |= - EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG; + EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG; entry->flags &= - ~EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG; + ~EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG; } else { // is feasible successor only entry->flags |= - EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG; + EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG; entry->flags &= - ~EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG; + ~EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG; } } else { - entry->flags &= ~EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG; - entry->flags &= ~EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG; + entry->flags &= ~EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG; + entry->flags &= ~EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG; } } } void eigrp_update_routing_table(struct eigrp *eigrp, - struct eigrp_prefix_entry *prefix) + struct eigrp_prefix_descriptor *prefix) { struct list *successors; struct listnode *node; - struct eigrp_nexthop_entry *entry; + struct eigrp_route_descriptor *entry; successors = eigrp_topology_get_successor_max(prefix, eigrp->max_paths); @@ -474,13 +476,13 @@ void eigrp_update_routing_table(struct eigrp *eigrp, eigrp_zebra_route_add(eigrp, prefix->destination, successors, prefix->fdistance); for (ALL_LIST_ELEMENTS_RO(successors, node, entry)) - entry->flags |= EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG; + entry->flags |= EIGRP_ROUTE_DESCRIPTOR_INTABLE_FLAG; list_delete(&successors); } else { eigrp_zebra_route_delete(eigrp, prefix->destination); for (ALL_LIST_ELEMENTS_RO(prefix->entries, node, entry)) - entry->flags &= ~EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG; + entry->flags &= ~EIGRP_ROUTE_DESCRIPTOR_INTABLE_FLAG; } } @@ -488,8 +490,8 @@ void eigrp_topology_neighbor_down(struct eigrp *eigrp, struct eigrp_neighbor *nbr) { struct listnode *node2, *node22; - struct eigrp_prefix_entry *pe; - struct eigrp_nexthop_entry *entry; + struct eigrp_prefix_descriptor *pe; + struct eigrp_route_descriptor *entry; struct route_node *rn; for (rn = route_top(eigrp->topology_table); rn; rn = route_next(rn)) { @@ -521,18 +523,18 @@ void eigrp_topology_neighbor_down(struct eigrp *eigrp, void eigrp_update_topology_table_prefix(struct eigrp *eigrp, struct route_table *table, - struct eigrp_prefix_entry *prefix) + struct eigrp_prefix_descriptor *prefix) { struct listnode *node1, *node2; - struct eigrp_nexthop_entry *entry; + struct eigrp_route_descriptor *entry; for (ALL_LIST_ELEMENTS(prefix->entries, node1, node2, entry)) { if (entry->distance == EIGRP_MAX_METRIC) { - eigrp_nexthop_entry_delete(eigrp, prefix, entry); + eigrp_route_descriptor_delete(eigrp, prefix, entry); } } if (prefix->distance == EIGRP_MAX_METRIC && prefix->nt != EIGRP_TOPOLOGY_TYPE_CONNECTED) { - eigrp_prefix_entry_delete(eigrp, table, prefix); + eigrp_prefix_descriptor_delete(eigrp, table, prefix); } } diff --git a/eigrpd/eigrp_topology.h b/eigrpd/eigrp_topology.h index 718cece40..26fa1a11b 100644 --- a/eigrpd/eigrp_topology.h +++ b/eigrpd/eigrp_topology.h @@ -35,43 +35,47 @@ /* EIGRP Topology table related functions. */ extern struct route_table *eigrp_topology_new(void); extern void eigrp_topology_init(struct route_table *table); -extern struct eigrp_prefix_entry *eigrp_prefix_entry_new(void); -extern struct eigrp_nexthop_entry *eigrp_nexthop_entry_new(void); +extern struct eigrp_prefix_descriptor *eigrp_prefix_descriptor_new(void); +extern struct eigrp_route_descriptor *eigrp_route_descriptor_new(void); extern void eigrp_topology_free(struct eigrp *eigrp, struct route_table *table); -extern void eigrp_prefix_entry_add(struct route_table *table, - struct eigrp_prefix_entry *pe); -extern void eigrp_nexthop_entry_add(struct eigrp *eigrp, - struct eigrp_prefix_entry *pe, - struct eigrp_nexthop_entry *ne); -extern void eigrp_prefix_entry_delete(struct eigrp *eigrp, - struct route_table *table, - struct eigrp_prefix_entry *pe); -extern void eigrp_nexthop_entry_delete(struct eigrp *eigrp, - struct eigrp_prefix_entry *pe, - struct eigrp_nexthop_entry *ne); +extern void eigrp_prefix_descriptor_add(struct route_table *table, + struct eigrp_prefix_descriptor *pe); +extern void eigrp_route_descriptor_add(struct eigrp *eigrp, + struct eigrp_prefix_descriptor *pe, + struct eigrp_route_descriptor *ne); +extern void eigrp_prefix_descriptor_delete(struct eigrp *eigrp, + struct route_table *table, + struct eigrp_prefix_descriptor *pe); +extern void eigrp_route_descriptor_delete(struct eigrp *eigrp, + struct eigrp_prefix_descriptor *pe, + struct eigrp_route_descriptor *ne); extern void eigrp_topology_delete_all(struct eigrp *eigrp, struct route_table *table); -extern struct eigrp_prefix_entry * +extern struct eigrp_prefix_descriptor * eigrp_topology_table_lookup_ipv4(struct route_table *table, struct prefix *p); -extern struct list *eigrp_topology_get_successor(struct eigrp_prefix_entry *pe); extern struct list * -eigrp_topology_get_successor_max(struct eigrp_prefix_entry *pe, +eigrp_topology_get_successor(struct eigrp_prefix_descriptor *pe); +extern struct list * +eigrp_topology_get_successor_max(struct eigrp_prefix_descriptor *pe, unsigned int maxpaths); -extern struct eigrp_nexthop_entry * -eigrp_prefix_entry_lookup(struct list *entries, struct eigrp_neighbor *neigh); +extern struct eigrp_route_descriptor * +eigrp_route_descriptor_lookup(struct list *entries, + struct eigrp_neighbor *neigh); extern struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *eigrp, struct eigrp_neighbor *n); extern void eigrp_topology_update_all_node_flags(struct eigrp *eigrp); -extern void eigrp_topology_update_node_flags(struct eigrp *eigrp, - struct eigrp_prefix_entry *pe); +extern void +eigrp_topology_update_node_flags(struct eigrp *eigrp, + struct eigrp_prefix_descriptor *pe); extern enum metric_change eigrp_topology_update_distance(struct eigrp_fsm_action_message *msg); extern void eigrp_update_routing_table(struct eigrp *eigrp, - struct eigrp_prefix_entry *pe); + struct eigrp_prefix_descriptor *pe); extern void eigrp_topology_neighbor_down(struct eigrp *eigrp, struct eigrp_neighbor *neigh); -extern void eigrp_update_topology_table_prefix(struct eigrp *eigrp, - struct route_table *table, - struct eigrp_prefix_entry *pe); +extern void +eigrp_update_topology_table_prefix(struct eigrp *eigrp, + struct route_table *table, + struct eigrp_prefix_descriptor *pe); #endif diff --git a/eigrpd/eigrp_update.c b/eigrpd/eigrp_update.c index cd30eb5ab..db7b6d203 100644 --- a/eigrpd/eigrp_update.c +++ b/eigrpd/eigrp_update.c @@ -101,11 +101,12 @@ bool eigrp_update_prefix_apply(struct eigrp *eigrp, struct eigrp_interface *ei, * Function is used for removing received prefix * from list of neighbor prefixes */ -static void remove_received_prefix_gr(struct list *nbr_prefixes, - struct eigrp_prefix_entry *recv_prefix) +static void +remove_received_prefix_gr(struct list *nbr_prefixes, + struct eigrp_prefix_descriptor *recv_prefix) { struct listnode *node1, *node11; - struct eigrp_prefix_entry *prefix = NULL; + struct eigrp_prefix_descriptor *prefix = NULL; /* iterate over all prefixes in list */ for (ALL_LIST_ELEMENTS(nbr_prefixes, node1, node11, prefix)) { @@ -136,7 +137,7 @@ static void eigrp_update_receive_GR_ask(struct eigrp *eigrp, struct list *nbr_prefixes) { struct listnode *node1; - struct eigrp_prefix_entry *prefix; + struct eigrp_prefix_descriptor *prefix; struct eigrp_fsm_action_message fsm_msg; /* iterate over all prefixes which weren't advertised by neighbor */ @@ -148,8 +149,8 @@ static void eigrp_update_receive_GR_ask(struct eigrp *eigrp, /* set delay to MAX */ fsm_msg.metrics.delay = EIGRP_MAX_METRIC; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(prefix->entries, nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup(prefix->entries, nbr); fsm_msg.packet_type = EIGRP_OPC_UPDATE; fsm_msg.eigrp = eigrp; @@ -172,8 +173,8 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, { struct eigrp_neighbor *nbr; struct TLV_IPv4_Internal_type *tlv; - struct eigrp_prefix_entry *pe; - struct eigrp_nexthop_entry *ne; + struct eigrp_prefix_descriptor *pe; + struct eigrp_route_descriptor *ne; uint32_t flags; uint16_t type; uint16_t length; @@ -304,7 +305,7 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, dest_addr.family = AF_INET; dest_addr.u.prefix4 = tlv->destination; dest_addr.prefixlen = tlv->prefix_length; - struct eigrp_prefix_entry *dest = + struct eigrp_prefix_descriptor *dest = eigrp_topology_table_lookup_ipv4( eigrp->topology_table, &dest_addr); @@ -317,9 +318,9 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, dest); struct eigrp_fsm_action_message msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(dest->entries, - nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup( + dest->entries, nbr); msg.packet_type = EIGRP_OPC_UPDATE; msg.eigrp = eigrp; @@ -331,7 +332,7 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, eigrp_fsm_event(&msg); } else { /*Here comes topology information save*/ - pe = eigrp_prefix_entry_new(); + pe = eigrp_prefix_descriptor_new(); pe->serno = eigrp->serno; pe->destination = (struct prefix *)prefix_ipv4_new(); @@ -340,7 +341,7 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, pe->state = EIGRP_FSM_STATE_PASSIVE; pe->nt = EIGRP_TOPOLOGY_TYPE_REMOTE; - ne = eigrp_nexthop_entry_new(); + ne = eigrp_route_descriptor_new(); ne->ei = ei; ne->adv_router = nbr; ne->reported_metric = tlv->metric; @@ -361,11 +362,12 @@ void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph, pe->fdistance = pe->distance = pe->rdistance = ne->distance; ne->prefix = pe; - ne->flags = EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG; + ne->flags = + EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG; - eigrp_prefix_entry_add(eigrp->topology_table, - pe); - eigrp_nexthop_entry_add(eigrp, pe, ne); + eigrp_prefix_descriptor_add( + eigrp->topology_table, pe); + eigrp_route_descriptor_add(eigrp, pe, ne); pe->distance = pe->fdistance = pe->rdistance = ne->distance; pe->reported_metric = ne->total_metric; @@ -527,8 +529,8 @@ void eigrp_update_send_EOT(struct eigrp_neighbor *nbr) { struct eigrp_packet *ep; uint16_t length = EIGRP_HEADER_LEN; - struct eigrp_nexthop_entry *te; - struct eigrp_prefix_entry *pe; + struct eigrp_route_descriptor *te; + struct eigrp_prefix_descriptor *pe; struct listnode *node2, *nnode2; struct eigrp_interface *ei = nbr->ei; struct eigrp *eigrp = ei->eigrp; @@ -600,7 +602,7 @@ void eigrp_update_send(struct eigrp_interface *ei) { struct eigrp_packet *ep; struct listnode *node, *nnode; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; uint8_t has_tlv; struct eigrp *eigrp = ei->eigrp; struct prefix *dest_addr; @@ -626,7 +628,7 @@ void eigrp_update_send(struct eigrp_interface *ei) has_tlv = 0; for (ALL_LIST_ELEMENTS(ei->eigrp->topology_changes_internalIPV4, node, nnode, pe)) { - struct eigrp_nexthop_entry *ne; + struct eigrp_route_descriptor *ne; if (!(pe->req_action & EIGRP_FSM_NEED_UPDATE)) continue; @@ -707,7 +709,7 @@ void eigrp_update_send_all(struct eigrp *eigrp, { struct eigrp_interface *iface; struct listnode *node, *node2, *nnode2; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; for (ALL_LIST_ELEMENTS_RO(eigrp->eiflist, node, iface)) { if (iface != exception) { @@ -745,7 +747,7 @@ static void eigrp_update_send_GR_part(struct eigrp_neighbor *nbr) { struct eigrp_packet *ep; uint16_t length = EIGRP_HEADER_LEN; - struct eigrp_prefix_entry *pe; + struct eigrp_prefix_descriptor *pe; struct prefix *dest_addr; struct eigrp_interface *ei = nbr->ei; struct eigrp *eigrp = ei->eigrp; @@ -837,8 +839,8 @@ static void eigrp_update_send_GR_part(struct eigrp_neighbor *nbr) /* prepare message for FSM */ struct eigrp_fsm_action_message fsm_msg; - struct eigrp_nexthop_entry *entry = - eigrp_prefix_entry_lookup(pe->entries, nbr); + struct eigrp_route_descriptor *entry = + eigrp_route_descriptor_lookup(pe->entries, nbr); fsm_msg.packet_type = EIGRP_OPC_UPDATE; fsm_msg.eigrp = eigrp; @@ -956,7 +958,7 @@ int eigrp_update_send_GR_thread(struct thread *thread) void eigrp_update_send_GR(struct eigrp_neighbor *nbr, enum GR_type gr_type, struct vty *vty) { - struct eigrp_prefix_entry *pe2; + struct eigrp_prefix_descriptor *pe2; struct list *prefixes; struct route_node *rn; struct eigrp_interface *ei = nbr->ei; diff --git a/eigrpd/eigrp_vty.c b/eigrpd/eigrp_vty.c index 66dfbaa53..0809ac2cf 100644 --- a/eigrpd/eigrp_vty.c +++ b/eigrpd/eigrp_vty.c @@ -59,25 +59,21 @@ #include "eigrpd/eigrp_vty_clippy.c" #endif -static void eigrp_vty_display_prefix_entry(struct vty *vty, - struct eigrp *eigrp, - struct eigrp_prefix_entry *pe, +static void eigrp_vty_display_prefix_entry(struct vty *vty, struct eigrp *eigrp, + struct eigrp_prefix_descriptor *pe, bool all) { bool first = true; - struct eigrp_nexthop_entry *te; + struct eigrp_route_descriptor *te; struct listnode *node; for (ALL_LIST_ELEMENTS_RO(pe->entries, node, te)) { if (all - || (((te->flags - & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG) - == EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG) - || ((te->flags - & EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG) - == EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG))) { - show_ip_eigrp_nexthop_entry(vty, eigrp, te, - &first); + || (((te->flags & EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG) + == EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG) + || ((te->flags & EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG) + == EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG))) { + show_ip_eigrp_route_descriptor(vty, eigrp, te, &first); first = false; } } @@ -104,7 +100,7 @@ static struct eigrp *eigrp_vty_get_eigrp(struct vty *vty, const char *vrf_name) static void eigrp_topology_helper(struct vty *vty, struct eigrp *eigrp, const char *all) { - struct eigrp_prefix_entry *tn; + struct eigrp_prefix_descriptor *tn; struct route_node *rn; show_ip_eigrp_topology_header(vty, eigrp); @@ -168,7 +164,7 @@ DEFPY (show_ip_eigrp_topology, "For a specific prefix\n") { struct eigrp *eigrp; - struct eigrp_prefix_entry *tn; + struct eigrp_prefix_descriptor *tn; struct route_node *rn; struct prefix cmp; diff --git a/eigrpd/eigrp_zebra.c b/eigrpd/eigrp_zebra.c index 0795fbd6d..ec6b7d49d 100644 --- a/eigrpd/eigrp_zebra.c +++ b/eigrpd/eigrp_zebra.c @@ -194,7 +194,7 @@ void eigrp_zebra_route_add(struct eigrp *eigrp, struct prefix *p, { struct zapi_route api; struct zapi_nexthop *api_nh; - struct eigrp_nexthop_entry *te; + struct eigrp_route_descriptor *te; struct listnode *node; int count = 0; |