Skip to content

eigrpd: add OpenEIGRP integration support - #23767

Open
diivious wants to merge 1 commit into
FRRouting:masterfrom
diivious:openeigrp-integration
Open

diivious wants to merge 1 commit into
FRRouting:masterfrom
diivious:openeigrp-integration

Conversation

@diivious

Copy link
Copy Markdown
Member

@donaldsharp - this supersedes #23617

Patch has been re-based onto current frr master with a clean commit history (no merge commits)

Summary

Add the FRR YANG schema and vtysh extensions required to build and integrate OpenEIGRP with the FRR routing infrastructure.

  • extend the EIGRP configuration schema to support named-mode address families, interfaces, topology settings, and related configuration.
  • gate the extensions behind an optional YANG feature that is disabled by default for the existing FRR eigrpd.
  • extend vtysh to recognize named EIGRP process identifiers while preserving existing numeric autonomous-system configuration.

These changes provide the infrastructure required by OpenEIGRP without modifying the existing FRR eigrpd implementation or its operational behavior.

Validation

  • Build and make check passed on the patched checkout.
  • One integration commit, no merge commits.
  • Changes limited to vtysh/vtysh.c and yang/frr-eigrpd.yang.

Signed-off-by: Donnie V Savage <diivious@hotmail.com>
@greptile-apps

greptile-apps Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 3/5

[Medium impact] The changes reach the EIGRP configuration workflow.

Do not merge until the existing daemon can start and the one-process-per-VRF limit is preserved.

Findings

  1. P1 Existing EIGRP cannot start ▶
  2. P1 Separate AS entries share state ▶
Fix with agent prompt
### Issue 1
yang/frr-eigrpd.yang:458-460
The new writable nodes are always enabled, but `frr_eigrpd_info` has no callbacks for `named`, its children, or `instance/event-log-size`. At startup, `nb_init()` checks these callbacks, and `nb_validate_callbacks()` calls `exit(1)` when they are missing. This stops the existing daemon even without named-mode configuration.

Add the promised optional feature gate around every new writable node, including `instance/event-log-size`, and leave it disabled for the existing daemon.

### Issue 2
yang/frr-eigrpd.yang:267-268
Removing the one-instance-per-VRF check allows two numeric AS entries in one VRF, but the existing daemon still stores only one process per VRF. `router eigrp 100` followed by `router eigrp 200` binds both entries to the process for AS 100. Settings from either entry change that process, and deleting either entry destroys it while the other still references it.

Preserve the check for the existing daemon. Make any relaxation conditional on support for multiple processes.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Adds named EIGRP configuration to the YANG schema and lets vtysh recognize named process identifiers.

  • EIGRP accepts named process names alongside numeric AS values.
  • Named EIGRP address families can hold their own routing policies.
  • Numeric EIGRP instances can share a VRF and set an event-log limit.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A["Existing eigrpd starts"] --> B["Load frr-eigrpd schema"]
  B --> C["New writable nodes are enabled"]
  C --> D["Check required callbacks"]
  D --> E["Callbacks are missing"]
  E --> F["exit(1)"]
Loading

Reviews (1) · Last reviewed commit: "eigrpd: add OpenEIGRP integration suppor..." · Reviewed by Greptile

Comment thread yang/frr-eigrpd.yang
Comment on lines +458 to +460
list named {
key "name";
description "EIGRP named-mode parent process";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Existing EIGRP cannot start

The new writable nodes are always enabled, but frr_eigrpd_info has no callbacks for named, its children, or instance/event-log-size. At startup, nb_init() checks these callbacks, and nb_validate_callbacks() calls exit(1) when they are missing. This stops the existing daemon even without named-mode configuration.

Add the promised optional feature gate around every new writable node, including instance/event-log-size, and leave it disabled for the existing daemon.

Prompt To Fix With AI
This is a comment left during a code review.
Path: yang/frr-eigrpd.yang
Line: 458-460

Comment:
**Existing EIGRP cannot start**

The new writable nodes are always enabled, but `frr_eigrpd_info` has no callbacks for `named`, its children, or `instance/event-log-size`. At startup, `nb_init()` checks these callbacks, and `nb_validate_callbacks()` calls `exit(1)` when they are missing. This stops the existing daemon even without named-mode configuration.

Add the promised optional feature gate around every new writable node, including `instance/event-log-size`, and leave it disabled for the existing daemon.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Comment thread yang/frr-eigrpd.yang
Comment on lines 267 to 268
list instance {
must "count(../instance[vrf =current()/vrf]) = 1";
key "asn vrf";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Separate AS entries share state

Removing the one-instance-per-VRF check allows two numeric AS entries in one VRF, but the existing daemon still stores only one process per VRF. router eigrp 100 followed by router eigrp 200 binds both entries to the process for AS 100. Settings from either entry change that process, and deleting either entry destroys it while the other still references it.

Preserve the check for the existing daemon. Make any relaxation conditional on support for multiple processes.

Prompt To Fix With AI
This is a comment left during a code review.
Path: yang/frr-eigrpd.yang
Line: 267-268

Comment:
**Separate AS entries share state**

Removing the one-instance-per-VRF check allows two numeric AS entries in one VRF, but the existing daemon still stores only one process per VRF. `router eigrp 100` followed by `router eigrp 200` binds both entries to the process for AS 100. Settings from either entry change that process, and deleting either entry destroys it while the other still references it.

Preserve the check for the existing daemon. Make any relaxation conditional on support for multiple processes.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant