| 38 #undef GG_FEATURE_STATUS80BETA |
38 #undef GG_FEATURE_STATUS80BETA |
| 39 #undef GG_FEATURE_MSG80 |
39 #undef GG_FEATURE_MSG80 |
| 40 #undef GG_FEATURE_STATUS80 |
40 #undef GG_FEATURE_STATUS80 |
| 41 #define GG_FEATURE_STATUS80BETA 0x01 |
41 #define GG_FEATURE_STATUS80BETA 0x01 |
| 42 #define GG_FEATURE_MSG80 0x02 |
42 #define GG_FEATURE_MSG80 0x02 |
| 43 #define GG_FEATURE_STATUS80 0x05 |
43 #define GG_FEATURE_STATUS80 0x05 |
| 44 |
44 |
| 45 #define GG_DEFAULT_HOST_WHITE_LIST { "gadu-gadu.pl", "gg.pl", NULL } |
45 #define GG_DEFAULT_HOST_WHITE_LIST { "gadu-gadu.pl", "gg.pl", NULL } |
| 46 |
46 |
| 47 #define GG8_LANG "pl" |
47 #define GG8_LANG "pl" |
| 48 #define GG8_VERSION "Gadu-Gadu Client Build " |
48 #define GG8_VERSION "Gadu-Gadu Client Build " |
| 222 #define GG_DCC7_RESERVED1 0xdeadc0de |
222 #define GG_DCC7_RESERVED1 0xdeadc0de |
| 223 #define GG_DCC7_RESERVED2 0xdeadbeaf |
223 #define GG_DCC7_RESERVED2 0xdeadbeaf |
| 224 |
224 |
| 225 struct gg_dcc7_voice_auth { |
225 struct gg_dcc7_voice_auth { |
| 226 uint8_t type; /* 0x00 -> wysylanie ID |
226 uint8_t type; /* 0x00 -> wysylanie ID |
| 227 0x01 -> potwierdzenie ID |
227 * 0x01 -> potwierdzenie ID |
| 228 */ |
228 */ |
| 229 gg_dcc7_id_t id; /* identyfikator połączenia */ |
229 gg_dcc7_id_t id; /* identyfikator połączenia */ |
| 230 uint32_t reserved1; /* GG_DCC7_RESERVED1 */ |
230 uint32_t reserved1; /* GG_DCC7_RESERVED1 */ |
| 231 uint32_t reserved2; /* GG_DCC7_RESERVED2 */ |
231 uint32_t reserved2; /* GG_DCC7_RESERVED2 */ |
| 232 } GG_PACKED; |
232 } GG_PACKED; |
| 233 |
233 |
| 234 struct gg_dcc7_voice_nodata { /* wyciszony mikrofon, ten pakiet jest wysylany co 1s (jesli chcemy podtrzymac polaczenie) */ |
234 /* Wyciszony mikrofon. Ten pakiet jest wysylany co 1s (jesli chcemy podtrzymac |
| |
235 * polaczenie). |
| |
236 */ |
| |
237 struct gg_dcc7_voice_nodata { |
| 235 uint8_t type; /* 0x02 */ |
238 uint8_t type; /* 0x02 */ |
| 236 gg_dcc7_id_t id; /* identyfikator połączenia */ |
239 gg_dcc7_id_t id; /* identyfikator połączenia */ |
| 237 uint32_t reserved1; /* GG_DCC7_RESERVED1 */ |
240 uint32_t reserved1; /* GG_DCC7_RESERVED1 */ |
| 238 uint32_t reserved2; /* GG_DCC7_RESERVED2 */ |
241 uint32_t reserved2; /* GG_DCC7_RESERVED2 */ |
| 239 } GG_PACKED; |
242 } GG_PACKED; |
| 249 |
252 |
| 250 struct gg_dcc7_voice_init { |
253 struct gg_dcc7_voice_init { |
| 251 uint8_t type; /* 0x04 */ |
254 uint8_t type; /* 0x04 */ |
| 252 uint32_t id; /* nr kroku [0x1 - 0x5] */ |
255 uint32_t id; /* nr kroku [0x1 - 0x5] */ |
| 253 uint32_t protocol; /* XXX: wersja protokolu (0x29, 0x2a, 0x2b) */ |
256 uint32_t protocol; /* XXX: wersja protokolu (0x29, 0x2a, 0x2b) */ |
| 254 uint32_t len; /* rozmiar sizeof(protocol)+sizeof(len)+sizeof(data) = 0x08 + sizeof(data) */ |
257 uint32_t len; /* rozmiar sizeof(protocol)+sizeof(len)+ |
| |
258 * sizeof(data) = 0x08 + sizeof(data) */ |
| 255 /* char data[]; */ /* reszta danych */ |
259 /* char data[]; */ /* reszta danych */ |
| 256 } GG_PACKED; |
260 } GG_PACKED; |
| 257 |
261 |
| 258 struct gg_dcc7_voice_init_confirm { |
262 struct gg_dcc7_voice_init_confirm { |
| 259 uint8_t type; /* 0x05 */ |
263 uint8_t type; /* 0x05 */ |
| 268 #define GG_DCC7_RELAY_REQUEST 0x0a |
272 #define GG_DCC7_RELAY_REQUEST 0x0a |
| 269 |
273 |
| 270 struct gg_dcc7_relay_req { |
274 struct gg_dcc7_relay_req { |
| 271 uint32_t magic; /* 0x0a */ |
275 uint32_t magic; /* 0x0a */ |
| 272 uint32_t len; /* długość całego pakietu */ |
276 uint32_t len; /* długość całego pakietu */ |
| 273 gg_dcc7_id_t id; /* identyfikator połączenia */ |
277 gg_dcc7_id_t id; /* identyfikator połączenia */ |
| 274 uint16_t type; /* typ zapytania */ |
278 uint16_t type; /* typ zapytania */ |
| 275 uint16_t dunno1; /* 0x02 */ |
279 uint16_t dunno1; /* 0x02 */ |
| 276 } GG_PACKED; |
280 } GG_PACKED; |
| 277 |
281 |
| 278 #define GG_DCC7_RELAY_REPLY_RCOUNT 0x02 |
282 #define GG_DCC7_RELAY_REPLY_RCOUNT 0x02 |
| 279 |
283 |