Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/p2p.h @ 32008:b2c25156081c
Add TLV and data fields to P2Pv2 Header.
author | masca@cpw.pidgin.im |
---|---|
date | Tue, 04 Jan 2011 04:51:48 +0000 |
parents | ea3c7de5a07d |
children | f021d93a1f9b |
rev | line source |
---|---|
31412
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
1 /** |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
2 * @file p2p.h MSN P2P functions |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
3 * |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
4 * purple |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
5 * |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
6 * Purple is the legal property of its developers, whose names are too numerous |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
8 * source distribution. |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
9 * |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
13 * (at your option) any later version. |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
14 * |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
18 * GNU General Public License for more details. |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
19 * |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
23 */ |
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31306
diff
changeset
|
24 |
31201 | 25 #ifndef MSN_P2P_H |
26 #define MSN_P2P_H | |
27 | |
28 typedef struct { | |
29 guint32 session_id; | |
31202
d4869cd86680
Chang member name so it is compatible with MsnSlpHeader struct names.
masca@cpw.pidgin.im
parents:
31201
diff
changeset
|
30 guint32 id; |
31301
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
31 /** |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
32 * In a MsnSlpMessage: |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
33 * For outgoing messages this is the number of bytes from buffer that |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
34 * have already been sent out. For incoming messages this is the |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
35 * number of bytes that have been written to buffer. |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31286
diff
changeset
|
36 */ |
31201 | 37 guint64 offset; |
38 guint64 total_size; | |
39 guint32 length; | |
40 guint32 flags; | |
41 guint32 ack_id; | |
31202
d4869cd86680
Chang member name so it is compatible with MsnSlpHeader struct names.
masca@cpw.pidgin.im
parents:
31201
diff
changeset
|
42 guint32 ack_sub_id; |
31201 | 43 guint64 ack_size; |
44 /* guint8 body[1]; */ | |
31205 | 45 } MsnP2PHeader; |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
46 #define P2P_PACKET_HEADER_SIZE (6 * 4 + 3 * 8) |
31201 | 47 |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
48 /* Used for DCs to store nonces */ |
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
49 #define P2P_HEADER_ACK_ID_OFFSET (2*4 + 2*8 + 2*4) |
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
50 |
31277 | 51 typedef struct { |
52 guint8 header_len; | |
53 guint8 opcode; | |
31286
544221aadf6e
Fix some field sizes in P2Pv2 header.
masca@cpw.pidgin.im
parents:
31282
diff
changeset
|
54 guint16 message_len; |
544221aadf6e
Fix some field sizes in P2Pv2 header.
masca@cpw.pidgin.im
parents:
31282
diff
changeset
|
55 guint32 base_id; |
32008
b2c25156081c
Add TLV and data fields to P2Pv2 Header.
masca@cpw.pidgin.im
parents:
32007
diff
changeset
|
56 GSList *tlv; |
b2c25156081c
Add TLV and data fields to P2Pv2 Header.
masca@cpw.pidgin.im
parents:
32007
diff
changeset
|
57 char *data; |
31277 | 58 } MsnP2Pv2Header; |
59 | |
32007 | 60 typedef struct { |
61 guint8 length; | |
62 guint8 TF; /**< Type-First combination */ | |
63 guint16 package_num; | |
64 guint32 session; | |
32008
b2c25156081c
Add TLV and data fields to P2Pv2 Header.
masca@cpw.pidgin.im
parents:
32007
diff
changeset
|
65 GSList *tlv; |
32007 | 66 char *data; |
67 } MsnP2Pv2DataHeader; | |
68 | |
32004 | 69 typedef enum |
70 { | |
32006 | 71 OP_NONE = 0x00, /**< None, Nothing required. */ |
72 OP_SYN = 0x01, /**< SYN, just like TCP. */ | |
73 OP_RAK = 0x02 /**< Request for Ack. */ | |
74 } OpCode; | |
32004 | 75 |
76 typedef enum | |
77 { | |
32006 | 78 TF_FIRST = 0x01, /**< The first package. */ |
79 TF_OBJ = 0x04, /**< Payload contains binary data for MsnObject. */ | |
80 TF_FILE = 0x06 /**< Payload contains binary data. */ | |
32004 | 81 } TF; |
82 | |
83 typedef enum | |
84 { | |
32006 | 85 TLP_PEER_INFO = 0x01, /**< Client peer info */ |
86 TLP_ACK = 0x02, /**< ACK */ | |
87 TLP_NAK = 0x03 /**< NAK */ | |
32004 | 88 } TLP; |
89 | |
90 typedef enum | |
91 { | |
32006 | 92 TLP_LEN_PEER_INFO = 12, |
93 TLP_LEN_ACK = 4, | |
94 TLP_LEN_NAK = 4 | |
32004 | 95 } TLPLength; |
96 | |
97 #define DLP_REMAINING 0x01; /**< Indicates the remaining data to transfer.*/ | |
98 #define DLP_REMAINING_LEN 8 | |
99 | |
31204
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
31202
diff
changeset
|
100 typedef struct |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
31202
diff
changeset
|
101 { |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
31202
diff
changeset
|
102 guint32 value; |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
31202
diff
changeset
|
103 } MsnP2PFooter; |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
104 #define P2P_PACKET_FOOTER_SIZE (1 * 4) |
31204
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
31202
diff
changeset
|
105 |
31201 | 106 typedef enum |
107 { | |
108 P2P_NO_FLAG = 0x0, /**< No flags specified */ | |
109 P2P_OUT_OF_ORDER = 0x1, /**< Chunk out-of-order */ | |
110 P2P_ACK = 0x2, /**< Acknowledgement */ | |
111 P2P_PENDING_INVITE = 0x4, /**< There is a pending invite */ | |
112 P2P_BINARY_ERROR = 0x8, /**< Error on the binary level */ | |
31279
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
31277
diff
changeset
|
113 P2P_FILE = 0x10, /**< File */ |
31201 | 114 P2P_MSN_OBJ_DATA = 0x20, /**< MsnObject data */ |
31279
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
31277
diff
changeset
|
115 P2P_CLOSE = 0x40, /**< Close session */ |
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
31277
diff
changeset
|
116 P2P_TLP_ERROR = 0x80, /**< Error at transport layer protocol */ |
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
31277
diff
changeset
|
117 P2P_DC_HANDSHAKE = 0x100, /**< Direct Handshake */ |
31417
f26e961e1274
Fix the name of this flag.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31412
diff
changeset
|
118 P2P_WLM2009_COMP = 0x1000000, /**< Compatibility with WLM 2009 */ |
31201 | 119 P2P_FILE_DATA = 0x1000030 /**< File transfer data */ |
120 } MsnP2PHeaderFlag; | |
121 /* Info From: | |
122 * http://msnpiki.msnfanatic.com/index.php/MSNC:P2Pv1_Headers#Flags | |
123 * http://trac.kmess.org/changeset/ba04d0c825769d23370511031c47f6be75fe9b86 | |
124 * #7180 | |
125 */ | |
126 | |
31282
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
127 typedef enum |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
128 { |
31480 | 129 P2P_APPID_SESSION = 0x0, /**< Negotiating session */ |
31282
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
130 P2P_APPID_OBJ = 0x1, /**< MsnObject (Display or Emoticon) */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
131 P2P_APPID_FILE = 0x2, /**< File transfer */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
132 P2P_APPID_EMOTE = 0xB, /**< CustomEmoticon */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
133 P2P_APPID_DISPLAY = 0xC /**< Display Image */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
134 } MsnP2PAppId; |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31279
diff
changeset
|
135 |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
136 MsnP2PHeader * |
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
137 msn_p2p_header_from_wire(const char *wire); |
31201 | 138 |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
139 char * |
31206
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
31205
diff
changeset
|
140 msn_p2p_header_to_wire(MsnP2PHeader *header); |
31201 | 141 |
31220 | 142 MsnP2PFooter * |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
143 msn_p2p_footer_from_wire(const char *wire); |
31220 | 144 |
31491
7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31480
diff
changeset
|
145 char * |
31220 | 146 msn_p2p_footer_to_wire(MsnP2PFooter *footer); |
147 | |
31306
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
31301
diff
changeset
|
148 gboolean |
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
31301
diff
changeset
|
149 msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags); |
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
31301
diff
changeset
|
150 |
31201 | 151 #endif /* MSN_P2P_H */ |