1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-07-13 01:20:24 +02:00

add support for Link partner advertised link modes to ethtool parser

This commit is contained in:
Kelly Brazil
2024-09-07 18:43:41 -07:00
parent c26f0641ff
commit 8a22f8a468
4 changed files with 51 additions and 2 deletions

View File

@ -1,6 +1,7 @@
jc changelog
20240907 v1.25.4
- Enhance `ethtool` parser to support `link_partner_advertised_link_modes`
- Enhance `ifconfig` parser to support `utun` interfaces with assigned IPv4 addresses on macOS
- Fix `mount` parser for cases where there are spaces in the filesystem name
- Fix `ip-address` parser for Python 3.13 changes to IPv4 mapped IPv6 addresses

View File

@ -172,7 +172,7 @@ import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
version = '1.1'
description = '`ethtool` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@ -248,10 +248,11 @@ def _parse_default(data: str) -> JSONDictType:
supported_link_modes: List[str] = []
supported_fec_modes: List[str] = []
advertised_link_modes: List[str] = []
link_partner_advertised_link_modes: List[str] = []
advertised_fec_modes: List[str] = []
current_message_level: List[str] = []
mode: str = '' # supported_link_modes, supported_fec_modes, advertised_link_modes,
# advertised_fec_modes, current_message_level
# link_partner_advertised_link_modes, advertised_fec_modes, current_message_level
for line in filter(None, data.splitlines()):
@ -294,6 +295,14 @@ def _parse_default(data: str) -> JSONDictType:
mode = 'advertised_link_modes'
continue
if 'Link partner advertised link modes:' in line and 'Not reported' not in line:
_, val = line.split(':', maxsplit=1)
val = val.strip()
val_list = val.split()
link_partner_advertised_link_modes.extend(val_list)
mode = 'link_partner_advertised_link_modes'
continue
if 'Advertised FEC modes:' in line and 'Not reported' not in line:
_, val = line.split(':', maxsplit=1)
val = val.strip()
@ -326,6 +335,12 @@ def _parse_default(data: str) -> JSONDictType:
advertised_link_modes.extend(val_list)
continue
if mode == 'link_partner_advertised_link_modes':
val = line.strip()
val_list = val.split()
link_partner_advertised_link_modes.extend(val_list)
continue
if mode == 'advertised_fec_modes':
val = line.strip()
val_list = val.split()
@ -346,6 +361,7 @@ def _parse_default(data: str) -> JSONDictType:
(supported_link_modes, 'supported_link_modes'),
(supported_fec_modes, 'supported_fec_modes'),
(advertised_link_modes, 'advertised_link_modes'),
(link_partner_advertised_link_modes, 'link_partner_advertised_link_modes'),
(advertised_fec_modes, 'advertised_fec_modes'),
(current_message_level, 'current_message_level')
]

View File

@ -0,0 +1 @@
{"name":"eth0","supported_pause_frame_use":"Symmetric Receive-only","supports_auto_negotiation":true,"supported_fec_modes":[],"advertised_pause_frame_use":false,"advertised_auto_negotiation":true,"advertised_fec_modes":[],"link_partner_advertised_pause_frame_use":"Symmetric","link_partner_advertised_auto_negotiation":"Yes","link_partner_advertised_fec_modes":"Not reported","speed":"100Mb/s","duplex":"Full","port":"Twisted Pair","phyad":"0","transceiver":"external","auto_negotiation":false,"mdi_x":"Unknown","supports_wake_on":"d","wake_on":"d","link_detected":true,"supported_ports":["TP","MII"],"supported_link_modes":["10baseT/Half","10baseT/Full","100baseT/Half","100baseT/Full","1000baseT/Half","1000baseT/Full"],"advertised_link_modes":["10baseT/Half","10baseT/Full","100baseT/Half","100baseT/Full","1000baseT/Half","1000baseT/Full"],"link_partner_advertised_link_modes":["10baseT/Half","10baseT/Full","100baseT/Half","100baseT/Full"],"current_message_level":["0x00000007 (7)","drv probe link"],"speed_bps":100000000}

View File

@ -0,0 +1,31 @@
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: external
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes