/********************************************************************************************************************************/ /* Created: 15-Feb-2008 15:06:03 by OpenVMS SDL EV2-3 */ /* Source: 15-FEB-2008 15:02:07 DISK$SYSMAN:[LAISHEV.WORK.ICQ]OSCARDEF.SDL;81 */ /********************************************************************************************************************************/ /*** MODULE OSCARDEF IDENT OSCARDEF-1-X ***/ #ifndef __OSCARDEF_LOADED #define __OSCARDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*++ */ /* Facility: */ /* OSCAR API for OpenVMS */ /* */ /* Abstract: */ /* An interface module defined OSCAR primitives, constants. This story is based on */ /* http://iserverd1.khstu.ru/oscar/ */ /* */ /* */ /* Author: */ /* Ruslan R. Laishev */ /* */ /* Creation Date: 21-DEC-2007 */ /* */ /* Modification History: */ /* */ /* */ /*-- */ #define ICQ__$K_PORT 5190 #define ICQ__$K_VER 9 #define ICQ__$K_MAXFLAP 8192 /* FLAP is a low-level communications protocol that facilitates the development */ /* of higher-level, datagram-oriented, communications */ /* layers. It is used on the TCP connection between all clients */ /* and servers. Here is format of FLAP datagram: */ #define FLAP$K_ID 42 #define FLAP$K_MAXSEQ 32768 #ifdef __NEW_STARLET typedef struct _oscar_flap { unsigned char flap$b_id; /* FLAP id byte is always 0x2A. It is frame-start sign. */ unsigned char flap$b_chan; /* FLAP channel, see FLAPCHN$* constants */ unsigned short int flap$w_seq; /* FLAP datagram seq number from 0 ... %x08000 */ unsigned short int flap$w_len; /* FLAP data size */ unsigned char flap$b_data [1]; /* FLAP data */ } OSCAR_FLAP; #else /* __OLD_STARLET */ struct oscar_flap { unsigned char flap$b_id; /* FLAP id byte is always 0x2A. It is frame-start sign. */ unsigned char flap$b_chan; /* FLAP channel, see FLAPCHN$* constants */ unsigned short int flap$w_seq; /* FLAP datagram seq number from 0 ... %x08000 */ unsigned short int flap$w_len; /* FLAP data size */ unsigned char flap$b_data [1]; /* FLAP data */ } ; #endif /* #ifdef __NEW_STARLET */ #define FLAP$OSCAR_HDRSZ 6 #define FLAPCHN$K_NCN 1 /* New Connection Negotiation */ #define FLAPCHN$K_SNAC 2 /* SNAC data */ #define FLAPCHN$K_ERR 3 /* FLAP-level Error */ #define FLAPCHN$K_CCN 4 /* Close Connection Negotiation */ #define FLAPCHN$K_KPALV 5 /* Keep alive */ /* A SNAC is the basic communication unit that is exchanged between */ /* clients and servers. The SNAC communication layers sits on top of */ /* the FLAP layer. SNAC is the normal contents of the FLAP Data Field for */ /* channel 0x02. SNACs are only sent over channel 0x02. Data */ /* sent across other channels are not considered complete SNACs. */ /* There can be only one SNAC per FLAP frame. Here is the format of SNAC: */ #define SNACF$K_GSC 1 /* Generic service controls */ #define SNACF$K_LOCS 2 /* Location services */ #define SNACF$K_BLMS 3 /* Buddy List management service */ #define SNACF$K_ICBM 4 /* ICBM (messages) service */ #define SNACF$K_ADS 5 /* Advertisements service */ #define SNACF$K_INV 6 /* Invitation service */ #define SNACF$K_ADM 7 /* Administrative service */ #define SNACF$K_POPUP 8 /* Popup notices service */ #define SNACF$K_PVCS 9 /* Privacy management service */ #define SNACF$K_ULOOKUP 10 /* User lookup service (not used any more) */ #define SNACF$K_USAGE 11 /* Usage stats service */ #define SNACF$K_TRN 12 /* Translation service */ #define SNACF$K_NAV 13 /* Chat navigation service */ #define SNACF$K_CHAT 14 /* Chat service */ #define SNACF$K_SEARCH 15 /* Directory user search */ #define SNACF$K_SSBI 16 /* Server-stored buddy icons (SSBI) service */ #define SNACF$K_H11 17 #define SNACF$K_H12 18 #define SNACF$K_SSI 19 /* Server Side Information (SSI) service */ #define SNACF$K_H14 20 #define SNACF$K_ICQ 21 /* ICQ specific extensions service */ #define SNACF$K_H16 22 #define SNACF$K_AUTHS 23 /* Authorization/registration service */ /* Broadcast service - IServerd extension */ #define SNACF$K_BROAD 133 /* */ /* */ /* */ #define SNACF$_MK_MORE 1 #define SNACF$_MK_UNDEF 32766 #define SNACF$_MK_ADD 32768 #ifdef __NEW_STARLET typedef struct _oscar_snac { unsigned short int snac$w_service; /* Family (service) id number, see SNACF$ constants */ unsigned short int snac$w_subtype; unsigned short int snac$w_flags; /* SNAC flags */ unsigned int snac$l_req; /* SNAC request id */ __union { unsigned char snac$b_data [1]; /* SNAC data */ unsigned short int snac$w_data [1]; /* SNAC data */ unsigned int snac$l_data [1]; /* SNAC data */ } snac$r_data; } OSCAR_SNAC; #if !defined(__VAXC) #define snac$b_data snac$r_data.snac$b_data #define snac$w_data snac$r_data.snac$w_data #define snac$l_data snac$r_data.snac$l_data #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct oscar_snac { unsigned short int snac$w_service; /* Family (service) id number, see SNACF$ constants */ unsigned short int snac$w_subtype; unsigned short int snac$w_flags; /* SNAC flags */ unsigned int snac$l_req; /* SNAC request id */ __union { unsigned char snac$b_data [1]; /* SNAC data */ unsigned short int snac$w_data [1]; /* SNAC data */ unsigned int snac$l_data [1]; /* SNAC data */ } snac$r_data; } ; #if !defined(__VAXC) #define snac$b_data snac$r_data.snac$b_data #define snac$w_data snac$r_data.snac$w_data #define snac$l_data snac$r_data.snac$l_data #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #define SNAC$OSCAR_HDRSZ 10 /* TLVs are a very convenient and efficient method of putting data into an */ /* organized format, especially variable length strings, etc. */ /* TLV literally stands for "Type, Length, Value". And that's exactly what it */ /* is: a 16bit Type code, a 16bit value for the length of */ /* the Value field, and then the actual data in the Value field (variable */ /* length). Here is TLV format: */ #ifdef __NEW_STARLET typedef struct _tlv { unsigned short int tlv$w_tag; /* TLV type number */ unsigned short int tlv$w_len; /* TLV length value */ __union { char tlv$t_val [2]; unsigned char tlv$b_val; unsigned short int tlv$w_val; unsigned int tlv$l_val; } tlv$r_val; } TLV; #if !defined(__VAXC) #define tlv$t_val tlv$r_val.tlv$t_val #define tlv$b_val tlv$r_val.tlv$b_val #define tlv$w_val tlv$r_val.tlv$w_val #define tlv$l_val tlv$r_val.tlv$l_val #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct tlv { unsigned short int tlv$w_tag; /* TLV type number */ unsigned short int tlv$w_len; /* TLV length value */ __union { char tlv$t_val [2]; unsigned char tlv$b_val; unsigned short int tlv$w_val; unsigned int tlv$l_val; } tlv$r_val; } ; #if !defined(__VAXC) #define tlv$t_val tlv$r_val.tlv$t_val #define tlv$b_val tlv$r_val.tlv$b_val #define tlv$w_val tlv$r_val.tlv$w_val #define tlv$l_val tlv$r_val.tlv$l_val #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #define TLV$OSCAR_HDRSZ 4 #define TLV_VALSZ$K_B 1 #define TLV_VALSZ$K_W 2 #define TLV_VALSZ$K_L 3 #define TLV_VALSZ$K_S 4 #define TLV_VALSZ$K_A 5 #ifdef __NEW_STARLET typedef struct _ascic { unsigned short int ascic$w_len; /* TLV length value */ __union { char ascic$t_val [2]; unsigned char ascic$b_val; unsigned short int ascic$w_val; unsigned int ascic$l_val; } ascic$r_val; } ASCIC; #if !defined(__VAXC) #define ascic$t_val ascic$r_val.ascic$t_val #define ascic$b_val ascic$r_val.ascic$b_val #define ascic$w_val ascic$r_val.ascic$w_val #define ascic$l_val ascic$r_val.ascic$l_val #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct ascic { unsigned short int ascic$w_len; /* TLV length value */ __union { char ascic$t_val [2]; unsigned char ascic$b_val; unsigned short int ascic$w_val; unsigned int ascic$l_val; } ascic$r_val; } ; #if !defined(__VAXC) #define ascic$t_val ascic$r_val.ascic$t_val #define ascic$b_val ascic$r_val.ascic$b_val #define ascic$w_val ascic$r_val.ascic$w_val #define ascic$l_val ascic$r_val.ascic$l_val #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* */ /* OSCAR API Context structure */ /* */ /* */ #ifdef __NEW_STARLET typedef struct _oscar_ctx { unsigned int oscar$l_uin; /* UIN in a binary from */ unsigned int oscar$l_chan; /* VMS Network I/O channel */ unsigned short int oscar$w_iseq; /* datagram seq number for sent FLAP */ unsigned short int oscar$w_oseq; /* datagram seq number for sent FLAP */ unsigned int oscar$l_oreqid; /* Sent SNAC request id */ unsigned int oscar$l_ireqid; /* received SNAC request id */ __union { unsigned int oscar$l_status; __struct { unsigned short int oscar$w_sts; /* Error code from SNAC (x,1); */ unsigned short int oscar$w_stv; /* Error subcode from TLV.Type(0x08); */ } oscar$r_c; } oscar$r_s; } OSCAR_CTX; #if !defined(__VAXC) #define oscar$l_status oscar$r_s.oscar$l_status #define oscar$r_c oscar$r_s.oscar$r_c #define oscar$w_sts oscar$r_c.oscar$w_sts #define oscar$w_stv oscar$r_c.oscar$w_stv #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct oscar_ctx { unsigned int oscar$l_uin; /* UIN in a binary from */ unsigned int oscar$l_chan; /* VMS Network I/O channel */ unsigned short int oscar$w_iseq; /* datagram seq number for sent FLAP */ unsigned short int oscar$w_oseq; /* datagram seq number for sent FLAP */ unsigned int oscar$l_oreqid; /* Sent SNAC request id */ unsigned int oscar$l_ireqid; /* received SNAC request id */ __union { unsigned int oscar$l_status; __struct { unsigned short int oscar$w_sts; /* Error code from SNAC (x,1); */ unsigned short int oscar$w_stv; /* Error subcode from TLV.Type(0x08); */ } oscar$r_c; } oscar$r_s; } ; #if !defined(__VAXC) #define oscar$l_status oscar$r_s.oscar$l_status #define oscar$w_sts oscar$r_s.oscar$r_c.oscar$w_sts #define oscar$w_stv oscar$r_s.oscar$r_c.oscar$w_stv #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* SNACs */ /* */ /* Family 0x0001 Generic service controls */ #define SNACTP_GSC$K_ERR 1 /* Client / server error */ #define SNACTP_GSC$K_OK 2 /* Client is now online and ready for normal function */ #define SNACTP_GSC$K_FLIST 3 /* Server supported snac families list */ #define SNACTP_GSC$K_NEWS 4 /* Request for new service */ #define SNACTP_GSC$K_REDIR 5 /* Redirect (for 0x0004 subtype) */ #define SNACTP_GSC$K_REQLIM 6 /* Request rate limits information */ #define SNACTP_GSC$K_ANSLIM 7 /* Rate limits information response */ #define SNACTP_GSC$K_ADDLIM 8 /* Add rate limits group */ #define SNACTP_GSC$K_DELLIM 9 /* Delete rate limits group */ #define SNACTP_GSC$K_CHNGLIM 10 /* Rate information changed / rate limit warning */ #define SNACTP_GSC$K_PAUSE 11 /* Server pause command */ #define SNACTP_GSC$K_PAUSEACK 12 /* Client pause ack */ #define SNACTP_GSC$K_RESUME 13 /* Server resume command */ #define SNACTP_GSC$K_RQOWN 14 /* Request own online information */ #define SNACTP_GSC$K_RQONLN 15 /* Requested online info response */ #define SNACTP_GSC$K_EVILE 16 /* Evil notification */ #define SNACTP_GSC$K_IDLE 17 /* Set idle time */ #define SNACTP_GSC$K_MIGRATE 18 /* Migration notice and info */ #define SNACTP_GSC$K_MOTD 19 /* Message of the day (MOTD) */ #define SNACTP_GSC$K_PVCFL 20 /* Set privacy flags */ #define SNACTP_GSC$K_WKNS 21 /* Well known urls */ #define SNACTP_GSC$K_NOP 22 /* No operation (NOP) */ #define SNACTP_GSC$K_RQVER 23 /* Request server services versions */ #define SNACTP_GSC$K_SRVVER 24 /* Server services versions */ #define SNACTP_GSC$K_SETLOC 25 /* Set status (set location info) */ #define SNACTP_GSC$K_RQCLIVER 26 /* Client verification request */ #define SNACTP_GSC$K_ANSCLIVER 27 /* Client verification reply */ #define SNACTP_GSC$K_CLISTS 28 /* Client's extended status from server */ /* Family 0x0002 Location services */ #define SNACTP_LOCS$K_ERR 1 /* Client / server error */ #define SNACTP_LOCS$K_REQPAR 2 /* Request limitations/params */ #define SNACTP_LOCS$K_ANSPAR 3 /* Limitations/params response */ #define SNACTP_LOCS$K_SETUI 4 /* Set user information */ #define SNACTP_LOCS$K_REQUI 5 /* Request user info */ #define SNACTP_LOCS$K_ANSUI 6 /* User information response */ #define SNACTP_LOCS$K_RQWATCH 7 /* Watcher sub request */ #define SNACTP_LOCS$K_NTWATCH 8 /* Watcher notification */ #define SNACTP_LOCS$K_REQUPD 9 /* Update directory info request */ #define SNACTP_LOCS$K_ANSUPD 10 /* Update directory info reply */ #define SNACTP_LOCS$K_QRY 11 /* Query for SNAC(02,0C) */ #define SNACTP_LOCS$K_RPL 12 /* Reply to SNAC(02,0B) */ #define SNACTP_LOCS$K_UPDUDI 13 /* Update user directory interests */ #define SNACTP_LOCS$K_ANSUDI 14 /* Update user directory interests reply */ #define SNACTP_LOCS$K_QRYUI 15 /* User info query */ /* Family 0x0003 Buddy List management service */ #define SNACTP_BLMS$K_ERR 1 /* Client / server error */ #define SNACTP_BLMS$K_REQPAR 196609 /* Request limitations/params */ #define SNACTP_BLMS$K_ANSPAR 393217 /* Limitations/params response */ #define SNACTP_BLMS$K_ADD 589825 /* Add buddy(s) to contact list */ #define SNACTP_BLMS$K_DEL 786433 /* Remove buddy(ies) from contact */ #define SNACTP_BLMS$K_QRY 983041 /* Query for list of watchers */ #define SNACTP_BLMS$K_REQWL 1179649 /* Requested watchers list */ #define SNACTP_BLMS$K_SUBRQW 1376257 /* Watcher sub request */ #define SNACTP_BLMS$K_NOTFYW 1572865 /* Watcher notification */ #define SNACTP_BLMS$K_REJNTFY 1769473 /* Notification rejected */ #define SNACTP_BLMS$K_ONLINE 1966081 /* User online notification */ #define SNACTP_BLMS$K_OFFLINE 2162689 /* User offline notification */ /* Family 0x0004 ICBM service */ #define SNACTP_ICBM$K_ERR 1 /* Client / server error */ #define SNACTP_ICBM$K_SET 2 /* Set ICBM parameters */ #define SNACTP_ICBM$K_GET 3 /* Reset ICBM parameters */ #define SNACTP_ICBM$K_REQPAR 4 /* Request parameters info */ #define SNACTP_ICBM$K_ANSPAR 5 /* Requested parameters info response */ #define SNACTP_ICBM$K_SEND 6 /* Send message thru server */ #define SNACTP_ICBM$K_MSG 7 /* Message for client from server */ #define SNACTP_ICBM$K_REQEVL 8 /* Evil request */ #define SNACTP_ICBM$K_ANSEVL 9 /* Server evil ack */ #define SNACTP_ICBM$K_MISS 10 /* Missed call (msg not delivered) */ #define SNACTP_ICBM$K_DATA 11 /* Client/server message error or data */ #define SNACTP_ICBM$K_ACK 12 /* Server message ack */ #define SNACTP_ICBM$K_MTN 13 /* Mini typing notifications (MTN) */ /* */ /* Message channels */ /* */ #define OSCAR$CHNK_TEXT 1 /* Channel 1 message format (plain-text messages) */ #define OSCAR$CHNK_RTF 2 /* Channel 2 message format (rtf messages, rendezvous) */ #define OSCAR$CHNK_CHAT 3 /* Channel 3 is used for chat messages (not in the same family as these channels) */ #define OSCAR$CHNK_OLD 4 /* Channel 4 message format (typed old-style messages) */ /* */ /* Message types and flags */ /* */ #define OSCAR$MTPK_PLAIN 1 /* Plain text (simple) message */ #define OSCAR$MTPK_CHAT 2 /* Chat request message */ #define OSCAR$MTPK_FILEREQ 3 /* File request / file ok message */ #define OSCAR$MTPK_URL 4 /* URL message (0xFE formatted) */ #define OSCAR$MTPK_AUTHREQ 5 /* Authorization request message (0xFE formatted) */ #define OSCAR$MTPK_AUTHDENY 6 /* Authorization denied message (0xFE formatted) */ #define OSCAR$MTPK_AUTHOK 7 /* Authorization given message (empty) */ #define OSCAR$MTPK_SERVER 8 /* Message from OSCAR server (0xFE formatted) */ /* Unknown or unused */ #define OSCAR$MTPK__A 9 #define OSCAR$MTPK__B 10 #define OSCAR$MTPK_ADDED 11 /* "You-were-added" message (0xFE formatted) */ #define OSCAR$MTPK_WWP 12 /* Web pager message (0xFE formatted) */ #define OSCAR$MTPK_EEXPRESS 13 /* Email express message (0xFE formatted) */ /* Unknown or unused */ #define OSCAR$MTPK__F 14 #define OSCAR$MTPK__10 15 #define OSCAR$MTPK__11 16 #define OSCAR$MTPK__12 17 #define OSCAR$MTPK_CONTACTS 18 /* Contact list message */ /* Unknown or unused */ #define OSCAR$MTPK__14 19 #define OSCAR$MTPK__15 20 #define OSCAR$MTPK__16 21 #define OSCAR$MTPK__17 22 #define OSCAR$MTPK__18 23 #define OSCAR$MTPK__19 24 #define OSCAR$MTPK_PLUGIN 25 /* Plugin message described by text string */ #define OSCAR$MTPK_AUTOAWAY 232 /* Auto away message */ #define OSCAR$MTPK_AUTOBUSY 233 /* Auto occupied message */ #define OSCAR$MTPK_AUTONA 234 /* Auto not available message */ #define OSCAR$MTPK_AUTODND 235 /* Auto do not disturb message */ #define OSCAR$MTPK_AUTOFFC 236 /* Auto free for chat message */ /* */ #define OSCAR$MFLK_NORMAL 1 #define OSCAR$MFLK_AUTO 3 #define OSCAR$MFLK_MULTI 128 /* Family 0x0005 (depricated) Advertisements service */ #define SNACTP_ADS$K_ERR 1 /* Client / server error */ #define SNACTP_ADS$K_REQ 2 /* Client request ads */ #define SNACTP_ADS$K_ANS 3 /* Server returned ads (GIFs) */ /* Family 0x0006 Invitation service */ #define SNACTP_INV$K_ERR 1 /* Client server error */ #define SNACTP_INV$K_INVITE 2 /* Invite a friend to join AIM */ #define SNACTP_INV$K_ACK 3 /* Invitation server ack */ /* Family 0x0007 Administrative service */ #define SNACTP_ADM$K_ERR 1 /* Client / server error */ #define SNACTP_ADM$K_REQ 2 /* Request account info */ #define SNACTP_ADM$K_ANS 3 /* Requested account info */ #define SNACTP_ADM$K_REQMOD 4 /* Change account info (screenname, password) request */ #define SNACTP_ADM$K_ACKMOD 5 /* Change account info ack */ #define SNACTP_ADM$K_REQCONF 6 /* Account confirm request */ #define SNACTP_ADM$K_ANSCONF 7 /* Account confirm ack */ #define SNACTP_ADM$K_REQDEL 8 /* Account delete request */ #define SNACTP_ADM$K_ACKDEL 9 /* Account delete ack */ /* Family 0x0008 Popup notices service */ #define SNACTP_POPUP$K_ERR 1 /* Client server error */ #define SNACTP_POPUP$K_CMD 2 /* Display popup message server command */ /* Family 0x0009 Privacy management service */ #define SNACTP_PVCS$K_ERR 1 /* Client server error */ #define SNACTP_PVCS$K_REQPAR 2 /* Request service parameters */ #define SNACTP_PVCS$K_ANSPAR 3 /* Requested service parameters */ #define SNACTP_PVCS$K_SETPERM 4 /* Set group permissions mask */ #define SNACTP_PVCS$K_ADDVIS 5 /* Add to visible list */ #define SNACTP_PVCS$K_DELVIS 6 /* Delete from visible list */ #define SNACTP_PVCS$K_ADDINVIS 7 /* Add to invisible list */ #define SNACTP_PVCS$K_DELINVIS 8 /* Delete from invisible list */ #define SNACTP_PVCS$K_SVCERR 9 /* Service error */ #define SNACTP_PVCS$K_ADDVIS2 10 /* Add to visible list (?) */ #define SNACTP_PVCS$K_DELVIS2 11 /* Delete from visible list (?) */ /* Family 0x000A User lookup service */ #define SNACTP_ULOOKUP$K_ERR 1 /* Client / server error */ #define SNACTP_ULOOKUP$K_EMAIL 2 /* Search user by email */ #define SNACTP_ULOOKUP$K_RESP 3 /* Search response */ /* Family 0x000B Usage stats service */ #define SNACTP_USAGE$K_ERR 1 /* Client / server error */ #define SNACTP_USAGE$K_INTVL 2 /* Set minimum report interval */ #define SNACTP_USAGE$K_USAGE 3 /* Usage stats report */ #define SNACTP_USAGE$K_ACKUSAGE 4 /* Usage stats report ack */ /* Family 0x000c (depricated) Translation service */ #define SNACTP_TRN$K_ERR 1 /* Client / server error */ #define SNACTP_TRN$K_REQTRN 2 /* Client translate request */ #define SNACTP_TRN$K_ANSTRN 3 /* Server translate reply */ /* Family 0x000D Chat navigation service */ #define SNACTP_NAV$K_ERR 1 /* Client / server error */ #define SNACTP_NAV$K_REQLIM 2 /* Request limits */ #define SNACTP_NAV$K_EXCHANGE 3 /* Request exchange information */ #define SNACTP_NAV$K_ROOM 4 /* Request room information */ #define SNACTP_NAV$K_EXTROOM 5 /* Request extended room information */ #define SNACTP_NAV$K_MEMBERS 6 /* Request member list */ #define SNACTP_NAV$K_SEARCH 7 /* Search for room */ #define SNACTP_NAV$K_CREATE 8 /* Create room */ #define SNACTP_NAV$K_ANS 9 /* Requested information response */ /* Family 0x000E Chat service */ #define SNACTP_CHAT$K_ERR 1 /* Client / server error */ #define SNACTP_CHAT$K_UPDATE 2 /* Room information update */ #define SNACTP_CHAT$K_JOINED 3 /* Users joined notification */ #define SNACTP_CHAT$K_LEFT 4 /* Users left notification */ #define SNACTP_CHAT$K_FROM 5 /* Channel message from client */ #define SNACTP_CHAT$K_TO 6 /* Channel message to client */ #define SNACTP_CHAT$K_REQEVIL 7 /* Evil request */ #define SNACTP_CHAT$K_ANSEVIL 8 /* Evil reply */ #define SNACTP_CHAT$K_DATA 9 /* Chat error or data */ /* Family 0x000f Directory search (aim new search) */ #define SNACTP_SEARCH$K_ERR 1 /* Client / server error */ #define SNACTP_SEARCH$K_REQ 2 /* Client search user request */ #define SNACTP_SEARCH$K_ANS 3 /* Server reply for search request (found users) */ #define SNACTP_SEARCH$K_REQINTRST 4 /* Request interests list from server */ #define SNACTP_SEARCH$K_RSPINTRST 5 /* Server response to interests list request */ /* Family 0x0010 Server-stored buddy icons */ #define SNACTP_SSBI$K_ERR 1 /* Client / server error */ #define SNACTP_SSBI$K_PUT 2 /* Upload your icon to server */ #define SNACTP_SSBI$K_ACKPUT 3 /* Server ack for icon upload */ #define SNACTP_SSBI$K_AIMREQICO 4 /* Request buddy icon from server (AIM only) */ #define SNACTP_SSBI$K_AIMRSPICO 5 /* Server response to a buddy icon request (AIM only) */ #define SNACTP_SSBI$K_REQICO 6 /* Request buddy icon from server (ICQ) */ #define SNACTP_SSBI$K_RSPICO 7 /* Server response to a buddy icon request (ICQ) */ /* Family 0x0013 Server side information service */ #define SNACTP_SSI$K_ERR 1 /* Client / server error */ #define SNACTP_SSI$K_REQSVC 2 /* Request service parameters */ #define SNACTP_SSI$K_ANSSVC 3 /* Service parameters reply */ #define SNACTP_SSI$K_REQLST 4 /* Request contact list (first time) */ #define SNACTP_SSI$K_CHKLST 5 /* Contact list checkout */ #define SNACTP_SSI$K_ANSLST 6 /* Server contact list reply */ #define SNACTP_SSI$K_LOADLST 7 /* Load server contact list (after login) */ #define SNACTP_SSI$K_ADD 8 /* SSI edit: add item(s) */ #define SNACTP_SSI$K_UPD 9 /* SSI edit: update group header */ #define SNACTP_SSI$K_DEL 10 /* SSI edit: remove item */ #define SNACTP_SSI$K_ACC 11 /* SSI edit server ack */ #define SNACTP_SSI$K_UTODATE 12 /* client local SSI is up-to-date */ #define SNACTP_SSI$K_LSTBEG 13 /* Contacts edit start (begin transaction) */ #define SNACTP_SSI$K_LSTEND 14 /* Contacts edit end (finish transaction) */ #define SNACTP_SSI$K_GRANT 15 /* Grant future authorization to client */ #define SNACTP_SSI$K_GRANTED 16 /* Future authorization granted */ #define SNACTP_SSI$K_REMOVE 17 /* Delete yourself from another client server contact */ #define SNACTP_SSI$K_SENDAUTH 18 /* Send authorization request */ #define SNACTP_SSI$K_REQAUTH 19 /* Authorization request */ #define SNACTP_SSI$K_AUTH 20 /* Send authorization reply */ #define SNACTP_SSI$K_ANSAUTH 21 /* Authorization reply */ #define SNACTP_SSI$K_ADDED 22 /* "You were added" message */ /* Family 0x0015 ICQ specific extensions service */ #define SNACTP_ICQ$K_ERR 1 /* Client / server error */ #define SNACTP_ICQ$K_REQMETA 2 /* Meta information request */ #define SNACTP_ICQ$K_ANSMETA 3 /* Meta information response */ /* Family 0x0017 Authorization/registration service */ #define SNACTP_AREG$ 23 #define SNACTP_AREG$K_ERR 1 /* Server error (registration refused) */ #define SNACTP_AREG$K_LOGIN 2 /* Client login request (md5 login sequence) */ #define SNACTP_AREG$K_REPLY 3 /* Server login reply / error reply */ #define SNACTP_AREG$K_REQUIN 4 /* Request new uin */ #define SNACTP_AREG$K_ANSUIN 5 /* New uin response */ #define SNACTP_AREG$K_REQKEY 6 /* Request md5 authkey */ #define SNACTP_AREG$K_ANSKEY 7 /* Server md5 authkey response */ #define SNACTP_AREG$K_REQSID 8 /* Server SecureID request */ #define SNACTP_AREG$K_ANSSID 9 /* Client SecureID reply */ /* Family 0x0085 - IServerd extension Broadcast service */ #define SNACTP_BROAD$K_ERR 1 /* Server error */ #define SNACTP_BROAD$K_SEND 8716289 /* Send broadcast message to server */ #define SNACTP_BROAD$K_REPLY 17432577 /* Server broadcast reply */ #define USTS$M_WEBAWARE 0x1 #define USTS$M_SHOWIP 0x2 #define USTS$M_BIRTHDAY 0x8 #define USTS$M_WEBFRONT 0x20 #define USTS$M_DCDISA 0x100 #define USTS$M_DCAUTH 0x1000 #define USTS$M_DCCONT 0x2000 #define USTS$M_ONLINE 0x8000 #define USTS$M_AWAY 0x10000 #define USTS$M_DND 0x20000 #define USTS$M_NA 0x40000 #define USTS$M_OCCUPIED 0x100000 #define USTS$M_F4CHAT 0x200000 #define USTS$M_INVIS 0x1000000 #ifdef __NEW_STARLET typedef struct _oscar_usts { unsigned usts$v_webaware : 1; /* Status webaware flag */ unsigned usts$v_showip : 1; /* Status show ip flag */ unsigned usts$v_fill0 : 1; unsigned usts$v_birthday : 1; /* User birthday flag */ unsigned usts$v_fill1 : 1; unsigned usts$v_webfront : 1; /* User active webfront flag */ unsigned usts$v_fill2 : 2; unsigned usts$v_dcdisa : 1; /* Direct connection not supported */ unsigned usts$v_fill3 : 3; unsigned usts$v_dcauth : 1; /* Direct connection upon authorization */ unsigned usts$v_dccont : 1; /* DC only with contact users */ unsigned usts$v_fill4 : 1; unsigned usts$v_online : 1; /* Status is online */ unsigned usts$v_away : 1; /* Status is away */ unsigned usts$v_dnd : 1; /* Status is no not disturb (DND) */ unsigned usts$v_na : 1; /* Status is not available (N/A) */ unsigned usts$v_fill5 : 1; unsigned usts$v_occupied : 1; /* Status is occupied (BISY) */ unsigned usts$v_f4chat : 1; /* Status is free for chat */ unsigned usts$v_fill6 : 2; unsigned usts$v_invis : 1; /* Status is invisible */ unsigned usts$v_fill_0_ : 7; } OSCAR_USTS; #else /* __OLD_STARLET */ struct oscar_usts { unsigned usts$v_webaware : 1; /* Status webaware flag */ unsigned usts$v_showip : 1; /* Status show ip flag */ unsigned usts$v_fill0 : 1; unsigned usts$v_birthday : 1; /* User birthday flag */ unsigned usts$v_fill1 : 1; unsigned usts$v_webfront : 1; /* User active webfront flag */ unsigned usts$v_fill2 : 2; unsigned usts$v_dcdisa : 1; /* Direct connection not supported */ unsigned usts$v_fill3 : 3; unsigned usts$v_dcauth : 1; /* Direct connection upon authorization */ unsigned usts$v_dccont : 1; /* DC only with contact users */ unsigned usts$v_fill4 : 1; unsigned usts$v_online : 1; /* Status is online */ unsigned usts$v_away : 1; /* Status is away */ unsigned usts$v_dnd : 1; /* Status is no not disturb (DND) */ unsigned usts$v_na : 1; /* Status is not available (N/A) */ unsigned usts$v_fill5 : 1; unsigned usts$v_occupied : 1; /* Status is occupied (BISY) */ unsigned usts$v_f4chat : 1; /* Status is free for chat */ unsigned usts$v_fill6 : 2; unsigned usts$v_invis : 1; /* Status is invisible */ unsigned usts$v_fill_0_ : 7; } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* Here is the list of the known error codes for families error SNACs(xx,01). */ /* */ #define SNAC_ERR$K_INVHDR 1 /* Invalid SNAC header. */ #define SNAC_ERR$K_SRVRATE 2 /* Server rate limit exceeded */ #define SNAC_ERR$K_CLIRATE 3 /* Client rate limit exceeded */ #define SNAC_ERR$K_NOTLOGED 4 /* Recipient is not logged in */ #define SNAC_ERR$K_UNAVAIL 5 /* Requested service unavailable */ #define SNAC_ERR$K_UNDEF 6 /* Requested service not defined */ #define SNAC_ERR$K_OLD 7 /* You sent obsolete SNAC */ #define SNAC_ERR$K_STRVSUP 8 /* Not supported by server */ #define SNAC_ERR$K_CLISUPP 9 /* Not supported by client */ #define SNAC_ERR$K_REFUSED 10 /* Refused by client */ #define SNAC_ERR$K_TOOBIG 11 /* Reply too big */ #define SNAC_ERR$K_LOST 12 /* Responses lost */ #define SNAC_ERR$K_REQDND 13 /* Request denied */ #define SNAC_ERR$K_BADFMT 14 /* Incorrect SNAC format */ #define SNAC_ERR$K_NOPRIV 15 /* Insufficient rights */ #define SNAC_ERR$K_BLOCKED 16 /* In local permit/deny (recipient blocked) */ #define SNAC_ERR$K_SENDEREVIL 17 /* Sender too evil */ #define SNAC_ERR$K_RECVREVIL 18 /* Receiver too evil */ #define SNAC_ERR$K_TMPNA 19 /* User temporarily unavailable */ #define SNAC_ERR$K_NOMATCH 20 /* No match */ #define SNAC_ERR$K_OVEFLW 21 /* List overflow */ #define SNAC_ERR$K_AMBIGUOUS 22 /* Request ambiguous */ #define SNAC_ERR$K_QUEFUL 23 /* Server queue full */ #define SNAC_ERR$K_NOTAOL 24 /* Not while on AOL */ /* */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __OSCARDEF_LOADED */