The Arista EOS parser (confgraph.parsers.eos_parser.EOSParser) provides comprehensive parsing support for Arista EOS network device configurations. The parser inherits from IOSParser since EOS uses IOS-style syntax for most configurations, with specific overrides for EOS-specific syntax variations.
Syntax:
vrf instance <name>
rd <rd-value>
route-target import evpn <rt-value>
route-target export evpn <rt-value>
EOS-Specific Differences:
vrf instance instead of IOS vrf definitionevpn keywordSupported Attributes:
Parsing Status: ✅ Overridden — parse_vrfs() handles vrf instance syntax and EVPN route-targets
Documentation Source: EOS 4.35.1F - VRF Configuration Guide
Syntax:
interface <type><number>
description <text>
ip address <address>/<prefix-length>
vrf <vrf-name>
ip ospf area <area-id>
EOS-Specific Differences:
/prefix instead of subnet mask (e.g., 10.1.1.1/30 vs 10.1.1.1 255.255.255.252)vrf <name> directly (no ip vrf forwarding)Supported Attributes:
Interface Types Supported:
Parsing Status: ✅ Inherited from IOSParser with CIDR notation support
Documentation Source: EOS 4.35.1F - Interface Configuration Guide
Syntax:
router bgp <asn>
router-id <router-id>
neighbor <ip> remote-as <asn>
neighbor <ip> peer group <name>
!
address-family ipv4
neighbor <ip> activate
network <prefix>/<length>
!
vrf <vrf-name>
rd <rd-value>
neighbor <ip> remote-as <asn>
EOS-Specific Differences:
router bgp blockSupported Attributes:
Parsing Status: ✅ Inherited from IOSParser
Documentation Source: EOS 4.35.1F - Border Gateway Protocol (BGP)
Syntax:
router ospf <process-id>
router-id <router-id>
passive-interface default
no passive-interface <interface>
area <area-id> range <prefix>/<length> cost <cost>
area <area-id> nssa no-summary
redistribute bgp route-map <name>
EOS-Specific Differences:
bfd default)log-adjacency-changes detail)Supported Attributes:
Parsing Status: ✅ Inherited from IOSParser
Documentation Source: EOS 4.35.1F - OSPF Configuration Guide
Syntax:
route-map <name> permit <sequence>
description <text>
match ip address prefix-list <name>
set local-preference <value>
set community <value> additive
EOS-Specific Differences:
Supported Attributes:
Parsing Status: ✅ Inherited from IOSParser
Documentation Source: EOS 4.35.1F - ACLs and Route Maps
Syntax:
ip prefix-list <name>
seq <number> permit <prefix>/<length> le <max-length>
seq <number> deny <prefix>/<length> ge <min-length> le <max-length>
EOS-Specific Differences:
Supported Attributes:
Parsing Status: ✅ Overridden — parse_prefix_lists() handles EOS hierarchical prefix-list syntax with CIDR notation
Documentation Source: EOS 4.35.1F - ACLs and Route Maps
Syntax:
ip route [vrf <vrf-name>] <prefix>/<length> [egress-vrf <vrf-name>] <next-hop> [<distance>] [tag <tag>] [name <name>]
EOS-Specific Differences:
/prefix instead of subnet maskegress-vrf keyword for routing between VRFsSupported Attributes:
Example:
ip route 0.0.0.0/0 10.100.1.1 name DEFAULT_TO_ISP
ip route vrf CUSTOMER_A 10.0.0.0/8 egress-vrf default 10.0.0.1
Parsing Status: ✅ EOS-specific implementation
Documentation Source: EOS 4.35.1F - IPv4 Static Inter-VRF Route
Syntax:
ip access-list [standard] <name>
[<seq>] remark <text>
[<seq>] permit <source> [log]
[<seq>] deny ip <source> <destination> [log]
EOS-Specific Differences:
ip access-list standard NAME and ip access-list NAME are validSupported Attributes:
Example:
ip access-list standard MGMT_HOSTS
10 permit 192.168.10.0/24
20 permit host 10.0.0.100
ip access-list ALLOW_WEB_TRAFFIC
10 permit tcp any any eq 80
20 permit tcp any any eq 443
Parsing Status: ✅ EOS-specific implementation with auto-detection
Documentation Source: EOS 4.35.1F - ACLs and Route Maps
Syntax:
ip community-list [regexp] <name> permit|deny <communities>
EOS-Specific Differences:
regexp keywordip community-list NAME permit 65000:100ip community-list regexp NAME permit _65[0-9]{3}:[0-9]+_Supported Attributes:
Example:
ip community-list ALLOWED_COMMUNITIES permit 65000:100
ip community-list regexp CUSTOMER_COMMUNITIES permit _65[0-9]{3}:[0-9]+_
Parsing Status: ✅ EOS-specific implementation
Documentation Source: EOS 4.35.1F - Border Gateway Protocol (BGP)
Syntax:
ip as-path access-list <name> permit|deny <regex>
EOS-Specific Differences:
Supported Attributes:
Example:
ip as-path access-list ALLOW_OWN_AS permit ^65000_
ip as-path access-list BLOCK_PRIVATE_AS deny _64[5-9][0-9]{2}_
Parsing Status: ✅ EOS-specific implementation (identical to IOS)
Documentation Source: EOS 4.35.1F - Border Gateway Protocol (BGP)
Syntax:
router isis <instance-name>
net <NET-address>
is-type level-2
address-family ipv4 unicast
redistribute connected
EOS-Specific Differences:
Supported Attributes:
Parsing Status: ✅ EOS-specific implementation
Documentation Source: EOS 4.35.1F - IS-IS Configuration Guide
The following protocols use IOS-identical syntax in EOS and are parsed via IOSParser inheritance without modification:
| Protocol | Parsing Status |
|---|---|
| NTP | ✅ Inherited from IOSParser |
| SNMP | ✅ Inherited from IOSParser |
| Syslog | ✅ Inherited from IOSParser |
| Banners | ✅ Inherited from IOSParser |
| Line configs (con/vty) | ✅ Inherited from IOSParser |
| QoS (class-map/policy-map) | ✅ Inherited from IOSParser |
| NAT | ✅ Inherited from IOSParser |
| Crypto/IPsec | ✅ Inherited from IOSParser |
| BFD | ✅ Inherited from IOSParser |
| IP SLA | ✅ Inherited from IOSParser |
| EEM Applets | ✅ Inherited from IOSParser |
| Object Tracking | ✅ Inherited from IOSParser |
| Multicast (PIM/IGMP) | ✅ Inherited from IOSParser |
| EIGRP | ✅ Inherited from IOSParser |
| RIP | ✅ Inherited from IOSParser |
See IOS_PARSER_SUPPORT.md for full syntax and attribute details for each of these protocols.
| Feature | EOS 4.20+ | EOS 4.25+ | EOS 4.30+ | EOS 4.35+ | Notes |
|---|---|---|---|---|---|
| VRF (vrf instance) | ✅ | ✅ | ✅ | ✅ | Core feature |
| Interfaces (CIDR) | ✅ | ✅ | ✅ | ✅ | CIDR notation standard |
| BGP Basic | ✅ | ✅ | ✅ | ✅ | Address-family model |
| BGP Graceful-Restart | ✅ | ✅ | ✅ | ✅ | Standard feature |
| OSPF BFD | ✅ | ✅ | ✅ | ✅ | BFD support |
| Static Routes (egress-vrf) | ⚠️ | ✅ | ✅ | ✅ | Inter-VRF routing |
| ACLs (CIDR notation) | ✅ | ✅ | ✅ | ✅ | Standard feature |
| Community Lists | ✅ | ✅ | ✅ | ✅ | Standard feature |
| AS-Path Lists | ✅ | ✅ | ✅ | ✅ | Standard feature |
| IS-IS (modern syntax) | ✅ | ✅ | ✅ | ✅ | Instance-based |
| IS-IS Segment Routing | ❌ | ⚠️ | ✅ | ✅ | EOS 4.26.1F+ |
Legend:
The EOS parser inherits from IOSParser because:
parse_vrfs() - Handles vrf instance syntax and EVPN route-targetsparse_prefix_lists() - Handles EOS hierarchical prefix-list syntax with CIDR notationparse_static_routes() - CIDR notation and egress-vrf supportparse_acls() - Optional “standard” keyword and auto-detectionparse_community_lists() - Regexp keyword instead of standard/expandedparse_as_path_lists() - Identical to IOS (included for completeness)parse_isis() - Modern instance-based IS-IS syntaxservice routing protocols model multi-agentmanagement api http-commandsSample Configuration: samples/eos.txt (369 lines)
Test Scripts:
test_eos_parser.py - Basic parsing testtest_eos_parser_detailed.py - Detailed output with all parsed objectsValidation Results:
✅ VRFs: 3 parsed (CUSTOMER_A, CUSTOMER_B, MGMT with EVPN route-targets)
✅ Interfaces: 14 parsed correctly
✅ BGP: 1 instance with 7 neighbors
✅ OSPF: 1 process with 3 areas
✅ Route-maps: 13 parsed
✅ Prefix-lists: 4 parsed (ISP1_PREFIX_IN, ISP1_PREFIX_OUT, CONNECTED_LOOPBACKS, CUSTOMER_A_ALLOWED)
✅ Static Routes: 5 parsed (including VRF and egress-vrf)
✅ ACLs: 3 parsed (1 standard, 2 extended with sequence numbers)
✅ Community Lists: 3 parsed (2 standard, 1 regexp/expanded)
✅ AS-Path Lists: 2 parsed (6 total entries)
from confgraph.parsers.eos_parser import EOSParser
parser = EOSParser(config_text)
parsed = parser.parse()
from confgraph.models.base import OSType
os_type = OSType.EOS # "eos"
samples/eos.txt # EOS 4.30.1F sample configuration
uv run python test_eos_parser.py
Last Updated: 2026-03-28 Parser Version: 1.1.0 Documentation Version: EOS 4.35.1F