126             subdgram->
u.T_DUnitdata_Ind.user_data = 
octstr_copy(data, 0, pdu_len);
   142         warning(0, 
"WTP: Dropping unhandled datagram data:");
   183         error(1, 
"Received an erroneous PDU corresponding an event");
   199     if (
octstr_len(dgram->
u.T_DUnitdata_Ind.user_data) < 3) {
   200         debug(
"wap.wtp", 0, 
"A too short PDU received");
   212     event->u.RcvInvoke.user_data = 
   214     event->u.RcvInvoke.tcl = pdu->
u.Invoke.class;
   215     event->
u.RcvInvoke.tid = pdu->
u.Invoke.tid;
   216     event->
u.RcvInvoke.tid_new = pdu->
u.Invoke.tidnew;
   217     event->
u.RcvInvoke.rid = pdu->
u.Invoke.rid;
   218     event->
u.RcvInvoke.up_flag = pdu->
u.Invoke.uack;
   219     event->
u.RcvInvoke.no_cache_supported = 0;
   220     event->
u.RcvInvoke.version = pdu->
u.Invoke.version;
   221     event->
u.RcvInvoke.gtr = pdu->
u.Invoke.gtr;
   222     event->
u.RcvInvoke.ttr = pdu->
u.Invoke.ttr;
   233     event->u.RcvSegInvoke.user_data = 
   235     event->u.RcvSegInvoke.tid = pdu->
u.Segmented_invoke.tid;
   236     event->
u.RcvSegInvoke.rid = pdu->
u.Segmented_invoke.rid;
   237     event->
u.RcvSegInvoke.no_cache_supported = 0;
   238     event->
u.RcvSegInvoke.gtr = pdu->
u.Segmented_invoke.gtr;
   239     event->
u.RcvSegInvoke.ttr = pdu->
u.Segmented_invoke.ttr;
   240     event->
u.RcvSegInvoke.psn = pdu->
u.Segmented_invoke.psn;
   251     event->u.RcvResult.user_data = 
   253     event->u.RcvResult.tid = pdu->
u.Result.tid;
   254     event->
u.RcvResult.rid = pdu->
u.Result.rid;
   255     event->
u.RcvResult.gtr = pdu->
u.Result.gtr;
   256     event->
u.RcvResult.ttr = pdu->
u.Result.ttr;
   269     event->u.RcvAck.tid = pdu->
u.Ack.tid;
   270     event->
u.RcvAck.tid_ok = pdu->
u.Ack.tidverify;
   271     event->
u.RcvAck.rid = pdu->
u.Ack.rid;
   275     event->u.RcvAck.psn = 0;
   278     for (i = 0; i < num_tpis; i++) {
   294     event->u.RcvNegativeAck.tid = pdu->
u.Negative_ack.tid;
   295     event->
u.RcvNegativeAck.rid = pdu->
u.Negative_ack.rid;
   296     event->
u.RcvNegativeAck.nmissing = pdu->
u.Negative_ack.nmissing;
   308      event->u.RcvAbort.tid = pdu->
u.Abort.tid;
   309      event->
u.RcvAbort.abort_type = pdu->
u.Abort.abort_type;
   310      event->
u.RcvAbort.abort_reason = pdu->
u.Abort.abort_reason;
   323     event->u.RcvErrorPDU.tid = 
deduce_tid(datagram->
u.T_DUnitdata_Ind.user_data);
   324     event->u.RcvErrorPDU.addr_tuple = 
   350     data = datagram->
u.T_DUnitdata_Ind.user_data;
   353         warning(0, 
"WTP: got a truncated datagram, ignoring");
   366         error(0, 
"WTP: cannot unpack pdu, dropping packet.");
   375         event = 
unpack_invoke(pdu, datagram->
u.T_DUnitdata_Ind.addr_tuple);
   378             debug(
"wap.wtp", 0, 
"WTP: Invoke when initiator. Message was");
   384     case Segmented_invoke:
   389         event = 
unpack_result(pdu, datagram->
u.T_DUnitdata_Ind.addr_tuple);
   392             debug(
"wap.wtp", 0, 
"WTP: Result when responder. Message was");
   399         event = 
unpack_ack(pdu, datagram->
u.T_DUnitdata_Ind.addr_tuple);    
   407         event = 
unpack_abort(pdu, datagram->
u.T_DUnitdata_Ind.addr_tuple);
   412         debug(
"wap.wtp", 0, 
"WTP: Unhandled PDU type. Message was");
 void error(int err, const char *fmt,...)
 
List * wtp_unpack_wdp_datagram(WAPEvent *datagram)
 
static WAPEvent * unpack_segmented_invoke(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)
 
gw_assert(wtls_machine->packet_to_send !=NULL)
 
void gwlist_append(List *list, void *item)
 
long gwlist_len(List *list)
 
static int concatenated_message(Octstr *user_data)
 
void * gwlist_get(List *list, long pos)
 
#define INITIATOR_TID_LIMIT
 
#define octstr_copy(ostr, from, len)
 
void wap_event_dump(WAPEvent *event)
 
WAPAddrTuple * wap_addr_tuple_duplicate(WAPAddrTuple *tuple)
 
static int deduce_tid(Octstr *user_data)
 
static WAPEvent * pack_error(WAPEvent *datagram)
 
long octstr_get_bits(Octstr *ostr, long bitpos, int numbits)
 
void wap_event_assert(WAPEvent *event)
 
static WAPEvent * unpack_invoke(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)
 
void octstr_delete(Octstr *ostr1, long pos, long len)
 
static WAPEvent * unpack_wdp_datagram_real(WAPEvent *datagram)
 
int wtp_event_is_for_responder(WAPEvent *event)
 
#define octstr_duplicate(ostr)
 
static WAPEvent * unpack_ack(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)
 
#define octstr_dump(ostr, level,...)
 
WTP_PDU * wtp_pdu_unpack(Octstr *data)
 
#define wap_event_create(type)
 
void warning(int err, const char *fmt,...)
 
void octstr_destroy(Octstr *ostr)
 
WAPEvent * wap_event_duplicate(WAPEvent *event)
 
long octstr_len(const Octstr *ostr)
 
static WAPEvent * unpack_abort(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)
 
static WAPEvent * unpack_negative_ack(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)
 
static int truncated_datagram(WAPEvent *event)
 
void debug(const char *place, int err, const char *fmt,...)
 
void wtp_pdu_destroy(WTP_PDU *pdu)
 
int octstr_get_char(const Octstr *ostr, long pos)
 
alert u SEC_Terminate_Req addr_tuple
 
void wap_event_destroy(WAPEvent *event)
 
static WAPEvent * unpack_result(WTP_PDU *pdu, WAPAddrTuple *addr_tuple)