return successors;
}
+struct list *
+eigrp_topology_get_successor_max(struct eigrp_prefix_entry *table_node,
+ unsigned int maxpaths)
+{
+ struct list *successors = eigrp_topology_get_successor(table_node);
+
+ if (successors && successors->count > maxpaths)
+ {
+ do
+ {
+ struct listnode *node = listtail(successors);
+
+ list_delete_node(successors, node);
+
+ } while (successors->count > maxpaths);
+ }
+
+ return successors;
+}
+
struct eigrp_neighbor_entry *
eigrp_prefix_entry_lookup(struct list *entries, struct eigrp_neighbor *nbr)
{
void
eigrp_update_routing_table(struct eigrp_prefix_entry * prefix)
{
- struct list *successors = eigrp_topology_get_successor(prefix);
+ struct eigrp *eigrp = eigrp_lookup();
+ struct list *successors = eigrp_topology_get_successor_max(prefix, eigrp->max_paths);
struct listnode *node;
struct eigrp_neighbor_entry *entry;
extern unsigned int eigrp_topology_table_isempty (struct list *);
extern struct eigrp_prefix_entry *eigrp_topology_table_lookup_ipv4 (struct list *, struct prefix_ipv4 *);
extern struct list *eigrp_topology_get_successor (struct eigrp_prefix_entry *);
-//extern struct eigrp_neighbor_entry *eigrp_topology_get_fsuccessor (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 *eigrp_prefix_entry_lookup (struct list *, struct eigrp_neighbor *);
extern struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *, struct eigrp_neighbor *);
extern void eigrp_topology_update_all_node_flags (struct eigrp *);