1. Removed debug message from SMBIOS 2. Added workaround for LME/HECI behavior change between AMT/7 and AMT/11

1. Removed debug message from SMBIOS 2. Added workaround for LME/HECI behavior change between AMT/7 and AMT/11

Bryan Roe committed Nov 11, 2021 at 15:45 UTC 29fd370fc946ad88da551bfbc048c4b67dd45364
4 files changed +56 -454
agents/modules_meshcmd/amt-lme.js
+27 -449
@@ -17,7 +17,8 @@ limitations under the License.
17 var MemoryStream = require('MemoryStream');
18 var lme_id = 0; // Our next channel identifier
19 var lme_port_offset = 0; // Debug: Set this to "-100" to bind to 16892 & 16893 and IN_ADDRANY. This is for LMS debugging.
20 -var xmlParser = require('amt-xml');
20 +var xmlParser = null;
21 +try { xmlParser = require('amt-xml'); } catch (ex) { }
22
23 // Documented in: https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/HTMLDocuments/MPSDocuments/Intel%20AMT%20Port%20Forwarding%20Protocol%20Reference%20Manual.pdf
24 var APF_DISCONNECT = 1;
@@ -138,6 +139,7 @@ function lme_heci(options) {
139 this._LME.on('connect', function ()
140 {
141 this._connected = true;
142 + this._emitConnected = false;
143 this.on('data', function (chunk) {
144 // this = HECI
145 var cmd = chunk.readUInt8(0);
@@ -180,7 +182,8 @@ function lme_heci(options) {
182 }
183 if (this[name][port] == null)
184 {
183 - try {
185 + try
186 + {
187 // Bind a new server socket if not already present
188 this[name][port] = require('net').createServer();
189 this[name][port].descriptorMetadata = 'amt-lme (port: ' + port + ')';
@@ -195,8 +198,21 @@ function lme_heci(options) {
198 this.HECI.LMS.bindDuplexStream(socket, socket.remoteFamily, socket.localPort - lme_port_offset);
199 });
200 this._binded[port] = true;
201 + if (!this._emitConnected)
202 + {
203 + this._emitConnected = true;
204 + this.LMS.emit('error', 'APF/BIND error');
205 + }
206 this.LMS.emit('bind', this._binded);
199 - } catch (ex) { console.log(ex, 'Port ' + port); }
207 + } catch (ex)
208 + {
209 + console.info1(ex, 'Port ' + port);
210 + if(!this._emitConnected)
211 + {
212 + this._emitConnected = true;
213 + this.LMS.emit('error', 'APF/BIND error');
214 + }
215 + }
216 }
217 var outBuffer = Buffer.alloc(5);
218 outBuffer.writeUInt8(81, 0);
@@ -307,10 +323,10 @@ function lme_heci(options) {
323 if ((httpData != null) || (channel.data.length >= 8000)) {
324 // Parse the WSMAN
325 var notify = null;
310 - try { notify = xmlParser.ParseWsman(httpData); } catch (e) { }
326 + if (xmlParser != null) { try { notify = xmlParser.ParseWsman(httpData); } catch (e) { } }
327
328 // Event the http data
313 - if (notify != null) { this.LMS.emit('notify', notify, channel.options, _lmsNotifyToString(notify), _lmsNotifyToCode(notify)); }
329 + if (notify != null) { this.LMS.emit('notify', notify, channel.options, _lmsNotifyToCode(notify)); }
330
331 // Send channel close
332 var buffer = Buffer.alloc(5);
@@ -407,7 +423,12 @@ function lme_heci(options) {
423 break;
424 }
425 });
410 - this.LMS.emit('connect');
426 + //
427 + // Due to a change in behavior with AMT/11 (and possibly earlier), we are not going to emit 'connect' here, until
428 + // we can verify that the first APF/Channel can be bound. Older AMT, like AMT/7 only allowed a single LME connection, so we
429 + // used to emit connect here. However, newer AMT's will allow more than 1 LME connection, which will result in APF/Bind failure
430 + //
431 + //this.LMS.emit('connect');
432 this.resume();
433
434 });
@@ -463,447 +484,4 @@ function _lmsNotifyToCode(notify) {
484 return msgid;
485 }
486
466 -function _lmsNotifyToString(notify) {
467 - if ((notify == null) || (notify.Body == null) || (notify.Body.MessageID == null)) return null;
468 - var msgid = notify.Body.MessageID;
469 - try { msgid += '-' + notify.Body.MessageArguments[0]; } catch (e) { }
470 - if (lmsEvents[msgid]) { return lmsEvents[msgid]; }
471 - return null;
472 -}
473 -
474 -var lmsEvents = {
475 - "iAMT0001": "System Defense Policy %1s triggered.",
476 - "iAMT0002": "Agent Presence Agent %1s not started.",
477 - "iAMT0003": "Agent Presence Agent %1s stopped.",
478 - "iAMT0004": "Agent Presence Agent %1s running.",
479 - "iAMT0005": "Agent Presence Agent %1s expired.",
480 - "iAMT0006": "Agent Presence Agent %1s suspended.",
481 - "iAMT0007": "Host software attempt to disable AMT Network link detected.",
482 - "iAMT0008": "Host software attempt to disable AMT Network link detected -- Host Network link blocked.",
483 - "iAMT0009": "AMT clock or FLASH wear-out protection disabled.",
484 - "iAMT0010": "Intel(R) AMT Network Interface %1s heuristics defense slow threshold trespassed.",
485 - "iAMT0011": "Intel(R) AMT Network Interface %1s heuristics defense fast threshold trespassed.",
486 - "iAMT0012": "Intel(R) AMT Network Interface %1s heuristics defense factory defined threshold trespassed.",
487 - "iAMT0013": "Intel(R) AMT Network Interface %1s heuristics defense Encounter timeout expired.",
488 - "iAMT0014": "General certificate error.",
489 - "iAMT0015": "Certificate expired.",
490 - "iAMT0016": "No trusted root certificate.",
491 - "iAMT0017": "Not configured to work with server certificate.",
492 - "iAMT0018": "Certificate revoked.",
493 - "iAMT0019": "RSA exponent too large.",
494 - "iAMT0020": "RSA modulus too large.",
495 - "iAMT0021": "Unsupported digest.",
496 - "iAMT0022": "Distinguished name too long.",
497 - "iAMT0023": "Key usage missing.",
498 - "iAMT0024": "General SSL handshake error.",
499 - "iAMT0025": "General 802.1x error.",
500 - "iAMT0026": "AMT Diagnostic AlertEAC error - General NAC error.",
501 - "iAMT0027": "AMT Diagnostic AlertEAC error - attempt to get a NAC posture while AMT NAC is disabled.",
502 - "iAMT0028": "AMT Diagnostic AlertEAC error - attempt to get a posture of an unsupported type.",
503 - "iAMT0029": "Audit log storage is 50% full.",
504 - "iAMT0030": "Audit log storage is 75% full.",
505 - "iAMT0031": "Audit log storage is 85% full.",
506 - "iAMT0032": "Audit log storage is 95% full.",
507 - "iAMT0033": "Audit log storage is full.",
508 - "iAMT0034": "Firmware Update Event - Partial.",
509 - "iAMT0035": "Firmware Update Event - Failure.",
510 - "iAMT0036": "Remote connectivity initiated.",
511 - "iAMT0037": "ME Presence event.",
512 - "iAMT0038-0": "AMT is being unprovisioned using BIOS command.",
513 - "iAMT0038-1": "AMT is being unprovisioned using Local MEI command.",
514 - "iAMT0038-2": "AMT is being unprovisioned using Local WS-MAN/SOAP command.",
515 - "iAMT0038-3": "AMT is being unprovisioned using Remote WS-MAN/SOAP command.",
516 - "iAMT0039": "HW Asset Error.",
517 - "iAMT0050": "User Notification Alert - General Notification.",
518 - "iAMT0050-16": "User Notification Alert - Circuit Breaker notification (CB Drop TX filter hit.).",
519 - "iAMT0050-17": "User Notification Alert - Circuit Breaker notification (CB Rate Limit TX filter hit.).",
520 - "iAMT0050-18": "User Notification Alert - Circuit Breaker notification (CB Drop RX filter hit.).",
521 - "iAMT0050-19": "User Notification Alert - Circuit Breaker notification (CB Rate Limit RX filter hit.).",
522 - "iAMT0050-32": "User Notification Alert - EAC notification.",
523 - "iAMT0050-48": "User Notification Alert - Remote diagnostics - (Remote Redirection session started - SOL).",
524 - "iAMT0050-49": "User Notification Alert - Remote diagnostics - (Remote Redirection session stopped - SOL).",
525 - "iAMT0050-50": "User Notification Alert - Remote diagnostics. (Remote Redirection session started - IDE-R).",
526 - "iAMT0050-51": "User Notification Alert - Remote diagnostics. (Remote Redirection session stopped - IDE-R).",
527 - "iAMT0050-66": "User Notification Alert - WLAN notification (Host profile mismatch - Management Interface ignored).",
528 - "iAMT0050-67": "User Notification Alert - WLAN notification (Management device overrides host radio).",
529 - "iAMT0050-68": "User Notification Alert - WLAN notification (Host profile security mismatch).",
530 - "iAMT0050-69": "User Notification Alert - WLAN notification (Management device relinquishes control over host Radio).",
531 - "iAMT0051": "User Notification Alert - SecIo event.",
532 - "iAMT0051-0": "User Notification Alert - SecIo event semaphore at host.",
533 - "iAMT0051-1": "User Notification Alert - semaphore at ME.",
534 - "iAMT0051-2": "User Notification Alert - SecIo event - semaphore timeout.",
535 - "iAMT0052": "User Notification Alert - KVM session event.",
536 - "iAMT0052-0": "User Notification Alert - KVM session requested.",
537 - "iAMT0052-1": "User Notification Alert - KVM session started.",
538 - "iAMT0052-2": "User Notification Alert - KVM session stopped.",
539 - "iAMT0052-3": "User Notification Alert - KVM data channel.",
540 - "iAMT0053": "User Notification Alert - RCS notification.",
541 - "iAMT0053-50": "User Notification Alert - RCS notification (HW button pressed. Connection initiated automatically).",
542 - "iAMT0053-52": "User Notification Alert - RCS notification (HW button pressed. Connection wasn't initiated automatically).",
543 - "iAMT0053-53": "User Notification Alert - RCS notification (Contracts updated).",
544 - "iAMT0054": "User Notification Alert - WLAN notification. Wireless Profile sync enablement state changed.",
545 - "iAMT0055": "User Notification Alert - Provisioning state change notification.",
546 - "iAMT0055-0": "User Notification Alert - Provisioning state change notification - Pre-configuration.",
547 - "iAMT0055-1": "User Notification Alert - Provisioning state change notification - In configuration.",
548 - "iAMT0055-2": "User Notification Alert - Provisioning state change notification - Post-configuration.",
549 - "iAMT0055-3": "User Notification Alert - Provisioning state change notification - Unprovision process has started.",
550 - "iAMT0056": "User Notification Alert - System Defense change notification.",
551 - "iAMT0057": "User Notification Alert - Network State change notification.",
552 - "iAMT0058": "User Notification Alert - Remote Access change notification.",
553 - "iAMT0058-1": "User Notification Alert - Remote Access change notification - tunnel is closed.",
554 - //"iAMT0058-1": "User Notification Alert - Remote Access change notification - tunnel is open.", // TODO
555 - "iAMT0059": "User Notification Alert - KVM enabled event.",
556 - "iAMT0059-0": "User Notification Alert - KVM enabled event - KVM disabled.",
557 - "iAMT0059-1": "User Notification Alert - KVM enabled event - KVM enabled (both from MEBx and PTNI).",
558 - "iAMT0060": "User Notification Alert - SecIO configuration event.",
559 - "iAMT0061": "ME FW reset occurred.",
560 - "iAMT0062": "User Notification Alert - IpSyncEnabled event.",
561 - "iAMT0062-0": "User Notification Alert - IpSyncEnabled event - IpSync disabled.",
562 - "iAMT0062-1": "User Notification Alert - IpSyncEnabled event - IpSync enabled.",
563 - "iAMT0063": "User Notification Alert - HTTP Proxy sync enabled event.",
564 - "iAMT0063-0": "User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync disabled.",
565 - "iAMT0063-1": "User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync enabled.",
566 - "iAMT0064": "User Notification Alert - User Consent event.",
567 - "iAMT0064-1": "User Notification Alert - User Consent event - User Consent granted.",
568 - "iAMT0064-2": "User Notification Alert - User Consent event - User Consent ended.",
569 - "iAMT0067-0": "Graceful Remote Control Operation - Shutdown.",
570 - "iAMT0067-1": "Graceful Remote Control Operation - Reset.",
571 - "iAMT0067-2": "Graceful Remote Control Operation - Hibernate.",
572 - "iAMT0068-0": "Link Protection Notification - No link protection.",
573 - "iAMT0068-1": "Link Protection Notification - Passive link protection.",
574 - "iAMT0068-2": "Link Protection Notification - High link protection.",
575 - "iAMT0069-0": "Local Time Sync Enablement Notification - Local Time Sync Disabled.",
576 - "iAMT0069-1": "Local Time Sync Enablement Notification - Local Time Sync Enabled.",
577 - "iAMT0070": "Host Reset Triggered by WD Expiration Notification.",
578 - "PLAT0004": "The chassis %1s was opened.",
579 - "PLAT0005": "The chassis %1s was closed.",
580 - "PLAT0006": "The drive bay %1s was opened.",
581 - "PLAT0007": "The drive bay %1s was closed.",
582 - "PLAT0008": "The I/O card area %1s was opened.",
583 - "PLAT0009": "The I/O card area %1s was closed.",
584 - "PLAT0010": "The processor area %1s was opened.",
585 - "PLAT0011": "The processor area %1s was closed.",
586 - "PLAT0012": "The LAN %1s has been disconnected.",
587 - "PLAT0013": "The LAN %1s has been connected.",
588 - "PLAT0016": "The permission to insert package %1s has been granted.",
589 - "PLAT0017": "The permission to insert package %1s has been removed.",
590 - "PLAT0018": "The fan card area %1s is open.",
591 - "PLAT0019": "The fan card area %1s is closed.",
592 - "PLAT0022": "The computer system %1s has detected a secure mode violation.",
593 - "PLAT0024": "The computer system %1s has detected a pre-boot user password violation.",
594 - "PLAT0026": "The computer system %1s has detected a pre-boot setup password violation.",
595 - "PLAT0028": "The computer system %1s has detected a network boot password violation.",
596 - "PLAT0030": "The computer system %1s has detected a password violation.",
597 - "PLAT0032": "The management controller %1s has detected an out-of-band password violation.",
598 - "PLAT0034": "The processor %1s has been added.",
599 - "PLAT0035": "The processor %1s has been removed.",
600 - "PLAT0036": "An over-temperature condition has been detected on the processor %1s.",
601 - "PLAT0037": "An over-temperature condition has been removed on the processor %1s.",
602 - "PLAT0038": "The processor %1s is operating in a degraded State.",
603 - "PLAT0039": "The processor %1s is no longer operating in a degraded State.",
604 - "PLAT0040": "The processor %1s has failed.",
605 - "PLAT0042": "The processor %1s has failed.",
606 - "PLAT0044": "The processor %1s has failed.",
607 - "PLAT0046": "The processor %1s has failed.",
608 - "PLAT0048": "The processor %1s has failed.",
609 - "PLAT0060": "The processor %1s has been enabled.",
610 - "PLAT0061": "The processor %1s has been disabled.",
611 - "PLAT0062": "The processor %1s has a configuration mismatch.",
612 - "PLAT0064": "A terminator has been detected on the processor %1s.",
613 - "PLAT0084": "The Power Supply %1s has been added.",
614 - "PLAT0085": "The Power Supply %1s has been removed.",
615 - "PLAT0086": "The Power Supply %1s has failed.",
616 - "PLAT0088": "Failure predicted on power supply %1s.",
617 - "PLAT0096": "The input to power supply %1s has been lost or fallen out of range.",
618 - "PLAT0098": "The power supply %1s is operating in an input state that is out of range.",
619 - "PLAT0099": "The power supply %1s has returned to a normal input state.",
620 - "PLAT0100": "The power supply %1s has lost input.",
621 - "PLAT0104": "The power supply %1s has a configuration mismatch.",
622 - "PLAT0106": "Power supply %1s has been disabled.",
623 - "PLAT0107": "Power supply %1s has been enabled.",
624 - "PLAT0108": "Power supply %1s has been power cycled.",
625 - "PLAT0110": "Power supply %1s has encountered an error during power down.",
626 - "PLAT0112": "Power supply %1s has lost power.",
627 - "PLAT0114": "Soft power control has failed for power supply %1s.",
628 - "PLAT0116": "Power supply %1s has failed.",
629 - "PLAT0118": "Failure predicted on power supply %1s.",
630 - "PLAT0120": "Memory subsystem failure.",
631 - "PLAT0122": "DIMM missing.",
632 - "PLAT0124": "Memory error detected & corrected for DIMM %1s.",
633 - "PLAT0128": "Memory DIMM %1s added.",
634 - "PLAT0129": "Memory DIMM %1s removed.",
635 - "PLAT0130": "Memory DIMM %1s enabled.",
636 - "PLAT0131": "Memory DIMM %1s disabled.",
637 - "PLAT0134": "Memory parity error for DIMM %1s.",
638 - "PLAT0136": "Memory scrub failure for DIMM %1s.",
639 - "PLAT0138": "Memory uncorrectable error detected for DIMM %1s.",
640 - "PLAT0140": "Memory sparing initiated for DIMM %1s.",
641 - "PLAT0141": "Memory sparing concluded for DIMM %1s.",
642 - "PLAT0142": "Memory DIMM %1s Throttled.",
643 - "PLAT0144": "Memory logging limit reached for DIMM %1s.",
644 - "PLAT0145": "Memory logging limit removed for DIMM %1s.",
645 - "PLAT0146": "An over-temperature condition has been detected on the Memory DIMM %1s.",
646 - "PLAT0147": "An over-temperature condition has been removed on the Memory DIMM %1s.",
647 - "PLAT0162": "The drive %1s has been added.",
648 - "PLAT0163": "The drive %1s has been removed.",
649 - "PLAT0164": "The drive %1s has been disabled due to a detected fault.",
650 - "PLAT0167": "The drive %1s has been enabled.",
651 - "PLAT0168": "Failure predicted on drive %1s.",
652 - "PLAT0170": "Hot spare enabled for %1s.",
653 - "PLAT0171": "Hot spare disabled for %1s.",
654 - "PLAT0172": "Consistency check has begun for %1s.",
655 - "PLAT0173": "Consistency check completed for %1s.",
656 - "PLAT0174": "Array %1s is in critical condition.",
657 - "PLAT0176": "Array %1s has failed.",
658 - "PLAT0177": "Array %1s has been restored.",
659 - "PLAT0178": "Rebuild in progress for array %1s.",
660 - "PLAT0179": "Rebuild completed for array %1s.",
661 - "PLAT0180": "Rebuild Aborted for array %1s.",
662 - "PLAT0184": "The system %1s encountered a POST error.",
663 - "PLAT0186": "The system %1s encountered a firmware hang.",
664 - "PLAT0188": "The system %1s encountered firmware progress.",
665 - "PLAT0192": "The log %1s has been disabled.",
666 - "PLAT0193": "The log %1s has been enabled.",
667 - "PLAT0194": "The log %1s has been disabled.",
668 - "PLAT0195": "The log %1s has been enabled.",
669 - "PLAT0196": "The log %1s has been disabled.",
670 - "PLAT0198": "The log %1s has been enabled.",
671 - "PLAT0200": "The log %1s has been cleared.",
672 - "PLAT0202": "The log %1s is full.",
673 - "PLAT0203": "The log %1s is no longer full.",
674 - "PLAT0204": "The log %1s is almost full.",
675 - "PLAT0208": "The log %1s has a configuration error.",
676 - "PLAT0210": "The system %1s has been reconfigured.",
677 - "PLAT0212": "The system %1s has encountered an OEM system boot event.",
678 - "PLAT0214": "The system %1s has encountered an unknown system hardware fault.",
679 - "PLAT0216": "The system %1s has generated an auxiliary log entry.",
680 - "PLAT0218": "The system %1s has executed a PEF action.",
681 - "PLAT0220": "The system %1s has synchronized the system clock.",
682 - "PLAT0222": "A diagnostic interrupt has occurred on system %1s.",
683 - "PLAT0224": "A bus timeout has occurred on system %1s.",
684 - "PLAT0226": "An I/O channel check NMI has occurred on system %1s.",
685 - "PLAT0228": "A software NMI has occurred on system %1s.",
686 - "PLAT0230": "System %1s has recovered from an NMI.",
687 - "PLAT0232": "A PCI PERR has occurred on system %1s.",
688 - "PLAT0234": "A PCI SERR has occurred on system %1s.",
689 - "PLAT0236": "An EISA fail safe timeout occurred on system %1s.",
690 - "PLAT0238": "A correctable bus error has occurred on system %1s.",
691 - "PLAT0240": "An uncorrectable bus error has occurred on system %1s.",
692 - "PLAT0242": "A fatal NMI error has occurred on system %1s.",
693 - "PLAT0244": "A fatal bus error has occurred on system %1s.",
694 - "PLAT0246": "A bus on system %1s is operating in a degraded state.",
695 - "PLAT0247": "A bus on system %1s is no longer operating in a degraded state.",
696 - "PLAT0248": "The power button %1s has been pressed.",
697 - "PLAT0249": "The power button %1s has been released.",
698 - "PLAT0250": "The sleep button %1s has been pressed.",
699 - "PLAT0251": "The sleep button %1s has been released.",
700 - "PLAT0252": "The reset button %1s has been pressed.",
701 - "PLAT0253": "The reset button %1s has been released.",
702 - "PLAT0254": "The latch to %1s has been opened.",
703 - "PLAT0255": "The latch to %1s has been closed.",
704 - "PLAT0256": "The service request %1s has been enabled.",
705 - "PLAT0257": "The service request %1s has been completed.",
706 - "PLAT0258": "Power control of system %1s has failed.",
707 - "PLAT0262": "The network port %1s has been connected.",
708 - "PLAT0263": "The network port %1s has been disconnected.",
709 - "PLAT0266": "The connector %1s has encountered a configuration error.",
710 - "PLAT0267": "The connector %1s configuration error has been repaired.",
711 - "PLAT0272": "Power on for system %1s.",
712 - "PLAT0274": "Power cycle hard requested for system %1s.",
713 - "PLAT0276": "Power cycle soft requested for system %1s.",
714 - "PLAT0278": "PXE boot requested for system %1s.",
715 - "PLAT0280": "Diagnostics boot requested for system %1s.",
716 - "PLAT0282": "System restart requested for system %1s.",
717 - "PLAT0284": "System restart begun for system %1s.",
718 - "PLAT0286": "No bootable media available for system %1s.",
719 - "PLAT0288": "Non-bootable media selected for system %1s.",
720 - "PLAT0290": "PXE server not found for system %1s.",
721 - "PLAT0292": "User timeout on boot for system %1s.",
722 - "PLAT0296": "System %1s boot from floppy initiated.",
723 - "PLAT0298": "System %1s boot from local drive initiated.",
724 - "PLAT0300": "System %1s boot from PXE on network port initiated.",
725 - "PLAT0302": "System %1s boot diagnostics initiated.",
726 - "PLAT0304": "System %1s boot from CD initiated.",
727 - "PLAT0306": "System %1s boot from ROM initiated.",
728 - "PLAT0312": "System %1s boot initiated.",
729 - "PLAT0320": "Critical stop during OS load on system %1s.",
730 - "PLAT0322": "Run-time critical stop on system %1s.",
731 - "PLAT0324": "OS graceful stop on system %1s.",
732 - "PLAT0326": "OS graceful shutdown begun on system %1s.",
733 - "PLAT0327": "OS graceful shutdown completed on system %1s.",
734 - "PLAT0328": "Agent not responding on system %1s.",
735 - "PLAT0329": "Agent has begun responding on system %1s.",
736 - "PLAT0330": "Fault in slot on system %1s.",
737 - "PLAT0331": "Fault condition removed on system %1s.",
738 - "PLAT0332": "Identifying slot on system %1s.",
739 - "PLAT0333": "Identify stopped on slot for system %1s.",
740 - "PLAT0334": "Package installed in slot for system %1s.",
741 - "PLAT0336": "Slot empty system %1s.",
742 - "PLAT0338": "Slot in system %1s is ready for installation.",
743 - "PLAT0340": "Slot in system %1s is ready for removal.",
744 - "PLAT0342": "Power is off on slot of system %1s.",
745 - "PLAT0344": "Power is on for slot of system %1s.",
746 - "PLAT0346": "Removal requested for slot of system %1s.",
747 - "PLAT0348": "Interlock activated on slot of system %1s.",
748 - "PLAT0349": "Interlock de-asserted on slot of system %1s.",
749 - "PLAT0350": "Slot disabled on system %1s.",
750 - "PLAT0351": "Slot enabled on system %1s.",
751 - "PLAT0352": "Slot of system %1s holds spare.",
752 - "PLAT0353": "Slot of system %1s no longer holds spare.",
753 - "PLAT0354": "Computer system %1s enabled.",
754 - "PLAT0356": "Computer system %1s is in sleep - light mode.",
755 - "PLAT0358": "Computer system %1s is in hibernate.",
756 - "PLAT0360": "Computer system %1s is in standby.",
757 - "PLAT0362": "Computer system %1s is in soft off mode.",
758 - "PLAT0364": "Computer system %1s is in hard off mode.",
759 - "PLAT0366": "Computer system %1s is sleeping.",
760 - "PLAT0368": "Watchdog timer expired for %1s.",
761 - "PLAT0370": "Reboot of system initiated by watchdog %1s.",
762 - "PLAT0372": "Powering off system initiated by watchdog %1s.",
763 - "PLAT0374": "Power cycle of system initiated by watchdog %1s.",
764 - "PLAT0376": "Watchdog timer interrupt occurred for %1s.",
765 - "PLAT0378": "A page alert has been generated for system %1s.",
766 - "PLAT0380": "A LAN alert has been generated for system %1s.",
767 - "PLAT0382": "An event trap has been generated for system %1s.",
768 - "PLAT0384": "An SNMP trap has been generated for system %1s.",
769 - "PLAT0390": "%1s detected as present.",
770 - "PLAT0392": "%1s detected as absent.",
771 - "PLAT0394": "%1s has been disabled.",
772 - "PLAT0395": "%1s has been enabled.",
773 - "PLAT0396": "Heartbeat lost for LAN %1s.",
774 - "PLAT0397": "Heartbeat detected for LAN %1s.",
775 - "PLAT0398": "Sensor %1s is unavailable or degraded on management system.",
776 - "PLAT0399": "Sensor %1s has returned to normal on management system.",
777 - "PLAT0400": "Controller %1s is unavailable or degraded on management system.",
778 - "PLAT0401": "Controller %1s has returned to normal on management system.",
779 - "PLAT0402": "Management system %1s is off-line.",
780 - "PLAT0404": "Management system %1s is disabled.",
781 - "PLAT0405": "Management system %1s is enabled.",
782 - "PLAT0406": "Sensor %1s has failed on management system.",
783 - "PLAT0408": "FRU %1s has failed on management system.",
784 - "PLAT0424": "The battery %1s is critically low.",
785 - "PLAT0427": "The battery %1s is no longer critically low.",
786 - "PLAT0430": "The battery %1s has been removed from unit.",
787 - "PLAT0431": "The battery %1s has been added.",
788 - "PLAT0432": "The battery %1s has failed.",
789 - "PLAT0434": "Session audit is deactivated on system %1s.",
790 - "PLAT0435": "Session audit is activated on system %1s.",
791 - "PLAT0436": "A hardware change occurred on system %1s.",
792 - "PLAT0438": "A firmware or software change occurred on system %1s.",
793 - "PLAT0440": "A hardware incompatibility was detected on system %1s.",
794 - "PLAT0442": "A firmware or software incompatibility was detected on system %1s.",
795 - "PLAT0444": "Invalid or unsupported hardware was detected on system %1s.",
796 - "PLAT0446": "Invalid or unsupported firmware or software was detected on system %1s.",
797 - "PLAT0448": "A successful hardware change was detected on system %1s.",
798 - "PLAT0450": "A successful software or firmware change was detected on system %1s.",
799 - "PLAT0464": "FRU %1s not installed on system.",
800 - "PLAT0465": "FRU %1s installed on system.",
801 - "PLAT0466": "Activation requested for FRU %1s on system.",
802 - "PLAT0467": "FRU %1s on system is active.",
803 - "PLAT0468": "Activation in progress for FRU %1s on system.",
804 - "PLAT0470": "Deactivation request for FRU %1s on system.",
805 - "PLAT0471": "FRU %1s on system is in standby or \"hot spare\" state.",
806 - "PLAT0472": "Deactivation in progress for FRU %1s on system.",
807 - "PLAT0474": "Communication lost with FRU %1s on system.",
808 - "PLAT0476": "Numeric sensor %1s going low (lower non-critical).",
809 - "PLAT0478": "Numeric sensor %1s going high (lower non-critical).",
810 - "PLAT0480": "Numeric sensor %1s going low (lower critical).",
811 - "PLAT0482": "Numeric sensor %1s going high (lower critical).",
812 - "PLAT0484": "Numeric sensor %1s going low (lower non-recoverable).",
813 - "PLAT0486": "Numeric sensor %1s going high (lower non-critical).",
814 - "PLAT0488": "Numeric sensor %1s going low (upper non-critical).",
815 - "PLAT0490": "Numeric sensor %1s going high (upper non-critical).",
816 - "PLAT0492": "Numeric sensor %1s going low (upper critical).",
817 - "PLAT0494": "Numeric sensor %1s going high (upper critical).",
818 - "PLAT0496": "Numeric sensor %1s going low (upper non-recoverable).",
819 - "PLAT0498": "Numeric sensor %1s going high (upper non-recoverable).",
820 - "PLAT0500": "Sensor %1s has transitioned to idle.",
821 - "PLAT0502": "Sensor %1s has transitioned to active.",
822 - "PLAT0504": "Sensor %1s has transitioned to busy.",
823 - "PLAT0508": "Sensor %1s has asserted.",
824 - "PLAT0509": "Sensor %1s has de-asserted.",
825 - "PLAT0510": "Sensor %1s is asserting predictive failure.",
826 - "PLAT0511": "Sensor %1s is de-asserting predictive failure.",
827 - "PLAT0512": "Sensor %1s has indicated limit exceeded.",
828 - "PLAT0513": "Sensor %1s has indicated limit no longer exceeded.",
829 - "PLAT0514": "Sensor %1s has indicated performance met.",
830 - "PLAT0516": "Sensor %1s has indicated performance lags.",
831 - "PLAT0518": "Sensor %1s has transitioned to normal state.",
832 - "PLAT0520": "Sensor %1s has transitioned from normal to non-critical state.",
833 - "PLAT0522": "Sensor %1s has transitioned to critical from a less severe state.",
834 - "PLAT0524": "Sensor %1s has transitioned to non-recoverable from a less severe state.",
835 - "PLAT0526": "Sensor %1s has transitioned to non-critical from a more severe state.",
836 - "PLAT0528": "Sensor %1s has transitioned to critical from a non-recoverable state.",
837 - "PLAT0530": "Sensor %1s has transitioned to non-recoverable.",
838 - "PLAT0532": "Sensor %1s indicates a monitor state.",
839 - "PLAT0534": "Sensor %1s has an informational state.",
840 - "PLAT0536": "Device %1s has been added.",
841 - "PLAT0537": "Device %1s has been removed from unit.",
842 - "PLAT0538": "Device %1s has been enabled.",
843 - "PLAT0539": "Device %1s has been disabled.",
844 - "PLAT0540": "Sensor %1s has indicated a running state.",
845 - "PLAT0544": "Sensor %1s has indicated a power off state.",
846 - "PLAT0546": "Sensor %1s has indicated an on-line state.",
847 - "PLAT0548": "Sensor %1s has indicated an off-line state.",
848 - "PLAT0550": "Sensor %1s has indicated an off-duty state.",
849 - "PLAT0552": "Sensor %1s has indicated a degraded state.",
850 - "PLAT0554": "Sensor %1s has indicated a power save state.",
851 - "PLAT0556": "Sensor %1s has indicated an install error.",
852 - "PLAT0558": "Redundancy %1s has been lost.",
853 - "PLAT0560": "Redundancy %1s has been reduced.",
854 - "PLAT0561": "Redundancy %1s has been restored.",
855 - "PLAT0562": "%1s has transitioned to a D0 power state.",
856 - "PLAT0564": "%1s has transitioned to a D1 power state.",
857 - "PLAT0566": "%1s has transitioned to a D2 power state.",
858 - "PLAT0568": "%1s has transitioned to a D3 power state.",
859 - "PLAT0720": "The System %1s encountered firmware progress - memory initialization entry.",
860 - "PLAT0721": "The System %1s encountered firmware progress - memory initialization exit.",
861 - "PLAT0722": "The System %1s encountered firmware progress - hard drive initialization entry.",
862 - "PLAT0723": "The System %1s encountered firmware progress - hard drive initialization exit.",
863 - "PLAT0724": "The System %1s encountered firmware progress - user authentication.",
864 - "PLAT0728": "The System %1s encountered firmware progress - USR resource configuration entry.",
865 - "PLAT0729": "The System %1s encountered firmware progress - USR resource configuration exit.",
866 - "PLAT0730": "The System %1s encountered firmware progress - PCI recource configuration entry.",
867 - "PLAT0731": "The System %1s encountered firmware progress - PCI recource configuration exit.",
868 - "PLAT0732": "The System %1s encountered firmware progress - Option ROM initialization entry.",
869 - "PLAT0733": "The System %1s encountered firmware progress - Option ROM initialization entry exit.",
870 - "PLAT0734": "The System %1s encountered firmware progress -video initialization entry entry.",
871 - "PLAT0735": "The System %1s encountered firmware progress - video initialization entry exit.",
872 - "PLAT0736": "The System %1s encountered firmware progress - cache initialization entry.",
873 - "PLAT0737": "The System %1s encountered firmware progress - cache initialization exit.",
874 - "PLAT0738": "The System %1s encountered firmware progress - keyboard controller initialization entry.",
875 - "PLAT0739": "The System %1s encountered firmware progress - keyboard controller initialization exit.",
876 - "PLAT0740": "The System %1s encountered firmware progress - motherboard initialization entry.",
877 - "PLAT0741": "The System %1s encountered firmware progress - motherboard initialization exit.",
878 - "PLAT0742": "The System %1s encountered firmware progress - floppy disk initialization entry.",
879 - "PLAT0743": "The System %1s encountered firmware progress - floppy disk initialization exit.",
880 - "PLAT0744": "The System %1s encountered firmware progress - keyboard test entry.",
881 - "PLAT0745": "The System %1s encountered firmware progress - keyboard test exit.",
882 - "PLAT0746": "The System %1s encountered firmware progress - pointing device test entry.",
883 - "PLAT0747": "The System %1s encountered firmware progress - pointing device test exit.",
884 - "PLAT0750": "The System %1s encountered firmware progress - dock enable entry.",
885 - "PLAT0751": "The System %1s encountered firmware progress - dock enable exit.",
886 - "PLAT0752": "The System %1s encountered firmware progress - dock disable entry.",
887 - "PLAT0753": "The System %1s encountered firmware progress - dock disable exit.",
888 - "PLAT0760": "The System %1s encountered firmware progress - start OS boot process.",
889 - "PLAT0762": "The System %1s encountered firmware progress - call OS wake vector.",
890 - "PLAT0764": "The System %1s encountered firmware progress - unrecoverable keyboard failure.",
891 - "PLAT0766": "The System %1s encountered firmware progress - no video device detected.",
892 - "PLAT0768": "The System %1s encountered firmware progress - SMART alert detected on drive.",
893 - "PLAT0770": "The System %1s encountered firmware progress - unrecoverable boot device failure.",
894 - "PLAT0789": "Corrupt BIOS detected.",
895 - "PLAT0790": "The System %1s encountered PCI configuration failure.",
896 - "PLAT0791": "The System %1s encountered a video subsystem failure.",
897 - "PLAT0792": "The System %1s encountered a storage subsystem failure.",
898 - "PLAT0793": "The System %1s encountered a USB subsystem failure.",
899 - "PLAT0794": "The System %1s has detected no memory in the system.",
900 - "PLAT0795": "The System %1s encountered a motherboard failure.",
901 - "PLAT0796": "The System %1s encountered a memory Regulator Voltage Bad.",
902 - "PLAT0797": "%1s PCI reset is not deasserting.",
903 - "PLAT0798": "%1s Non-Motherboard Regulator Failure.",
904 - "PLAT0799": "%1s Power Supply Cable failure.",
905 - "PLAT0800": "%1s Motherboard regulator failure.",
906 - "PLAT0801": "%1s System component compatibility mismatch."
907 -}
908 -
487 module.exports = lme_heci;
agents/modules_meshcmd/smbios.js
+6 -1
@@ -101,7 +101,6 @@ function SMBiosTables()
101 }
102 catch (ee)
103 {
104 - console.log('oops');
104 }
105 }
106 i += (ret[SMtype].peek()._strings.length == 0) ? 2 : 1;
@@ -191,6 +190,12 @@ function SMBiosTables()
190 catch(e)
191 {
192 }
193 + try
194 + {
195 + if (JSON.stringify(r).length > 65535) { r = {}; }
196 + }
197 + catch(ee)
198 + {}
199 return r;
200 }
201 this.processorInfo = function processorInfo(data) {
agents/modules_meshcore/amt-lme.js
+23 -3
@@ -139,6 +139,7 @@ function lme_heci(options) {
139 this._LME.on('connect', function ()
140 {
141 this._connected = true;
142 + this._emitConnected = false;
143 this.on('data', function (chunk) {
144 // this = HECI
145 var cmd = chunk.readUInt8(0);
@@ -181,7 +182,8 @@ function lme_heci(options) {
182 }
183 if (this[name][port] == null)
184 {
184 - try {
185 + try
186 + {
187 // Bind a new server socket if not already present
188 this[name][port] = require('net').createServer();
189 this[name][port].descriptorMetadata = 'amt-lme (port: ' + port + ')';
@@ -196,8 +198,21 @@ function lme_heci(options) {
198 this.HECI.LMS.bindDuplexStream(socket, socket.remoteFamily, socket.localPort - lme_port_offset);
199 });
200 this._binded[port] = true;
201 + if (!this._emitConnected)
202 + {
203 + this._emitConnected = true;
204 + this.LMS.emit('error', 'APF/BIND error');
205 + }
206 this.LMS.emit('bind', this._binded);
200 - } catch (ex) { console.log(ex, 'Port ' + port); }
207 + } catch (ex)
208 + {
209 + console.info1(ex, 'Port ' + port);
210 + if(!this._emitConnected)
211 + {
212 + this._emitConnected = true;
213 + this.LMS.emit('error', 'APF/BIND error');
214 + }
215 + }
216 }
217 var outBuffer = Buffer.alloc(5);
218 outBuffer.writeUInt8(81, 0);
@@ -408,7 +423,12 @@ function lme_heci(options) {
423 break;
424 }
425 });
411 - this.LMS.emit('connect');
426 + //
427 + // Due to a change in behavior with AMT/11 (and possibly earlier), we are not going to emit 'connect' here, until
428 + // we can verify that the first APF/Channel can be bound. Older AMT, like AMT/7 only allowed a single LME connection, so we
429 + // used to emit connect here. However, newer AMT's will allow more than 1 LME connection, which will result in APF/Bind failure
430 + //
431 + //this.LMS.emit('connect');
432 this.resume();
433
434 });
agents/modules_meshcore/smbios.js
-1
@@ -101,7 +101,6 @@ function SMBiosTables()
101 }
102 catch (ee)
103 {
104 - console.log('oops');
104 }
105 }
106 i += (ret[SMtype].peek()._strings.length == 0) ? 2 : 1;