Go to the source code of this file.
|
#define | PDU(name, docstring, fields, is_valid) name, |
|
#define | PDU(name, docstring, fields, is_valid) struct name { fields } name; |
|
#define | UINT(field, docstring, bits) unsigned long field; |
|
#define | UINTVAR(field, docstring) unsigned long field; |
|
#define | OCTSTR(field, docstring, lengthfield) Octstr *field; |
|
#define | REST(field, docstring) Octstr *field; |
|
#define | TYPE(bits, value) |
|
#define | RESERVED(bits) |
|
#define | TPI(confield) |
|
◆ OCTSTR
#define OCTSTR |
( |
|
field, |
|
|
|
docstring, |
|
|
|
lengthfield |
|
) |
| Octstr *field; |
◆ PDU [1/2]
#define PDU |
( |
|
name, |
|
|
|
docstring, |
|
|
|
fields, |
|
|
|
is_valid |
|
) |
| name, |
◆ PDU [2/2]
#define PDU |
( |
|
name, |
|
|
|
docstring, |
|
|
|
fields, |
|
|
|
is_valid |
|
) |
| struct name { fields } name; |
◆ RESERVED
◆ REST
#define REST |
( |
|
field, |
|
|
|
docstring |
|
) |
| Octstr *field; |
◆ TPI
◆ TYPE
#define TYPE |
( |
|
bits, |
|
|
|
value |
|
) |
| |
◆ UINT
#define UINT |
( |
|
field, |
|
|
|
docstring, |
|
|
|
bits |
|
) |
| unsigned long field; |
◆ UINTVAR
#define UINTVAR |
( |
|
field, |
|
|
|
docstring |
|
) |
| unsigned long field; |
◆ WSP_PDU
◆ anonymous enum
Enumerator |
---|
GET_METHODS | |
POST_METHODS | |
Definition at line 74 of file wsp_pdu.h.
◆ wsp_pdu_types
Definition at line 80 of file wsp_pdu.h.
81 #define PDU(name, docstring, fields, is_valid) name,
◆ wsp_pdu_create()
WSP_PDU* wsp_pdu_create |
( |
int |
type | ) |
|
Definition at line 68 of file wsp_pdu.c.
References panic, wsp_pdu::type, and type.
Referenced by make_confirmedpush_pdu(), make_connectreply_pdu(), make_push_pdu(), make_resume_reply_pdu(), pack_into_push_datagram(), pack_into_result_datagram(), and pack_sia().
71 pdu = gw_malloc(
sizeof(*pdu));
75 #define PDU(name, docstring, fields, is_valid) \ 77 struct name *p; p = &pdu->u.name; \ 80 #define UINT(field, docstring, bits) p->field = 0; 81 #define UINTVAR(field, docstring) p->field = 0; 82 #define OCTSTR(field, docstring, lengthfield) p->field = NULL; 83 #define REST(field, docstring) p->field = NULL; 84 #define TYPE(bits, value) 85 #define RESERVED(bits) 95 panic(0,
"Internal error: Unknown PDU type %d", pdu->
type);
◆ wsp_pdu_destroy()
void wsp_pdu_destroy |
( |
WSP_PDU * |
pdu | ) |
|
Definition at line 102 of file wsp_pdu.c.
References panic, and wsp_pdu::type.
Referenced by main(), main_thread(), make_connectreply_pdu(), make_resume_reply_pdu(), pack_into_push_datagram(), pack_into_result_datagram(), pack_sia(), push_client_event_handle(), send_invoke(), and unpack_datagram().
107 #define PDU(name, docstring, fields, is_valid) \ 109 struct name *p; p = &pdu->u.name; \ 112 #define UINT(field, docstring, bits) 113 #define UINTVAR(field, docstring) 114 #define OCTSTR(field, docstring, lengthfield) octstr_destroy(p->field); 115 #define REST(field, docstring) octstr_destroy(p->field); 116 #define TYPE(bits, value) 117 #define RESERVED(bits) 127 panic(0,
"Cannot destroy unknown WSP PDU type %d", pdu->
type);
◆ wsp_pdu_dump()
void wsp_pdu_dump |
( |
WSP_PDU * |
pdu, |
|
|
int |
level |
|
) |
| |
Definition at line 324 of file wsp_pdu.c.
References debug(), and wsp_pdu::type.
Referenced by main(), and pack_into_push_datagram().
325 char *dbg =
"wap.wsp";
328 #define PDU(name, docstring, fields, is_valid) \ 330 struct name *p = &pdu->u.name; \ 331 debug(dbg, 0, "%*sWSP %s PDU at %p:", \ 332 level, "", #name, (void *)pdu); \ 335 #define UINT(field, docstring, bits) \ 336 debug(dbg, 0, "%*s %s: %lu", level, "", docstring, p->field); 337 #define UINTVAR(field, docstring) \ 338 debug(dbg, 0, "%*s %s: %lu", level, "", docstring, p->field); 339 #define OCTSTR(field, docstring, lengthfield) \ 340 debug(dbg, 0, "%*s %s:", level, "", docstring); \ 341 octstr_dump(p->field, level + 1); 342 #define REST(field, docstring) \ 343 debug(dbg, 0, "%*s %s:", level, "", docstring); \ 344 octstr_dump(p->field, level + 1); 345 #define TYPE(bits, value) 346 #define RESERVED(bits) 356 debug(dbg, 0,
"%*sWSP PDU at %p:", level,
"", (
void *)pdu);
357 debug(dbg, 0,
"%*s unknown type %u", level,
"", pdu->
type);
360 debug(
"wap.wsp", 0,
"%*sWSP PDU dump ends.", level,
"");
void debug(const char *place, int err, const char *fmt,...)
◆ wsp_pdu_pack()
Definition at line 271 of file wsp_pdu.c.
References fixup_length_fields(), octstr_create, panic, and wsp_pdu::type.
Referenced by main(), make_connectreply_pdu(), make_resume_reply_pdu(), pack_into_push_datagram(), pack_into_result_datagram(), pack_sia(), and send_invoke().
282 #define PDU(name, docstring, fields, is_valid) \ 284 struct name *p = &pdu->u.name; \ 286 gw_assert(bitpos % 8 == 0); \ 288 #define UINT(field, docstring, bits) \ 289 octstr_set_bits(data, bitpos, (bits), p->field); \ 291 #define UINTVAR(field, docstring) \ 292 gw_assert(bitpos % 8 == 0); \ 293 octstr_append_uintvar(data, p->field); \ 294 bitpos = 8 * octstr_len(data); 295 #define OCTSTR(field, docstring, lengthfield) \ 296 gw_assert(bitpos % 8 == 0); \ 297 if (p->field != NULL) \ 298 octstr_append(data, p->field); \ 299 bitpos += 8 * octstr_len(p->field); 300 #define REST(field, docstring) \ 301 gw_assert(bitpos % 8 == 0); \ 302 if (p->field != NULL) \ 303 octstr_append(data, p->field); \ 304 bitpos += 8 * octstr_len(p->field); 305 #define TYPE(bits, value) \ 306 octstr_set_bits(data, bitpos, (bits), (value)); \ 308 #define RESERVED(bits) bitpos += (bits); 318 panic(0,
"Packing unknown WSP PDU type %ld", (
long) pdu->
type);
static void fixup_length_fields(WSP_PDU *pdu)
#define octstr_create(cstr)
◆ wsp_pdu_unpack()
Definition at line 178 of file wsp_pdu.c.
References gw_assert(), wsp_pdu::type, warning(), and wsp_pdu_type().
Referenced by client_session(), main(), main_thread(), push_client_event_handle(), and unpack_datagram().
184 pdu = gw_malloc(
sizeof(*pdu));
189 #define PDU(name, docstring, fields, is_valid) \ 191 struct name *p = &pdu->u.name; \ 193 gw_assert(bitpos % 8 == 0); \ 194 if (bitpos / 8 != octstr_len(data)) { \ 195 warning(0, "Bad length for " #name " PDU, " \ 196 "expected %ld", bitpos / 8); \ 199 warning(0, #name " PDU failed %s", #is_valid); \ 202 #define UINT(field, docstring, bits) \ 203 p->field = octstr_get_bits(data, bitpos, (bits)); \ 205 #define UINTVAR(field, docstring) \ 206 gw_assert(bitpos % 8 == 0); \ 207 p->field = octstr_get_bits(data, bitpos + 1, 7); \ 208 while (octstr_get_bits(data, bitpos, 1)) { \ 211 p->field |= octstr_get_bits(data, bitpos + 1, 7); \ 214 #define OCTSTR(field, docstring, lengthfield) \ 215 gw_assert(bitpos % 8 == 0); \ 216 p->field = octstr_copy(data, bitpos / 8, p->lengthfield); \ 217 bitpos += 8 * p->lengthfield; 218 #define REST(field, docstring) \ 219 gw_assert(bitpos % 8 == 0); \ 220 if (bitpos / 8 <= octstr_len(data)) { \ 221 p->field = octstr_copy(data, bitpos / 8, \ 222 octstr_len(data) - bitpos / 8); \ 223 bitpos = octstr_len(data) * 8; \ 225 p->field = octstr_create(""); \ 227 #define TYPE(bits, value) bitpos += (bits); 228 #define RESERVED(bits) bitpos += (bits); 238 warning(0,
"WSP PDU with unknown type %d", pdu->
type);
gw_assert(wtls_machine->packet_to_send !=NULL)
void warning(int err, const char *fmt,...)
static int wsp_pdu_type(Octstr *data)