00001
00002
00003
00004
00005
00006 #ifndef _PACKETS_H_RPCGEN
00007 #define _PACKETS_H_RPCGEN
00008
00009 #include <rpc/rpc.h>
00010
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00016
00017 enum DDTPv1UpdateQueryOpCode {
00018 MARK_ONLINE = 0,
00019 MARK_OFFLINE = 1,
00020 };
00021 typedef enum DDTPv1UpdateQueryOpCode DDTPv1UpdateQueryOpCode;
00022
00023 struct DDTPv1UpdateQuery {
00024 DDTPv1UpdateQueryOpCode opCode;
00025 u_long ipAddress;
00026 char updatePassword[9];
00027 };
00028 typedef struct DDTPv1UpdateQuery DDTPv1UpdateQuery;
00029
00030 enum DDTPv1UpdateReplyStatus {
00031 UPDATE_SUCCEEDED = 0,
00032 UPDATE_FAILED = 1,
00033 INVALID_PASSWORD = 2,
00034 INVALID_ACCOUNT = 3,
00035 INVALID_OPCODE = 4,
00036 };
00037 typedef enum DDTPv1UpdateReplyStatus DDTPv1UpdateReplyStatus;
00038
00039 struct DDTPv1UpdateReply {
00040 DDTPv1UpdateReplyStatus status;
00041 };
00042 typedef struct DDTPv1UpdateReply DDTPv1UpdateReply;
00043
00044 struct DDTPv1AliveQuery {
00045 int dummy;
00046 };
00047 typedef struct DDTPv1AliveQuery DDTPv1AliveQuery;
00048
00049 struct DDTPv1AliveReply {
00050 int dummy;
00051 };
00052 typedef struct DDTPv1AliveReply DDTPv1AliveReply;
00053
00054 enum DDTPv1MessageType {
00055 MESSAGE_ERROR = 0,
00056 UPDATE_QUERY = 1,
00057 UPDATE_REPLY = 2,
00058 ALIVE_QUERY = 3,
00059 ALIVE_REPLY = 4,
00060 };
00061 typedef enum DDTPv1MessageType DDTPv1MessageType;
00062
00063 enum DDTPv1MessageStatus {
00064 INVALID_MESSAGE_TYPE = 0,
00065 };
00066 typedef enum DDTPv1MessageStatus DDTPv1MessageStatus;
00067
00068 struct DDTPv1Message {
00069 DDTPv1MessageType messageType;
00070 union {
00071 DDTPv1UpdateQuery updateQuery;
00072 DDTPv1UpdateReply updateReply;
00073 DDTPv1AliveQuery aliveQuery;
00074 DDTPv1AliveReply aliveReply;
00075 DDTPv1MessageStatus status;
00076 } DDTPv1Message_u;
00077 };
00078 typedef struct DDTPv1Message DDTPv1Message;
00079
00080 struct DDTPv1Plaintext {
00081 int accountId;
00082 DDTPv1Message msg;
00083 };
00084 typedef struct DDTPv1Plaintext DDTPv1Plaintext;
00085
00086 struct DDTPv1Blowfish {
00087 int accountId;
00088 char msg[64];
00089 char iv[8];
00090 char check[8];
00091 };
00092 typedef struct DDTPv1Blowfish DDTPv1Blowfish;
00093
00094 enum EncryptionType {
00095 ENCRYPTION_ERROR = 0,
00096 PLAINTEXT = 1,
00097 BLOWFISH = 2,
00098 };
00099 typedef enum EncryptionType EncryptionType;
00100
00101 enum DDTPv1PacketStatus {
00102 INVALID_ENCRYPTION_TYPE = 0,
00103 ACCOUNT_INVALID = 1,
00104 PASSWORD_INVALID = 2,
00105 XDR_DECODE_FAILURE = 3,
00106 };
00107 typedef enum DDTPv1PacketStatus DDTPv1PacketStatus;
00108
00109 struct DDTPv1Packet {
00110 EncryptionType encryptionType;
00111 union {
00112 DDTPv1Plaintext pt;
00113 DDTPv1Blowfish bf;
00114 DDTPv1PacketStatus status;
00115 } DDTPv1Packet_u;
00116 };
00117 typedef struct DDTPv1Packet DDTPv1Packet;
00118
00119 enum ProtocolVersion {
00120 PROTOCOL_ERROR = 0,
00121 DDTPv1 = 1,
00122 DDTPv2 = 2,
00123 };
00124 typedef enum ProtocolVersion ProtocolVersion;
00125
00126 enum DdtpPacketStatus {
00127 INVALID_PROTOCOL = 0,
00128 };
00129 typedef enum DdtpPacketStatus DdtpPacketStatus;
00130
00131 struct DdtpPacket {
00132 ProtocolVersion protocolVersion;
00133 union {
00134 DDTPv1Packet ddtpv1;
00135 DdtpPacketStatus status;
00136 } DdtpPacket_u;
00137 };
00138 typedef struct DdtpPacket DdtpPacket;
00139
00140
00141
00142 #if defined(__STDC__) || defined(__cplusplus)
00143 extern bool_t xdr_DDTPv1UpdateQueryOpCode (XDR *, DDTPv1UpdateQueryOpCode*);
00144 extern bool_t xdr_DDTPv1UpdateQuery (XDR *, DDTPv1UpdateQuery*);
00145 extern bool_t xdr_DDTPv1UpdateReplyStatus (XDR *, DDTPv1UpdateReplyStatus*);
00146 extern bool_t xdr_DDTPv1UpdateReply (XDR *, DDTPv1UpdateReply*);
00147 extern bool_t xdr_DDTPv1AliveQuery (XDR *, DDTPv1AliveQuery*);
00148 extern bool_t xdr_DDTPv1AliveReply (XDR *, DDTPv1AliveReply*);
00149 extern bool_t xdr_DDTPv1MessageType (XDR *, DDTPv1MessageType*);
00150 extern bool_t xdr_DDTPv1MessageStatus (XDR *, DDTPv1MessageStatus*);
00151 extern bool_t xdr_DDTPv1Message (XDR *, DDTPv1Message*);
00152 extern bool_t xdr_DDTPv1Plaintext (XDR *, DDTPv1Plaintext*);
00153 extern bool_t xdr_DDTPv1Blowfish (XDR *, DDTPv1Blowfish*);
00154 extern bool_t xdr_EncryptionType (XDR *, EncryptionType*);
00155 extern bool_t xdr_DDTPv1PacketStatus (XDR *, DDTPv1PacketStatus*);
00156 extern bool_t xdr_DDTPv1Packet (XDR *, DDTPv1Packet*);
00157 extern bool_t xdr_ProtocolVersion (XDR *, ProtocolVersion*);
00158 extern bool_t xdr_DdtpPacketStatus (XDR *, DdtpPacketStatus*);
00159 extern bool_t xdr_DdtpPacket (XDR *, DdtpPacket*);
00160
00161 #else
00162 extern bool_t xdr_DDTPv1UpdateQueryOpCode ();
00163 extern bool_t xdr_DDTPv1UpdateQuery ();
00164 extern bool_t xdr_DDTPv1UpdateReplyStatus ();
00165 extern bool_t xdr_DDTPv1UpdateReply ();
00166 extern bool_t xdr_DDTPv1AliveQuery ();
00167 extern bool_t xdr_DDTPv1AliveReply ();
00168 extern bool_t xdr_DDTPv1MessageType ();
00169 extern bool_t xdr_DDTPv1MessageStatus ();
00170 extern bool_t xdr_DDTPv1Message ();
00171 extern bool_t xdr_DDTPv1Plaintext ();
00172 extern bool_t xdr_DDTPv1Blowfish ();
00173 extern bool_t xdr_EncryptionType ();
00174 extern bool_t xdr_DDTPv1PacketStatus ();
00175 extern bool_t xdr_DDTPv1Packet ();
00176 extern bool_t xdr_ProtocolVersion ();
00177 extern bool_t xdr_DdtpPacketStatus ();
00178 extern bool_t xdr_DdtpPacket ();
00179
00180 #endif
00181
00182 #ifdef __cplusplus
00183 }
00184 #endif
00185
00186 #endif