move pcucontrol package into pcucontrol module.
Barış Metin [Tue, 22 Dec 2009 12:02:27 +0000 (12:02 +0000)]
88 files changed:
pcucontrol/__init__.py [new file with mode: 0644]
pcucontrol/models/APCControl.py [new file with mode: 0644]
pcucontrol/models/BayTech.py [new file with mode: 0644]
pcucontrol/models/BlackBoxPSMaverick.py [new file with mode: 0644]
pcucontrol/models/CustomPCU.py [new file with mode: 0644]
pcucontrol/models/DRAC.py [new file with mode: 0644]
pcucontrol/models/HPiLO.py [new file with mode: 0644]
pcucontrol/models/IPAL.py [new file with mode: 0644]
pcucontrol/models/IntelAMT.py [new file with mode: 0644]
pcucontrol/models/ManualPCU.py [new file with mode: 0644]
pcucontrol/models/OpenIPMI.py [new file with mode: 0644]
pcucontrol/models/PM211MIP.py [new file with mode: 0644]
pcucontrol/models/WTIIPS4.py [new file with mode: 0644]
pcucontrol/models/X10Toggle.py [new file with mode: 0644]
pcucontrol/models/__init__.py [new file with mode: 0644]
pcucontrol/models/ePowerSwitch.py [new file with mode: 0644]
pcucontrol/models/hpilo/iloxml/Get_Network.xml [new file with mode: 0644]
pcucontrol/models/hpilo/iloxml/PowerOff_Server.xml [new file with mode: 0644]
pcucontrol/models/hpilo/iloxml/PowerOn_Server.xml [new file with mode: 0644]
pcucontrol/models/hpilo/iloxml/Reset_Server.xml [new file with mode: 0644]
pcucontrol/models/hpilo/locfg.pl [new file with mode: 0755]
pcucontrol/models/intelamt/Include/CommonDefinitions.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/IMRSDK.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/StatusCodeDefinitions.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogLocalInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogRemoteInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/CertStore.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/CircuitBreakerInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/Common.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EITInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlAdminInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EventManagerClientInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/FirmwareUpdateInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/GeneralInfoInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/HardwareAssetInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/NetworkAdministrationInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/NetworkTimeInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/RedirectionInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/RemoteControlInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/SecurityAdministrationInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/SecurityAdministrationInterface.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/StorageAdministrationInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/StorageInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/UserNotificationInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/WirelessConfigurationInterface.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/WirelessConfigurationInterface.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/XProfile.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/gNameSpaces.dat [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/wsman.wsdl [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/wsman.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/WSDL/wsmancat.xsd [new file with mode: 0644]
pcucontrol/models/intelamt/Include/digcalc.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/httpDigest.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/iamt_api.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/soapH.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/soapStub.h [new file with mode: 0644]
pcucontrol/models/intelamt/Include/stdsoap2.h [new file with mode: 0644]
pcucontrol/models/intelamt/Makefile [new file with mode: 0644]
pcucontrol/models/intelamt/README [new file with mode: 0644]
pcucontrol/models/intelamt/RemoteControlSample.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/RemoteControlSoapBinding.nsmap [new file with mode: 0644]
pcucontrol/models/intelamt/RemoteControlTypes.h [new file with mode: 0644]
pcucontrol/models/intelamt/Utils.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/digcalc.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/httpDigest.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/soapC.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/soapClient.cpp [new file with mode: 0644]
pcucontrol/models/intelamt/stdsoap2.cpp [new file with mode: 0644]
pcucontrol/models/racadm.py [new file with mode: 0755]
pcucontrol/reboot.py [new file with mode: 0755]
pcucontrol/transports/__init__.py [new file with mode: 0644]
pcucontrol/transports/pyssh/.cvsignore [new file with mode: 0644]
pcucontrol/transports/pyssh/__init__.py [new file with mode: 0644]
pcucontrol/transports/pyssh/fssa.py [new file with mode: 0644]
pcucontrol/transports/pyssh/nbpipe.py [new file with mode: 0644]
pcucontrol/transports/pyssh/ptyext.py [new file with mode: 0644]
pcucontrol/transports/ssh/LICENSE [new file with mode: 0644]
pcucontrol/transports/ssh/__init__.py [new file with mode: 0644]
pcucontrol/transports/ssh/fdpexpect.py [new file with mode: 0644]
pcucontrol/transports/ssh/pexpect.py [new file with mode: 0644]
pcucontrol/transports/ssh/pxssh.py [new file with mode: 0644]
pcucontrol/transports/telnetlib.py [new file with mode: 0644]
pcucontrol/util/__init__.py [new file with mode: 0644]
pcucontrol/util/command.py [new file with mode: 0644]

diff --git a/pcucontrol/__init__.py b/pcucontrol/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/pcucontrol/models/APCControl.py b/pcucontrol/models/APCControl.py
new file mode 100644 (file)
index 0000000..59cc649
--- /dev/null
@@ -0,0 +1,177 @@
+from pcucontrol.reboot import *
+
+class APCControl(PCUControl):
+       supported_ports = [22,23,80,443]
+       reboot_sequence = []
+
+       def run(self, node_port, dryrun):
+               print "RUNNING!!!!!!!!!!!!"
+               if self.transport.type == Transport.HTTPS or self.type == Transport.HTTP:
+                       print "APC via http...."
+                       return self.run_http_or_https(node_port, dryrun)
+               else:
+                       print "APC via telnet/ssh...."
+                       return self.run_telnet_or_ssh(node_port, dryrun)
+       
+       def run_ssh(self, node_port, dryrun):
+               return self.run_telnet_or_ssh(node_port, dryrun)
+       def run_telnet(self, node_port, dryrun):
+               return self.run_telnet_or_ssh(node_port, dryrun)
+
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.transport.open(self.host, self.username)
+               self.transport.sendPassword(self.password)
+
+               first = True
+               for val in self.reboot_sequence:
+                       if first:
+                               self.transport.ifThenSend("\r\n> ", val, ExceptionPassword)
+                               first = False
+                       else:
+                               self.transport.ifThenSend("\r\n> ", val)
+
+               if not dryrun:
+                       self.transport.ifThenSend("Enter 'YES' to continue or <ENTER> to cancel", 
+                                                       "YES\r\n",
+                                                       ExceptionSequence)
+               else:
+                       self.transport.ifThenSend("Enter 'YES' to continue or <ENTER> to cancel", 
+                                                       "", ExceptionSequence)
+               self.transport.ifThenSend("Press <ENTER> to continue...", "", ExceptionSequence)
+
+               self.transport.close()
+               return 0
+
+       def run_http(self, node_port, dryrun):
+               return self.run_http_or_https(node_port, dryrun)
+       def run_https(self, node_port, dryrun):
+               return self.run_http_or_https(node_port, dryrun)
+
+       def run_http_or_https(self, node_port, dryrun):
+               if not dryrun:
+                       # send reboot signal.
+                       # TODO: send a ManualPCU() reboot request for this PCU.
+                       # NOTE: this model defies automation because, the port numbering
+                       #       and the form numbers are not consistent across models.  There is
+                       #       not direct mapping from port# to form#.
+                       return "Manual Reboot Required"
+
+               else:
+                       # TODO: also send message for https, since that doesn't work this way...
+                       if self.transport.type == Transport.HTTPS:
+                               cmd = self.get_https_cmd()
+                       elif self.transport.type == Transport.HTTP:
+                               cmd = self.get_http_cmd()
+                       else:
+                               raise ExceptionNoTransport("Unsupported transport for http command")
+
+               cmd = cmd % ( self.username, self.password, self.host)
+               print "CMD: %s" % cmd
+
+               p = os.popen(cmd)
+               result = p.read()
+               if len(result.split('\n')) > 2:
+                       self.logout()
+                       return 0
+               else:
+                       # NOTE: an error has occurred, so no need to log out.
+                       print "RESULT: ", result
+                       return result
+
+       def get_https_cmd(self):
+               version = self.get_version()
+               print "VERSION: %s" % version
+               if "AP96" in version:
+                       cmd = "curl -s --insecure --user '%s:%s' https://%s/outlets.htm " + \
+                                 " | grep -E '^[^<]+' " + \
+                                 " | grep -v 'Protected Object' "
+               else:
+                       # NOTE: no other case known right now...
+                       cmd = "curl -s --insecure --user '%s:%s' https://%s/outlets.htm " + \
+                                 " | grep -E '^[^<]+' " + \
+                                 " | grep -v 'Protected Object' "
+                       
+               return cmd
+       
+       def get_http_cmd(self):
+               version = self.get_version()
+               print "VERSION: %s" % version
+               if "AP7900" in version:
+                       cmd = "curl -s --anyauth --user '%s:%s' http://%s/rPDUout.htm | grep -E '^[^<]+'" 
+               elif "AP7920" in version:
+                       cmd = "curl -s --anyauth --user '%s:%s' http://%s/ms3out.htm | grep -E '^[^<]+' " 
+               else:
+                       # default case...
+                       print "USING DEFAULT"
+                       cmd = "curl -s --anyauth --user '%s:%s' http://%s/ms3out.htm | grep -E '^[^<]+' " 
+                       
+               return cmd
+
+       def get_version(self):
+               # NOTE: this command returns and formats all data.
+               #cmd = """curl -s --anyauth --user '%s:%s' http://%s/about.htm """ +
+               #      """ | sed -e "s/<[^>]*>//g" -e "s/&nbsp;//g" -e "/^$/d" """ +
+               #         """ | awk '{line=$0 ; if ( ! /:/ && length(pline) > 0 ) \
+               #                            { print pline, line } else { pline=line} }' """ + 
+               #         """ | grep Model """
+
+               # NOTE: we may need to return software version, no model version to
+               #               know which file to request on the server.
+
+               if self.transport.type == Transport.HTTP:
+                       cmd = """curl -s --anyauth --user '%s:%s' http://%s/about.htm """ + \
+                                 """ | sed -e "s/<[^>]*>//g" -e "s/&nbsp;//g" -e "/^$/d" """ + \
+                                 """ | grep -E "AP[[:digit:]]+" """
+                                 #""" | grep -E "v[[:digit:]].*" """
+               elif self.transport.type == Transport.HTTPS:
+                       cmd = """curl -s --insecure --user '%s:%s' https://%s/about.htm """ + \
+                                 """ | sed -e "s/<[^>]*>//g" -e "s/&nbsp;//g" -e "/^$/d" """ + \
+                                 """ | grep -E "AP[[:digit:]]+" """
+                                 #""" | grep -E "v[[:digit:]].*" """
+               else:
+                       raise ExceptionNoTransport("Unsupported transport to get version")
+
+               cmd = cmd % ( self.username, self.password, self.host)
+               p = os.popen(cmd)
+               result = p.read()
+               return result.strip()
+
+       def logout(self):
+               # NOTE: log out again, to allow other uses to access the machine.
+               if self.transport.type == Transport.HTTP:
+                       cmd = """curl -s --anyauth --user '%s:%s' http://%s/logout.htm """ + \
+                                 """ | grep -E '^[^<]+' """
+               elif self.transport.type == Transport.HTTPS:
+                       cmd = """curl -s --insecure --user '%s:%s' http://%s/logout.htm """ + \
+                                 """ | grep -E '^[^<]+' """
+               else:
+                       raise ExceptionNoTransport("Unsupported transport to logout")
+
+               cmd = cmd % ( self.username, self.password, self.host)
+               p = os.popen(cmd)
+               print p.read()
+
+class APCControl12p3(APCControl):
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.reboot_sequence = ["1", "2", str(node_port), "3"]
+               return super(APCControl12p3, self).run_telnet_or_ssh(node_port, dryrun)
+
+class APCControl1p4(APCControl):
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.reboot_sequence = ["1", str(node_port), "4"]
+               return super(APCControl1p4, self).run_telnet_or_ssh(node_port, dryrun)
+
+class APCControl121p3(APCControl):
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.reboot_sequence = ["1", "2", "1", str(node_port), "3"]
+               return super(APCControl121p3, self).run_telnet_or_ssh(node_port, dryrun)
+
+class APCControl121p1(APCControl):
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.reboot_sequence = ["1", "2", "1", str(node_port), "1", "3"]
+               return super(APCControl121p1, self).run_telnet_or_ssh(node_port, dryrun)
+
+class APCControl13p13(APCControl):
+       def run_telnet_or_ssh(self, node_port, dryrun):
+               self.reboot_sequence = ["1", "3", str(node_port), "1", "3"]
+               return super(APCControl13p13, self).run_telnet_or_ssh(node_port, dryrun)
diff --git a/pcucontrol/models/BayTech.py b/pcucontrol/models/BayTech.py
new file mode 100644 (file)
index 0000000..fecabd6
--- /dev/null
@@ -0,0 +1,336 @@
+from pcucontrol.reboot import *
+
+class BayTechRPC3NC(PCUControl):
+       supported_ports = [22,23]
+       def run_telnet(self, node_port, dryrun):
+               return self.run_ssh(node_port, dryrun)
+
+       def run_ssh(self, node_port, dryrun):
+               self.transport.open(self.host, self.username, None, "Enter user name:")
+               self.transport.sendPassword(self.password, "Enter Password:")
+
+               #self.transport.ifThenSend("RPC-16>", "Status")
+               self.transport.ifThenSend("RPC3-NC>", "Reboot %d" % node_port)
+
+               # Reboot Outlet  N        (Y/N)?
+               if dryrun:
+                       self.transport.ifThenSend("(Y/N)?", "N")
+               else:
+                       self.transport.ifThenSend("(Y/N)?", "Y")
+               self.transport.ifThenSend("RPC3-NC>", "")
+
+               self.transport.close()
+               return 0
+
+class BayTechGeorgeTown(PCUControl):
+       supported_ports = [22,23]
+       def run_telnet(self, node_port, dryrun):
+               return self.run_ssh(node_port, dryrun)
+       def run_ssh(self, node_port, dryrun):
+               # NOTE: The georgetown pcu always drops the first connection, 
+               self.transport.open(self.host, self.username, None, "Enter")
+               self.transport.close()
+               time.sleep(1)
+               self.transport.open(self.host, self.username, None, "Enter user name:")
+               self.transport.sendPassword(self.password, "Enter Password:")
+
+               self.transport.ifThenSend("RPC-16>", "Reboot %d" % node_port)
+
+               # Reboot Outlet  N        (Y/N)?
+               if dryrun:
+                       self.transport.ifThenSend("(Y/N)?", "N")
+               else:
+                       self.transport.ifThenSend("(Y/N)?", "Y")
+               self.transport.ifThenSend("RPC-16>", "")
+
+               self.transport.close()
+               return 0
+
+
+class BayTechRPC16(PCUControl):
+       supported_ports = [22,23]
+       def run_telnet(self, node_port, dryrun):
+               return self.run_ssh(node_port, dryrun)
+       def run_ssh(self, node_port, dryrun):
+               self.transport.open(self.host, self.username, None, "Enter user name:")
+               self.transport.sendPassword(self.password, "Enter Password:")
+
+               #self.transport.ifThenSend("RPC-16>", "Status")
+
+               self.transport.ifThenSend("RPC-16>", "Reboot %d" % node_port)
+
+               # Reboot Outlet  N        (Y/N)?
+               if dryrun:
+                       self.transport.ifThenSend("(Y/N)?", "N")
+               else:
+                       self.transport.ifThenSend("(Y/N)?", "Y")
+               self.transport.ifThenSend("RPC-16>", "")
+
+               self.transport.close()
+               return 0
+
+class BayTechCtrlCUnibe(PCUControl):
+       """
+               For some reason, these units let you log in fine, but they hang
+               indefinitely, unless you send a Ctrl-C after the password.  No idea
+               why.
+       """
+       supported_ports = [22]
+       def run_ssh(self, node_port, dryrun):
+               print "BayTechCtrlC %s" % self.host
+
+               ssh_options="-o StrictHostKeyChecking=no -o PasswordAuthentication=yes -o PubkeyAuthentication=no"
+               s = pxssh.pxssh()
+               if not s.login(self.host, self.username, self.password, ssh_options):
+                       raise ExceptionPassword("Invalid Password")
+               # Otherwise, the login succeeded.
+
+               # Send a ctrl-c to the remote process.
+               print "sending ctrl-c"
+               s.send(chr(3))
+
+               # Control Outlets  (5 ,1).........5
+               try:
+                       #index = s.expect("Enter Request")
+                       index = s.expect(["Enter Request :"])
+
+                       if index == 0:
+                               print "3"
+                               s.send("3\r\n")
+                               time.sleep(5)
+                               index = s.expect(["DS-RPC>", "Enter user name:"])
+                               if index == 1:
+                                       s.send(self.username + "\r\n")
+                                       time.sleep(5)
+                                       index = s.expect(["DS-RPC>"])
+
+                               if index == 0:
+                                       print "Reboot %d" % node_port
+                                       time.sleep(5)
+                                       s.send("Reboot %d\r\n" % node_port)
+
+                                       time.sleep(5)
+                                       index = s.expect(["\(Y/N\)\?", "Port in use", "DS-RPC>"])
+                                       if index == 0:
+                                               if dryrun:
+                                                       print "sending N"
+                                                       s.send("N\r\n")
+                                               else:
+                                                       print "sending Y"
+                                                       s.send("Y\r\n")
+                                       elif index == 1:
+                                               raise ExceptionPrompt("PCU Reported 'Port in use.'")
+                                       elif index == 2:
+                                               raise ExceptionSequence("Issued command 'Reboot' failed.")
+
+                               time.sleep(5)
+                               index = s.expect(["DS-RPC>"])
+                               #print "got prompt back"
+
+                       s.close()
+
+               except pexpect.EOF:
+                       raise ExceptionPrompt("EOF before expected Prompt")
+               except pexpect.TIMEOUT:
+                       raise ExceptionPrompt("Timeout before expected Prompt")
+
+               return 0
+
+class BayTechCtrlC(PCUControl):
+       """
+               For some reason, these units let you log in fine, but they hang
+               indefinitely, unless you send a Ctrl-C after the password.  No idea
+               why.
+       """
+       supported_ports = [22]
+       def run_ssh(self, node_port, dryrun):
+               print "BayTechCtrlC %s" % self.host
+
+               ssh_options="-o StrictHostKeyChecking=no -o PasswordAuthentication=yes -o PubkeyAuthentication=no"
+               s = pxssh.pxssh()
+               try:
+                       if not s.login(self.host, self.username, self.password, ssh_options):
+                               raise ExceptionPassword("Invalid Password")
+               except pexpect.EOF:
+                       raise ExceptionNoTransport("No Connection Possible")
+                       
+                       
+               # Otherwise, the login succeeded.
+
+               # Send a ctrl-c to the remote process.
+               print "SENDING ctrl-c"
+               s.send(chr(3))
+
+               # Control Outlets  (5 ,1).........5
+               try:
+                       print "EXPECTING: ", "Enter Request :"
+                       index = s.expect(["Enter Request :"])
+
+                       if index == 0:
+                               print "SENDING: 5"
+                               s.send("5\r\n")
+                               print "EXPECTING: ", "DS-RPC>"
+                               index = s.expect(["DS-RPC>", "Enter user name:", "Port in use."])
+                               if index == 1:
+                                       print "sending username"
+                                       s.send(self.username + "\r\n")
+                                       index = s.expect(["DS-RPC>"])
+                               elif index == 2:
+                                       raise ExceptionPrompt("PCU Reported 'Port in use.'")
+
+                               if index == 0:
+                                       print "SENDING: Reboot %d" % node_port
+                                       s.send("Reboot %d\r\n" % node_port)
+
+                                       print "SLEEPING: 5"
+                                       time.sleep(5)
+                                       print "EXPECTING: ", "Y/N?"
+                                       index = s.expect(["\(Y/N\)\?", "Port in use", "DS-RPC>"])
+                                       if index == 0:
+                                               if dryrun:
+                                                       print "sending N"
+                                                       s.send("N\r\n")
+                                               else:
+                                                       print "SENDING: Y"
+                                                       s.send("Y\r\n")
+                                       elif index == 1:
+                                               raise ExceptionPrompt("PCU Reported 'Port in use.'")
+                                       elif index == 2:
+                                               raise ExceptionSequence("Issued command 'Reboot' failed.")
+
+                               # NOTE: for some reason, the script times out with the
+                               # following line.  In manual tests, it works correctly, but
+                               # with automated tests, evidently it fails.
+                               print "SLEEPING: 5"
+                               time.sleep(5)
+                               #print "TOTAL--", s.allstr, "--EOT"
+                               index = s.expect(["DS-RPC>"])
+                               print "got prompt back"
+
+                       s.close()
+
+               except pexpect.EOF:
+                       raise ExceptionPrompt("EOF before 'Enter Request' Prompt")
+               except pexpect.TIMEOUT:
+                       raise ExceptionPrompt("Timeout before Prompt")
+
+               return 0
+
+
+class BayTech5CtrlC(PCUControl):
+       """
+               For some reason, these units let you log in fine, but they hang
+               indefinitely, unless you send a Ctrl-C after the password.  No idea
+               why.
+       """
+       supported_ports = [22]
+       def run_ssh(self, node_port, dryrun):
+               print "BayTech5CtrlC %s" % self.host
+
+               ssh_options="-o StrictHostKeyChecking=no -o PasswordAuthentication=yes -o PubkeyAuthentication=no"
+               s = pxssh.pxssh()
+               try:
+                       if not s.login(self.host, self.username, self.password, ssh_options):
+                               raise ExceptionPassword("Invalid Password")
+               except pexpect.EOF:
+                       raise ExceptionNoTransport("No Connection Possible")
+                       
+                       
+               # Otherwise, the login succeeded.
+               # Control Outlets  (5 ,1).........5
+               try:
+                       print "EXPECTING: ", "Enter Request :"
+                       s.send("\r\n")
+                       time.sleep(2)
+                       index = s.expect(["Enter Request"])
+
+                       if index == 0:
+                               print "SENDING: 5"
+                               s.send("5\r\n")
+                               print "EXPECTING: ", "DS-RPC>"
+                               time.sleep(3)
+                               # Send a ctrl-c to the remote process.
+                               #print "SENDING ctrl-c"
+                               #s.send(chr(3))
+
+                               index = s.expect(["DS-RPC>", "Enter user name:", "Port in use."])
+                               if index == 1:
+                                       print "sending username"
+                                       s.send(self.username + "\r\n")
+                                       index = s.expect(["DS-RPC>"])
+                               elif index == 2:
+                                       raise ExceptionPrompt("PCU Reported 'Port in use.'")
+
+                               if index == 0:
+                                       print "SENDING: Reboot %d" % node_port
+                                       #s.send("Reboot %d\r\n" % node_port)
+                                       s.send("Reboot %d\r" % node_port)
+
+                                       print "SLEEPING: 5"
+                                       time.sleep(5)
+                                       print "EXPECTING: ", "Y/N?"
+                                       index = s.expect(["\(Y/N\)\?", "Port in use", "DS-RPC>"])
+                                       if index == 0:
+                                               if dryrun:
+                                                       print "sending N"
+                                                       s.send("N\r\n")
+                                               else:
+                                                       print "SENDING: Y"
+                                                       s.send("Y\r\n")
+                                       elif index == 1:
+                                               raise ExceptionPrompt("PCU Reported 'Port in use.'")
+                                       elif index == 2:
+                                               raise ExceptionSequence("Issued command 'Reboot' failed.")
+
+                               # NOTE: for some reason, the script times out with the
+                               # following line.  In manual tests, it works correctly, but
+                               # with automated tests, evidently it fails.
+                               print "SLEEPING: 5"
+                               time.sleep(5)
+                               #print "TOTAL--", s.allstr, "--EOT"
+                               index = s.expect(["DS-RPC>"])
+                               print "got prompt back"
+
+                       s.close()
+
+               except pexpect.EOF:
+                       raise ExceptionPrompt("EOF before 'Enter Request' Prompt")
+               except pexpect.TIMEOUT:
+                       raise ExceptionPrompt("Timeout before Prompt")
+
+               return 0
+
+class BayTech(PCUControl):
+       supported_ports = [22,23]
+
+       def run_telnet(self, node_port, dryrun):
+               return self.run_ssh(node_port, dryrun)
+
+       def run_ssh(self, node_port, dryrun):
+               self.transport.open(self.host, self.username)
+               self.transport.sendPassword(self.password)
+
+               # Control Outlets  (5 ,1).........5
+               self.transport.ifThenSend("Enter Request :", "5")
+
+               # Reboot N
+               try:
+                       self.transport.ifThenSend("DS-RPC>", "Reboot %d" % node_port, ExceptionNotFound)
+               except ExceptionNotFound, msg:
+                       # one machine is configured to ask for a username,
+                       # even after login...
+                       print "msg: %s" % msg
+                       self.transport.write(self.username + "\r\n")
+                       time.sleep(5)
+                       self.transport.ifThenSend("DS-RPC>", "Reboot %d" % node_port)
+
+               # Reboot Outlet  N        (Y/N)?
+               if dryrun:
+                       self.transport.ifThenSend("(Y/N)?", "N")
+               else:
+                       self.transport.ifThenSend("(Y/N)?", "Y")
+               time.sleep(5)
+               self.transport.ifThenSend("DS-RPC>", "")
+
+               self.transport.close()
+               return 0
diff --git a/pcucontrol/models/BlackBoxPSMaverick.py b/pcucontrol/models/BlackBoxPSMaverick.py
new file mode 100644 (file)
index 0000000..ee414dc
--- /dev/null
@@ -0,0 +1,65 @@
+from pcucontrol.reboot import *
+
+### rebooting european BlackBox PSE boxes
+# Thierry Parmentelat - May 11 2005
+# tested on 4-ports models known as PSE505-FR
+# uses http to POST a data 'P<port>=r'
+# relies on basic authentication within http1.0
+# first curl-based script was
+# curl --http1.0 --basic --user <username>:<password> --data P<port>=r \
+#      http://<hostname>:<http_port>/cmd.html && echo OK
+
+# log in:
+
+## BB PSMaverick
+class BlackBoxPSMaverick(PCUControl):
+       supported_ports = [80]
+
+       def run_http(self, node_port, dryrun):
+               if not dryrun:
+                       # send reboot signal.
+                       cmd = "curl -s --data 'P%s=r' --anyauth --user '%s:%s' http://%s/config/home_f.html" % ( node_port, self.username, self.password, self.host)
+               else:
+                       # else, just try to log in
+                       cmd = "curl -s --anyauth --user '%s:%s' http://%s/config/home_f.html" % ( self.username, self.password, self.host)
+
+               p = os.popen(cmd)
+               result = p.read()
+               print "RESULT: ", result
+
+               if len(result.split()) > 3:
+                       return 0
+               else:
+                       return result
+
+def bbpse_reboot (pcu_ip,username,password,port_in_pcu,http_port, dryrun):
+
+       global verbose
+
+       url = "http://%s:%d/cmd.html" % (pcu_ip,http_port)
+       data= "P%d=r" % port_in_pcu
+       if verbose:
+               logger.debug("POSTing '%s' on %s" % (data,url))
+
+       authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm()
+       uri = "%s:%d" % (pcu_ip,http_port)
+       authinfo.add_password (None, uri, username, password)
+       authhandler = urllib2.HTTPBasicAuthHandler( authinfo )
+
+       opener = urllib2.build_opener(authhandler)
+       urllib2.install_opener(opener)
+
+       if (dryrun):
+               return 0
+
+       try:
+               f = urllib2.urlopen(url,data)
+
+               r= f.read()
+               if verbose:
+                       logger.debug(r)
+               return 0
+
+       except urllib2.URLError,err:
+               logger.info('Could not open http connection', err)
+               return "bbpse error"
diff --git a/pcucontrol/models/CustomPCU.py b/pcucontrol/models/CustomPCU.py
new file mode 100644 (file)
index 0000000..60de348
--- /dev/null
@@ -0,0 +1,26 @@
+# Each method follows the following format:
+#    CustomPCU_loginbase()
+# 
+# This provides a simple means of lookup given the custom type.
+#    The only problem might come up if a single site has multiple custom PCUs.
+#    That would be pretty wierd though...
+
+from pcucontrol.reboot import *
+
+class CustomPCU_uniklu(PCUControl):
+       def run_http(self, node_port, dryrun):
+               url = "https://www-itec.uni-klu.ac.at/plab-pcu/index.php" 
+
+               if not dryrun:
+                       # Turn host off, then on
+                       formstr = "plab%s=off" % node_port
+                       os.system("curl --user %s:%s --form '%s' --insecure %s" % (self.username, self.password, formstr, url))
+                       time.sleep(5)
+                       formstr = "plab%s=on" % node_port
+                       os.system("curl --user %s:%s --form '%s' --insecure %s" % (self.username, self.password, formstr, url))
+               else:
+                       os.system("curl --user %s:%s --insecure %s" % (self.username, self.password, url))
+
+
+               
+
diff --git a/pcucontrol/models/DRAC.py b/pcucontrol/models/DRAC.py
new file mode 100644 (file)
index 0000000..898b5e5
--- /dev/null
@@ -0,0 +1,164 @@
+from pcucontrol.reboot import *
+import time
+
+class DRAC(PCUControl):
+       supported_ports = [22,443,5869]
+       def run_drac(self, node_port, dryrun):
+               print "trying racadm_reboot..."
+               return racadm_reboot(self.host, self.username, self.password, node_port, dryrun)
+
+       def run_ssh(self, node_port, dryrun):
+               ssh_options="-o StrictHostKeyChecking=no "+\
+                           "-o PasswordAuthentication=yes "+\
+                                       "-o PubkeyAuthentication=no"
+               s = pxssh.pxssh()
+               try:
+                       if not s.login(self.host, self.username, self.password, ssh_options,
+                                               original_prompts="Dell", login_timeout=Transport.TELNET_TIMEOUT):
+                               raise ExceptionPassword("Invalid Password")
+               except pexpect.EOF:
+                       raise ExceptionPrompt("Disconnect before login prompt")
+                       
+               print "logging in... %s" % self.host
+               s.send("\r\n\r\n")
+               try:
+                       # Testing Reboot ?
+                       #index = s.expect(["DRAC 5", "[%s]#" % self.username ])
+                       # NOTE: be careful to escape any characters used by 're.compile'
+                       index = s.expect(["\$", "\[%s\]#" % self.username, "/.*>" ])
+                       print "INDEX:", index
+                       print s
+                       if dryrun:
+                               if index == 0:
+                                       s.sendline("racadm getsysinfo")
+                               elif index == 1:
+                                       s.sendline("getsysinfo")
+                               elif index == 2:
+                                       s.sendline("racadm getsysinfo")
+                       else:
+                               print "serveraction powercycle"
+                               if index == 0:
+                                       s.sendline("racadm serveraction powercycle")
+                               elif index == 1:
+                                       s.sendline("serveraction powercycle")
+                               elif index == 2:
+                                       s.sendline("racadm serveraction powercycle")
+                               
+                       # TODO:  this is really lousy.  Without the sleep, the sendlines
+                       # don't completely get through.  Even the added, expect line
+                       # returns right away without waiting for the commands above to
+                       # complete...  Therefore, this delay is guaranteed to fail in some
+                       # other context...
+                       s.send("\r\n\r\n")
+                       time.sleep(20)
+                       index = s.expect(["\$", "\[%s\]#" % self.username, "/.*>" ])
+                       print s
+                       print "INDEX 2:", index
+                       s.sendline("exit")
+
+               except pexpect.EOF:
+                       raise ExceptionPrompt("EOF before expected Prompt")
+               except pexpect.TIMEOUT:
+                       print s
+                       raise ExceptionPrompt("Timeout before expected Prompt")
+
+               s.close()
+
+               return 0
+
+### rebooting Dell systems via RAC card
+# Marc E. Fiuczynski - June 01 2005
+# tested with David Lowenthal's itchy/scratchy nodes at UGA
+#
+def runcmd(command, args, username, password, timeout = None):
+
+       result = [None]
+       result_ready = threading.Condition()
+
+       def set_result(x):
+
+               result_ready.acquire()
+               try:
+                       result[0] = x
+               finally:
+                       result_ready.notify()
+                       result_ready.release()
+
+       def do_command(command, username, password):
+
+               try:
+                       # Popen4 is a popen-type class that combines stdout and stderr
+                       p = popen2.Popen4(command)
+
+                       # read all output data
+                       p.tochild.write("%s\n" % username)
+                       p.tochild.write("%s\n" % password)
+                       p.tochild.close()
+                       data = p.fromchild.read()
+
+                       while True:
+                               # might get interrupted by a signal in poll() or waitpid()
+                               try:
+                                       retval = p.wait()
+                                       set_result((retval, data))
+                                       break
+                               except OSError, ex:
+                                       if ex.errno == errno.EINTR:
+                                               continue
+                                       raise ex
+               except Exception, ex:
+                       set_result(ex)
+
+       if args:
+               command = " ".join([command] + args)
+
+       worker = threading.Thread(target = do_command, args = (command, username, password, ))
+       worker.setDaemon(True)
+       result_ready.acquire()
+       worker.start()
+       result_ready.wait(timeout)
+       try:
+               if result == [None]:
+                       raise Exception, "command timed-out: '%s'" % command
+       finally:
+               result_ready.release()
+       result = result[0]
+
+       if isinstance(result, Exception):
+               raise result
+       else:
+               (retval, data) = result
+               if os.WIFEXITED(retval) and os.WEXITSTATUS(retval) == 0:
+                       return data
+               else:
+                       out = "system command ('%s') " % command
+                       if os.WIFEXITED(retval):
+                               out += "failed, rc = %d" % os.WEXITSTATUS(retval)
+                       else:
+                               out += "killed by signal %d" % os.WTERMSIG(retval)
+                       if data:
+                               out += "; output follows:\n" + data
+                       raise Exception, out
+
+def racadm_reboot(host, username, password, port, dryrun):
+       global verbose
+
+       ip = socket.gethostbyname(host)
+       try:
+               cmd = "/usr/sbin/racadm"
+               os.stat(cmd)
+               if not dryrun:
+                       output = runcmd(cmd, ["-r %s -i serveraction powercycle" % ip],
+                               username, password)
+               else:
+                       output = runcmd(cmd, ["-r %s -i getsysinfo" % ip],
+                               username, password)
+
+               print "RUNCMD: %s" % output
+               if verbose:
+                       print output
+               return 0
+
+       except Exception, err:
+               print "runcmd raised exception %s" % err
+               return str(err)
diff --git a/pcucontrol/models/HPiLO.py b/pcucontrol/models/HPiLO.py
new file mode 100644 (file)
index 0000000..78ceb0a
--- /dev/null
@@ -0,0 +1,60 @@
+from pcucontrol.reboot import *
+from distutils.sysconfig import get_python_lib; 
+
+class HPiLO(PCUControl):
+       supported_ports = [22,443]
+       def run(self, node_port, dryrun):
+               if self.type == Transport.SSH:
+                       return self.run_ssh(node_port, dryrun)
+               elif self.type == Transport.HTTP or self.type == Transport.HTTPS:
+                       return self.run_https(node_port, dryrun)
+               else:
+                       raise ExceptionNoTransport("Unimplemented Transport for HPiLO %s" % self.type)
+
+       def run_ssh(self, node_port, dryrun):
+
+               self.transport.open(self.host, self.username)
+               self.transport.sendPassword(self.password)
+
+               # </>hpiLO-> 
+               self.transport.ifThenSend("</>hpiLO->", "cd system1")
+
+               # Reboot Outlet  N        (Y/N)?
+               if dryrun:
+                       self.transport.ifThenSend("</system1>hpiLO->", "POWER")
+               else:
+                       # Reset this machine
+                       self.transport.ifThenSend("</system1>hpiLO->", "reset")
+
+               self.transport.ifThenSend("</system1>hpiLO->", "exit")
+
+               self.transport.close()
+               return 0
+               
+       def run_https(self, node_port, dryrun):
+
+               locfg = command.CMD()
+
+               cmd_str = get_python_lib(1) + "/pcucontrol/models/hpilo/"
+               
+               cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
+                                       self.host, cmd_str+"iloxml/Get_Network.xml", 
+                                       self.username, self.password)
+               sout, serr = locfg.run_noexcept(cmd)
+
+               if sout.strip() != "" or serr.strip() != "":
+                       print "sout: %s" % sout.strip()
+                       return sout.strip() + serr.strip()
+
+               if not dryrun:
+                       locfg = command.CMD()
+                       cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
+                                               self.host, cmd_str+"iloxml/Reset_Server.xml", 
+                                               self.username, self.password)
+                       sout, serr = locfg.run_noexcept(cmd)
+
+                       if sout.strip() != "":
+                               print "sout: %s" % sout.strip()
+                               #return sout.strip()
+
+               return 0
diff --git a/pcucontrol/models/IPAL.py b/pcucontrol/models/IPAL.py
new file mode 100644 (file)
index 0000000..8929946
--- /dev/null
@@ -0,0 +1,152 @@
+from pcucontrol.reboot import *
+
+class IPAL(PCUControl):
+       """ 
+               This now uses a proprietary format for communicating with the PCU.  I
+               prefer it to Telnet, and Web access, since it's much lighter weight
+               and, more importantly, IT WORKS!! HHAHHHAHAHAHAHAHA!
+       """
+       supported_ports = [9100,23,80]
+
+       def format_msg(self, data, cmd):
+               esc = chr(int('1b',16))
+               return "%c%s%c%s%c" % (esc, self.password, esc, data, cmd) # esc, 'q', chr(4))
+       
+       def recv_noblock(self, s, count):
+               import errno
+
+               try:
+                       # TODO: make sleep backoff, before stopping.
+                       time.sleep(8)
+                       ret = s.recv(count, socket.MSG_DONTWAIT)
+               except socket.error, e:
+                       if e[0] == errno.EAGAIN:
+                               #raise Exception(e[1])
+                               raise ExceptionNotFound(e[1])
+                       elif e[0] == errno.ETIMEDOUT:
+                               raise ExceptionTimeout(e[1])
+                       else:
+                               # TODO: not other exceptions.
+                               raise Exception(e)
+               return ret
+
+       #def run(self, node_port, dryrun):
+       #       if self.type == Transport.IPAL:
+       #               ret = self.run_ipal(node_port, dryrun)
+       #               if ret != 0:
+       #                       ret2 = self.run_telnet(node_port, dryrun)
+       #                       if ret2 != 0:
+       #                               return ret
+       #                       return ret2
+       #               return ret
+       #       elif self.type == Transport.TELNET:
+       #               return self.run_telnet(node_port, dryrun)
+       #       else:
+       #               raise ExceptionNoTransport("Unimplemented Transport for IPAL")
+       
+       def run_telnet(self, node_port, dryrun):
+               # TELNET version of protocol...
+               self.transport.open(self.host)
+               ## XXX Some iPals require you to hit Enter a few times first
+               self.transport.ifThenSend("Password >", "\r\n\r\n", ExceptionNotFound)
+               self.transport.ifThenSend("Password >", "\r\n\r\n", ExceptionNotFound)
+               # Login
+               self.transport.ifThenSend("Password >", self.password, ExceptionPassword)
+               self.transport.write("\r\n\r\n")
+               if not dryrun: # P# - Pulse relay
+                       print "node_port %s" % node_port
+                       self.transport.ifThenSend("Enter >", 
+                                                       "P%s"%node_port, 
+                                                       ExceptionNotFound)
+                       print "send newlines"
+                       self.transport.write("\r\n\r\n")
+                       print "after new lines"
+               # Get the next prompt
+               print "wait for enter"
+               self.transport.ifElse("Enter >", ExceptionTimeout)
+               print "closing "
+               self.transport.close()
+               return 0
+
+       def run_ipal(self, node_port, dryrun):
+               import errno
+
+               power_on = False
+
+               print "open socket"
+               s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+               try:
+                       print "connect"
+                       s.connect((self.host, 9100))
+               except socket.error, e:
+                       s.close()
+                       if e[0] == errno.ECONNREFUSED:
+                               # cannot connect to remote host
+                               raise ExceptionNotFound(e[1])
+                       elif e[0] == errno.ETIMEDOUT:
+                               raise ExceptionTimeout(e[1])
+                       else:
+                               # TODO: what other conditions are there?
+                               raise Exception(e)
+                               
+               # get current status
+               print "Checking status"
+               s.send(self.format_msg("", 'O'))
+               ret = self.recv_noblock(s, 8)
+               print "Current status is '%s'" % ret
+
+               if ret == '':
+                       raise Exception("Status returned 'another session already open' on %s %s : %s" % (self.host, node_port, ret))
+                               
+               if node_port < len(ret):
+                       status = ret[node_port]
+                       if status == '1':
+                               # up
+                               power_on = True
+                       elif status == '0':
+                               # down
+                               power_on = False
+                       elif status == '6':
+                               raise ExceptionPort("IPAL reported 'Cable Error' on %s socket %s : %s" % (self.host, node_port, ret))
+                       else:
+                               raise Exception("Unknown status for PCU %s socket %s : %s" % (self.host, node_port, ret))
+               else:
+                       raise Exception("Mismatch between configured port and PCU %s status: %s %s" % (self.host, node_port, ret))
+                       
+
+               if not dryrun:
+                       if power_on:
+                               print "Pulsing %s" % node_port
+                               s.send(self.format_msg("%s" % node_port, 'P'))
+                       else:
+                               # NOTE: turn power on ; do not pulse the port.
+                               print "Power was off, so turning on ..."
+                               s.send(self.format_msg("%s" % node_port, 'E'))
+                               #s.send(self.format_msg("%s" % node_port, 'P'))
+
+                       print "Receiving response."
+                       ret = self.recv_noblock(s, 8)
+                       print "Current status is '%s'" % ret
+
+                       if node_port < len(ret):
+                               status = ret[node_port]
+                               if status == '1':
+                                       # up
+                                       power_on = True
+                               elif status == '0':
+                                       # down
+                                       power_on = False
+                               elif status == '6':
+                                       raise ExceptionPort("IPAL reported 'Cable Error' on %s socket %s : %s" % (self.host, node_port, ret))
+                               else:
+                                       raise Exception("Unknown status for PCU %s socket %s : %s" % (self.host, node_port, ret))
+                       else:
+                               raise Exception("Mismatch between configured port and PCU %s status: %s %s" % (self.host, node_port, ret))
+
+                       if power_on:
+                               return 0
+                       else:
+                               return "Failed Power On"
+
+               s.close()
+               return 0
diff --git a/pcucontrol/models/IntelAMT.py b/pcucontrol/models/IntelAMT.py
new file mode 100644 (file)
index 0000000..61e820d
--- /dev/null
@@ -0,0 +1,21 @@
+from pcucontrol.reboot import *
+from distutils.sysconfig import get_python_lib; 
+
+class IntelAMT(PCUControl):
+       supported_ports = [16992]
+
+       def run_amt(self, node_port, dryrun):
+
+               cmd = command.CMD()
+               # TODO: need to make this path universal; not relative to pwd.
+               cmd_str = get_python_lib(1) + "/pcucontrol/models/intelamt/remoteControl"
+
+               if dryrun:
+                       # NOTE: -p checks the power state of the host.
+                       # TODO: parse the output to find out if it's ok or not.
+                       cmd_str += " -p http://%s:16992/RemoteControlService  -user admin -pass '%s' " % (self.host, self.password )
+               else:
+                       cmd_str += " -A http://%s:16992/RemoteControlService -user admin -pass '%s' " % (self.host, self.password )
+                       
+               print cmd_str
+               return cmd.system(cmd_str, Transport.TELNET_TIMEOUT)
diff --git a/pcucontrol/models/ManualPCU.py b/pcucontrol/models/ManualPCU.py
new file mode 100644 (file)
index 0000000..3a21cd9
--- /dev/null
@@ -0,0 +1,13 @@
+from pcucontrol.reboot import *
+
+class ManualPCU(PCUControl):
+       supported_ports = [22,23,80,443]
+
+       def run_http(self, node_port, dryrun):
+               if not dryrun:
+                       # TODO: send email message to monitor admin requesting manual
+                       # intervention.  This should always be an option for ridiculous,
+                       # custom jobs.
+                       pass
+               return 0
+
diff --git a/pcucontrol/models/OpenIPMI.py b/pcucontrol/models/OpenIPMI.py
new file mode 100644 (file)
index 0000000..f52ea39
--- /dev/null
@@ -0,0 +1,25 @@
+
+from pcucontrol.reboot import *
+
+class OpenIPMI(PCUControl):
+
+       supported_ports = [80,443,623]
+
+       # TODO: get exit codes to determine success or failure...
+       def run_https(self, node_port, dryrun):
+
+               if not dryrun:
+                       cmd = "ipmitool -I lanplus -H %s -U %s -P '%s' power cycle  "
+                       (i,p) = os.popen4(cmd % ( self.host, self.username, self.password) )
+                       result = p.read()
+                       print "RESULT: ", result
+               else:
+                       cmd = "ipmitool -I lanplus -H %s -U %s -P '%s' user list  "
+                       (i,p) = os.popen4(cmd % ( self.host, self.username, self.password) )
+                       result = p.read()
+                       print "RESULT: ", result
+
+               if "Error" in result:
+                       return result
+               else:
+                       return 0
diff --git a/pcucontrol/models/PM211MIP.py b/pcucontrol/models/PM211MIP.py
new file mode 100644 (file)
index 0000000..007b307
--- /dev/null
@@ -0,0 +1,5 @@
+from pcucontrol.reboot import *
+from ManualPCU import *
+
+class PM211MIP(ManualPCU):
+       supported_ports = [80,443]
diff --git a/pcucontrol/models/WTIIPS4.py b/pcucontrol/models/WTIIPS4.py
new file mode 100644 (file)
index 0000000..aebde31
--- /dev/null
@@ -0,0 +1,18 @@
+from pcucontrol.reboot import *
+
+class WTIIPS4(PCUControl):
+       supported_ports = [23]
+       def run_telnet(self, node_port, dryrun):
+               self.transport.open(self.host)
+               self.transport.sendPassword(self.password, "Enter Password:")
+
+               self.transport.ifThenSend("IPS> ", "/Boot %s" % node_port)
+               if not dryrun:
+                       self.transport.ifThenSend("Sure? (Y/N): ", "N")
+               else:
+                       self.transport.ifThenSend("Sure? (Y/N): ", "Y")
+
+               self.transport.ifThenSend("IPS> ", "")
+
+               self.transport.close()
+               return 0
diff --git a/pcucontrol/models/X10Toggle.py b/pcucontrol/models/X10Toggle.py
new file mode 100644 (file)
index 0000000..20d7cef
--- /dev/null
@@ -0,0 +1,49 @@
+
+from pcucontrol.reboot import *
+### rebooting x10toggle based systems addressed by port
+# Marc E. Fiuczynski - May 31 2005
+# tested on 4-ports models known as PSE505-FR
+# uses ssh and password to login to an account
+# that will cause the system to be powercycled.
+
+TELNET_TIMEOUT = 120
+def telnet_answer(telnet, expected, buffer):
+       global verbose
+
+       output = telnet.read_until(expected, TELNET_TIMEOUT)
+       #if verbose:
+       #       logger.debug(output)
+       if output.find(expected) == -1:
+               raise ExceptionNotFound, "'%s' not found" % expected
+       else:
+               telnet.write(buffer + "\r\n")
+
+def x10toggle_reboot(ip, username, password, port, dryrun):
+       global verbose
+
+       ssh = None
+       try:
+               ssh = pyssh.Ssh(username, ip)
+               ssh.open()
+
+               # Login
+               telnet_answer(ssh, "password:", password)
+
+               if not dryrun:
+                       # Reboot
+                       telnet_answer(ssh, "x10toggle>", "A%d" % port)
+
+               # Close
+               output = ssh.close()
+               if verbose:
+                       logger.debug(output)
+               return 0
+
+       except Exception, err:
+               if verbose:
+                       logger.debug(err)
+               if ssh:
+                       output = ssh.close()
+                       if verbose:
+                               logger.debug(output)
+               return errno.ETIMEDOUT
diff --git a/pcucontrol/models/__init__.py b/pcucontrol/models/__init__.py
new file mode 100644 (file)
index 0000000..01d8f4b
--- /dev/null
@@ -0,0 +1,14 @@
+from OpenIPMI import *
+from OpenIPMI import OpenIPMI as IPMI
+from IPAL import *
+from APCControl import *
+from IntelAMT import *
+from DRAC import *
+from HPiLO import *
+from BayTech import *
+from WTIIPS4 import *
+from ePowerSwitch import *
+from BlackBoxPSMaverick import *
+from CustomPCU import *
+from ManualPCU import *
+from PM211MIP import *
diff --git a/pcucontrol/models/ePowerSwitch.py b/pcucontrol/models/ePowerSwitch.py
new file mode 100644 (file)
index 0000000..75e552a
--- /dev/null
@@ -0,0 +1,122 @@
+from pcucontrol.reboot import *
+
+class ePowerSwitchNew(PCUControl):
+       supported_ports = [80]
+       # NOTE:
+       #               The old code used Python's HTTPPasswordMgrWithDefaultRealm()
+       #               For some reason this both doesn't work and in some cases, actually
+       #               hangs the PCU.  Definitely not what we want.
+       #               
+       #               The code below is much simpler.  Just letting things fail first,
+       #               and then, trying again with authentication string in the header.
+       #               
+       def run_http(self, node_port, dryrun):
+               self.transport = None
+               self.url = "http://%s:%d/" % (self.host,80)
+               uri = "%s:%d" % (self.host,80)
+
+               req = urllib2.Request(self.url)
+               try:
+                       handle = urllib2.urlopen(req)
+               except IOError, e:
+                       # NOTE: this is expected to fail initially
+                       pass
+               else:
+                       print self.url
+                       print "-----------"
+                       print handle.read()
+                       print "-----------"
+                       return "ERROR: not protected by HTTP authentication"
+
+               if not hasattr(e, 'code') or e.code != 401:
+                       return "ERROR: failed for: %s" % str(e)
+
+               base64data = base64.encodestring("%s:%s" % (self.username, self.password))[:-1]
+               # NOTE: assuming basic realm authentication.
+               authheader = "Basic %s" % base64data
+               req.add_header("Authorization", authheader)
+
+               try:
+                       f = urllib2.urlopen(req)
+               except IOError, e:
+                       # failing here means the User/passwd is wrong (hopefully)
+                       raise ExceptionPassword("Incorrect username/password")
+
+               # NOTE: after verifying that the user/password is correct, 
+               #               actually reboot the given node.
+               if not dryrun:
+                       try:
+                               data = urllib.urlencode({'P%d' % node_port : "r"})
+                               req = urllib2.Request(self.url + "cmd.html")
+                               req.add_header("Authorization", authheader)
+                               # add data to handler,
+                               f = urllib2.urlopen(req, data)
+                               #if self.transport.verbose: print f.read()
+                       except:
+                               import traceback; traceback.print_exc()
+
+                               # fetch url one more time on cmd.html, econtrol.html or whatever.
+                               # pass
+               else:
+                       #if self.transport.verbose: print f.read()
+                       pass
+
+               return 0
+
+class ePowerSwitchOld(PCUControl):
+       def run_http(self, node_port, dryrun):
+               self.url = "http://%s:%d/" % (self.host,80)
+               uri = "%s:%d" % (self.host,80)
+
+               # create authinfo
+               authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm()
+               authinfo.add_password (None, uri, self.username, self.password)
+               authhandler = urllib2.HTTPBasicAuthHandler( authinfo )
+
+               # NOTE: it doesn't seem to matter whether this authinfo is here or not.
+               transport = urllib2.build_opener(authinfo)
+               f = transport.open(self.url)
+               if self.transport.verbose: print f.read()
+
+               if not dryrun:
+                       transport = urllib2.build_opener(authhandler)
+                       f = transport.open(self.url + "cmd.html", "P%d=r" % node_port)
+                       if self.transport.verbose: print f.read()
+
+               self.transport.close()
+               return 0
+
+class ePowerSwitchOld(PCUControl):
+       supported_ports = [80]
+       def run_http(self, node_port, dryrun):
+               self.url = "http://%s:%d/" % (self.host,80)
+               uri = "%s:%d" % (self.host,80)
+
+               # TODO: I'm still not sure what the deal is here.
+               #               two independent calls appear to need to be made before the
+               #               reboot will succeed.  It doesn't seem to be possible to do
+               #               this with a single call.  I have no idea why.
+
+               # create authinfo
+               authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm()
+               authinfo.add_password (None, uri, self.username, self.password)
+               authhandler = urllib2.HTTPBasicAuthHandler( authinfo )
+
+               # NOTE: it doesn't seem to matter whether this authinfo is here or not.
+               transport = urllib2.build_opener()
+               f = transport.open(self.url + "elogin.html", "pwd=%s" % self.password)
+               if self.transport.verbose: print f.read()
+
+               if not dryrun:
+                       transport = urllib2.build_opener(authhandler)
+                       f = transport.open(self.url + "econtrol.html", "P%d=r" % node_port)
+                       if self.transport.verbose: print f.read()
+
+               #       data= "P%d=r" % node_port
+               #self.open(self.host, self.username, self.password)
+               #self.sendHTTP("elogin.html", "pwd=%s" % self.password)
+               #self.sendHTTP("econtrol.html", data)
+               #self.sendHTTP("cmd.html", data)
+
+               #self.close()
+               return 0
diff --git a/pcucontrol/models/hpilo/iloxml/Get_Network.xml b/pcucontrol/models/hpilo/iloxml/Get_Network.xml
new file mode 100644 (file)
index 0000000..fc7ae7b
--- /dev/null
@@ -0,0 +1,7 @@
+<RIBCL VERSION="2.0">\r
+  <LOGIN USER_LOGIN="adminname" PASSWORD="password">\r
+    <RIB_INFO MODE="read">\r
+       <GET_NETWORK_SETTINGS/>\r
+    </RIB_INFO>\r
+  </LOGIN>\r
+</RIBCL>\r
diff --git a/pcucontrol/models/hpilo/iloxml/PowerOff_Server.xml b/pcucontrol/models/hpilo/iloxml/PowerOff_Server.xml
new file mode 100644 (file)
index 0000000..2a91833
--- /dev/null
@@ -0,0 +1,46 @@
+<!--         RIBCL Sample Script for HP Lights-Out Products          -->\r
+<!--Copyright (c) 2003,2007 Hewlett-Packard Development Company, L.P.-->\r
+\r
+<!-- Description:  This is a sample XML script to toggle the power   -->\r
+<!--               on the host server in which one of the following  -->\r
+<!--               devices is executing:                             -->\r
+<!--                 Integrated Lights-Out 2 (iLO 2)                 -->\r
+<!--                 Integrated Lights-Out (iLO)                     -->\r
+<!--                 Remote Insight Lights-Out Edition II (RILOE II) -->\r
+\r
+<!-- NOTE:  You will need to replace the USER_LOGIN and PASSWORD     -->\r
+<!--        values with values that are appropriate for your         -->\r
+<!--        environment.                                             -->\r
+\r
+<!--        This script will use the ACPI Power Button function to   -->\r
+<!--        attempt to gracefully shutdown the host operating system -->\r
+<!--        (if your OS supports and is configured for graceful      -->\r
+<!--        shutdown) before it powers off the server.               -->\r
+\r
+<!--        Use CPQLOCFG.EXE ver 2.26 or greater with this script.   -->\r
+\r
+<!--        This script was written for iLO 2 firmware version 1.30  -->\r
+<!--        release.                                                 -->\r
+\r
+<!--        See "HP Integrated Lights-Out Management Processor       -->\r
+<!--        Scripting and Command Line Resource Guide" for more      -->\r
+<!--        information on scripting and the syntax of the RIBCL     -->\r
+<!--        XML.                                                     -->\r
+\r
+<!--        Firmware support infomation for this script:             -->\r
+<!--            iLO 2 - All versions.                                -->\r
+<!--              iLO - All versions.                                -->\r
+<!--         RILOE II - All versions.                                -->\r
+\r
+<RIBCL VERSION="2.0">\r
+  <LOGIN USER_LOGIN="adminname" PASSWORD="password">\r
+  <SERVER_INFO MODE="write">\r
+    <!-- Modify the HOST_POWER attribute to toggle power on the host server -->\r
+    <!-- HOST_POWER="No"  (Turns host server power off)              -->\r
+    <!-- A graceful shutdown will be attempted for ACPI-aware        -->\r
+    <!-- operating systems configured to support graceful shutdown.  -->\r
+    <!-- HOST_POWER="Yes" (Turns host server power on) -->\r
+    <SET_HOST_POWER HOST_POWER="No"/>\r
+  </SERVER_INFO>\r
+  </LOGIN>\r
+</RIBCL>\r
diff --git a/pcucontrol/models/hpilo/iloxml/PowerOn_Server.xml b/pcucontrol/models/hpilo/iloxml/PowerOn_Server.xml
new file mode 100644 (file)
index 0000000..fc5f40c
--- /dev/null
@@ -0,0 +1,46 @@
+<!--         RIBCL Sample Script for HP Lights-Out Products          -->\r
+<!--Copyright (c) 2003,2007 Hewlett-Packard Development Company, L.P.-->\r
+\r
+<!-- Description:  This is a sample XML script to toggle the power   -->\r
+<!--               on the host server in which one of the following  -->\r
+<!--               devices is executing:                             -->\r
+<!--                 Integrated Lights-Out 2 (iLO 2)                 -->\r
+<!--                 Integrated Lights-Out (iLO)                     -->\r
+<!--                 Remote Insight Lights-Out Edition II (RILOE II) -->\r
+\r
+<!-- NOTE:  You will need to replace the USER_LOGIN and PASSWORD     -->\r
+<!--        values with values that are appropriate for your         -->\r
+<!--        environment.                                             -->\r
+\r
+<!--        This script will use the ACPI Power Button function to   -->\r
+<!--        attempt to gracefully shutdown the host operating system -->\r
+<!--        (if your OS supports and is configured for graceful      -->\r
+<!--        shutdown) before it powers off the server.               -->\r
+\r
+<!--        Use CPQLOCFG.EXE ver 2.26 or greater with this script.   -->\r
+\r
+<!--        This script was written for iLO 2 firmware version 1.30  -->\r
+<!--        release.                                                 -->\r
+\r
+<!--        See "HP Integrated Lights-Out Management Processor       -->\r
+<!--        Scripting and Command Line Resource Guide" for more      -->\r
+<!--        information on scripting and the syntax of the RIBCL     -->\r
+<!--        XML.                                                     -->\r
+\r
+<!--        Firmware support infomation for this script:             -->\r
+<!--            iLO 2 - All versions.                                -->\r
+<!--              iLO - All versions.                                -->\r
+<!--         RILOE II - All versions.                                -->\r
+\r
+<RIBCL VERSION="2.0">\r
+  <LOGIN USER_LOGIN="adminname" PASSWORD="password">\r
+  <SERVER_INFO MODE="write">\r
+    <!-- Modify the HOST_POWER attribute to toggle power on the host server -->\r
+    <!-- HOST_POWER="No"  (Turns host server power off)              -->\r
+    <!-- A graceful shutdown will be attempted for ACPI-aware        -->\r
+    <!-- operating systems configured to support graceful shutdown.  -->\r
+    <!-- HOST_POWER="Yes" (Turns host server power on) -->\r
+    <SET_HOST_POWER HOST_POWER="Yes"/>\r
+  </SERVER_INFO>\r
+  </LOGIN>\r
+</RIBCL>\r
diff --git a/pcucontrol/models/hpilo/iloxml/Reset_Server.xml b/pcucontrol/models/hpilo/iloxml/Reset_Server.xml
new file mode 100644 (file)
index 0000000..707331c
--- /dev/null
@@ -0,0 +1,48 @@
+<!--         RIBCL Sample Script for HP Lights-Out Products          -->\r
+<!--Copyright (c) 2003,2007 Hewlett-Packard Development Company, L.P.-->\r
+\r
+<!-- Description:  This is a sample XML script to power cycle (off   -->\r
+<!--               and then back on) the host server in which the    -->\r
+<!--               following device is operating:                   -->\r
+<!--                 Integrated Lights-Out 2 (iLO 2)                 -->\r
+<!--                 Integrated Lights-Out (iLO)                     -->\r
+<!--                 Remote Insight Lights-Out Edition II (RILOE II) -->\r
+\r
+<!-- NOTE:  You will need to replace the USER_LOGIN and PASSWORD     -->\r
+<!--        values with values that are appropriate for your         -->\r
+<!--        environment.                                             -->\r
+\r
+<!--        This script will NOT attempt to gracefully shutdown the  -->\r
+<!--        host operating system before it powers off the server.   -->\r
+\r
+<!--        If graceful shutdown is needed (if your OS supports it), -->\r
+<!--        use the Set_Host_Power.xml script (with                  -->\r
+<!--        SET_HOST_POWER HOST_POWER="No") to attempt a graceful    -->\r
+<!--        shutdown of the OS before powering off the server and    -->\r
+<!--        then use the Set_Host_Power.xml script (with             -->\r
+<!--        SET_HOST_POWER HOST_POWER="Yes") to turn the server back -->\r
+<!--        on.                                                      -->\r
+\r
+\r
+<!--        Use CPQLOCFG.EXE ver 2.26 or greater with this script.   -->\r
+\r
+<!--        This script was written for iLO 2 firmware version 1.30  -->\r
+<!--        release.                                                 -->\r
+\r
+<!--        See "HP Integrated Lights-Out Management Processor       -->\r
+<!--        Scripting and Command Line Resource Guide" for more      -->\r
+<!--        information on scripting and the syntax of the RIBCL     -->\r
+<!--        XML.                                                     -->\r
+\r
+<!--        Firmware support infomation for this script:             -->\r
+<!--            iLO 2 - All versions.                                -->\r
+<!--              iLO - All versions.                                -->\r
+<!--         RILOE II - All versions.                                -->\r
+\r
+<RIBCL VERSION="2.0">\r
+  <LOGIN USER_LOGIN="adminname" PASSWORD="password">\r
+  <SERVER_INFO MODE="write">\r
+    <RESET_SERVER/>\r
+  </SERVER_INFO>\r
+  </LOGIN>\r
+</RIBCL>\r
diff --git a/pcucontrol/models/hpilo/locfg.pl b/pcucontrol/models/hpilo/locfg.pl
new file mode 100755 (executable)
index 0000000..0ff3529
--- /dev/null
@@ -0,0 +1,132 @@
+#!/usr/bin/perl
+###########################################################################
+##
+## Simplified perl version of CPQLOCFG
+## Copyright 2003,2007 Hewlett Packard Development Company, L.P.
+##
+## To use this program, you must have Net::SSLeay and IO::Socket::SSL
+## installed.  You may obtain these modules from http://www.cpan.org/
+##
+## You may use and modify this program to suit your needs.
+##
+###########################################################################
+
+use IO::Socket::SSL;
+use Getopt::Long;
+
+
+sub usage
+{
+       print "Usage:\n";
+       print "    locfg -s server [-l logfile] -f inputfile [-u username -p password]\n";
+       print "    Note: Use -u and -p with caution as command line options are\n";
+       print "          visible on Linux.\n";
+       exit 0;
+}
+
+sub usage_err
+{
+    print "Note:\n";
+       print "  Both username and password must be specified with the -u and -p switches.\n";
+       print "  Use -u and -p with caution as command line options are visible on Linux.\n";
+       exit 0;
+}
+###########################################################################
+##
+## Process options
+##
+###########################################################################
+
+my $host, $logfile, $file, $verbose, $help, $uname, $pword;
+$verbose = 0;
+$r = GetOptions("server|s=s" => \$host,
+               "logfile|l=s" => \$logfile,
+               "input|f=s" => \$file,
+               "u=s" => \$uname,
+               "p=s" => \$pword,
+               "verbose" => \$verbose,
+               "help|?" => \$help
+               );
+
+if ($help || !$host || !$file) {
+       usage();
+}
+
+# Username and Password must be entered together
+if( ($uname && !($pword)) || (!($uname) && $pword) ) {
+    usage_err();
+}
+
+if ($logfile) {
+       # If a logfile is specified, open it and select it as the default
+       # filehandle
+       open(L, ">$logfile") || die "Can't open $logfile\n";
+       select(L);
+}
+
+# Set the default SSL port number if no port is specified
+$host .= ":443" unless ($host =~ m/:/);
+
+# Open the SSL connection and the input file
+my $client = new IO::Socket::SSL->new(PeerAddr => $host);
+if (!$client) {
+       print "ERROR: Failed to establish SSL connection with $host.\n";
+       exit 1;
+}
+
+open(F, "<$file") || die "Can't open $file\n";
+
+# Send the XML header and begin processing the file
+print $client '<?xml version="1.0"?>' . "\r\n";
+while($ln=<F>) {
+       # Chomp of any EOL characters
+       $ln =~ s/\r|\n//g;
+
+    # Find LOGIN tag.
+    if ((($ln =~ ?<[   ]*LOGIN[        ]?) || ($ln =~ ?<[      ]*LOGIN$?)) && ($pword) && ($uname)) {
+       while( !($ln =~ m/\>/i) ) {
+          $ln = <F>;
+       }
+       print $client "<LOGIN USER_LOGIN=\"$uname\" PASSWORD=\"$pword\">\n";
+       print "\n<LOGIN USER_LOGIN=\"$uname\" PASSWORD=\"$pword\">\n" if ($verbose);
+       # print "\nOverriding credentials in scripts with those from command line.\n" if ($verbose);
+       next;
+    }
+
+       # Special case: UPDATE_RIB_FIRMWARE violates XML.  Send the full
+       # UPDATE firmware tag followed by the binary firmware image
+       if ($ln =~ m/UPDATE_RIB_FIRMWARE/i) {
+               if ($ln =~ m/IMAGE_LOCATION=\"(.*)\"/i) {
+                       $firmware = $1;
+                       open(G, "<$firmware") || die "Can't open $firmware\n";
+                       $len = (stat(G))[7];
+                       print $client "\r\n<UPDATE_RIB_FIRMWARE IMAGE_LOCATION=\"$firmware\" IMAGE_LENGTH=\"$len\"/>\r\n";
+                       print "\r\n<UPDATE_RIB_FIRMWARE IMAGE_LOCATION=\"$firmware\" IMAGE_LENGTH=\"$len\"/>\r\n" if ($verbose);
+                       $x = read(G, $buf, $len);
+                       print "Read $x bytes from $firmware\n" if ($verbose);
+                       $x = $client->write($buf, $x);
+                       print "Wrote $x bytes\n" if ($verbose);
+                       close(G);
+                       next;
+               }
+                # print "\nError: syntax error detected in $ln\n" if ($verbose);
+       }
+       # Send the script to the iLO board
+       print $ln . "\n" if ($verbose);
+       print $client $ln . "\r\n" ;
+}
+close(F);
+
+print "----\n" if ($verbose);
+
+# Ok, now read the responses back from iLO
+while($ln=<$client>) {
+       last if (length($ln) == 0);
+
+       # This isn't really required, but it makes the output look nicer
+       $ln =~ s/<\/RIBCL>/<\/RIBCL>\n/g;
+       print $ln;
+}
+
+# All done
+exit 0;
diff --git a/pcucontrol/models/intelamt/Include/CommonDefinitions.h b/pcucontrol/models/intelamt/Include/CommonDefinitions.h
new file mode 100644 (file)
index 0000000..79555ab
--- /dev/null
@@ -0,0 +1,289 @@
+//----------------------------------------------------------------------------
+//
+//  Copyright (C) Intel Corporation, 2004 - 2006.
+//
+//  File:       CommonDefinitions.h
+//
+//  Contents:   Sample code for an Intel® AMT Network client.
+//
+//  Notes:      This file contains type, function and constant definitions
+//              used throughout the code of the all sample applications.
+//
+//----------------------------------------------------------------------------
+
+#ifndef COMMON_DEFINITIONS_H
+#define COMMON_DEFINITIONS_H
+
+
+#include "StatusCodeDefinitions.h"
+#ifdef _WIN32
+/*
+ * gsoapWinHTTP.h for gSoap WinHTTP extension - needed for TLS support
+ */
+#include "gsoapWinHttp.h"
+#include "StatusStrings.h"
+#include <conio.h>
+#else
+/*
+ * httpDigest.h for gSoap HTTP Digest support
+ */
+#include "httpDigest.h"
+#endif
+
+/*
+ * Function prototypes
+ */
+void PrintAuthenticationNote();
+bool CheckReturnStatus(unsigned int res, unsigned long status,const char *message);
+bool ValidateIP(const char *uri);
+void GetString(char *msg, char *s, bool hidden);
+bool ChangeService(const char *uri, const char *newService, char *newUri);
+bool DisplayWarning(const char *msg);
+bool GetNumber(int *number);
+void ReplaceSubstring(const char *oldString,const char *oldSubstr, 
+                                       const char *newSubstr, char *newString);
+void SetIPAddress(unsigned long &address, unsigned long bytes[]);
+void NumberToIP(unsigned long address, unsigned long bytes[]);
+void NumberToString(unsigned long number, char *string);
+void IpToString(unsigned long address, char *string);
+void StringToIP(const char *string, unsigned long &address);
+void GuidToString(const unsigned char* guid, char* string);
+bool ExtractIPFromUri(const char *uri, char *baseUrl);
+void IsEmulator(const char *targetUrl, int *isEmulator);
+bool GetOption(int *commandLineLength, char *argv[], int numOfArgs,
+                          char **option, char **commandLine[]);
+void PrintSuccess(bool print = true);
+void FunctionCall(const char *message);
+#ifdef _WIN32
+bool ParseCommandLine(int commandLineLength,char* commandLine[],char **target,
+                                         char **certName, bool *local, bool *krb,bool *verbose = NULL, 
+                      char **username = NULL, char **password = NULL);
+#define CHAR _TCHAR
+#else
+bool ParseCommandLine(int commandLineLength,char* commandLine[],char **target, 
+                                         char **certName = NULL,char **certPass = NULL, 
+                      bool *verbose = NULL, 
+                                         char **username = NULL, char **password = NULL);
+#define CHAR char
+#endif
+
+/*
+ * Constants for the common use
+ */
+static const int MAX_LINE_LEN = 1024;
+static const int TIMEOUT = 80;
+static const char *DEFAULT_USERNAME = "admin";
+static const char *DEFAULT_PASSWORD = "admin";
+static const char *CERT_NAME = "-certName";
+static const char *USER = "-user";
+static const char *PASS = "-pass";
+static const char *VERBOSE = "-verbose";
+#ifdef _WIN32
+static const char *LOCAL = "-local";
+static const char *KRB = "-krb";
+#else
+static const char *CERT_PASS = "-certPass";
+#endif
+
+/*
+ * The structure that represents 
+ * the gSOAP rintime environment
+ */
+class Soap
+{
+private:
+  struct soap *m_soap;
+  char *m_username;
+  char *m_password;
+  char *m_ip;
+
+public:
+    // Constructor
+#ifdef _WIN32
+  Soap(const char *url, const char *certName, 
+          const char *username, const char *password,
+       bool local, bool krb)
+#else
+  Soap(const char *url, const char *certName, 
+          const char *certPass, const char *username, 
+       const char *password)
+#endif
+  {
+    m_username = new char[MAX_LINE_LEN];
+    m_password = new char[MAX_LINE_LEN];
+    m_ip = new char[MAX_LINE_LEN];
+    SetIp(url);
+    SetUsername(DEFAULT_USERNAME);
+    SetPassword(DEFAULT_PASSWORD);
+
+       if (
+#ifdef _WIN32
+        krb == false &&
+#endif
+        !username)
+       {
+               // To use the default user name, comment the following line:
+               GetString("Username: ", m_username, false);  
+       }
+       else
+       {
+               SetUsername(username);
+       }
+
+       if (
+#ifdef _WIN32
+        krb == false &&
+#endif
+        !password)
+       {
+               // To use the default password, comment the following line:
+               GetString("Password: ", m_password, true);
+       }
+       else
+       {
+               SetPassword(password);
+       }
+       m_soap = soap_new();
+       if( m_soap )
+       {
+#ifdef _WIN32
+         SetSoap(certName,local,krb);
+#else
+         SetSoap(certName,certPass);
+#endif
+
+       }
+  }
+
+  void Init(SOAP_NMAC struct Namespace *name = NULL)
+  {
+    m_soap->userid = m_username;
+    m_soap->passwd = m_password;
+
+    if(name != NULL)
+    {
+        // setting namespace for the runtime environment
+           soap_set_namespaces(m_soap, name);
+    }
+  }
+
+  char *GetIp()
+  {
+      return m_ip;
+  }
+
+  char *GetUsername()
+  {
+      return m_username;
+  }
+
+  char *GetPassword()
+  {
+      return m_password;
+  }
+
+  struct soap *GetSoap()
+  {
+      return m_soap;
+  }
+
+  void SetIp(const char *url)
+  {
+      memset(m_ip, 0, MAX_LINE_LEN);
+      if(url != NULL)
+      {
+        strncpy(m_ip, url, MAX_LINE_LEN - 1);
+      }
+  }
+
+  void SetUsername(const char *username)
+  {
+      memset(m_username,0,MAX_LINE_LEN);
+      if(username != NULL)
+      {
+        strncpy(m_username, username, MAX_LINE_LEN - 1);
+      }
+  }
+
+  void SetPassword(const char *password)
+  {
+      memset(m_password,0,MAX_LINE_LEN);
+      if(password != NULL)
+      {
+        strncpy(m_password, password, MAX_LINE_LEN - 1);
+      }
+  }
+
+#ifdef _WIN32
+  void SetSoap(const CHAR *certName, bool local, bool krb)
+#else
+  void SetSoap(const CHAR *certName, const char *certPass)
+#endif
+  {
+    m_soap->recv_timeout    = TIMEOUT;
+    m_soap->send_timeout    = TIMEOUT;
+    m_soap->connect_timeout = TIMEOUT;
+    m_soap->accept_timeout  = TIMEOUT;
+
+#ifdef _WIN32
+       // gsoap winhttp extension 
+       soap_register_plugin( m_soap, winhttp_plugin );
+    soap_omode(m_soap, SOAP_IO_KEEPALIVE);
+       if( certName )
+       {
+               winhttp_set_certificate_name(m_soap, certName);
+       }
+
+    winhttp_set_local(m_soap,local);
+    winhttp_set_auth_scheme(m_soap,krb);
+#else
+    // gsoap HTTP Digest plugin
+ if ( strncmp(m_ip+strlen(m_ip)-5, ".asmx", 5)) {
+        soap_register_plugin(m_soap, http_digest);
+    }
+  soap_omode(m_soap, SOAP_IO_KEEPALIVE);
+  soap_imode(m_soap, SOAP_IO_KEEPALIVE);
+       if ( !strncmp(m_ip, "https:", 6) )
+       {
+               soap_ssl_client_context(m_soap,
+                                                               SOAP_SSL_DEFAULT,
+                                                               certName,
+                                                               certPass,
+                                                               "/usr/share/ssl/cert.pem",
+                                                               "/usr/share/ssl/certs/", NULL);
+       }
+#endif
+  }
+
+  // Destructor
+  ~Soap()
+  {
+      if(m_username)
+      {
+          delete [] m_username;
+          m_username = NULL;
+      }
+      if(m_password)
+      {
+          delete [] m_password;
+          m_password = NULL;
+      }
+      if(m_ip)
+      {
+          delete [] m_ip;
+          m_ip = NULL;
+      }
+         if( m_soap ){
+               soap_destroy(m_soap);
+               soap_end(m_soap);
+               soap_done(m_soap);
+               free(m_soap);
+               m_soap = NULL;
+         }
+  }
+};
+
+
+
+
+#endif
diff --git a/pcucontrol/models/intelamt/Include/IMRSDK.h b/pcucontrol/models/intelamt/Include/IMRSDK.h
new file mode 100644 (file)
index 0000000..0fe9cea
--- /dev/null
@@ -0,0 +1,260 @@
+// Copyright (C) Intel Corporation, 2003 - 2006.\r
+\r
+#ifndef _IMR_SDK_H_\r
+#define _IMR_SDK_H_\r
+\r
+#define EXPORTED_FUNC\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif // __cplusplus\r
+\r
+#ifndef BOOL\r
+       typedef int            BOOL;\r
+       #define TRUE                    1\r
+       #define FALSE                   0\r
+#endif\r
+\r
+#define MAX_IP_LEN                     128\r
+#define MAX_NAME_LEN           128\r
+#define MAX_COMP_NAME          128\r
+#define MAX_PSWD_LEN           128\r
+#define KEY_LEN                                20\r
+#define GUID_LEN                       16\r
+\r
+// SOL spec defines text length as maximum 255\r
+#define MAX_SOL_MESSAGE                0xFF\r
+\r
+#define INVALID_CLIENT_ID (unsigned long)-1\r
+typedef unsigned long ClientID;\r
+\r
+#define INVALID_SESSION_ID (unsigned long)-1\r
+typedef unsigned long SessionID;\r
+\r
+\r
+typedef enum {\r
+       IMR_RES_OK, \r
+       IMR_RES_ERROR, \r
+       IMR_RES_INVALID_PARAMETER,\r
+       IMR_RES_NOT_INITIALIZED,\r
+       IMR_RES_ALREADY_INITIALIZED,\r
+       IMR_RES_MEMALLOC_FAILED,\r
+       IMR_RES_UNSUPPORTED,\r
+       IMR_RES_CLIENT_NOT_FOUND,\r
+       IMR_RES_DUPLICATE_CLIENT,\r
+       IMR_RES_CLIENT_NOT_ACTIVE,\r
+       IMR_RES_CLIENT_ACTIVE,\r
+       IMR_RES_SESSION_ALREADY_OPEN,\r
+       IMR_RES_SESSION_CLOSED,\r
+       IMR_RES_SOCKET_ERROR,\r
+       IMR_RES_UNKNOWN_PROTOCOL,\r
+       IMR_RES_PROTOCOL_ALREADY_REGISTERED,\r
+       IMR_RES_PENDING,\r
+       IMR_RES_UNEXPECTED_PACKET,\r
+       IMR_RES_TIMEOUT,\r
+       IMR_RES_CORRUPT_PACKET,\r
+       IMR_RES_OS_ERROR,\r
+       IMR_RES_IDER_VERSION_NOT_SUPPORTED,\r
+       IMR_RES_IDER_COMMAND_RUNNING,\r
+       IMR_RES_STORAGE_FAILURE,\r
+       IMR_RES_UNKNOWN,\r
+       IMR_RES_AUTH_FAILED,\r
+       IMR_RES_CLIENT_TYPE_UNKNOWN,\r
+       IMR_RES_CLIENT_BUSY,\r
+       IMR_RES_CLIENT_UNSUPPORTED,\r
+       IMR_RES_CLIENT_ERROR,\r
+       IMR_RES_NOT_ENOUGH_SPACE,\r
+       IMR_RES_SESSION_LOOPBACK,\r
+       IMR_RES_TLS_CONNECTION_FAILED,\r
+\r
+       IMR_RES_COUNT,   // must be last entry\r
+} IMRResult;\r
+\r
+typedef struct {\r
+       unsigned short major;\r
+       unsigned short minor;\r
+} IMRVersion;\r
+\r
+typedef enum {CLI_TCP = 1, CLI_TLS = 2, CLI_UNKNOWN } ClientType;\r
+\r
+\r
+typedef char GUIDType[GUID_LEN];\r
+\r
+typedef struct {\r
+       ClientType      type;\r
+       char            ip[MAX_IP_LEN];\r
+       GUIDType        guid;\r
+} ClientInfo;\r
+\r
+\r
+//IN Parameter for IDER/SOL session \r
+\r
+typedef struct {\r
+       char user_name[MAX_NAME_LEN]; // user name - nul terminated string \r
+       char user_pswd[MAX_PSWD_LEN]; // user password - nul terminated string \r
+} TCPSessionParams;\r
+\r
+//IN Parameter for SOL session \r
+typedef struct {\r
+       unsigned short  tx_over_timeout;\r
+       unsigned short  tx_buf_timeout;\r
+       unsigned short  hb_interval;\r
+       unsigned short  fifo_rx_flush_timeout;\r
+       unsigned short  rx_timeout;\r
+} SOLTout; \r
+\r
+//IN Parameter for IDER session \r
+typedef struct {\r
+       unsigned short  rx_timeout;     //client host RX timeout as defined in the IDER spec.\r
+       unsigned short  tx_timeout; //client host TX timeout as defined in the IDER spec.\r
+       unsigned short  hb_timeout; //client FW HB interval  as defined in the IDER spec.\r
+} IDERTout; \r
+\r
+//OUT parameter for querying supported IDER client features\r
+typedef struct {\r
+       BOOL ider_dev_pri; //TRUE if client FW supports enable/disable of primary IDE devices\r
+       BOOL ider_dev_sec; //TRUE if client FW supports enable/disable of secondary IDE devices\r
+       BOOL reserved[30];\r
+}FeaturesSupported;\r
+\r
+typedef enum {IDER_ENABLE, IDER_DISABLE, IDER_NOP } SetOperation;\r
+//Timing options for the IDE device enabling/disabling:\r
+//ONRESET - Client should perform command at the next FW RESET.\r
+//GRACEFULLY - Client should perform command if there is no other host command in progress.\r
+//IMMEDIATELY - Client should perform command immediately.\r
+typedef enum {IDER_SET_ONRESET, IDER_SET_GRACEFULLY, IDER_SET_IMMEDIATELY,  } SetOption;\r
+\r
+typedef enum { IDER_DISABLED, IDER_ENABLED  } DeviceState;\r
+\r
+//Client returns REJECTED if there is a Host Command in progress\r
+//and the Disable/Enable command can't be performed at this time\r
+typedef enum { IDER_REJECTED, IDER_DONE } SetResult;\r
+\r
+//IN parameter for querying client IDE devices state\r
+typedef struct  {\r
+       DeviceState     pri_default;    //Default primary devices state at the Client FW\r
+       DeviceState     pri_current;    //Current primary devices state at the Client FW\r
+       DeviceState     sec_default;    //Default secondary devices state at the Client FW\r
+       DeviceState     sec_current;    //Default secondary devices state at the Client FW\r
+} IDERDeviceState;\r
+\r
+//IN paramter for changing client IDE devices state\r
+typedef struct {\r
+       SetOperation    pri_op;         //Pimary device operation (enable or disable)\r
+       SetOption               pri_timing; //Pimary device operation timing \r
+       SetOperation    sec_op;         //Not supported by the SDK yet \r
+       SetOption               sec_timing; //Not supported by the SDK yet\r
+} IDERDeviceCmd;\r
+\r
+//OUT parameter - IDERDeviceCmd execution result returned by the client\r
+typedef struct {\r
+       SetResult       pri_res;\r
+       SetResult       sec_res;\r
+} IDERDeviceResult;\r
+\r
+typedef struct {\r
+               BOOL                            error_state;    //TRUE if session is in ERROR state\r
+               BOOL                            data_transfer;  //TRUE if there is a read/write command in progress\r
+               unsigned short          num_reopen;             //number of session re-opens due to error recovery\r
+               unsigned long           num_error;              //number of ErrorOccured messages received\r
+               unsigned long           num_reset;              //number of ResetOccured messages received\r
+               unsigned long           last_cmd_length;//last data transfer (read/write) length in bytes\r
+               unsigned long           data_sent;              //bytes of data sent to the client\r
+               unsigned long           data_received;  //bytes of data received from the client\r
+               unsigned long           packets_sent;   //mesages sent during the session \r
+               unsigned long           packets_received;//messages received during the session\r
+} IDERStatistics;\r
+\r
+typedef enum {SEC_LEVEL_NONE, SEC_LEVEL_AUTH, SEC_LEVEL_ENCR, SEC_LEVEL_AUTH_ENCR } SecLevel;\r
+\r
+typedef enum { SOL_LOOPBACK_NONE = 0, SOL_LOOPBACK_RS232C = 1 } SOLLoopbackMode;\r
+\r
+\r
+//General:\r
+EXPORTED_FUNC IMRResult IMR_Init(IMRVersion *version, char *ini_file);\r
+EXPORTED_FUNC IMRResult IMR_Close();\r
+EXPORTED_FUNC IMRResult IMR_GetErrorStringLen(IMRResult, int * str_len);\r
+EXPORTED_FUNC IMRResult IMR_GetErrorString(IMRResult, char *str);\r
+EXPORTED_FUNC IMRResult IMR_SetCertificateInfo(const char *root_cert, const char *private_cert, const char *cert_pass);\r
+\r
+//Client List:\r
+EXPORTED_FUNC IMRResult IMR_AddClient( ClientType new_client_type, char *client_ip, GUIDType client_guid, ClientID *new_client_id);\r
+EXPORTED_FUNC IMRResult IMR_RemoveClient(ClientID client_id);\r
+EXPORTED_FUNC IMRResult IMR_RemoveAllClients();\r
+EXPORTED_FUNC IMRResult IMR_GetAllClients(ClientID *client_list, int *client_list_size);\r
+\r
+EXPORTED_FUNC IMRResult IMR_GetClientInfo(ClientID client_id, ClientInfo * );\r
+\r
+\r
+\r
+//SOL:\r
+EXPORTED_FUNC IMRResult IMR_SOLOpenTCPSession(ClientID  client_id, TCPSessionParams * params,\r
+                                                       SOLTout* touts , SOLLoopbackMode *loopback);\r
+EXPORTED_FUNC IMRResult IMR_SOLCloseSession(ClientID  client_id);\r
+EXPORTED_FUNC IMRResult IMR_SOLSendText(ClientID  client_id, unsigned char *data, int data_len);\r
+EXPORTED_FUNC IMRResult IMR_SOLReceiveText(ClientID  client_id, unsigned char *data, int *data_len);\r
+\r
+//IDER:\r
+\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//params       - pointer to the IDER over TCP/TLS session paramters structure\r
+//touts                - pointer to the IDER over TCP/TLS session timeouts structure\r
+//drive0       - floppy drive name for the IDER over TCP/TLS session. should be null terminated.\r
+//drive1    - CD drive name for the IDER over TCP/TLS session. should be null terminated.\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//\r
+//Use this function to establish a new IDER session with the client. \r
+//Function will create a new connection and exchange messages needed in order\r
+//to open IDER session. It will return only when the session is established, or \r
+//error occured. After the session opening client will initiate data transfers.\r
+EXPORTED_FUNC IMRResult IMR_IDEROpenTCPSession(ClientID  client_id, TCPSessionParams * params,\r
+                                                               IDERTout* touts ,\r
+                                                               char *drive0, char *drive1);\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//\r
+//Use this function to close an active IDER session. After the function returns\r
+//no other operations can be done succesfully on the session. Closing a session during \r
+//write data operation can cause data corruption. \r
+EXPORTED_FUNC IMRResult IMR_IDERCloseSession(ClientID  client_id);\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//supported - pointer to the FeaturesSupported structure filled by the SDK\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//Use this function to query the Client about the special features it supports.\r
+//Currently the only special feature defined is an ability to disable/enable host IDE devices.\r
+EXPORTED_FUNC IMRResult IMR_IDERClientFeatureSupported(ClientID  client_id, FeaturesSupported *supported);\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//state                - pointer to the IDERDeviceState structure filled by the SDK\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//Use this function to query host IDE device(s) state. \r
+EXPORTED_FUNC IMRResult IMR_IDERGetDeviceState(ClientID  client_id, IDERDeviceState *state);\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//cmd          - pointer to the IDERDeviceCmd structure that shoudl contain disable/enable command and options\r
+//result       - pointer to the IDERDeviceResult structure filled by the SDK\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//Use this function to control host IDE device(s) state. Devices can be disabled/enabled through\r
+//this API. \r
+EXPORTED_FUNC IMRResult IMR_IDERSetDeviceState(ClientID  client_id, IDERDeviceCmd *cmd, IDERDeviceResult *result);\r
+//\r
+//client_id - unique client ID, as returned by the IMR_AddClient\r
+//stat         - pointer to the IDERStatistics filled by the SDK\r
+//returns   - IMR_RES_OK on success, error otherwise.\r
+//\r
+//Use this functon in order to poll active IDER session.\r
+//If the IDER session for the corresponding client was closed due to timeout/protocol error\r
+//function will fill the stat structure with the latest data, but will return IMR_RES_SESSION_CLOSED.\r
+EXPORTED_FUNC IMRResult IMR_IDERGetSessionStatistics(ClientID  client_id, IDERStatistics * stat );\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif // __cplusplus\r
+\r
+#endif //_IMR_SDK_H_\r
+\r
diff --git a/pcucontrol/models/intelamt/Include/StatusCodeDefinitions.h b/pcucontrol/models/intelamt/Include/StatusCodeDefinitions.h
new file mode 100644 (file)
index 0000000..7901613
--- /dev/null
@@ -0,0 +1,386 @@
+//----------------------------------------------------------------------------
+//
+//  Copyright (C) Intel Corporation, 2004 - 2007
+//
+//  File:       StatusCodeDefinitions.h
+//
+//  Notes:      This file contains the definitions of the status codes 
+//              as defined in the Intel® AMT Network Design Guide.
+//
+//----------------------------------------------------------------------------
+
+#ifndef STATUS_CODE_DEFINITIONS_H
+#define STATUS_CODE_DEFINITIONS_H
+
+typedef unsigned int PT_STATUS;
+typedef unsigned int AMT_STATUS;
+
+//Request succeeded
+#define PT_STATUS_SUCCESS  0x0 
+#define AMT_STATUS_SUCCESS  0x0 
+
+//An internal error in the Intel® AMT device has occurred
+#define PT_STATUS_INTERNAL_ERROR  0x1 
+#define AMT_STATUS_INTERNAL_ERROR  0x1 
+
+//Intel® AMT device has not progressed far enough in its 
+//initialization to process the command.
+#define PT_STATUS_NOT_READY  0x2 
+#define AMT_STATUS_NOT_READY  0x2 
+
+//Command is not permitted in current operating mode.
+#define PT_STATUS_INVALID_PT_MODE  0x3 
+#define AMT_STATUS_INVALID_PT_MODE  0x3 
+
+//Length field of header is invalid.
+#define PT_STATUS_INVALID_MESSAGE_LENGTH  0x4 
+#define AMT_STATUS_INVALID_MESSAGE_LENGTH  0x4 
+
+//The requested hardware asset inventory table 
+//checksum is not available. 
+#define PT_STATUS_TABLE_FINGERPRINT_NOT_AVAILABLE  0x5 
+#define AMT_STATUS_TABLE_FINGERPRINT_NOT_AVAILABLE  0x5 
+
+//The Integrity Check Value field of the request 
+//message sent by Intel® AMT enabled device is invalid.
+#define PT_STATUS_INTEGRITY_CHECK_FAILED  0x6
+#define AMT_STATUS_INTEGRITY_CHECK_FAILED  0x6
+
+//The specified ISV version is not supported
+#define PT_STATUS_UNSUPPORTED_ISVS_VERSION  0x7 
+#define AMT_STATUS_UNSUPPORTED_ISVS_VERSION  0x7 
+
+//The specified queried application is not registered.
+#define PT_STATUS_APPLICATION_NOT_REGISTERED  0x8
+#define AMT_STATUS_APPLICATION_NOT_REGISTERED  0x8
+
+//Either an invalid name or a not previously registered 
+//“Enterprise” name was specified 
+#define PT_STATUS_INVALID_REGISTRATION_DATA  0x9 
+#define AMT_STATUS_INVALID_REGISTRATION_DATA  0x9 
+
+//The application handle provided in the request 
+//message has never been allocated.
+#define PT_STATUS_APPLICATION_DOES_NOT_EXIST  0xA 
+#define AMT_STATUS_APPLICATION_DOES_NOT_EXIST  0xA 
+
+//The requested number of bytes cannot be allocated in ISV storage.
+#define PT_STATUS_NOT_ENOUGH_STORAGE  0xB
+#define AMT_STATUS_NOT_ENOUGH_STORAGE  0xB
+
+//The specified name is invalid.
+#define PT_STATUS_INVALID_NAME  0xC 
+#define AMT_STATUS_INVALID_NAME  0xC 
+
+//The specified block does not exist.
+#define PT_STATUS_BLOCK_DOES_NOT_EXIST  0xD 
+#define AMT_STATUS_BLOCK_DOES_NOT_EXIST  0xD 
+
+//The specified byte offset is invalid.
+#define PT_STATUS_INVALID_BYTE_OFFSET  0xE 
+#define AMT_STATUS_INVALID_BYTE_OFFSET  0xE 
+
+//The specified byte count is invalid.
+#define PT_STATUS_INVALID_BYTE_COUNT  0xF
+#define AMT_STATUS_INVALID_BYTE_COUNT  0xF
+
+//The requesting application is not 
+//permitted to request execution of the specified operation.
+#define PT_STATUS_NOT_PERMITTED  0x10
+#define AMT_STATUS_NOT_PERMITTED  0x10
+
+//The requesting application is not the owner of the block 
+//as required for the requested operation.
+#define PT_STATUS_NOT_OWNER  0x11 
+#define AMT_STATUS_NOT_OWNER  0x11 
+
+//The specified block is locked by another application.
+#define PT_STATUS_BLOCK_LOCKED_BY_OTHER  0x12 
+#define AMT_STATUS_BLOCK_LOCKED_BY_OTHER  0x12 
+
+//The specified block is not locked.
+#define PT_STATUS_BLOCK_NOT_LOCKED  0x13 
+#define AMT_STATUS_BLOCK_NOT_LOCKED  0x13 
+
+//The specified group permission bits are invalid.
+#define PT_STATUS_INVALID_GROUP_PERMISSIONS  0x14
+#define AMT_STATUS_INVALID_GROUP_PERMISSIONS  0x14
+
+//The specified group does not exist.
+#define PT_STATUS_GROUP_DOES_NOT_EXIST  0x15 
+#define AMT_STATUS_GROUP_DOES_NOT_EXIST  0x15 
+
+//The specified member count is invalid.
+#define PT_STATUS_INVALID_MEMBER_COUNT  0x16 
+#define AMT_STATUS_INVALID_MEMBER_COUNT  0x16 
+
+//The request cannot be satisfied because a maximum
+//limit associated with the request has been reached.
+#define PT_STATUS_MAX_LIMIT_REACHED  0x17 
+#define AMT_STATUS_MAX_LIMIT_REACHED  0x17 
+
+//specified key algorithm is invalid.
+#define PT_STATUS_INVALID_AUTH_TYPE  0x18 
+#define AMT_STATUS_INVALID_AUTH_TYPE  0x18 
+
+//Not Used
+#define PT_STATUS_AUTHENTICATION_FAILED  0x19
+#define AMT_STATUS_AUTHENTICATION_FAILED  0x19
+
+//The specified DHCP mode is invalid.
+#define PT_STATUS_INVALID_DHCP_MODE  0x1A 
+#define AMT_STATUS_INVALID_DHCP_MODE  0x1A 
+
+//The specified IP address is not a valid IP unicast address.
+#define PT_STATUS_INVALID_IP_ADDRESS  0x1B 
+#define AMT_STATUS_INVALID_IP_ADDRESS  0x1B 
+
+//The specified domain name is not a valid domain name.
+#define PT_STATUS_INVALID_DOMAIN_NAME  0x1C 
+#define AMT_STATUS_INVALID_DOMAIN_NAME  0x1C 
+
+//Not Used 
+#define PT_STATUS_UNSUPPORTED_VERSION  0x1D
+#define AMT_STATUS_UNSUPPORTED_VERSION  0x1D
+
+//The requested operation cannot be performed because a 
+//prerequisite request message has not been received.
+#define PT_STATUS_REQUEST_UNEXPECTED  0x1E 
+#define AMT_STATUS_REQUEST_UNEXPECTED  0x1E 
+
+//Not Used
+#define PT_STATUS_INVALID_TABLE_TYPE  0x1F 
+#define AMT_STATUS_INVALID_TABLE_TYPE  0x1F 
+
+//The specified provisioning mode code is undefined.
+#define PT_STATUS_INVALID_PROVISIONING_STATE  0x20 
+#define AMT_STATUS_INVALID_PROVISIONING_STATE  0x20 
+
+//Not Used
+#define PT_STATUS_UNSUPPORTED_OBJECT  0x21 
+#define AMT_STATUS_UNSUPPORTED_OBJECT  0x21 
+
+//The specified time was not accepted by the Intel® AMT device
+//since it is earlier than the baseline time set for the device.
+#define PT_STATUS_INVALID_TIME  0x22 
+#define AMT_STATUS_INVALID_TIME  0x22 
+
+//StartingIndex is invalid.
+#define PT_STATUS_INVALID_INDEX  0x23 
+#define AMT_STATUS_INVALID_INDEX  0x23 
+
+//A parameter is invalid.
+#define PT_STATUS_INVALID_PARAMETER  0x24 
+#define AMT_STATUS_INVALID_PARAMETER  0x24 
+
+//An invalid netmask was supplied 
+//(a valid netmask is an IP address in which all ‘1’s are before 
+//the ‘0’ – e.g. FFFC0000h is valid, FF0C0000h is invalid).
+#define PT_STATUS_INVALID_NETMASK  0x25 
+#define AMT_STATUS_INVALID_NETMASK  0x25 
+
+//The operation failed because the Flash wear-out 
+//protection mechanism prevented a write to an NVRAM sector.
+#define PT_STATUS_FLASH_WRITE_LIMIT_EXCEEDED  0x26 
+#define AMT_STATUS_FLASH_WRITE_LIMIT_EXCEEDED  0x26 
+
+//ME FW did not receive the entire image file.
+#define PT_STATUS_INVALID_IMAGE_LENGTH  0x27
+#define AMT_STATUS_INVALID_IMAGE_LENGTH  0x27
+
+//ME FW received an image file with an invalid signature.
+#define PT_STATUS_INVALID_IMAGE_SIGNATURE  0x28
+#define AMT_STATUS_INVALID_IMAGE_SIGNATURE  0x28
+
+//LME can not support the requested version.
+#define        PT_STATUS_PROPOSE_ANOTHER_VERSION  0x29
+#define        AMT_STATUS_PROPOSE_ANOTHER_VERSION  0x29
+
+//The PID must be a 64 bit quantity made up of ASCII codes
+//of some combination of 8 characters – 
+//capital alphabets (A–Z), and numbers (0–9). 
+#define        PT_STATUS_INVALID_PID_FORMAT  0x2A
+#define        AMT_STATUS_INVALID_PID_FORMAT  0x2A
+
+//The PPS must be a 256 bit quantity made up of ASCII codes 
+//of some combination of 32 characters – 
+//capital alphabets (A–Z), and numbers (0–9). 
+#define        PT_STATUS_INVALID_PPS_FORMAT  0x2B
+#define        AMT_STATUS_INVALID_PPS_FORMAT  0x2B
+
+//Full BIST test has been blocked
+#define PT_STATUS_BIST_COMMAND_BLOCKED  0x2C
+#define AMT_STATUS_BIST_COMMAND_BLOCKED  0x2C
+
+//A TCP/IP connection could not be opened on with the selected port.
+#define PT_STATUS_CONNECTION_FAILED     0x2D
+#define AMT_STATUS_CONNECTION_FAILED    0x2D
+
+//Max number of connection reached. 
+//LME can not open the requested connection.
+#define PT_STATUS_CONNECTION_TOO_MANY  0x2E
+#define AMT_STATUS_CONNECTION_TOO_MANY  0x2E
+
+//Random key generation is in progress.
+#define PT_STATUS_RNG_GENERATION_IN_PROGRESS  0x2F
+#define AMT_STATUS_RNG_GENERATION_IN_PROGRESS  0x2F
+
+//A randomly generated key does not exist.
+#define PT_STATUS_RNG_NOT_READY  0x30
+#define AMT_STATUS_RNG_NOT_READY  0x30
+
+//Self-generated AMT certificate does not exist.
+#define PT_STATUS_CERTIFICATE_NOT_READY  0x31
+#define AMT_STATUS_CERTIFICATE_NOT_READY  0x31
+
+//This code establishes a dividing line between
+//status codes which are common to host interface and 
+//network interface and status codes which are used by 
+//network interface only.
+#define PT_STATUS_NETWORK_IF_ERROR_BASE  0x800
+#define AMT_STATUS_NETWORK_IF_ERROR_BASE  0x800
+
+//The OEM number specified in the remote control 
+//command is not supported by the Intel® AMT device
+#define PT_STATUS_UNSUPPORTED_OEM_NUMBER  0x801
+#define AMT_STATUS_UNSUPPORTED_OEM_NUMBER  0x801
+
+//The boot option specified in the remote control command
+//is not supported by the Intel® AMT device
+#define PT_STATUS_UNSUPPORTED_BOOT_OPTION  0x802
+#define AMT_STATUS_UNSUPPORTED_BOOT_OPTION  0x802
+
+//The command specified in the remote control command 
+//is not supported by the Intel® AMT device
+#define PT_STATUS_INVALID_COMMAND  0x803 
+#define AMT_STATUS_INVALID_COMMAND  0x803 
+
+//The special command specified in the remote control command 
+//is not supported by the Intel® AMT device
+#define PT_STATUS_INVALID_SPECIAL_COMMAND  0x804 
+#define AMT_STATUS_INVALID_SPECIAL_COMMAND  0x804 
+
+//The handle specified in the command is invalid
+#define PT_STATUS_INVALID_HANDLE  0x805 
+#define AMT_STATUS_INVALID_HANDLE  0x805 
+
+//The password specified in the User ACL is invalid
+#define PT_STATUS_INVALID_PASSWORD  0x806
+#define AMT_STATUS_INVALID_PASSWORD  0x806
+
+//The realm specified in the User ACL is invalid
+#define PT_STATUS_INVALID_REALM  0x807 
+#define AMT_STATUS_INVALID_REALM  0x807 
+
+//The FPACL or EACL entry is used by an active 
+//registration and cannot be removed or modified.
+#define PT_STATUS_STORAGE_ACL_ENTRY_IN_USE  0x808 
+#define AMT_STATUS_STORAGE_ACL_ENTRY_IN_USE  0x808 
+
+//Essential data is missing on CommitChanges command.
+#define PT_STATUS_DATA_MISSING  0x809
+#define AMT_STATUS_DATA_MISSING  0x809
+
+//The parameter specified is a duplicate of an existing value.
+//Returned for a case where duplicate entries are added to FPACL 
+//(Factory Partner Allocation Control List) or EACL 
+//(Enterprise Access Control List) lists.
+#define PT_STATUS_DUPLICATE  0x80A 
+#define AMT_STATUS_DUPLICATE  0x80A 
+
+//Event Log operation failed due to the current freeze status of the log.
+#define PT_STATUS_EVENTLOG_FROZEN  0x80B 
+#define AMT_STATUS_EVENTLOG_FROZEN  0x80B 
+
+//The device is missing private key material.
+#define PT_STATUS_PKI_MISSING_KEYS  0x80C
+#define AMT_STATUS_PKI_MISSING_KEYS  0x80C
+
+//The device is currently generating a keypair. 
+//Caller may try repeating this operation at a later time.
+#define PT_STATUS_PKI_GENERATING_KEYS  0x80D
+#define AMT_STATUS_PKI_GENERATING_KEYS  0x80D
+
+//An invalid Key was entered.
+#define PT_STATUS_INVALID_KEY  0x80E
+#define AMT_STATUS_INVALID_KEY  0x80E
+
+//An invalid X.509 certificate was entered.
+#define PT_STATUS_INVALID_CERT  0x80F
+#define AMT_STATUS_INVALID_CERT  0x80F
+
+//Certificate Chain and Private Key do not match.
+#define PT_STATUS_CERT_KEY_NOT_MATCH  0x810
+#define AMT_STATUS_CERT_KEY_NOT_MATCH  0x810
+
+//The request cannot be satisfied because the maximum
+//number of allowed Kerberos domains has been reached.
+//(The domain is determined by the first 24 Bytes of the SID.)
+#define PT_STATUS_MAX_KERB_DOMAIN_REACHED 0x811
+#define AMT_STATUS_MAX_KERB_DOMAIN_REACHED 0x811
+
+// The requested configuration is unsupported
+#define PT_STATUS_UNSUPPORTED 0x812
+#define AMT_STATUS_UNSUPPORTED 0x812
+
+// A profile with the requested priority already exists
+#define PT_STATUS_INVALID_PRIORITY 0x813
+#define AMT_STATUS_INVALID_PRIORITY 0x813
+
+// Unable to find specified element
+#define PT_STATUS_NOT_FOUND 0x814
+#define AMT_STATUS_NOT_FOUND 0x814
+
+// Invalid User credentials 
+#define PT_STATUS_INVALID_CREDENTIALS 0x815
+#define AMT_STATUS_INVALID_CREDENTIALS 0x815
+
+// Passphrase is invalid
+#define PT_STATUS_INVALID_PASSPHRASE 0x816
+#define AMT_STATUS_INVALID_PASSPHRASE 0x816
+
+// A certificate handle must be chosen before the
+// operation can be completed.
+#define PT_STATUS_NO_ASSOCIATION 0x818
+#define AMT_STATUS_NO_ASSOCIATION 0x818
+
+//The application has identified an internal error
+#define PTSDK_STATUS_INTERNAL_ERROR  0x1000
+
+//An ISV operation was called while the library is not
+//initialized
+#define PTSDK_STATUS_NOT_INITIALIZED  0x1001
+
+//The requested library I/F is not supported by the current library
+//implementation.
+#define PTSDK_STATUS_LIB_VERSION_UNSUPPORTED  0x1002
+
+//One of the parameters is invalid (usually indicates a
+//NULL pointer or an invalid session handle is specified)
+#define PTSDK_STATUS_INVALID_PARAM  0x1003
+
+//The SDK could not allocate sufficient resources to complete the operation.
+#define PTSDK_STATUS_RESOURCES  0x1004
+
+//The Library has identified a HW Internal error.
+#define PTSDK_STATUS_HARDWARE_ACCESS_ERROR  0x1005
+
+//The application that sent the request message is not registered. 
+//Usually indicates the registration timeout has elapsed. 
+//The caller should reregister with the Intel AMT enabled device.
+#define PTSDK_STATUS_REQUESTOR_NOT_REGISTERED  0x1006
+
+//A network error has occurred while processing the call.
+#define PTSDK_STATUS_NETWORK_ERROR  0x1007
+
+//Specified container can not hold the requested string
+#define PTSDK_STATUS_PARAM_BUFFER_TOO_SHORT  0x1008
+
+//For Windows only.
+//ISVS_InitializeCOMinThread was not called by the current thread.
+#define PTSDK_STATUS_COM_NOT_INITIALIZED_IN_THREAD  0x1009
+
+//The URL parameter was not optional in current configuration.
+#define PTSDK_STATUS_URL_REQUIRED       0x100A
+
+#endif
diff --git a/pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogLocalInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogLocalInterface.wsdl
new file mode 100644 (file)
index 0000000..b87a1a8
--- /dev/null
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Intel(R) AMT Agent Presence Local Interface version 1.00.0-->
+<wsdl:definitions 
+    xmlns="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:apl="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal" 
+    targetNamespace="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal">
+    <wsdl:types>
+        <xs:schema targetNamespace="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal" elementFormDefault="qualified">
+
+            <!-- Intel(r) AMT 1.0 -->
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+            <xs:complexType name="GUID">
+                <xs:sequence>
+                    <xs:element name="Byte" type="xs:unsignedByte" minOccurs="16" maxOccurs="16"/>
+                </xs:sequence>
+            </xs:complexType>
+
+            <!-- Intel(r) AMT 1.0 -->
+            <xs:element name="AgentWatchdogRegister">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apl:GUID"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AgentWatchdogRegisterResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apl:PT_STATUS"/>
+                        <xs:element name="SessionSequenceNumber" type="xs:unsignedInt"/>
+                        <xs:element name="AgentHeartbeatTime" type="xs:unsignedShort"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AgentWatchdogHeartbeat">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apl:GUID"/>
+                        <xs:element name="SessionSequenceNumber" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AgentWatchdogHeartbeatResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apl:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AgentWatchdogShutdown">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apl:GUID"/>
+                        <xs:element name="SessionSequenceNumber" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AgentWatchdogShutdownResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apl:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:schema>
+    </wsdl:types>
+
+    <!-- Intel(r) AMT 1.0 -->
+    <wsdl:message name="AgentWatchdogRegisterIn">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogRegister"/>
+    </wsdl:message>
+    <wsdl:message name="AgentWatchdogRegisterOut">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogRegisterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="AgentWatchdogHeartbeatIn">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogHeartbeat"/>
+    </wsdl:message>
+    <wsdl:message name="AgentWatchdogHeartbeatOut">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogHeartbeatResponse"/>
+    </wsdl:message>
+    <wsdl:message name="AgentWatchdogShutdownIn">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogShutdown"/>
+    </wsdl:message>
+    <wsdl:message name="AgentWatchdogShutdownOut">
+        <wsdl:part name="parameters" element="apl:AgentWatchdogShutdownResponse"/>
+    </wsdl:message>
+    
+    <portType name="AgentWatchdogLocalSoapPortType">
+        <!-- Intel(r) AMT 1.0 -->
+        <wsdl:operation name="AgentWatchdogShutdown">
+            <wsdl:input message="apl:AgentWatchdogShutdownIn"/>
+            <wsdl:output message="apl:AgentWatchdogShutdownOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="AgentWatchdogHeartbeat">
+            <wsdl:input message="apl:AgentWatchdogHeartbeatIn"/>
+            <wsdl:output message="apl:AgentWatchdogHeartbeatOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="AgentWatchdogRegister">
+            <wsdl:input message="apl:AgentWatchdogRegisterIn"/>
+            <wsdl:output message="apl:AgentWatchdogRegisterOut"/>
+        </wsdl:operation>
+    </portType>
+    
+    <binding name="AgentWatchdogLocalSoapBinding" type="apl:AgentWatchdogLocalSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <!-- Intel(r) AMT 1.0 -->
+        <wsdl:operation name="AgentWatchdogShutdown">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal/AgentWatchdogShutdown"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="AgentWatchdogHeartbeat">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal/AgentWatchdogHeartbeat"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="AgentWatchdogRegister">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogLocal/AgentWatchdogRegister"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+    </binding>
+    <service name="AgentWatchdogLocalService">
+        <port name="AgentWatchdogLocalSoapPort" binding="apl:AgentWatchdogLocalSoapBinding">
+            <soap:address location="http://hostname:16992/AgentWatchdogLocalService"/>
+        </port>
+    </service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogRemoteInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/AgentWatchdogRemoteInterface.wsdl
new file mode 100644 (file)
index 0000000..10e673b
--- /dev/null
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Intel(R) AMT Agent Presence Remote Interface version 1.00.0-->
+<wsdl:definitions
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:apr="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote"
+    targetNamespace="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote">
+    <wsdl:types>
+        <xs:schema targetNamespace="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote" elementFormDefault="qualified">
+
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+            <xs:complexType name="GUID">
+                <xs:sequence>
+                    <xs:element name="Byte" type="xs:unsignedByte" minOccurs="16" maxOccurs="16"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:element name="AgentDescription">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Null terminated string of maximum of 16 characters
+                            </xs:documentation>
+                        </xs:annotation>
+                        <xs:minLength value="0"/>
+                        <xs:maxLength value="16"/>
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:element>
+            <xs:simpleType name="WatchdogState">
+                <xs:restriction base="xs:unsignedByte">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Bit Field:
+                            Bit 0 set           = NOT_STARTED
+                            Bit 1 set           = STOPPED
+                            Bit 2 set           = RUNNING
+                            Bit 3 set           = EXPIRED
+                            Bit 4 set           = SUSPEND
+                            All bits(0-7) set   = ANY
+                            Valid values: 1..31, 255
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:complexType name="ConsoleWatchdogEntryType">
+                <xs:sequence>
+                    <xs:element name="AgentID" type="apr:GUID"/>
+                    <xs:element ref="apr:AgentDescription" minOccurs="0"/>
+                    <xs:element name="AgentHeartbeatTime" type="xs:unsignedShort"/>
+                    <xs:element name="AgentStartupTime" type="xs:unsignedShort"/>
+                    <xs:element name="NumActions" type="xs:unsignedInt"/>
+                    <xs:element name="State" type="apr:WatchdogState"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:simpleType name="CbActionType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Activate CB Policy"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Deactivate CB Policy"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:complexType name="ConsoleWatchdogActionType">
+                <xs:sequence>
+                    <xs:element name="OldState" type="apr:WatchdogState"/>
+                    <xs:element name="NewState" type="apr:WatchdogState"/>
+                    <xs:element name="ActionEventOnTransition" type="xs:boolean"/>
+                    <xs:element name="ActionCb" type="apr:CbActionType" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerHardwarePolicyType">
+                <xs:sequence>
+                    <xs:element name="HardwareID" type="xs:unsignedInt"/>
+                    <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="AgentPresenceCapabilitiesType">
+                <xs:sequence>
+                    <xs:element name="MaxTotalAgents" type="xs:unsignedInt"/>
+                    <xs:element name="MaxTotalActions" type="xs:unsignedInt"/>
+                    <xs:element name="MinGuaranteedActionListSize" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+
+            <xs:element name="ConsoleWatchdogCreate">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apr:GUID"/>
+                        <xs:element ref="apr:AgentDescription" minOccurs="0"/>
+                        <xs:element name="AgentHeartbeatTime" type="xs:unsignedShort"/>
+                        <xs:element name="AgentStartupTime" type="xs:unsignedShort"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogCreateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogDelete">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apr:GUID"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogDeleteResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogEnumerate">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogEnumerateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                        <xs:element name="ConsoleWatchdogEntries" type="apr:ConsoleWatchdogEntryType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogSetActions">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apr:GUID"/>
+                        <xs:element name="ConsoleWatchdogActions" type="apr:ConsoleWatchdogActionType" minOccurs="1" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogSetActionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogGetActions">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AgentID" type="apr:GUID"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogGetActionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                        <xs:element name="ConsoleWatchdogActions" type="apr:ConsoleWatchdogActionType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogSetCbPolicy">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="HwPolicies" type="apr:CircuitBreakerHardwarePolicyType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogSetCbPolicyResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogGetCbPolicy">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogGetCbPolicyResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                        <xs:element name="HwPolicies" type="apr:CircuitBreakerHardwarePolicyType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogQueryCapabilities">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ConsoleWatchdogQueryCapabilitiesResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="apr:PT_STATUS"/>
+                        <xs:element name="Capabilities" type="apr:AgentPresenceCapabilitiesType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+        </xs:schema>
+    </wsdl:types>
+    <wsdl:message name="ConsoleWatchdogCreateIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogCreate"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogCreateOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogCreateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogDeleteIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogDelete"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogDeleteOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogDeleteResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogEnumerateIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogEnumerate"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogEnumerateOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogEnumerateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogSetActionsIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogSetActions"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogSetActionsOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogSetActionsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogGetActionsIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogGetActions"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogGetActionsOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogGetActionsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogSetCbPolicyIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogSetCbPolicy"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogSetCbPolicyOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogSetCbPolicyResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogGetCbPolicyIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogGetCbPolicy"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogGetCbPolicyOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogGetCbPolicyResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogQueryCapabilitiesIn">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogQueryCapabilities"/>
+    </wsdl:message>
+    <wsdl:message name="ConsoleWatchdogQueryCapabilitiesOut">
+        <wsdl:part name="parameters" element="apr:ConsoleWatchdogQueryCapabilitiesResponse"/>
+    </wsdl:message>
+    <portType name="AgentWatchdogRemoteSoapPortType">
+        <wsdl:operation name="ConsoleWatchdogCreate">
+            <wsdl:input message="apr:ConsoleWatchdogCreateIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogCreateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogDelete">
+            <wsdl:input message="apr:ConsoleWatchdogDeleteIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogDeleteOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogEnumerate">
+            <wsdl:input message="apr:ConsoleWatchdogEnumerateIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogEnumerateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogSetActions">
+            <wsdl:input message="apr:ConsoleWatchdogSetActionsIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogSetActionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogGetActions">
+            <wsdl:input message="apr:ConsoleWatchdogGetActionsIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogGetActionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogSetCbPolicy">
+            <wsdl:input message="apr:ConsoleWatchdogSetCbPolicyIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogSetCbPolicyOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogGetCbPolicy">
+            <wsdl:input message="apr:ConsoleWatchdogGetCbPolicyIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogGetCbPolicyOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogQueryCapabilities">
+            <wsdl:input message="apr:ConsoleWatchdogQueryCapabilitiesIn"/>
+            <wsdl:output message="apr:ConsoleWatchdogQueryCapabilitiesOut"/>
+        </wsdl:operation>
+    </portType>
+    <binding name="AgentWatchdogRemoteSoapBinding" type="apr:AgentWatchdogRemoteSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="ConsoleWatchdogCreate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogCreate"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogDelete">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogDelete"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogEnumerate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogEnumerate"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogSetActions">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogSetActions"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogGetActions">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogGetActions"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogSetCbPolicy">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogSetCbPolicy"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogGetCbPolicy">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogGetCbPolicy"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+        <wsdl:operation name="ConsoleWatchdogQueryCapabilities">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/AgentWatchdogRemote/ConsoleWatchdogQueryCapabilities"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </wsdl:operation>
+    </binding>
+    <service name="AgentWatchdogRemoteService">
+        <port name="AgentWatchdogRemoteSoapPort" binding="apr:AgentWatchdogRemoteSoapBinding">
+            <soap:address location="http://hostname:16992/AgentWatchdogRemoteService"/>
+        </port>
+    </service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/CertStore.xsd b/pcucontrol/models/intelamt/Include/WSDL/CertStore.xsd
new file mode 100644 (file)
index 0000000..5fc0fe7
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cstr="http://schemas.intel.com/platform/client/CertStore/2006/01"
+    targetNamespace="http://schemas.intel.com/platform/client/CertStore/2006/01"
+    elementFormDefault="qualified">
+    
+    <!-- Import ... -->
+    
+
+    <!-- Schema definition -->
+
+    <xs:simpleType name="KeyPairHandleType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+
+    <xs:complexType name="RSAKeyPairType">
+        <xs:sequence>
+            <xs:element name="DERKey" type="xs:base64Binary"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="KeyPairType">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="RSAKeyPair" type="cstr:RSAKeyPairType"/>                
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    
+</xs:schema>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/CircuitBreakerInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/CircuitBreakerInterface.wsdl
new file mode 100644 (file)
index 0000000..d65414a
--- /dev/null
@@ -0,0 +1,1029 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Intel(R) AMT Circuit Breaker Interface version 1.00.0-->
+<wsdl:definitions 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"    
+    xmlns:net="http://schemas.intel.com/platform/client/NetworkAdministration/2004/01"     
+    xmlns:cb="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker" 
+    targetNamespace="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker">
+    
+    <wsdl:types>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/NetworkAdministration/2004/01" elementFormDefault="qualified">
+            <xs:simpleType name="InterfaceHandleType">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker" elementFormDefault="qualified">
+
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+            <xs:import namespace="http://schemas.intel.com/platform/client/NetworkAdministration/2004/01"/>
+
+            <!-- Private Type definition -->
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+            <xs:simpleType name="TimeType">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+            <xs:simpleType name="IPv4AddressStringType">
+                <xs:restriction base="xs:string">
+                    <xs:pattern value="(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType name="IPv6AddressStringType">
+                <xs:restriction base="xs:string">
+                    <xs:pattern value="((([\dA-Fa-f]{1,4}:){7}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){6}:[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){5}:([\dA-Fa-f]{1,4}:)?[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){4}:([\dA-Fa-f]{1,4}:){0,2}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){3}:([\dA-Fa-f]{1,4}:){0,3}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){2}:([\dA-Fa-f]{1,4}:){0,4}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){6}(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | (([\dA-Fa-f]{1,4}:){0,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | (::([\dA-Fa-f]{1,4}:){0,5}(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | ([\dA-Fa-f]{1,4}::([\dA-Fa-f]{1,4}:){0,5}[\dA-Fa-f]{1,4}) | (::([\dA-Fa-f]{1,4}:){0,6}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){1,7}:))"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:element name="FilterName">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Null terminated string of maximum of 16 characters
+                            </xs:documentation>
+                        </xs:annotation>
+                        <xs:minLength value="0"/>
+                        <xs:maxLength value="16"/>
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:element>
+            <xs:element name="PolicyName">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Null terminated string of maximum of 16 characters
+                            </xs:documentation>
+                        </xs:annotation>
+                        <xs:minLength value="0"/>
+                        <xs:maxLength value="16"/>
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:element>
+            <!-- Policy types -->
+            <xs:complexType name="CircuitBreakerAntiSpoofingFilterType">
+                <xs:sequence>
+                    <xs:element name="ActionEventOnMatch" type="xs:boolean"/>
+                    <xs:element name="ActionCount" type="xs:boolean"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerDefaultFilterType">
+                <xs:complexContent>
+                    <xs:extension base="cb:CircuitBreakerAntiSpoofingFilterType">
+                        <xs:sequence>
+                            <xs:element name="ActionDrop" type="xs:boolean"/>
+                        </xs:sequence>
+                    </xs:extension>
+                </xs:complexContent>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPolicyType">
+                <xs:sequence>
+                    <xs:element ref="cb:PolicyName" minOccurs="0"/>
+                    <xs:element name="PolicyPrecedence" type="xs:unsignedInt"/>
+                    <xs:element name="AntiSpoofingFilter" type="cb:CircuitBreakerAntiSpoofingFilterType" minOccurs="0"/>
+                    <xs:element name="FilterCreationHandles" type="xs:unsignedInt" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element name="DefaultTXFilter" type="cb:CircuitBreakerDefaultFilterType"/>
+                    <xs:element name="DefaultRXFilter" type="cb:CircuitBreakerDefaultFilterType"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPolicyInfoType">
+                <xs:sequence>
+                    <xs:element name="Policy" type="cb:CircuitBreakerPolicyType"/>
+                    <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+            <!-- Filter types -->
+            <xs:complexType name="CircuitBreakerIPv4AddressAndMaskType">
+                <xs:sequence>
+                    <xs:element name="IPAddressDirection" type="cb:CircuitBreakerFilterIPAddressDirectionType"/>
+                    <xs:element name="Address" type="cb:IPv4AddressStringType"/>
+                    <xs:element name="AddressMask" type="cb:IPv4AddressStringType"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPv6AddressAndMaskType">
+                <xs:sequence>
+                    <xs:element name="IPAddressDirection" type="cb:CircuitBreakerFilterIPAddressDirectionType"/>
+                    <xs:element name="Address" type="cb:IPv6AddressStringType"/>
+                    <xs:element name="AddressMask" type="cb:IPv6AddressStringType"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPLayeredPortSimpleType">
+                <xs:sequence>
+                    <xs:element name="SourcePort" type="xs:unsignedShort"/>
+                    <xs:element name="DestinationPort" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPLayeredPortRangeType">
+                <xs:sequence>
+                    <xs:element name="PortMin" type="xs:unsignedShort"/>
+                    <xs:element name="PortMax" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPLayeredPortType">
+                <xs:sequence>
+                    <xs:choice>
+                        <xs:element name="IPLayeredPortSimple" type="cb:CircuitBreakerIPLayeredPortSimpleType"/>
+                        <xs:element name="IPLayeredPortRangeSource" type="cb:CircuitBreakerIPLayeredPortRangeType"/>
+                        <xs:element name="IPLayeredPortRangeDestination" type="cb:CircuitBreakerIPLayeredPortRangeType"/>
+                    </xs:choice>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPLayeredTCPFlagsType">
+                <xs:sequence>
+                    <xs:element name="TCP_FLAG_FIN" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_SYN" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_RST" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_PUSH" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_ACK" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_URG" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_ECNE" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_CWR" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_NS" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_Reserved1" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_Reserved2" type="xs:boolean" minOccurs="0"/>
+                    <xs:element name="TCP_FLAG_Reserved3" type="xs:boolean" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:simpleType name="CircuitBreakerFilterDirectionType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Transmit"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Receive"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType name="CircuitBreakerFilterIPAddressDirectionType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Source"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Destination"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType name="CircuitBreakerProfileType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Pass With Statistics"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Drop With Statistics"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="2">
+                        <xs:annotation>
+                            <xs:documentation>"2 = Rate Limit"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="3">
+                        <xs:annotation>
+                            <xs:documentation>"3 = Pass"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="4">
+                        <xs:annotation>
+                            <xs:documentation>"4 = Drop"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:complexType name="CircuitBreakerIPv4Type">
+                <xs:sequence>
+                    <xs:element name="IPv4Desc" type="cb:CircuitBreakerIPv4AddressAndMaskType" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPv6Type">
+                <xs:sequence>
+                    <xs:element name="IPv6Desc" type="cb:CircuitBreakerIPv6AddressAndMaskType" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerIPPacketType">
+                <xs:sequence>
+                    <xs:choice>
+                        <xs:element name="IPv4" type="cb:CircuitBreakerIPv4Type"/>
+                        <xs:element name="IPv6" type="cb:CircuitBreakerIPv6Type"/>
+                    </xs:choice>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPacketUDPType">
+                <xs:sequence>
+                    <xs:element name="IPPacket" type="cb:CircuitBreakerIPPacketType"/>
+                    <xs:element name="IPLayeredPort" type="cb:CircuitBreakerIPLayeredPortType" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPacketTCPType">
+                <xs:complexContent>
+                    <xs:extension base="cb:CircuitBreakerPacketUDPType">
+                        <xs:sequence>
+                            <xs:element name="TCPFlags" type="cb:CircuitBreakerIPLayeredTCPFlagsType" minOccurs="0"/>
+                        </xs:sequence>
+                    </xs:extension>
+                </xs:complexContent>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPacketIPType">
+                <xs:sequence>
+                    <xs:element name="IPPacket" type="cb:CircuitBreakerIPPacketType"/>
+                    <xs:element name="NextProtocol" type="xs:unsignedByte" minOccurs="0"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPacketETHType">
+                <xs:sequence>
+                    <xs:element name="EthernetFrameType" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerPacketType">
+                <xs:sequence>
+                    <xs:choice>
+                        <xs:element name="PacketTCP" type="cb:CircuitBreakerPacketTCPType"/>
+                        <xs:element name="PacketUDP" type="cb:CircuitBreakerPacketUDPType"/>
+                        <xs:element name="PacketIP" type="cb:CircuitBreakerPacketIPType"/>
+                        <xs:element name="PacketETH" type="cb:CircuitBreakerPacketETHType"/>
+                    </xs:choice>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerFilterType">
+                <xs:sequence>
+                    <xs:element ref="cb:FilterName" minOccurs="0"/>
+                    <xs:element name="FilterDirection" type="cb:CircuitBreakerFilterDirectionType"/>
+                    <xs:element name="FilterProfile" type="cb:CircuitBreakerProfileType"/>
+                    <xs:element name="FilterProfileData" type="xs:unsignedInt"/>
+                    <xs:element name="FilterPacket" type="cb:CircuitBreakerPacketType"/>
+                    <xs:element name="ActionEventOnMatch" type="xs:boolean"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerFilterInfoType">
+                <xs:sequence>
+                    <xs:element name="Filter" type="cb:CircuitBreakerFilterType"/>
+                    <xs:element name="FilterCreationHandle" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+            <!-- Capabilities type -->
+            <xs:complexType name="CircuitBreakerCapabilitiesType">
+                <xs:sequence>
+                    <xs:element name="HardwareDescription" type="xs:string"/>
+                    <xs:element name="HardwareID" type="xs:unsignedInt"/>
+                    <xs:element name="IPv4_MaxTxFilters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv4_MaxTxCounters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv4_MaxRxFilters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv4_MaxRxCounters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv4_AntiSpoofingCapable" type="xs:boolean"/>
+                    <xs:element name="IPv6_MaxTxFilters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv6_MaxTxCounters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv6_MaxRxFilters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv6_MaxRxCounters" type="xs:unsignedShort"/>
+                    <xs:element name="IPv6_AntiSpoofingCapable" type="xs:boolean"/>
+                    <xs:element name="IPv6_To_IPv4_Ratio" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerFilterStatisticsType">
+                <xs:sequence>
+                    <xs:element name="FilterCreationHandle" type="xs:unsignedInt"/>
+                    <xs:element name="ReadCount" type="xs:unsignedInt"/>
+                    <xs:element name="FilterMatched" type="xs:boolean"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="CircuitBreakerHardwarePolicyType">
+                <xs:sequence>
+                    <xs:element name="HardwareID" type="xs:unsignedInt"/>
+                    <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:simpleType name="CircuitBreakerApplicationType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Circuit Breaker API"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Agent Presence"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="3">
+                        <xs:annotation>
+                            <xs:documentation>"3 = Environment Detection"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="4">
+                        <xs:annotation>
+                            <xs:documentation>"4 = Heuristic Circuit Breaker"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+
+            <!-- Intel(r) AMT 2.5 -->
+
+            <!-- Intel(r) AMT 3.0 -->
+            <xs:complexType name="TimedCounterType">
+                <xs:sequence>
+                    <xs:element name="Threshold" type="xs:unsignedInt"/>
+                    <xs:element name="ClearTime" type="xs:unsignedInt"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="BlockedPortInfoType">
+                <xs:sequence>
+                    <xs:element name="PortBlocked" type="xs:unsignedShort"/>
+                    <xs:element name="ProtocolBlocked" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:complexType name="HcbOptionsType">
+                <xs:sequence>
+                    <!-- Conditions -->
+                    <xs:element name="FastConnectionRate" type="cb:TimedCounterType" minOccurs="0"/>
+                    <xs:element name="SlowConnectionRate" type="cb:TimedCounterType" minOccurs="0"/>
+                    <!-- Actions -->
+                    <xs:element name="BlockAll" type="xs:boolean"/>
+                    <xs:element name="BlockOffensivePort" type="xs:boolean"/>
+                    <xs:element name="PolicyCreationHandle" type="xs:unsignedInt" minOccurs="0"/>
+                    <!-- Options -->
+                    <xs:element name="EncounterTimeout" type="xs:unsignedShort"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:simpleType name="HcbStateType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Running"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Timed Encounter"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="2">
+                        <xs:annotation>
+                            <xs:documentation>"2 = Permanent Encounter"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="3">
+                        <xs:annotation>
+                            <xs:documentation>"3 = Disabled"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType name="HcbTriggerReasonType">
+                <xs:restriction base="xs:unsignedShort">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Slow Worm Detection "</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Fast Worm Detection "</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="2">
+                        <xs:annotation>
+                            <xs:documentation>"2 = DoS Detection "</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+
+            <!-- Policy message part elements -->
+            <xs:element name="CbPolicyCreate">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Policy" type="cb:CircuitBreakerPolicyType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyCreateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGet">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGetResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="Policy" type="cb:CircuitBreakerPolicyType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyDelete">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyDeleteResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyEnumerate">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyEnumerateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="Policies" type="cb:CircuitBreakerPolicyInfoType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyEnable">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="EnablePolicies" type="cb:CircuitBreakerHardwarePolicyType" minOccurs="1" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyEnableResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="ActivePolicies" type="cb:CircuitBreakerHardwarePolicyType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyDisable">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="HardwareID" type="xs:unsignedInt" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyDisableResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGetEnabled">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="AppType" type="cb:CircuitBreakerApplicationType" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGetEnabledResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="HwPolicies" type="cb:CircuitBreakerHardwarePolicyType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGetActiveStatistics">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="HardwareID" type="xs:unsignedInt"/>
+                        <xs:element name="ResetStatisticsOnRead" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbPolicyGetActiveStatisticsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="PolicyCreationHandle" type="xs:unsignedInt"/>
+                        <xs:element name="ActivationTime" type="cb:TimeType"/>
+                        <xs:element name="LastResetTime" type="cb:TimeType"/>
+                        <xs:element name="Statistics" type="cb:CircuitBreakerFilterStatisticsType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <!-- Filter message part elements -->
+            <xs:element name="CbFilterCreate">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Filter" type="cb:CircuitBreakerFilterType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterCreateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="FilterCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterGet">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="FilterCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterGetResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="Filter" type="cb:CircuitBreakerFilterType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterDelete">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="FilterCreationHandle" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterDeleteResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterEnumerate">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbFilterEnumerateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="Filters" type="cb:CircuitBreakerFilterInfoType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <!-- Capabilities message part elements -->
+            <xs:element name="CbQueryCapabilities">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="CbQueryCapabilitiesResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cb:PT_STATUS"/>
+                        <xs:element name="MaxSupportedPolicies" type="xs:unsignedInt"/>
+                        <xs:element name="MaxSupportedFilters" type="xs:unsignedInt"/>
+                        <xs:element name="Capabilities" type="cb:CircuitBreakerCapabilitiesType" minOccurs="1" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+            <!-- Intel(r) AMT 2.5 -->
+            
+            <!-- Intel(r) AMT 3.0 -->
+            <xs:element name="SetHcbOptions">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="InterfaceHandle" type="net:InterfaceHandleType"/>
+                        <xs:element name="HcbOptions" type="cb:HcbOptionsType" minOccurs="0"/>
+                    </xs:sequence>                
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SetHcbOptionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cmn:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetHcbOptions">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="InterfaceHandle" type="net:InterfaceHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetHcbOptionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cmn:PT_STATUS"/>
+                        <xs:element name="HcbOptions" type="cb:HcbOptionsType" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ClearHcbState">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="InterfaceHandle" type="net:InterfaceHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ClearHcbStateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cmn:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetHcbState">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="InterfaceHandle" type="net:InterfaceHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetHcbStateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cmn:PT_STATUS"/>
+                        <xs:element name="HcbState" type="cb:HcbStateType"/>
+                        <xs:element name="BlockedAll" type="xs:boolean"/>
+                        <xs:element name="TimeStamp" type="cb:TimeType" minOccurs="0"/>
+                        <xs:element name="HcbTriggerReason" type="cb:HcbTriggerReasonType" minOccurs="0"/>
+                        <xs:element name="BlockedPortInfo" type="cb:BlockedPortInfoType" minOccurs="0"/>
+                        <xs:element name="EnabledCbPolicy" type="xs:unsignedInt" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+        </xs:schema>
+    </wsdl:types>
+    <wsdl:message name="CbPolicyCreateIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyCreate"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyCreateOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyCreateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyGet"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyGetResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyDeleteIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyDelete"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyDeleteOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyDeleteResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyEnumerateIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyEnumerate"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyEnumerateOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyEnumerateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyEnableIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyEnable"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyEnableOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyEnableResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyDisableIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyDisable"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyDisableOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyDisableResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetEnabledIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyGetEnabled"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetEnabledOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyGetEnabledResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetActiveStatisticsIn">
+        <wsdl:part name="parameters" element="cb:CbPolicyGetActiveStatistics"/>
+    </wsdl:message>
+    <wsdl:message name="CbPolicyGetActiveStatisticsOut">
+        <wsdl:part name="parameters" element="cb:CbPolicyGetActiveStatisticsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterCreateIn">
+        <wsdl:part name="parameters" element="cb:CbFilterCreate"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterCreateOut">
+        <wsdl:part name="parameters" element="cb:CbFilterCreateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterGetIn">
+        <wsdl:part name="parameters" element="cb:CbFilterGet"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterGetOut">
+        <wsdl:part name="parameters" element="cb:CbFilterGetResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterDeleteIn">
+        <wsdl:part name="parameters" element="cb:CbFilterDelete"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterDeleteOut">
+        <wsdl:part name="parameters" element="cb:CbFilterDeleteResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterEnumerateIn">
+        <wsdl:part name="parameters" element="cb:CbFilterEnumerate"/>
+    </wsdl:message>
+    <wsdl:message name="CbFilterEnumerateOut">
+        <wsdl:part name="parameters" element="cb:CbFilterEnumerateResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CbQueryCapabilitiesIn">
+        <wsdl:part name="parameters" element="cb:CbQueryCapabilities"/>
+    </wsdl:message>
+    <wsdl:message name="CbQueryCapabilitiesOut">
+        <wsdl:part name="parameters" element="cb:CbQueryCapabilitiesResponse"/>
+    </wsdl:message>
+
+    <!-- Intel(r) AMT 2.5 -->
+
+    <!-- Intel(r) AMT 3.0 -->
+    <wsdl:message name="SetHcbOptionsIn">
+        <wsdl:part name="parameters" element="cb:SetHcbOptions"/>
+    </wsdl:message>
+    <wsdl:message name="SetHcbOptionsOut">
+        <wsdl:part name="parameters" element="cb:SetHcbOptionsResponse"/>
+    </wsdl:message>
+
+    <wsdl:message name="GetHcbOptionsIn">
+        <wsdl:part name="parameters" element="cb:GetHcbOptions"/>
+    </wsdl:message>
+    <wsdl:message name="GetHcbOptionsOut">
+        <wsdl:part name="parameters" element="cb:GetHcbOptionsResponse"/>
+    </wsdl:message>
+
+    <wsdl:message name="ClearHcbStateIn">
+        <wsdl:part name="parameters" element="cb:ClearHcbState"/>
+    </wsdl:message>
+    <wsdl:message name="ClearHcbStateOut">
+        <wsdl:part name="parameters" element="cb:ClearHcbStateResponse"/>
+    </wsdl:message>
+
+    <wsdl:message name="GetHcbStateIn">
+        <wsdl:part name="parameters" element="cb:GetHcbState"/>
+    </wsdl:message>
+    <wsdl:message name="GetHcbStateOut">
+        <wsdl:part name="parameters" element="cb:GetHcbStateResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="CircuitBreakerInterface">
+        <!-- Circuit Breaker Filter Class Operations -->
+        <wsdl:operation name="CbPolicyCreate">
+            <wsdl:input message="cb:CbPolicyCreateIn"/>
+            <wsdl:output message="cb:CbPolicyCreateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGet">
+            <wsdl:input message="cb:CbPolicyGetIn"/>
+            <wsdl:output message="cb:CbPolicyGetOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyDelete">
+            <wsdl:input message="cb:CbPolicyDeleteIn"/>
+            <wsdl:output message="cb:CbPolicyDeleteOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyEnumerate">
+            <wsdl:input message="cb:CbPolicyEnumerateIn"/>
+            <wsdl:output message="cb:CbPolicyEnumerateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyEnable">
+            <wsdl:input message="cb:CbPolicyEnableIn"/>
+            <wsdl:output message="cb:CbPolicyEnableOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyDisable">
+            <wsdl:input message="cb:CbPolicyDisableIn"/>
+            <wsdl:output message="cb:CbPolicyDisableOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGetEnabled">
+            <wsdl:input message="cb:CbPolicyGetEnabledIn"/>
+            <wsdl:output message="cb:CbPolicyGetEnabledOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGetActiveStatistics">
+            <wsdl:input message="cb:CbPolicyGetActiveStatisticsIn"/>
+            <wsdl:output message="cb:CbPolicyGetActiveStatisticsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterCreate">
+            <wsdl:input message="cb:CbFilterCreateIn"/>
+            <wsdl:output message="cb:CbFilterCreateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterGet">
+            <wsdl:input message="cb:CbFilterGetIn"/>
+            <wsdl:output message="cb:CbFilterGetOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterDelete">
+            <wsdl:input message="cb:CbFilterDeleteIn"/>
+            <wsdl:output message="cb:CbFilterDeleteOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterEnumerate">
+            <wsdl:input message="cb:CbFilterEnumerateIn"/>
+            <wsdl:output message="cb:CbFilterEnumerateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CbQueryCapabilities">
+            <wsdl:input message="cb:CbQueryCapabilitiesIn"/>
+            <wsdl:output message="cb:CbQueryCapabilitiesOut"/>
+        </wsdl:operation>
+
+        <!-- Intel(r) AMT 2.5 -->
+
+        <!-- Intel(r) AMT 3.0 -->
+        <wsdl:operation name="SetHcbOptions">
+            <wsdl:input message="cb:SetHcbOptionsIn"/>
+            <wsdl:output message="cb:SetHcbOptionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetHcbOptions">
+            <wsdl:input message="cb:GetHcbOptionsIn"/>
+            <wsdl:output message="cb:GetHcbOptionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ClearHcbState">
+            <wsdl:input message="cb:ClearHcbStateIn"/>
+            <wsdl:output message="cb:ClearHcbStateOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetHcbState">
+            <wsdl:input message="cb:GetHcbStateIn"/>
+            <wsdl:output message="cb:GetHcbStateOut"/>
+        </wsdl:operation>
+
+    </wsdl:portType>
+    <wsdl:binding name="CircuitBreakerSoapBinding" type="cb:CircuitBreakerInterface">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="CbPolicyCreate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyCreate"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGet">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyGet"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyDelete">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyDelete"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyEnumerate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyEnumerate"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyEnable">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyEnable"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyDisable">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyDisable"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGetEnabled">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyGetEnabled"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbPolicyGetActiveStatistics">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbPolicyGetActiveStatistics"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterCreate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbFilterCreate"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterGet">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbFilterGet"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterDelete">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbFilterDelete"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbFilterEnumerate">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbFilterEnumerate"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CbQueryCapabilities">
+            <soap:operation soapAction="http://schemas.intel.com/2004/12/management/PC/CircuitBreaker/CbQueryCapabilities"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        
+        <!-- Intel(r) AMT 2.5 -->
+
+        <!-- Intel(r) AMT 3.0 -->
+        <wsdl:operation name="SetHcbOptions">
+            <soap:operation soapAction="http://schemas.intel.com/2006/01/management/PC/CircuitBreaker/SetHcbOptions"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetHcbOptions">
+            <soap:operation soapAction="http://schemas.intel.com/2006/01/management/PC/CircuitBreaker/GetHcbOptions"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="ClearHcbState">
+            <soap:operation soapAction="http://schemas.intel.com/2006/01/management/PC/CircuitBreaker/ClearHcbState"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetHcbState">
+            <soap:operation soapAction="http://schemas.intel.com/2006/01/management/PC/CircuitBreaker/GetHcbState"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+
+    </wsdl:binding>
+    <wsdl:service name="CircuitBreakerService">
+        <wsdl:port name="CircuitBreakerInterface" binding="cb:CircuitBreakerSoapBinding">
+            <soap:address location="http://hostname:16992/CircuitBreakerService"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/Common.xsd b/pcucontrol/models/intelamt/Include/WSDL/Common.xsd
new file mode 100644 (file)
index 0000000..1a1c5be
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01"
+    elementFormDefault="qualified">
+    
+    <xs:simpleType name="PT_STATUS">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="HostNameType">
+        <xs:restriction base="xs:string">
+            <xs:annotation>
+                <xs:documentation>String of maximum of 32 characters (not including null)</xs:documentation>
+            </xs:annotation>
+            <xs:minLength value="0"/>
+            <xs:maxLength value="64"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="URLType">
+        <xs:simpleContent>
+            <xs:extension base="xs:anyURI">
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+    <xs:simpleType name="IPv4AddressType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="IPv4AddressStringType">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType name="IPv6AddressStringType">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="((([\dA-Fa-f]{1,4}:){7}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){6}:[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){5}:([\dA-Fa-f]{1,4}:)?[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){4}:([\dA-Fa-f]{1,4}:){0,2}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){3}:([\dA-Fa-f]{1,4}:){0,3}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){2}:([\dA-Fa-f]{1,4}:){0,4}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){6}(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | (([\dA-Fa-f]{1,4}:){0,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | (::([\dA-Fa-f]{1,4}:){0,5}(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}) | ([\dA-Fa-f]{1,4}::([\dA-Fa-f]{1,4}:){0,5}[\dA-Fa-f]{1,4}) | (::([\dA-Fa-f]{1,4}:){0,6}[\dA-Fa-f]{1,4}) | (([\dA-Fa-f]{1,4}:){1,7}:))"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="NodeAddressType">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="HostName" type="cmn:HostNameType"/>
+                <xs:element name="IPv4Address" type="cmn:IPv4AddressStringType"/>
+                <xs:element name="IPv6Address" type="cmn:IPv6AddressStringType"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="InterfaceHandleType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    
+    <xs:simpleType name="GuidBuf">
+        <xs:restriction base="xs:base64Binary">
+            <xs:length value="16"/>
+        </xs:restriction>
+    </xs:simpleType>
+    
+</xs:schema>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EITInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/EITInterface.wsdl
new file mode 100644 (file)
index 0000000..6f46b84
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology EIT Interface -->
+<definitions 
+    xmlns="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"
+    xmlns:eit="http://schemas.intel.com/platform/client/EIT/2004/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/EIT/2004/01">
+
+    <types>
+        <!-- Common namespace -->
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01">
+
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>
+            
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EIT/2004/01">
+
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+
+            <xs:simpleType name="RegionType">
+                <xs:restriction base="xs:unsignedInt">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = Region A"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = Region B"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>
+
+            <xs:element name="ReadBuff">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Region" type="eit:RegionType"/>
+                        <xs:element name="Offset" type="xs:unsignedInt"/>
+                        <xs:element name="Length" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ReadBuffResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                        <xs:element name="Data" type="xs:base64Binary"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+            <xs:element name="WriteBuff">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Region" type="eit:RegionType"/>
+                        <xs:element name="Offset" type="xs:unsignedInt"/>
+                        <xs:element name="Data" type="xs:base64Binary"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="WriteBuffResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+        </xs:schema>
+    </types>
+
+    <message name="ReadBuffIn">
+        <part name="parameters" element="eit:ReadBuff"/>
+    </message>
+    <message name="ReadBuffOut">
+        <part name="parameters" element="eit:ReadBuffResponse"/>
+    </message>
+    <message name="WriteBuffIn">
+        <part name="parameters" element="eit:WriteBuff"/>
+    </message>
+    <message name="WriteBuffOut">
+        <part name="parameters" element="eit:WriteBuffResponse"/>
+    </message>
+
+    <portType name="EITSoapPortType">
+
+        <operation name="ReadBuff">
+            <input message="eit:ReadBuffIn"/>
+            <output message="eit:ReadBuffOut"/>
+        </operation>
+        <operation name="WriteBuff">
+            <input message="eit:WriteBuffIn"/>
+            <output message="eit:WriteBuffOut"/>
+        </operation>
+
+    </portType>
+
+    <binding name="EITSoapBinding" type="eit:EITSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+        <operation name="ReadBuff">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EIT/2004/01/ReadBuff" style="document"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="WriteBuff">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EIT/2004/01/WriteBuff" style="document"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+    </binding>
+
+    <service name="EITService">
+        <port name="EITSoapPortType" binding="eit:EITSoapBinding">
+            <soap:address location="http://hostname:16992/EITService"/>
+        </port>
+    </service>
+
+</definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlAdminInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlAdminInterface.wsdl
new file mode 100644 (file)
index 0000000..8496cc1
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology Event Manager Interface version 1.15.0-->
+<wsdl:definitions 
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:eac="http://schemas.intel.com/platform/client/EAC/2006/01" 
+    xmlns:eaca="http://schemas.intel.com/platform/client/EACAdmin/2006/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/EACAdmin/2006/01">
+
+    <wsdl:types>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="Common.xsd"/>
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="SecurityAdministrationInterface.xsd"/>
+        </xs:schema>
+        
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EAC/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="EndpointAccessControlInterface.xsd" />
+        </xs:schema>
+        
+    </wsdl:types>
+
+    <wsdl:message name="GetEACStatusIn">
+        <wsdl:part name="parameters" element="eac:GetEACStatus"/>
+    </wsdl:message>
+    <wsdl:message name="GetEACStatusOut">
+        <wsdl:part name="parameters" element="eac:GetEACStatusResponse"/>
+    </wsdl:message>
+    <wsdl:message name="SetPostureSignerIn">
+        <wsdl:part name="parameters" element="eac:SetPostureSigner"/>
+    </wsdl:message>
+    <wsdl:message name="SetPostureSignerOut">
+        <wsdl:part name="parameters" element="eac:SetPostureSignerResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureSignerIn">
+        <wsdl:part name="parameters" element="eac:GetPostureSigner"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureSignerOut">
+        <wsdl:part name="parameters" element="eac:GetPostureSignerResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnableEACIn">
+        <wsdl:part name="parameters" element="eac:EnableEAC"/>
+    </wsdl:message>
+    <wsdl:message name="EnableEACOut">
+        <wsdl:part name="parameters" element="eac:EnableEACResponse"/>
+    </wsdl:message>
+    <wsdl:message name="UpdatePostureStateIn">
+        <wsdl:part name="parameters" element="eac:UpdatePostureState"/>
+    </wsdl:message>
+    <wsdl:message name="UpdatePostureStateOut">
+        <wsdl:part name="parameters" element="eac:UpdatePostureStateResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="EndpointAccessControlAdminSoapPortType">
+        <wsdl:operation name="SetPostureSigner">
+            <wsdl:input message="eaca:SetPostureSignerIn"/>
+            <wsdl:output message="eaca:SetPostureSignerOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetPostureSigner">
+            <wsdl:input message="eaca:GetPostureSignerIn"/>
+            <wsdl:output message="eaca:GetPostureSignerOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetEACStatus">
+            <wsdl:input message="eaca:GetEACStatusIn"/>
+            <wsdl:output message="eaca:GetEACStatusOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnableEAC">
+            <wsdl:input message="eaca:EnableEACIn"/>
+            <wsdl:output message="eaca:EnableEACOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="UpdatePostureState">
+            <wsdl:input message="eaca:UpdatePostureStateIn"/>
+            <wsdl:output message="eaca:UpdatePostureStateOut"/>
+        </wsdl:operation>
+    </wsdl:portType>
+
+    <wsdl:binding name="EndpointAccessControlAdminSoapBinding" type="eaca:EndpointAccessControlAdminSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+        <wsdl:operation name="SetPostureSigner">
+            <soap:operation  soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/SetPostureSigner"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetPostureSigner">
+            <soap:operation  soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/GetPostureSigner"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetEACStatus">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/GetEACStatus"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="EnableEAC">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/EnableEAC"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="UpdatePostureState">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/UpdatePostureState"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+
+    <wsdl:service name="EndpointAccessControlAdminService">
+        <wsdl:port name="EndpointAccessControlSoapPort" binding="eaca:EndpointAccessControlAdminSoapBinding">
+            <soap:address location="http://hostname:16992/EndpointAccessControlAdminService"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.wsdl
new file mode 100644 (file)
index 0000000..1252925
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology Event Manager Interface version 1.15.0-->
+<wsdl:definitions 
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"
+    xmlns:sai="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01"
+    xmlns:eac="http://schemas.intel.com/platform/client/EAC/2006/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/EAC/2006/01">
+
+    <wsdl:types>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="Common.xsd"/>
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="SecurityAdministrationInterface.xsd"/>
+        </xs:schema>
+        
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EAC/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="EndpointAccessControlInterface.xsd"/>
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+            <xs:import namespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01"/>
+        </xs:schema>
+        
+    </wsdl:types>
+
+    <wsdl:message name="GetEACStatusIn">
+        <wsdl:part name="parameters" element="eac:GetEACStatus"/>
+    </wsdl:message>
+    <wsdl:message name="GetEACStatusOut">
+        <wsdl:part name="parameters" element="eac:GetEACStatusResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureIn">
+        <wsdl:part name="parameters" element="eac:GetPosture"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureOut">
+        <wsdl:part name="parameters" element="eac:GetPostureResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureHashIn">
+        <wsdl:part name="parameters" element="eac:GetPostureHash"/>
+    </wsdl:message>
+    <wsdl:message name="GetPostureHashOut">
+        <wsdl:part name="parameters" element="eac:GetPostureHashResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="EndpointAccessControlSoapPortType">
+        <wsdl:operation name="GetPosture">
+            <wsdl:input message="eac:GetPostureIn"/>
+            <wsdl:output message="eac:GetPostureOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetPostureHash">
+            <wsdl:input message="eac:GetPostureHashIn"/>
+            <wsdl:output message="eac:GetPostureHashOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetEACStatus">
+            <wsdl:input message="eac:GetEACStatusIn"/>
+            <wsdl:output message="eac:GetEACStatusOut"/>
+        </wsdl:operation>
+    </wsdl:portType>
+
+    <wsdl:binding name="EndpointAccessControlSoapBinding" type="eac:EndpointAccessControlSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+        <wsdl:operation name="GetPosture">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/GetPosture"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetPostureHash">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/GetPostureHash"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetEACStatus">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EAC/2006/01/GetEACStatus"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+
+    <wsdl:service name="EndpointAccessControlService">
+        <wsdl:port name="EndpointAccessControlSoapPort" binding="eac:EndpointAccessControlSoapBinding">
+            <soap:address location="http://hostname:16992/EndpointAccessControlService"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.xsd b/pcucontrol/models/intelamt/Include/WSDL/EndpointAccessControlInterface.xsd
new file mode 100644 (file)
index 0000000..f6ba2e3
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"     
+    xmlns:sai="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01"     
+    xmlns:cstr="http://schemas.intel.com/platform/client/CertStore/2006/01"    
+    xmlns:eac="http://schemas.intel.com/platform/client/EAC/2006/01"
+    targetNamespace="http://schemas.intel.com/platform/client/EAC/2006/01"
+    elementFormDefault="qualified">
+
+    <!-- Imported namespaces -->
+    <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01" schemaLocation="Common.xsd"/>
+    <xs:import namespace="http://schemas.intel.com/platform/client/CertStore/2006/01" schemaLocation="CertStore.xsd"/>
+    <xs:import namespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01" schemaLocation="SecurityAdministrationInterface.xsd"/>
+
+    
+    <!-- Data Types -->
+    
+    <xs:simpleType name="PostureTypeType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="PostureAvpTypeFull"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType name="PostureUpdateType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="PostureUpdateBootCounters"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <!-- Commands -->
+
+    <xs:element name="SetPostureSigner">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="SignCertificateHandle" type="sai:CertificateHandleType" minOccurs="0"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="SetPostureSignerResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPostureSigner">
+        <xs:complexType>
+            <xs:sequence>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPostureSignerResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                <xs:element name="SignCertificateHandle" type="sai:CertificateHandleType" minOccurs="0"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetEACStatus">
+        <xs:complexType>
+            <xs:sequence>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetEACStatusResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                <xs:element name="Enabled" type="xs:boolean"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="EnableEAC">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="Enabled" type="xs:boolean"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="EnableEACResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="UpdatePostureState">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="PostureUpdate" type="eac:PostureUpdateType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="UpdatePostureStateResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPosture">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="PostureType" type="eac:PostureTypeType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPostureResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                <xs:element name="SignedPosture" type="xs:base64Binary"/>
+                <xs:element name="PostureChangeHash" type="xs:base64Binary"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPostureHash">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="PostureType" type="eac:PostureTypeType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetPostureHashResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="StatusCode" type="cmn:PT_STATUS"/>
+                <xs:element name="PostureChangeHash" type="xs:base64Binary"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+
+</xs:schema>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EventManagerClientInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/EventManagerClientInterface.wsdl
new file mode 100644 (file)
index 0000000..d02f616
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology Wireless Profiles Configuration Interface version 0.6RC6-->
+<definitions
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"
+    xmlns:emi="http://schemas.intel.com/platform/client/EventManager/2004/01" 
+    xmlns:emc="http://schemas.intel.com/platform/client/EventManagerClient/2006/01"
+    targetNamespace="http://schemas.intel.com/platform/client/EventManagerClient/2006/01">
+    
+    <types>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="Common.xsd" />
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EventManager/2004/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="EventManagerInterface.xsd" />
+        </xs:schema>
+
+        <!-- EventManagerClient namespace --> 
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EventManagerClient/2006/01" elementFormDefault="qualified">
+
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+            <xs:import namespace="http://schemas.intel.com/platform/client/EventManager/2004/01"/>
+            
+
+            <!-- Intel(r) AMT 2.5 -->
+            <xs:element name="SoapAlertRequest">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="SoapAlertRecords" type="emi:EventLogRecordType" minOccurs="0" maxOccurs="64"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SoapAlertResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="cmn:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:schema>
+    </types>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <message name="SoapAlertIn">
+        <part name="parameters" element="emc:SoapAlertRequest"/>
+    </message>
+    <message name="SoapAlertOut">
+        <part name="parameters" element="emc:SoapAlertResponse"/>
+    </message>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <portType name="EventManagerClientSoapPortType">
+
+        <operation name="SoapAlert">
+            <input message="emc:SoapAlertIn"/>
+            <output message="emc:SoapAlertOut"/>
+        </operation>
+    </portType>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <binding name="EventManagerClientSoapBinding" type="emc:EventManagerClientSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="SoapAlert">
+            <soap:operation
+                soapAction="http://schemas.intel.com/platform/client/EventManagerClient/2006/01/SoapAlert"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+     </binding>
+    
+     <!-- Service Types -->
+     <service name="EventManagerClientService">
+          <port name="EventManagerClientSoapPortType" binding="emc:EventManagerClientSoapBinding">
+               <soap:address location="http://hostname:16992/EventManagerClientService"/>
+          </port>
+     </service>
+</definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.wsdl
new file mode 100644 (file)
index 0000000..820b4cf
--- /dev/null
@@ -0,0 +1,780 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology Event Manager Interface version 1.15.0-->
+<wsdl:definitions 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"
+    xmlns:sai="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01"
+    xmlns:emi="http://schemas.intel.com/platform/client/EventManager/2004/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/EventManager/2004/01">
+
+    <wsdl:types>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="Common.xsd" />
+        </xs:schema>
+        
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="SecurityAdministrationInterface.xsd" />
+        </xs:schema>
+
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/EventManager/2004/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="EventManagerInterface.xsd" />
+
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+
+            <!-- Intel(r) AMT 1.0 -->
+            <xs:element name="SubscribeForAlert">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="SubscriptionInfo" type="emi:AlertSubscriptionType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SubscribeForAlertResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="SubscriptionHandle" type="emi:AlertSubscriptionHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateAlertSubscriptions">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StartIndex" type="xs:unsignedInt"/>
+                        <xs:element name="AlertSubscriptionPolicyID" type="emi:AlertSubscriptionPolicyIDType" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateAlertSubscriptionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="TotalSubscriptionCount" type="xs:unsignedInt"/>
+                        <xs:element name="SubscriptionsReturned" type="xs:unsignedInt"/>
+                        <xs:element name="SubscriptionHandles" type="emi:AlertSubscriptionHandleArrayType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAlertSubscription">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="SubscriptionID" type="emi:AlertSubscriptionHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAlertSubscriptionResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="SubscriptionInfo" type="emi:AlertSubscriptionType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateAlertPolicies">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StartIndex" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateAlertPoliciesResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="TotalPolicyCount" type="xs:unsignedInt"/>
+                        <xs:element name="PoliciesReturned" type="xs:unsignedInt"/>
+                        <xs:element name="PolicyHandles" type="emi:AlertSubscriptionPolicyIDArrayType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SetAlertCommunityString">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Length" type="xs:unsignedByte"/>
+                        <xs:element name="CommunityString" type="emi:ByteStr"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SetAlertCommunityStringResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAlertCommunityString">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAlertCommunityStringResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="Length" type="xs:unsignedByte"/>
+                        <xs:element name="CommunityString" type="emi:ByteStr"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AddEventFilter">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="EventFilter" type="emi:EventFilterType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="AddEventFilterResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="EventFilterHandle" type="emi:EventFilterHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateEventFilters">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StartIndex" type="xs:unsignedInt"/>
+                        <xs:element name="AlertSubscriptionPolicyID" type="emi:AlertSubscriptionPolicyIDType" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateEventFiltersResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="TotalEventFilterCount" type="xs:unsignedInt"/>
+                        <xs:element name="FiltersReturned" type="xs:unsignedInt"/>
+                        <xs:element name="Filters" type="emi:EventFilterHandleArrayType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEventFilter">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="EventFilterHandle" type="emi:EventFilterHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEventFilterResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="EventFilter" type="emi:EventFilterType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="UpdateEventFilter">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="EventFilterHandle" type="emi:EventFilterHandleType"/>
+                        <xs:element name="EventFilter" type="emi:EventFilterType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="UpdateEventFilterResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>                        
+            <xs:element name="RemoveEventFilter">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="EventFilterHandle" type="emi:EventFilterHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="RemoveEventFilterResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ReadEventLogRecords">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StartIndex" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ReadEventLogRecordsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="TotalRecordCount" type="xs:unsignedInt"/>
+                        <xs:element name="RecordsReturned" type="xs:unsignedInt"/>
+                        <xs:element name="EventRecords" type="emi:EventLogRecordArrayType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetEventLogStatus">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEventLogStatusResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="NumberOfFreeRecords" type="xs:unsignedInt"/>
+                        <xs:element name="NumberOfRecords" type="xs:unsignedInt"/>
+                        <xs:element name="Time" type="emi:TimeType"/>
+                        <xs:element name="IsFrozen" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ClearEventLog">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="ClearEventLogResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="FreezeEventLog">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="NewState" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="FreezeEventLogResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SetEventLogTimestampClock">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Time" type="emi:TimeType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="SetEventLogTimestampClockResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEventLogTimestampClock">
+                <xs:complexType>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEventLogTimestampClockResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="Time" type="emi:TimeType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateSensors">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StartIndex" type="xs:unsignedInt"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="EnumerateSensorsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="TotalCount" type="xs:unsignedInt"/>
+                        <xs:element name="HandleCount" type="xs:unsignedInt"/>
+                        <xs:element name="Handles" type="emi:SensorHandleArrayType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetSensorAttributes">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Handle" type="emi:SensorHandleType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetSensorAttributesResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Status" type="emi:PT_STATUS"/>
+                        <xs:element name="Attributes" type="emi:SensorAttributesType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+
+            <!-- Intel(r) AMT 2.5 -->
+
+        </xs:schema>
+    </wsdl:types>
+    
+    <!-- Intel(r) AMT 1.0 -->
+    <wsdl:message name="SubscribeForAlertIn">
+        <wsdl:part name="parameters" element="emi:SubscribeForAlert"/>
+    </wsdl:message>
+    <wsdl:message name="SubscribeForAlertOut">
+        <wsdl:part name="parameters" element="emi:SubscribeForAlertResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateAlertSubscriptionsIn">
+        <wsdl:part name="parameters" element="emi:EnumerateAlertSubscriptions"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateAlertSubscriptionsOut">
+        <wsdl:part name="parameters" element="emi:EnumerateAlertSubscriptionsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetAlertSubscriptionIn">
+        <wsdl:part name="parameters" element="emi:GetAlertSubscription"/>
+    </wsdl:message>
+    <wsdl:message name="GetAlertSubscriptionOut">
+        <wsdl:part name="parameters" element="emi:GetAlertSubscriptionResponse"/>
+    </wsdl:message>
+    <wsdl:message name="CancelAlertSubscriptionIn">
+        <wsdl:part name="parameters" element="emi:CancelAlertSubscription"/>
+    </wsdl:message>
+    <wsdl:message name="CancelAlertSubscriptionOut">
+        <wsdl:part name="parameters" element="emi:CancelAlertSubscriptionResponse"/>
+    </wsdl:message>
+    <wsdl:message name="AddEventFilterIn">
+        <wsdl:part name="parameters" element="emi:AddEventFilter"/>
+    </wsdl:message>
+    <wsdl:message name="AddEventFilterOut">
+        <wsdl:part name="parameters" element="emi:AddEventFilterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateEventFiltersIn">
+        <wsdl:part name="parameters" element="emi:EnumerateEventFilters"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateEventFiltersOut">
+        <wsdl:part name="parameters" element="emi:EnumerateEventFiltersResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventFilterIn">
+        <wsdl:part name="parameters" element="emi:GetEventFilter"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventFilterOut">
+        <wsdl:part name="parameters" element="emi:GetEventFilterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="UpdateEventFilterIn">
+        <wsdl:part name="parameters" element="emi:UpdateEventFilter"/>
+    </wsdl:message>
+    <wsdl:message name="UpdateEventFilterOut">
+        <wsdl:part name="parameters" element="emi:UpdateEventFilterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="RemoveEventFilterIn">
+        <wsdl:part name="parameters" element="emi:RemoveEventFilter"/>
+    </wsdl:message>
+    <wsdl:message name="RemoveEventFilterOut">
+        <wsdl:part name="parameters" element="emi:RemoveEventFilterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ReadEventLogRecordsIn">
+        <wsdl:part name="parameters" element="emi:ReadEventLogRecords"/>
+    </wsdl:message>
+    <wsdl:message name="ReadEventLogRecordsOut">
+        <wsdl:part name="parameters" element="emi:ReadEventLogRecordsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="ClearEventLogIn">
+        <wsdl:part name="parameters" element="emi:ClearEventLog"/>
+    </wsdl:message>
+    <wsdl:message name="ClearEventLogOut">
+        <wsdl:part name="parameters" element="emi:ClearEventLogResponse"/>
+    </wsdl:message>
+    <wsdl:message name="SetEventLogTimestampClockIn">
+        <wsdl:part name="parameters" element="emi:SetEventLogTimestampClock"/>
+    </wsdl:message>
+    <wsdl:message name="SetEventLogTimestampClockOut">
+        <wsdl:part name="parameters" element="emi:SetEventLogTimestampClockResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventLogTimestampClockIn">
+        <wsdl:part name="parameters" element="emi:GetEventLogTimestampClock"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventLogTimestampClockOut">
+        <wsdl:part name="parameters" element="emi:GetEventLogTimestampClockResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateSensorsIn">
+        <wsdl:part name="parameters" element="emi:EnumerateSensors"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateSensorsOut">
+        <wsdl:part name="parameters" element="emi:EnumerateSensorsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetSensorAttributesIn">
+        <wsdl:part name="parameters" element="emi:GetSensorAttributes"/>
+    </wsdl:message>
+    <wsdl:message name="GetSensorAttributesOut">
+        <wsdl:part name="parameters" element="emi:GetSensorAttributesResponse"/>
+    </wsdl:message>
+    <wsdl:message name="FreezeEventLogIn">
+        <wsdl:part name="parameters" element="emi:FreezeEventLog"/>
+    </wsdl:message>
+    <wsdl:message name="FreezeEventLogOut">
+        <wsdl:part name="parameters" element="emi:FreezeEventLogResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateAlertPoliciesIn">
+        <wsdl:part name="parameters" element="emi:EnumerateAlertPolicies"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateAlertPoliciesOut">
+        <wsdl:part name="parameters" element="emi:EnumerateAlertPoliciesResponse"/>
+    </wsdl:message>
+    <wsdl:message name="SetAlertCommunityStringIn">
+        <wsdl:part name="parameters" element="emi:SetAlertCommunityString"/>
+    </wsdl:message>
+    <wsdl:message name="SetAlertCommunityStringOut">
+        <wsdl:part name="parameters" element="emi:SetAlertCommunityStringResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetAlertCommunityStringIn">
+        <wsdl:part name="parameters" element="emi:GetAlertCommunityString"/>
+    </wsdl:message>
+    <wsdl:message name="GetAlertCommunityStringOut">
+        <wsdl:part name="parameters" element="emi:GetAlertCommunityStringResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventLogStatusIn">
+        <wsdl:part name="parameters" element="emi:GetEventLogStatus"/>
+    </wsdl:message>
+    <wsdl:message name="GetEventLogStatusOut">
+        <wsdl:part name="parameters" element="emi:GetEventLogStatusResponse"/>
+    </wsdl:message>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <wsdl:message name="SubscribeForGeneralAlertIn">
+        <wsdl:part name="parameters" element="emi:SubscribeForGeneralAlert"/>
+    </wsdl:message>
+    <wsdl:message name="SubscribeForGeneralAlertOut">
+        <wsdl:part name="parameters" element="emi:SubscribeForGeneralAlertResponse"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateGeneralAlertSubscriptionsIn">
+        <wsdl:part name="parameters" element="emi:EnumerateGeneralAlertSubscriptions"/>
+    </wsdl:message>
+    <wsdl:message name="EnumerateGeneralAlertSubscriptionsOut">
+        <wsdl:part name="parameters" element="emi:EnumerateGeneralAlertSubscriptionsResponse"/>
+    </wsdl:message>
+    <wsdl:message name="GetGeneralAlertSubscriptionIn">
+        <wsdl:part name="parameters" element="emi:GetGeneralAlertSubscription"/>
+    </wsdl:message>
+    <wsdl:message name="GetGeneralAlertSubscriptionOut">
+        <wsdl:part name="parameters" element="emi:GetGeneralAlertSubscriptionResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="EventManagerSoapPortType">
+        <!-- Intel(r) AMT 1.0 -->
+        <wsdl:operation name="SubscribeForAlert">
+            <wsdl:input message="emi:SubscribeForAlertIn"/>
+            <wsdl:output message="emi:SubscribeForAlertOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateAlertSubscriptions">
+            <wsdl:input message="emi:EnumerateAlertSubscriptionsIn"/>
+            <wsdl:output message="emi:EnumerateAlertSubscriptionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetAlertSubscription">
+            <wsdl:input message="emi:GetAlertSubscriptionIn"/>
+            <wsdl:output message="emi:GetAlertSubscriptionOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateAlertPolicies">
+            <wsdl:input message="emi:EnumerateAlertPoliciesIn"/>
+            <wsdl:output message="emi:EnumerateAlertPoliciesOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="CancelAlertSubscription">
+            <wsdl:input message="emi:CancelAlertSubscriptionIn"/>
+            <wsdl:output message="emi:CancelAlertSubscriptionOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="SetAlertCommunityString">
+            <wsdl:input message="emi:SetAlertCommunityStringIn"/>
+            <wsdl:output message="emi:SetAlertCommunityStringOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetAlertCommunityString">
+            <wsdl:input message="emi:GetAlertCommunityStringIn"/>
+            <wsdl:output message="emi:GetAlertCommunityStringOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="AddEventFilter">
+            <wsdl:input message="emi:AddEventFilterIn"/>
+            <wsdl:output message="emi:AddEventFilterOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateEventFilters">
+            <wsdl:input message="emi:EnumerateEventFiltersIn"/>
+            <wsdl:output message="emi:EnumerateEventFiltersOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventFilter">
+            <wsdl:input message="emi:GetEventFilterIn"/>
+            <wsdl:output message="emi:GetEventFilterOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="UpdateEventFilter">
+            <wsdl:input message="emi:UpdateEventFilterIn"/>
+            <wsdl:output message="emi:UpdateEventFilterOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="RemoveEventFilter">
+            <wsdl:input message="emi:RemoveEventFilterIn"/>
+            <wsdl:output message="emi:RemoveEventFilterOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventLogStatus">
+            <wsdl:input message="emi:GetEventLogStatusIn"/>
+            <wsdl:output message="emi:GetEventLogStatusOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ReadEventLogRecords">
+            <wsdl:input message="emi:ReadEventLogRecordsIn"/>
+            <wsdl:output message="emi:ReadEventLogRecordsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="ClearEventLog">
+            <wsdl:input message="emi:ClearEventLogIn"/>
+            <wsdl:output message="emi:ClearEventLogOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="FreezeEventLog">
+            <wsdl:input message="emi:FreezeEventLogIn"/>
+            <wsdl:output message="emi:FreezeEventLogOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="SetEventLogTimestampClock">
+            <wsdl:input message="emi:SetEventLogTimestampClockIn"/>
+            <wsdl:output message="emi:SetEventLogTimestampClockOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventLogTimestampClock">
+            <wsdl:input message="emi:GetEventLogTimestampClockIn"/>
+            <wsdl:output message="emi:GetEventLogTimestampClockOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateSensors">
+            <wsdl:input message="emi:EnumerateSensorsIn"/>
+            <wsdl:output message="emi:EnumerateSensorsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetSensorAttributes">
+            <wsdl:input message="emi:GetSensorAttributesIn"/>
+            <wsdl:output message="emi:GetSensorAttributesOut"/>
+        </wsdl:operation>
+
+        <!-- Intel(r) AMT 2.5 -->
+        <wsdl:operation name="SubscribeForGeneralAlert">
+            <wsdl:input message="emi:SubscribeForGeneralAlertIn"/>
+            <wsdl:output message="emi:SubscribeForGeneralAlertOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateGeneralAlertSubscriptions">
+            <wsdl:input message="emi:EnumerateGeneralAlertSubscriptionsIn"/>
+            <wsdl:output message="emi:EnumerateGeneralAlertSubscriptionsOut"/>
+        </wsdl:operation>
+        <wsdl:operation name="GetGeneralAlertSubscription">
+            <wsdl:input message="emi:GetGeneralAlertSubscriptionIn"/>
+            <wsdl:output message="emi:GetGeneralAlertSubscriptionOut"/>
+        </wsdl:operation>
+
+    </wsdl:portType>
+
+    <wsdl:binding name="EventManagerSoapBinding" type="emi:EventManagerSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <!-- Intel(r) AMT 1.0 -->
+        <wsdl:operation name="EnumerateEventFilters">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/EnumerateEventFilters"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetAlertSubscription">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/GetAlertSubscription"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="SetAlertCommunityString">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/SetAlertCommunityString"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetAlertCommunityString">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/GetAlertCommunityString"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="AddEventFilter">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/AddEventFilter"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="SubscribeForAlert">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/SubscribeForAlert"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateAlertSubscriptions">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/EnumerateAlertSubscriptions"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateAlertPolicies">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/EnumerateAlertPolicies"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="CancelAlertSubscription">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/CancelAlertSubscription"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventFilter">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/GetEventFilter"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="UpdateEventFilter">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/UpdateEventFilter"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="RemoveEventFilter">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/RemoveEventFilter"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventLogStatus">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/GetEventLogStatus"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="ReadEventLogRecords">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/ReadEventLogRecords"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="ClearEventLog">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/ClearEventLog"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="FreezeEventLog">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2004/01/FreezeEventLog"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="SetEventLogTimestampClock">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/ptai/2004/01/SetEventLogTimestampClock"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetEventLogTimestampClock">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/ptai/2004/01/GetEventLogTimestampClock"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateSensors">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/ptai/2004/01/EnumerateSensors"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetSensorAttributes">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/ptai/2004/01/GetSensorAttributes"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+
+        <!-- Intel(r) AMT 2.5 -->
+        <wsdl:operation name="SubscribeForGeneralAlert">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2006/01/SubscribeForGeneralAlert"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="EnumerateGeneralAlertSubscriptions">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2006/01/EnumerateGeneralAlertSubscriptions"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="GetGeneralAlertSubscription">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/EventManager/2006/01/GetGeneralAlertSubscription"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+
+    </wsdl:binding>
+    <wsdl:service name="EventManagerService">
+        <wsdl:port name="EventManagerSoapPort" binding="emi:EventManagerSoapBinding">
+            <soap:address location="http://hostname:16992/EventManagerService"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.xsd b/pcucontrol/models/intelamt/Include/WSDL/EventManagerInterface.xsd
new file mode 100644 (file)
index 0000000..9a8e62d
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"
+    xmlns:sai="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01"
+    xmlns:emi="http://schemas.intel.com/platform/client/EventManager/2004/01"
+    targetNamespace="http://schemas.intel.com/platform/client/EventManager/2004/01"
+    elementFormDefault="qualified">
+
+    <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01" schemaLocation="Common.xsd"/>
+    <xs:import namespace="http://schemas.intel.com/platform/client/SecurityAdministration/2004/01" schemaLocation="SecurityAdministrationInterface.xsd"/>
+
+    <!-- Intel(r) AMT 1.0 -->
+    <xs:simpleType name="TimeType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="AlertSubscriptionPolicyIDType">
+        <xs:restriction base="xs:unsignedByte"/>
+    </xs:simpleType>
+    <xs:complexType name="AlertSubscriptionPolicyIDArrayType">
+        <xs:sequence>
+            <xs:element name="AlertSubscriptionPolicyID" type="emi:AlertSubscriptionPolicyIDType" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="AlertSubscriptionHandleType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="EventFilterHandleType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="EventSeverityType">
+        <xs:restriction base="xs:unsignedByte">
+            <xs:enumeration value="0">
+                <xs:annotation>
+                    <xs:documentation>"0 = Unspecified"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="1">
+                <xs:annotation>
+                    <xs:documentation>"1 = Monitor"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="2">
+                <xs:annotation>
+                    <xs:documentation>"2 = Information"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="4">
+                <xs:annotation>
+                    <xs:documentation>"4 = OK (return to OK condition)"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="8">
+                <xs:annotation>
+                    <xs:documentation>"8 = Non-critical condition"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="16">
+                <xs:annotation>
+                    <xs:documentation>"16 = Critical condition"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="32">
+                <xs:annotation>
+                    <xs:documentation>"32 = Non-recoverable condition"</xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType name="PT_STATUS">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="IPv4AddressType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:simpleType name="SensorHandleType">
+        <xs:restriction base="xs:unsignedInt"/>
+    </xs:simpleType>
+    <xs:complexType name="ByteData">
+        <xs:sequence>
+            <xs:element name="Byte" type="xs:unsignedByte" minOccurs="8" maxOccurs="8"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="EventLogRecordType">
+        <xs:sequence>
+            <xs:element name="TimeStamp" type="emi:TimeType"/>
+            <xs:element name="DeviceAddress" type="xs:unsignedByte"/>
+            <xs:element name="EventSensorType" type="xs:unsignedByte"/>
+            <xs:element name="EventType" type="xs:unsignedByte"/>
+            <xs:element name="EventOffset" type="xs:unsignedByte"/>
+            <xs:element name="EventSourceType" type="xs:unsignedByte"/>
+            <xs:element name="EventSeverity" type="emi:EventSeverityType"/>
+            <xs:element name="SensorNumber" type="xs:unsignedByte"/>
+            <xs:element name="Entity" type="xs:unsignedByte"/>
+            <xs:element name="EntityInstance" type="xs:unsignedByte"/>
+            <xs:element name="EventData" type="emi:ByteData" />
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="EventFilterType">
+        <xs:sequence>
+            <xs:element name="FilterConfiguration" type="xs:unsignedByte"/>
+            <xs:element name="FilterAction" type="xs:unsignedByte"/>
+            <xs:element name="AlertSubscriptionPolicyID" type="emi:AlertSubscriptionPolicyIDType"/>
+            <xs:element name="DeviceAddress" type="xs:unsignedByte"/>
+            <xs:element name="EventSensorType" type="xs:unsignedByte"/>
+            <xs:element name="EventType" type="xs:unsignedByte"/>
+            <xs:element name="EventOffset" type="xs:unsignedByte"/>
+            <xs:element name="EventSourceType" type="xs:unsignedByte"/>
+            <xs:element name="EventSeverity" type="emi:EventSeverityType"/>
+            <xs:element name="SensorNumber" type="xs:unsignedByte"/>
+            <xs:element name="Entity" type="xs:unsignedByte"/>
+            <xs:element name="EntityInstance" type="xs:unsignedByte"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AlertSubscriptionType">
+        <xs:sequence>
+            <xs:element name="AlertSubscriptionPolicyID" type="emi:AlertSubscriptionPolicyIDType"/>
+            <xs:element name="DestinationAddress" type="emi:IPv4AddressType"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AlertSubscriptionHandleArrayType">
+        <xs:sequence>
+            <xs:element name="AlertSubscriptionHandle" type="emi:AlertSubscriptionHandleType" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="EventFilterHandleArrayType">
+        <xs:sequence>
+            <xs:element name="EventFilterHandle" type="emi:EventFilterHandleType" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="EventLogRecordArrayType">
+        <xs:sequence>
+            <xs:element name="EventLogRecord" type="emi:EventLogRecordType" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="SensorHandleArrayType">
+        <xs:sequence>
+            <xs:element name="SensorHandle" type="emi:SensorHandleType" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="SensorAttributesType">
+        <xs:sequence>
+            <xs:element name="IsLegacySensor" type="xs:boolean"/>
+            <xs:element name="AssertionEvent" type="xs:boolean"/>
+            <xs:element name="DeassertionEvent" type="xs:boolean"/>
+            <xs:element name="Index" type="xs:unsignedByte"/>
+            <xs:element name="DeviceAddress" type="xs:unsignedByte"/>
+            <xs:element name="EventSensorType" type="xs:unsignedByte"/>
+            <xs:element name="EventType" type="xs:unsignedByte"/>
+            <xs:element name="EventOffset" type="xs:unsignedByte"/>
+            <xs:element name="EventSourceType" type="xs:unsignedByte"/>
+            <xs:element name="EventSeverity" type="emi:EventSeverityType"/>
+            <xs:element name="SensorNumber" type="xs:unsignedByte"/>
+            <xs:element name="Entity" type="xs:unsignedByte"/>
+            <xs:element name="EntityInstance" type="xs:unsignedByte"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="ByteStr">
+        <xs:sequence>
+            <xs:element name="Byte" type="xs:unsignedByte" minOccurs="1" maxOccurs="16"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:element name="CancelAlertSubscription">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="SubscriptionHandle" type="emi:AlertSubscriptionHandleType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="CancelAlertSubscriptionResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="Status" type="emi:PT_STATUS"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <xs:complexType name="AlertCredentialsType">
+        <xs:sequence>
+            <xs:element name="Username" type="xs:string"/>
+            <xs:element name="Password" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="AlertAuthOptionsType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="Kerberos" />
+            <xs:enumeration value="Digest" />
+            <xs:enumeration value="Basic" />
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType name="CommunityStringType">
+        <xs:restriction base="xs:string">
+            <xs:minLength value="1"/>
+            <xs:maxLength value="16"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <!-- Intel(r) AMT 2.5 -->
+    <xs:complexType name="AlertSubscriptionSNMPType">
+        <xs:sequence>
+            <xs:element name="Address" type="cmn:NodeAddressType"/>
+            <xs:element name="CommunityString" type="emi:CommunityStringType" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AlertSubscriptionSoapType">
+        <xs:sequence>
+            <xs:element name="Address" type="cmn:URLType"/>
+            <xs:element name="ClientCredentials" type="sai:CertificateHandleType" minOccurs="0"/>
+            <xs:element name="UserCredentials" type="emi:AlertCredentialsType" minOccurs="0"/>
+            <xs:element name="AlertAuthOptions" type="emi:AlertAuthOptionsType" minOccurs="0" maxOccurs="3"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AlertSubscriptionGeneralType">
+        <xs:sequence>
+            <xs:element name="PolicyID" type="emi:AlertSubscriptionPolicyIDType"/>
+            <xs:choice>
+                <xs:element name="AlertSubscriptionSNMP" type="emi:AlertSubscriptionSNMPType"/>
+                <xs:element name="AlertSubscriptionSoap" type="emi:AlertSubscriptionSoapType"/>
+            </xs:choice>
+            <xs:any minOccurs="0" namespace="##other" processContents="lax" />            
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:element name="SubscribeForGeneralAlert">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="SubscriptionInfo" type="emi:AlertSubscriptionGeneralType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="SubscribeForGeneralAlertResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="Status" type="emi:PT_STATUS"/>
+                <xs:element name="SubscriptionHandle" type="emi:AlertSubscriptionHandleType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="EnumerateGeneralAlertSubscriptions">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="PolicyID" type="emi:AlertSubscriptionPolicyIDType" minOccurs="0"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="EnumerateGeneralAlertSubscriptionsResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="Status" type="emi:PT_STATUS"/>
+                <xs:element name="SubscriptionHandle" type="emi:AlertSubscriptionHandleType" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetGeneralAlertSubscription">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="SubscriptionHandle" type="emi:AlertSubscriptionHandleType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="GetGeneralAlertSubscriptionResponse">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="Status" type="emi:PT_STATUS"/>
+                <xs:element name="SubscriptionInfo" type="emi:AlertSubscriptionGeneralType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+</xs:schema>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/FirmwareUpdateInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/FirmwareUpdateInterface.wsdl
new file mode 100644 (file)
index 0000000..9783e9b
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology Firmware Update Interface -->
+<definitions
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:fwu="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01">
+    <types>
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01" elementFormDefault="qualified">
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+                       </xs:simpleType>
+            <xs:simpleType name="FirmwareUpdateStateType">
+                <xs:restriction base="xs:string">
+                    <xs:enumeration value="FirmwareStatusSuccess"/>
+                    <xs:enumeration value="FirmwareUpdateRejectedSkuFailure"/>
+                    <xs:enumeration value="FirmwareUpdateRejectedVersionFailure"/>
+                    <xs:enumeration value="FirmwareUpdateRejectedSignatureFailure"/>
+                    <xs:enumeration value="FirmwareUpdateRejectedGeneralFailure"/>
+                    <xs:enumeration value="FirmwareLoadingImage"/>
+                    <xs:enumeration value="FirmwareAuthenticatingImage"/>
+                    <xs:enumeration value="FirmwareProcessing"/>
+                    <xs:enumeration value="FirmwareUpdatingCodePartition"/>
+                    <xs:enumeration value="FirmwareUpdatingRecoveryPartition"/>
+                    <xs:enumeration value="FirmwareFlashPartitionCodeInvalid"/>
+                    <xs:enumeration value="FirmwareFlashPartitionRecoveryInvalid"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:complexType name="FirmwareVersionType">
+                <xs:sequence>
+                    <xs:element name="Description" type="xs:string"/>
+                    <xs:element name="Version" type="xs:string"/>
+                </xs:sequence>
+            </xs:complexType>                    
+            <xs:element name="GetCoreVersion">
+                <xs:complexType>
+                    <xs:sequence>
+                         </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetCoreVersionResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="fwu:PT_STATUS"/>
+                        <xs:element name="Version" type="xs:string"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetCodeVersions">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetCodeVersionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="fwu:PT_STATUS"/>
+                        <xs:element name="BiosVersion" type="xs:string"/>
+                        <xs:element name="Versions" type="fwu:FirmwareVersionType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetFirmwareUpdateState">
+                <xs:complexType>
+                    <xs:sequence>
+                         </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetFirmwareUpdateStateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="fwu:PT_STATUS"/>
+                        <xs:element name="FirmwareUpdateState" type="fwu:FirmwareUpdateStateType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:schema>
+    </types>
+    <message name="GetCoreVersionIn">
+        <part name="parameters" element="fwu:GetCoreVersion"/>
+    </message>
+    <message name="GetCoreVersionOut">
+        <part name="parameters" element="fwu:GetCoreVersionResponse"/>
+    </message>
+    <message name="GetCodeVersionsIn">
+        <part name="parameters" element="fwu:GetCodeVersions"/>
+    </message>
+    <message name="GetCodeVersionsOut">
+        <part name="parameters" element="fwu:GetCodeVersionsResponse"/>
+    </message>
+    <message name="GetFirmwareUpdateStateIn">
+        <part name="parameters" element="fwu:GetFirmwareUpdateState"/>
+    </message>
+    <message name="GetFirmwareUpdateStateOut">
+        <part name="parameters" element="fwu:GetFirmwareUpdateStateResponse"/>
+    </message>
+    <portType name="FirmwareUpdateSoapPortType">
+        <operation name="GetCoreVersion">
+            <input message="fwu:GetCoreVersionIn"/>
+            <output message="fwu:GetCoreVersionOut"/>
+        </operation>
+        <operation name="GetCodeVersions">
+            <input message="fwu:GetCodeVersionsIn"/>
+            <output message="fwu:GetCodeVersionsOut"/>
+        </operation>
+        <operation name="GetFirmwareUpdateState">
+            <input message="fwu:GetFirmwareUpdateStateIn"/>
+            <output message="fwu:GetFirmwareUpdateStateOut"/>
+        </operation>
+    </portType>
+    <binding name="FirmwareUpdateSoapBinding" type="fwu:FirmwareUpdateSoapPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="GetCoreVersion">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01/GetCoreVersion"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="GetCodeVersions">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01/GetCodeVersions"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="GetFirmwareUpdateState">
+            <soap:operation soapAction="http://schemas.intel.com/platform/client/FirmwareUpdate/2004/01/GetFirmwareUpdateState"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="FirmwareUpdateService">
+        <port name="FirmwareUpdateSoapPortType" binding="fwu:FirmwareUpdateSoapBinding">
+            <soap:address location="http://hostname:16992/FirmwareUpdateService"/>
+        </port>
+    </service>
+</definitions>
diff --git a/pcucontrol/models/intelamt/Include/WSDL/GeneralInfoInterface.wsdl b/pcucontrol/models/intelamt/Include/WSDL/GeneralInfoInterface.wsdl
new file mode 100644 (file)
index 0000000..25a25c3
--- /dev/null
@@ -0,0 +1,582 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Intel(R) Active Management Technology GeneralInfo Interface version 1.15.1-->
+<definitions 
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:cmn="http://schemas.intel.com/platform/client/Common/2006/01"     
+    xmlns:inf="http://schemas.intel.com/platform/client/GeneralInfo/2004/01" 
+    targetNamespace="http://schemas.intel.com/platform/client/GeneralInfo/2004/01">
+    <types>
+        
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/Common/2006/01" elementFormDefault="qualified">
+            <xs:include schemaLocation="Common.xsd" />
+        </xs:schema>
+        
+        <xs:schema targetNamespace="http://schemas.intel.com/platform/client/GeneralInfo/2004/01" elementFormDefault="qualified">
+            
+            <!-- Imported namespaces -->
+            <xs:import namespace="http://schemas.intel.com/platform/client/Common/2006/01"/>
+
+            <!-- Private Type definition -->
+            <xs:simpleType name="PT_STATUS">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>            
+               <xs:simpleType name="TimeType">
+                    <xs:restriction base="xs:unsignedInt"/>
+               </xs:simpleType>
+            <xs:simpleType name="IPv4AddressType">
+                <xs:restriction base="xs:unsignedInt"/>
+            </xs:simpleType>            
+            <xs:complexType name="IderSessionLogEntryType">
+                <xs:sequence>
+                    <xs:element name="ConsoleAddress" type="inf:IPv4AddressType"/>
+                    <xs:element name="Port" type="xs:unsignedShort"/>
+                    <xs:element name="TimeStamp" type="inf:TimeType"/>
+                </xs:sequence>
+            </xs:complexType>        
+            <xs:complexType name="FirmwareVersionType">
+                <xs:sequence>
+                    <xs:element name="Description" type="xs:string"/>
+                    <xs:element name="Version" type="xs:string"/>
+                </xs:sequence>
+            </xs:complexType>        
+            <xs:simpleType name="ProvisioningModeType">
+                <xs:restriction base="xs:unsignedInt">
+                    <xs:enumeration value="0">
+                        <xs:annotation>
+                            <xs:documentation>"0 = ProvisioningModeCurrent"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="1">
+                        <xs:annotation>
+                            <xs:documentation>"1 = ProvisioningModeEnterprise"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="2">
+                        <xs:annotation>
+                            <xs:documentation>"2 = ProvisioningModeSmallBusiness"</xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                </xs:restriction>
+            </xs:simpleType>            
+            <xs:simpleType name="ProvisioningStateType">
+                    <xs:restriction base="xs:string">
+                         <xs:enumeration value="ProvisioningStatePre" />
+                         <xs:enumeration value="ProvisioningStateIn" />
+                         <xs:enumeration value="ProvisioningStatePost" />
+                   </xs:restriction>                    
+            </xs:simpleType>  
+            <xs:simpleType name="PasswordModelType">
+                    <xs:restriction base="xs:string">
+                         <xs:enumeration value="PasswordModelCoupled" />
+                         <xs:enumeration value="PasswordModelSeperate" />
+                         <xs:enumeration value="PasswordModelSeperateHash" />
+                   </xs:restriction>                    
+            </xs:simpleType>
+               <xs:simpleType name="EnabledInterfacesType">
+                    <xs:restriction base="xs:string">
+                         <xs:enumeration value="WebUI" />
+                         <xs:enumeration value="SerialOverLAN" />
+                         <xs:enumeration value="IdeRedirection" />
+                   </xs:restriction>                    
+               </xs:simpleType>     
+
+            <!-- Msg IO Types -->
+
+            <xs:element name="GetCoreVersion">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetCoreVersionResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="Version" type="xs:string"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetCodeVersions">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetCodeVersionsResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="BiosVersion" type="xs:string"/>
+                        <xs:element name="Versions" type="inf:FirmwareVersionType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetProvisioningMode">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetProvisioningModeResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="ProvisioningMode" type="inf:ProvisioningModeType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetProvisioningState">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetProvisioningStateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="ProvisioningState" type="inf:ProvisioningStateType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetVlanParameters">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="InterfaceHandle" type="cmn:InterfaceHandleType" minOccurs="0"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetVlanParametersResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="VlanMode" type="xs:boolean"/>
+                        <xs:element name="VlanTag" type="xs:unsignedShort"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetHostName">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetHostNameResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="HostName" type="xs:string"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetConfigServerInfo">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetConfigServerInfoResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="Ip" type="inf:IPv4AddressType"/>
+                        <xs:element name="Port" type="xs:unsignedShort"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetAdminAclEntryStatus">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAdminAclEntryStatusResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="IsDefault" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetAdminNetAclEntryStatus">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetAdminNetAclEntryStatusResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="IsDefault" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetPasswordModel">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetPasswordModelResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="PasswordModel" type="inf:PasswordModelType"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetEnabledInterfaces">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetEnabledInterfacesResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="EnabledInterfaces" type="inf:EnabledInterfacesType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetNetworkState">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetNetworkStateResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="IsEnabled" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetSecurityParameters">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetSecurityParametersResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="EnterpriseMode" type="xs:boolean"/>
+                        <xs:element name="TlsEnabled" type="xs:boolean"/>
+                        <xs:element name="HwCryptoEnabled" type="xs:boolean"/>
+                        <xs:element name="ProvisioningState" type="inf:ProvisioningStateType"/>
+                        <xs:element name="NetworkInterfaceEnabled" type="xs:boolean"/>
+                        <xs:element name="SOLEnabled" type="xs:boolean"/>
+                        <xs:element name="IDEREnabled" type="xs:boolean"/>
+                        <xs:element name="FWUpdateEnabled" type="xs:boolean"/>
+                        <xs:element name="LinkIsUp" type="xs:boolean"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            <xs:element name="GetIderSessionLog">
+                <xs:complexType>
+                    <xs:sequence>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="GetIderSessionLogResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="StatusCode" type="inf:PT_STATUS"/>
+                        <xs:element name="LogData" type="inf:IderSessionLogEntryType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>            
+            
+        </xs:schema>
+    </types>
+    
+    <message name="GetCoreVersionIn">
+        <part name="parameters" element="inf:GetCoreVersion"/>
+    </message>
+    <message name="GetCoreVersionOut">
+        <part name="parameters" element="inf:GetCoreVersionResponse"/>
+    </message>
+    <message name="GetCodeVersionsIn">
+        <part name="parameters" element="inf:GetCodeVersions"/>
+    </message>
+    <message name="GetCodeVersionsOut">
+        <part name="parameters" element="inf:GetCodeVersionsResponse"/>
+    </message>
+    <message name="GetProvisioningModeIn">
+        <part name="parameters" element="inf:GetProvisioningMode"/>
+    </message>
+    <message name="GetProvisioningModeOut">
+        <part name="parameters" element="inf:GetProvisioningModeResponse"/>
+    </message>
+    <message name="GetProvisioningStateIn">
+        <part name="parameters" element="inf:GetProvisioningState"/>
+    </message>
+    <message name="GetProvisioningStateOut">
+        <part name="parameters" element="inf:GetProvisioningStateResponse"/>
+    </message>
+    <message name="GetVlanParametersIn">
+        <part name="parameters" element="inf:GetVlanParameters"/>
+    </message>
+    <message name="GetVlanParametersOut">
+        <part name="parameters" element="inf:GetVlanParametersResponse"/>
+    </message>
+    <message name="GetHostNameIn">
+        <part name="parameters" element="inf:GetHostName"/>
+    </message>
+    <message name="GetHostNameOut">
+        <part name="parameters" element="inf:GetHostNameResponse"/>
+    </message>
+    <message name="GetConfigServerInfoIn">
+        <part name="parameters" element="inf:GetConfigServerInfo"/>
+    </message>
+    <message name="GetConfigServerInfoOut">
+        <part name="parameters" element="inf:GetConfigServerInfoResponse"/>
+    </message>
+    <message name="GetAdminAclEntryStatusIn">
+        <part name="parameters" element="inf:GetAdminAclEntryStatus"/>
+    </message>
+    <message name="GetAdminAclEntryStatusOut">
+        <part name="parameters" element="inf:GetAdminAclEntryStatusResponse"/>
+    </message>
+    <message name="GetAdminNetAclEntryStatusIn">
+        <part name="parameters" element="inf:GetAdminNetAclEntryStatus"/>
+    </message>
+    <message name="GetAdminNetAclEntryStatusOut">
+        <part name="parameters" element="inf:GetAdminNetAclEntryStatusResponse"/>
+    </message>
+    <message name="GetPasswordModelIn">
+        <part name="parameters" element="inf:GetPasswordModel"/>
+    </message>
+    <message name="GetPasswordModelOut">
+        <part name="parameters" element="inf:GetPasswordModelResponse"/>
+    </message>
+    <message name="GetEnabledInterfacesIn">
+        <part name="parameters" element="inf:GetEnabledInterfaces"/>
+    </message>
+    <message name="GetEnabledInterfacesOut">
+        <part name="parameters" element="inf:GetEnabledInterfacesResponse"/>
+    </message>
+    <message name="GetNetworkStateIn">
+        <part name="parameters" element="inf:GetNetworkState"/>
+    </message>
+    <message name="GetNetworkStateOut">
+        <part name="parameters" element="inf:GetNetworkStateResponse"/>
+    </message>
+    <message name="GetSecurityParametersIn">
+        <part name="parameters" element="inf:GetSecurityParameters"/>
+    </message>
+    <message name="GetSecurityParametersOut">
+        <part name="parameters" element="inf:GetSecurityParametersResponse"/>
+    </message>
+    <message name="GetIderSessionLogIn">
+        <part name="parameters" element="inf:GetIderSessionLog"/>
+    </message>
+    <message name="GetIderSessionLogOut">
+        <part name="parameters" element="inf:GetIderSessionLogResponse"/>
+    </message>
+    
+    <portType name="GeneralInfoSoapPortType">
+        <operation name="GetCoreVersion">
+            <input message="inf:GetCoreVersionIn"/>
+            <output message="inf:GetCoreVersionOut"/>
+        </operation>
+        <operation name="GetCodeVersions">
+            <input message="inf:GetCodeVersionsIn"/>
+            <output message="inf:GetCodeVersionsOut"/>
+        </operation>
+        <operation name="GetProvisioningMode">
+            <input message="inf:GetProvisioningModeIn"/>
+            <output message="inf:GetProvisioningModeOut"/>
+        </operation>
+        <operation name="GetProvisioningState">
+            <input message="inf:GetProvisioningStateIn"/>
+            <output message="inf:GetProvisioningStateOut"/>
+        </operation>
+        <operation name="GetVlanParameters">
+            <input message="inf:GetVlanParametersIn"/>
+            <output message="inf:GetVlanParametersOut"/>
+        </operation>
+        <operation name="GetHostName">
+            <input message="inf:GetHostNameIn"/>
+            <output message="inf:GetHostNameOut"/>
+        </operation>
+        <operation name="GetConfigServerInfo">
+            <input message="inf:GetConfigServ