$port) { $entry = isset($entries[$ifIndex]) ? $entries[$ifIndex] : []; // ifType if (isset($entry['ipeStsPortEtherLinkUp'], $entry['invMacAddress']) || str_starts($port['ifName'], ['eth', 'bcm'])) { $port_stats[$ifIndex]['ifType'] = 'ethernetCsmacd'; } elseif (isset($entry['asETHPortInterfaceType'])) { switch ($entry['ipeStsPortEtherDuplex']) { case 'fiber': $port_stats[$ifIndex]['ifType'] = 'opticalChannel'; // ?? break; case 'copper': $port_stats[$ifIndex]['ifType'] = 'ethernetCsmacd'; break; default: $port_stats[$ifIndex]['ifType'] = 'other'; } } elseif (str_starts($port['ifName'], 'lo')) { $port_stats[$ifIndex]['ifType'] = 'softwareLoopback'; } elseif (isset($entry['atpcPowerMode'])) { $port_stats[$ifIndex]['ifType'] = 'otnOdu'; // ?? } elseif (!str_starts($port['ifName'], 'lldp')) { $port_stats[$ifIndex]['ifType'] = 'other'; } else { // ignore all other continue; } // ifAdminStatus if (isset($entry['ipeCfgPortEtherEnable'])) { switch ($entry['ipeCfgPortEtherEnable']) { case 'enabled': case '1': $port_stats[$ifIndex]['ifAdminStatus'] = 'up'; break; case 'disabled': case '2': $port_stats[$ifIndex]['ifAdminStatus'] = 'down'; break; default: $port_stats[$ifIndex]['ifAdminStatus'] = 'testing'; } } elseif (isset($entry['asETHPortAdminStatus'])) { switch ($entry['asETHPortAdminStatus']) { case 'normal': case 'oamSend': $port_stats[$ifIndex]['ifAdminStatus'] = 'up'; break; case 'force': $port_stats[$ifIndex]['ifAdminStatus'] = 'down'; // ?? break; default: $port_stats[$ifIndex]['ifAdminStatus'] = 'testing'; } } elseif (isset($entry['ipeCfgPortModemEnable'])) { $port_stats[$ifIndex]['ifAdminStatus'] = $entry['ipeCfgPortModemEnable'] === 'enabled' ? 'up' : 'down'; } elseif (str_starts($port['ifName'], 'lo')) { $port_stats[$ifIndex]['ifAdminStatus'] = 'up'; } elseif (isset($entry['modemPsOff'])) { $port_stats[$ifIndex]['ifAdminStatus'] = $entry['modemPsOff'] === 'on' ? 'up' : 'down'; } else { // Force up $port_stats[$ifIndex]['ifAdminStatus'] = 'up'; } // ifOperStatus if (isset($entry['ipeStsPortEtherLinkUp'])) { switch ($entry['ipeStsPortEtherLinkUp']) { case '1': $port_stats[$ifIndex]['ifOperStatus'] = 'up'; break; case '2': $port_stats[$ifIndex]['ifOperStatus'] = 'down'; break; default: $port_stats[$ifIndex]['ifOperStatus'] = 'unknown'; } } elseif (isset($entry['asETHPortOperStatus'])) { switch ($entry['asETHPortOperStatus']) { case 'linkDown': case '1': $port_stats[$ifIndex]['ifOperStatus'] = 'down'; break; case 'linkUp': case '2': $port_stats[$ifIndex]['ifOperStatus'] = 'up'; break; default: $port_stats[$ifIndex]['ifOperStatus'] = 'unknown'; } } elseif (isset($entry['ipeCfgPortModemEnable'])) { $port_stats[$ifIndex]['ifOperStatus'] = $entry['ipeCfgPortModemEnable'] === 'enabled' ? 'up' : 'down'; } elseif (str_starts($port['ifName'], 'lo')) { $port_stats[$ifIndex]['ifOperStatus'] = 'up'; } elseif (isset($entry['atpcPowerMode'])) { $port_stats[$ifIndex]['ifOperStatus'] = $entry['atpcPowerMode'] === 'active' ? 'up' : 'down'; } else { // Force unknown $port_stats[$ifIndex]['ifOperStatus'] = 'unknown'; } // ifDuplex if (isset($entry['ipeStsPortEtherDuplex'])) { switch ($entry['ipeStsPortEtherDuplex']) { case '1': $port_stats[$ifIndex]['ifDuplex'] = 'halfDuplex'; break; case '2': $port_stats[$ifIndex]['ifDuplex'] = 'fullDuplex'; break; default: $port_stats[$ifIndex]['ifDuplex'] = 'unknown'; } } elseif (isset($entry['asETHPortSpeedDuplex'])) { switch ($entry['asETHPortSpeedDuplex']) { case 's10M-HALF': case 's100M-HALF': $port_stats[$ifIndex]['ifDuplex'] = 'halfDuplex'; break; case 's10M-FULL': case 's100M-FULL': case 's1000M-FULL': $port_stats[$ifIndex]['ifDuplex'] = 'fullDuplex'; break; default: $port_stats[$ifIndex]['ifDuplex'] = 'unknown'; } } // ifPhysAddress if (isset($entry['invMacAddress'])) { $port_stats[$ifIndex]['ifPhysAddress'] = $entry['invMacAddress']; } } } // EOF