1 /******************************************************************************* 2 * Copyright (C) 2004-2008 Intel Corp. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * 7 * - Redistributions of source code must retain the above copyright notice, 8 * this list of conditions and the following disclaimer. 9 * 10 * - Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * 14 * - Neither the name of Intel Corp. nor the names of its 15 * contributors may be used to endorse or promote products derived from this 16 * software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corp. OR THE CONTRIBUTORS 22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGE. 29 *******************************************************************************/ 30 31 #ifndef _LMS_IF_H_ 32 #define _LMS_IF_H_ 33 34 #include "types.h" 35 #include "LMS_if_constants.h" 36 37 // disable the "zero-sized array" warning in Visual C++ 38 #ifdef _MSC_VER 39 #pragma warning(disable:4200) 40 #endif 41 42 #pragma pack(1) 43 44 typedef struct { 45 UINT8 MessageType; 46 } APF_MESSAGE_HEADER; 47 48 49 /** 50 * APF_GENERIC_HEADER - generic request header (note that its not complete header per protocol (missing WantReply) 51 * 52 * @MessageType: 53 * @RequestStringLength: length of the string identifies the request 54 * @RequestString: the string that identifies the request 55 **/ 56 57 typedef struct { 58 UINT8 MessageType; 59 UINT32 StringLength; 60 UINT8 String[0]; 61 } APF_GENERIC_HEADER; 62 63 /** 64 * TCP forward reply message 65 * @MessageType - Protocol's Major version 66 * @PortBound - the TCP port was bound on the server 67 **/ 68 typedef struct { 69 UINT8 MessageType; 70 UINT32 PortBound; 71 } APF_TCP_FORWARD_REPLY_MESSAGE; 72 73 /** 74 * response to ChannelOpen when channel open succeed 75 * @MessageType - APF_CHANNEL_OPEN_CONFIRMATION 76 * @RecipientChannel - channel number given in the open request 77 * @SenderChannel - channel number assigned by the sender 78 * @InitialWindowSize - Number of bytes in the window 79 * @Reserved - Reserved 80 **/ 81 typedef struct { 82 UINT8 MessageType; 83 UINT32 RecipientChannel; 84 UINT32 SenderChannel; 85 UINT32 InitialWindowSize; 86 UINT32 Reserved; 87 } APF_CHANNEL_OPEN_CONFIRMATION_MESSAGE; 88 89 /** 90 * response to ChannelOpen when a channel open failed 91 * @MessageType - APF_CHANNEL_OPEN_FAILURE 92 * @RecipientChannel - channel number given in the open request 93 * @ReasonCode - code for the reason channel could not be open 94 * @Reserved - Reserved 95 **/ 96 typedef struct { 97 UINT8 MessageType; 98 UINT32 RecipientChannel; 99 UINT32 ReasonCode; 100 UINT32 Reserved; 101 UINT32 Reserved2; 102 } APF_CHANNEL_OPEN_FAILURE_MESSAGE; 103 104 /** 105 * close channel message 106 * @MessageType - APF_CHANNEL_CLOSE 107 * @RecipientChannel - channel number given in the open request 108 **/ 109 typedef struct { 110 UINT8 MessageType; 111 UINT32 RecipientChannel; 112 } APF_CHANNEL_CLOSE_MESSAGE; 113 114 /** 115 * used to send/receive data. 116 * @MessageType - APF_CHANNEL_DATA 117 * @RecipientChannel - channel number given in the open request 118 * @Length - Length of the data in the message 119 * @Data - The data in the message 120 **/ 121 typedef struct { 122 UINT8 MessageType; 123 UINT32 RecipientChannel; 124 UINT32 DataLength; 125 UINT8 Data[0]; 126 } APF_CHANNEL_DATA_MESSAGE; 127 128 /** 129 * used to adjust receive window size. 130 * @MessageType - APF_WINDOW_ADJUST 131 * @RecipientChannel - channel number given in the open request 132 * @BytesToAdd - number of bytes to add to current window size value 133 **/ 134 typedef struct { 135 UINT8 MessageType; 136 UINT32 RecipientChannel; 137 UINT32 BytesToAdd; 138 } APF_WINDOW_ADJUST_MESSAGE; 139 140 /** 141 * This message causes immediate termination of the connection with AMT. 142 * @ReasonCode - A Reason code for the disconnection event 143 * @Reserved - Reserved must be set to 0 144 **/ 145 typedef struct { 146 UINT8 MessageType; 147 UINT32 ReasonCode; 148 UINT16 Reserved; 149 } APF_DISCONNECT_MESSAGE; 150 151 /** 152 * Used to request a service identified by name 153 * @ServiceNameLength - The length of the service name string. 154 * @ServiceName - The name of the service being requested. 155 **/ 156 typedef struct { 157 UINT8 MessageType; 158 UINT32 ServiceNameLength; 159 UINT8 ServiceName[0]; 160 } APF_SERVICE_REQUEST_MESSAGE; 161 162 /** 163 * Used to send a service accept identified by name 164 * @ServiceNameLength - The length of the service name string. 165 * @ServiceName - The name of the service being requested. 166 **/ 167 typedef struct { 168 UINT8 MessageType; 169 UINT32 ServiceNameLength; 170 UINT8 ServiceName[0]; 171 } APF_SERVICE_ACCEPT_MESSAGE; 172 173 /** 174 * holds the protocl major and minor version implemented by AMT. 175 * @MajorVersion - Protocol's Major version 176 * @MinorVersion - Protocol's Minor version 177 * @Trigger - The open session reason 178 * @UUID - System Id 179 **/ 180 typedef struct { 181 UINT8 MessageType; 182 UINT32 MajorVersion; 183 UINT32 MinorVersion; 184 UINT32 TriggerReason; 185 UINT8 UUID[16]; 186 UINT8 Reserved[64]; 187 } APF_PROTOCOL_VERSION_MESSAGE; 188 189 /** 190 * holds the user authentication request. 191 * @UsernameLength - The length of the user name string. 192 * @Username - The name of the user in ASCII encoding. 193 * Maximum allowed size is 64 bytes. 194 * @ServiceNameLength - The length of the service name string. 195 * @ServiceName - The name of the service to authorize. 196 * @MethodNameLength - The length of the method name string. 197 * @MethodName - The authentication method to use. 198 **/ 199 //typedef struct { 200 // UINT8 MessageType; 201 // UINT32 UsernameLength; 202 // UINT8 Username[0]; 203 // UINT32 ServiceNameLength; 204 // UINT8 ServiceName[0]; 205 // UINT32 MethodNameLength; 206 // UINT8 MethodName[0]; 207 //} APF_USERAUTH_REQUEST_MESSAGE; 208 209 /** 210 * holds the user authentication request failure reponse. 211 * @MethodNameListLength - The length of the methods list string. 212 * @MethodNameList - A comma seperated string of authentication 213 * methods supported by the server in ASCII. 214 **/ 215 //typedef struct { 216 // UINT8 MessageType; 217 // UINT32 MethodNameListLength; 218 // UINT8 MethodNameList[0]; 219 // UINT8 Reserved; 220 //} APF_USERAUTH_FAILURE_MESSAGE; 221 222 /** 223 * holds the user authentication request success reponse. 224 **/ 225 typedef struct { 226 UINT8 MessageType; 227 } APF_USERAUTH_SUCCESS_MESSAGE; 228 229 #pragma pack() 230 231 #endif 232 233