libsangoma  1
wanpipe_api_hdr.h
Go to the documentation of this file.
1 /******************************************************************************/
35 #ifndef __WANPIPE_API_HDR__
36 #define __WANPIPE_API_HDR__
37 
38 
39 #pragma pack(1)
40 
49 #define WAN_MAX_EVENT_SZ 64
50 #define WAN_MAX_EVENT_SZ_UNION WAN_MAX_EVENT_SZ-(sizeof(u_int8_t)*4)-(sizeof(u_int32_t)*2)
51 
60 typedef struct wp_api_event
61 {
62  u_int8_t event_type;
63  u_int8_t mode;
64  u_int8_t channel;
65  u_int8_t span;
66  u_int32_t time_stamp_sec;
67  u_int32_t time_stamp_usec;
68  union {
69  struct {
70  u_int32_t alarm;
71  } te1_alarm;
72  struct {
73  u_int8_t rbs_bits;
74  } te1_rbs;
75  struct {
76  u_int8_t state;
77  u_int8_t sig;
78  } rm_hook;
79  struct {
80  u_int8_t state;
81  } rm_ring;
82  struct {
83  u_int16_t type;
84  } rm_tone;
85  struct {
86  u_int8_t digit;
87  u_int8_t port;
88  u_int8_t type;
89  } dtmf;
90  struct {
91  u_int16_t polarity;
92  u_int16_t ohttimer;
93  u_int16_t polarity_reverse;
94  } rm_common;
95  struct {
96  int32_t gain;
97  }rm_gain;
98  struct{
99  u_int16_t status;
100  } linkstatus;
101  struct {
102  u_int32_t status;
103  } serial;
104  unsigned char reserved[WAN_MAX_EVENT_SZ_UNION];
105  };
106 
107 /***************************************************/
112 #define wp_api_event_type event_type
113 #define wp_api_event_mode mode
114 #define wp_api_event_channel channel
115 #define wp_api_event_span span
116 #define wp_api_event_alarm te1_alarm.alarm
117 #define wp_api_event_rbs_bits te1_rbs.rbs_bits
118 #define wp_api_event_hook_state rm_hook.state
119 #define wp_api_event_hook_sig rm_hook.sig
120 #define wp_api_event_ring_state rm_ring.state
121 #define wp_api_event_tone_type rm_tone.type
122 #define wp_api_event_dtmf_digit dtmf.digit
123 #define wp_api_event_dtmf_type dtmf.type
124 #define wp_api_event_dtmf_port dtmf.port
125 #define wp_api_event_ohttimer rm_common.ohttimer
126 #define wp_api_event_polarity rm_common.polarity
127 #define wp_api_event_polarity_reverse rm_common.polarity_reverse
128 #define wp_api_event_link_status linkstatus.status
129 #define wp_api_event_serial_status serial.status
130 #define wp_api_event_time_stamp_sec time_stamp_sec
131 #define wp_api_event_time_stamp_usec time_stamp_usec
132 #define wp_api_event_gain_value rm_gain.gain
134 
135 
136 /***************************************************/
155 #define WAN_MAX_HDR_SZ 64
156 #define WAN_MAX_HDR_SZ_UNION WAN_MAX_HDR_SZ-sizeof(u_int8_t)-sizeof(u_int16_t)-(sizeof(u_int32_t)*2)
157 
165 typedef struct wp_api_hdr
166 {
167  u_int8_t operation_status;
168  u_int16_t data_length;
169  u_int32_t time_stamp_sec;
170  u_int32_t time_stamp_usec;
172  union {
173  /***********************************************/
176  struct {
177  u_int16_t crc;
180  u_int32_t errors;
181  }rx_h;
182 
183  struct {
186  u_int32_t tx_idle_packets;
187  u_int32_t errors;
188  }tx_h;
189 
190  /***********************************************/
194  struct {
195  u_int8_t status;
196  }serial;
197  struct {
198  u_int8_t exception;
199  u_int8_t pf;
200  }lapb;
201  struct {
202  u_int8_t state;
203  u_int8_t address;
204  u_int16_t exception;
205  }xdlc;
206  struct {
207  u_int8_t channel;
208  u_int8_t direction;
209  }bitstrm;
210  struct {
211  u_int8_t channel;
212  u_int8_t status;
213  }aft_legacy_rbs;
214  struct {
215  u_int8_t repeat;
216  u_int8_t len;
217  u_int8_t data[8];
218  }rpt;
219  struct {
220  u_int8_t type;
221  u_int8_t force_tx;
222  u_int8_t data[8];
223  }ss7_hw;
224  u_int8_t reserved[WAN_MAX_HDR_SZ_UNION];
225  };
226 
227 
228 /***************************************************/
234 #define wp_api_hdr_operation_status operation_status
235 #define wp_api_hdr_data_length data_length
236 #define wp_api_hdr_time_stamp_sec time_stamp_sec
237 #define wp_api_hdr_time_stamp_use time_stamp_usec
238 
239 #define wp_api_legacy_rbs_channel aft_legacy_rbs.channel
240 #define wp_api_legacy_rbs_status aft_legacy_rbs.status
241 
242 #define wp_api_rx_hdr_crc rx_h.crc
243 #define wp_api_rx_hdr_error_map rx_h.crc
244 #define wp_api_rx_hdr_max_queue_length rx_h.max_rx_queue_length
245 #define wp_api_rx_hdr_number_of_frames_in_queue rx_h.current_number_of_frames_in_rx_queue
246 #define wp_api_rx_hdr_time_stamp_sec time_stamp_sec
247 #define wp_api_rx_hdr_time_stamp_use time_stamp_usec
248 #define wp_api_rx_hdr_errors rx_h.errors
249 
250 #define wp_api_tx_hdr_max_queue_length tx_h.max_tx_queue_length
251 #define wp_api_tx_hdr_number_of_frames_in_queue tx_h.current_number_of_frames_in_tx_queue
252 #define wp_api_tx_hdr_tx_idle_packets tx_h.tx_idle_packets
253 #define wp_api_tx_hdr_time_stamp_sec time_stamp_sec
254 #define wp_api_tx_hdr_time_stamp_use time_stamp_usec
255 #define wp_api_tx_hdr_errors tx_h.errors
256 
257 /***********************************************/
262 #if !defined(__WINDOWS__)
263 #define wp_api_rx_hdr_error_flag operation_status
264 #define wp_api_rx_hdr_station operation_status
265 #define wp_api_rx_hdr_time_stamp data_length
266 #endif
267 
268 #define wp_api_tx_hdr_hdlc_rpt_len rpt.len
269 #define wp_api_tx_hdr_hdlc_rpt_data rpt.data
270 #define wp_api_tx_hdr_hdlc_rpt_repeat rpt.repeat
271 
272 #define wp_api_tx_hdr_aft_ss7_type ss7_hw.type
273 #define wp_api_tx_hdr_aft_ss7_force_tx ss7_hw.force_tx
274 #define wp_api_tx_hdr_aft_ss7_data ss7_hw.data
275 
276 /* XDLC Old backdward comptabile */
277 #define wp_api_rx_hdr_xdlc_state xdlc.state
278 #define wp_api_rx_hdr_xdlc_address xdlc.address
279 #define wp_api_rx_hdr_xdlc_exception xdlc.exception
280 
281 #define wan_hdr_xdlc_state xdlc.state
282 #define wan_hdr_xdlc_address xdlc.address
283 #define wan_hdr_xdlc_exception xdlc.exception
284 
285 /* CHDLC Old backdward comptabile */
286 #define wp_api_rx_hdr_chdlc_error_flag wp_api_rx_hdr_error_flag
287 #define wp_api_rx_hdr_chdlc_time_stamp wp_api_rx_hdr_time_stamp
288 #define wp_api_rx_hdr_chdlc_time_sec time_stamp_sec
289 #define wp_api_rx_hdr_chdlc_time_usec time_stamp_usec
290 
291 #define wan_hdr_chdlc_error_flag wp_api_rx_hdr_chdlc_error_flag
292 #define wan_hdr_chdlc_time_stamp wp_api_rx_hdr_chdlc_time_stamp
293 #define wan_hdr_chdlc_time_sec wp_api_rx_hdr_chdlc_time_sec
294 #define wan_hdr_chdlc_time_usec wp_api_rx_hdr_chdlc_time_usec
295 
296 /* BITSTRM Old backdward comptabile */
297 #define wp_api_rx_hdr_bitstrm_error_flag wp_api_rx_hdr_error_flag
298 #define wp_api_rx_hdr_bitstrm_time_stamp wp_api_rx_hdr_time_stamp
299 #define wp_api_rx_hdr_bitstrm_time_sec time_stamp_sec
300 #define wp_api_rx_hdr_bitstrm_time_usec time_stamp_usec
301 #define wp_api_rx_hdr_bitstrm_channel bitstrm.channel
302 #define wp_api_rx_hdr_bitstrm_direction bitstrm.direction
303 
304 #define wan_hdr_bitstrm_error_flag wp_api_rx_hdr_bitstrm_error_flag
305 #define wan_hdr_bitstrm_time_stamp wp_api_rx_hdr_bitstrm_data_length
306 #define wan_hdr_bitstrm_time_sec wp_api_rx_hdr_bitstrm_time_sec
307 #define wan_hdr_bitstrm_time_usec wp_api_rx_hdr_bitstrm_time_usec
308 #define wan_hdr_bitstrm_channel wp_api_rx_hdr_bitstrm_channel
309 #define wan_hdr_bitstrm_direction wp_api_rx_hdr_bitstrm_direction
310 
311 /* HDLC Old backdward comptabile */
312 #define wp_api_rx_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
313 #define wp_api_rx_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
314 #define wp_api_rx_hdr_hdlc_time_sec time_stamp_sec
315 #define wp_api_rx_hdr_hdlc_time_usec time_stamp_usec
316 
317 #define wan_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
318 #define wan_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
319 
320 /* LAPBS Old backdward comptabile */
321 #define wp_api_rx_hdr_lapb_pf lapb.pf
322 #define wp_api_rx_hdr_lapb_exception lapb.exception
323 #define wp_api_rx_hdr_lapb_time_sec time_stamp_sec
324 #define wp_api_rx_hdr_lapb_time_usec time_stamp_usec
325 
326 #define wan_hdr_lapb_pf wp_api_rx_hdr_lapb_pf
327 #define wan_hdr_lapb_exception wp_api_rx_hdr_lapb_exception
328 
329 /* FR Old backdward comptabile */
330 #define wp_api_rx_hdr_fr_attr wp_api_rx_hdr_error_flag
331 #define wp_api_rx_hdr_fr_time_stamp wp_api_rx_hdr_time_stamp
332 #define wp_api_rx_hdr_fr_time_sec time_stamp_sec
333 #define wp_api_rx_hdr_fr_time_usec time_stamp_usec
334 
335 #define wan_hdr_fr_attr wp_api_rx_hdr_fr_attr
336 #define wan_hdr_fr_time_stamp wp_api_rx_hdr_fr_time_stamp
337 #define wan_hdr_fr_time_sec wp_api_rx_hdr_fr_time_sec
338 #define wan_hdr_fr_time_usec wp_api_rx_hdr_fr_time_usec
339 
340 /* SS7 Legacy Old backdward comptabile */
341 #define wp_api_rx_hdr_ss7_legacy_sio wp_api_rx_hdr_error_flag
342 #define wp_api_rx_hdr_ss7_legacy_time_stamp wp_api_rx_hdr_time_stamp
343 
344 #define wp_api_rx_hdr_event_serial_status serial.status
345 
346 } wp_api_hdr_t;
347 
348 
349 /***********************************************/
357 #define MAX_NO_DATA_BYTES_IN_FRAME 8188
358 
359 
373 typedef struct wp_api_element{
374 
378 /***************************************************/
384 #define wp_api_el_operation_status hdr.wp_api_hdr_operation_status
385 #define wp_api_el_data_length hdr.wp_api_hdr_data_length
386 #define wp_api_el_time_stamp_sec hdr.wp_api_hdr_time_stamp_sec
387 #define wp_api_el_time_stamp_use hdr.wp_api_hdr_time_stamp_use
388 
389 #define wp_api_rx_el_crc hdr.wp_api_rx_hdr_crc
390 #define wp_api_rx_el_max_queue_length hdr.wp_api_rx_hdr_max_queue_length
391 #define wp_api_rx_el_number_of_frames_in_queue hdr.wp_api_rx_hdr_number_of_frames_in_queue
392 
393 #define wp_api_tx_el_max_queue_length hdr.wp_api_tx_hdr_max_queue_length
394 #define wp_api_tx_el_number_of_frames_in_queue hdr.wp_api_tx_hdr_number_of_frames_in_queue
395 
397 
398 
399 #pragma pack()
400 
401 
402 /**************************************************************
403  Sangoma Memory descriptors - passed to/from kernel/user space
404 ***************************************************************/
405 
406 #pragma pack(1)
407 
417 typedef struct wan_iovec
418 {
419  u_int32_t iov_len;
420 
421  void * WP_POINTER_64 iov_base;
422 #ifndef __x86_64__
423  u_int32_t reserved;
424 #endif
425 }wan_iovec_t;
426 
434 #define WAN_IOVEC_LIST_LEN 5
435 typedef struct wan_iovec_list
436 {
437  wan_iovec_t iovec_list[WAN_IOVEC_LIST_LEN];
440 
448 typedef struct wan_msghdr {
449  u_int32_t msg_iovlen;
450  wan_iovec_t * WP_POINTER_64 msg_iov;
451 #ifndef __x86_64__
452  u_int32_t reserved;
453 #endif
454 }wan_msghdr_t;
455 
456 #pragma pack()
457 
458 /****************************************************************/
459 
469 typedef struct _API_POLL_STRUCT
470 {
471  unsigned char operation_status;
472  u_int32_t user_flags_bitmap;
473  u_int32_t poll_events_bitmap;
475 
476 
487 typedef enum SANG_STATUS
488 {
489 
492  /*************************************/
499  /*************************************/
507  /*************************************/
515  /*************************************/
536  /*************************************/
542  /*************************************/
547  SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR,
551  /*************************************/
557  SANG_STATUS_NO_FREE_BUFFERS,
560  /****************************************/
569 
575 #define SDLA_DECODE_SANG_STATUS(status) \
576 (abs((int)status) == SANG_STATUS_SUCCESS) ? "SANG_STATUS_SUCCESS" :\
577 (abs((int)status) == SANG_STATUS_COMMAND_ALREADY_RUNNING) ? "SANG_STATUS_COMMAND_ALREADY_RUNNING":\
578 (abs((int)status) == SANG_STATUS_BUFFER_TOO_SMALL) ? "SANG_STATUS_BUFFER_TOO_SMALL":\
579 (abs((int)status) == SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY) ? "SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY":\
580 (abs((int)status) == SANG_STATUS_FAILED_ALLOCATE_MEMORY) ? "SANG_STATUS_FAILED_ALLOCATE_MEMORY":\
581 (abs((int)status) == SANG_STATUS_INVALID_DEVICE_REQUEST) ? "SANG_STATUS_INVALID_DEVICE_REQUEST":\
582 (abs((int)status) == SANG_STATUS_INVALID_PARAMETER) ? "SANG_STATUS_INVALID_PARAMETER":\
583 (abs((int)status) == SANG_STATUS_DATA_QUEUE_EMPTY) ? "SANG_STATUS_DATA_QUEUE_EMPTY":\
584 (abs((int)status) == SANG_STATUS_DATA_QUEUE_FULL) ? "SANG_STATUS_DATA_QUEUE_FULL":\
585 (abs((int)status) == SANG_STATUS_RX_DATA_TIMEOUT) ? "SANG_STATUS_RX_DATA_TIMEOUT":\
586 (abs((int)status) == SANG_STATUS_RX_DATA_AVAILABLE) ? "SANG_STATUS_RX_DATA_AVAILABLE":\
587 (abs((int)status) == SANG_STATUS_TX_TIMEOUT) ? "SANG_STATUS_TX_TIMEOUT":\
588 (abs((int)status) == SANG_STATUS_TX_DATA_TOO_LONG) ? "SANG_STATUS_TX_DATA_TOO_LONG":\
589 (abs((int)status) == SANG_STATUS_TX_DATA_TOO_SHORT) ? "SANG_STATUS_TX_DATA_TOO_SHORT":\
590 (abs((int)status) == SANG_STATUS_LINE_DISCONNECTED) ? "SANG_STATUS_LINE_DISCONNECTED":\
591 (abs((int)status) == SANG_STATUS_LINE_CONNECTED) ? "SANG_STATUS_LINE_CONNECTED":\
592 (abs((int)status) == SANG_STATUS_PROTOCOL_DISCONNECTED) ? "SANG_STATUS_PROTOCOL_DISCONNECTED":\
593 (abs((int)status) == SANG_STATUS_PROTOCOL_CONNECTED) ? "SANG_STATUS_PROTOCOL_CONNECTED":\
594 (abs((int)status) == SANG_STATUS_GENERAL_ERROR) ? "SANG_STATUS_GENERAL_ERROR":\
595 (abs((int)status) == SANG_STATUS_DEVICE_BUSY) ? "SANG_STATUS_DEVICE_BUSY":\
596 (abs((int)status) == SANG_STATUS_INVALID_DEVICE) ? "SANG_STATUS_INVALID_DEVICE":\
597 (abs((int)status) == SANG_STATUS_IO_ERROR) ? "SANG_STATUS_IO_ERROR":\
598 (abs((int)status) == SANG_STATUS_UNSUPPORTED_FUNCTION) ? "SANG_STATUS_UNSUPPORTED_FUNCTION":\
599 (abs((int)status) == SANG_STATUS_UNSUPPORTED_PROTOCOL) ? "SANG_STATUS_UNSUPPORTED_PROTOCOL":\
600 (abs((int)status) == SANG_STATUS_DEVICE_ALREADY_EXIST) ? "SANG_STATUS_DEVICE_ALREADY_EXIST":\
601 (abs((int)status) == SANG_STATUS_DEV_INIT_INCOMPLETE) ? "SANG_STATUS_DEV_INIT_INCOMPLETE":\
602 (abs((int)status) == SANG_STATUS_API_EVENT_AVAILABLE) ? "SANG_STATUS_API_EVENT_AVAILABLE":\
603 (abs((int)status) == SANG_STATUS_REGISTRY_ERROR) ? "SANG_STATUS_REGISTRY_ERROR":\
604 (abs((int)status) == SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED) ? "SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED":\
605 (abs((int)status) == SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME) ? "SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME":\
606 (abs((int)status) == SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR) ? "SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR":\
607 (abs((int)status) == SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR) ? "SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR":\
608 (abs((int)status) == SANG_STATUS_INVALID_IRQL) ? "SANG_STATUS_INVALID_IRQL":\
609 (abs((int)status) == SANG_STATUS_NO_DATA_AVAILABLE) ? "SANG_STATUS_NO_DATA_AVAILABLE":\
610 (abs((int)status) == SANG_STATUS_IO_PENDING) ? "SANG_STATUS_IO_PENDING":\
611 (abs((int)status) == SANG_STATUS_APIPOLL_TIMEOUT) ? "SANG_STATUS_APIPOLL_TIMEOUT":\
612 (abs((int)status) == SANG_STATUS_NO_FREE_BUFFERS) ? "SANG_STATUS_NO_FREE_BUFFERS":\
613 (abs((int)status) == SANG_STATUS_OPTION_NOT_SUPPORTED) ? "SANG_STATUS_OPTION_NOT_SUPPORTED":\
614 "Status Unknown"
615 
616 #define SANG_SUCCESS(status) (status == SANG_STATUS_SUCCESS)
617 #define SANG_ERROR(status) (!SANG_SUCCESS(status))
618 
619 #if defined(__WINDOWS__)
620 #if defined(WAN_KERNEL) || defined(USE_SANGOMA_ERRNO)
621 /*
622  Cross-Platform return codes.
623  SOME of these return codes are defined in errno.h, but not ALL of them.
624 */
625 # undef EFAULT
626 # undef EBUSY
627 # undef ENODEV
628 # undef EINVAL
629 # undef EIO
630 # undef EPFNOSUPPORT
631 # undef EPROTONOSUPPORT
632 # undef ENOMEM
633 # undef EEXIST
634 # undef ENOBUFS
635 # undef EOPNOTSUPP
636 # undef ENXIO
637 # undef EAGAIN
638 # undef EFBIG
639 
640 # define ETIMEDOUT SANG_STATUS_GENERAL_ERROR
641 # define EFAULT SANG_STATUS_GENERAL_ERROR
642 # define EBUSY SANG_STATUS_DEVICE_BUSY
643 # define ENODEV SANG_STATUS_INVALID_DEVICE
644 # define EINVAL SANG_STATUS_INVALID_PARAMETER
645 # define EIO SANG_STATUS_IO_ERROR
646 # define EPFNOSUPPORT SANG_STATUS_UNSUPPORTED_FUNCTION
647 # define EPROTONOSUPPORT SANG_STATUS_UNSUPPORTED_PROTOCOL
648 # define ENOMEM SANG_STATUS_FAILED_ALLOCATE_MEMORY
649 # define EEXIST SANG_STATUS_DEVICE_ALREADY_EXIST
650 # define ENOBUFS SANG_STATUS_NO_FREE_BUFFERS /* no free tx or rx buffers */
651 # define EOPNOTSUPP SANG_STATUS_OPTION_NOT_SUPPORTED
652 # define ENXIO EFAULT
653 # define ENETDOWN SANG_STATUS_LINE_DISCONNECTED
654 # define EAGAIN SANG_STATUS_DEVICE_BUSY
655 # define EFBIG SANG_STATUS_TX_DATA_TOO_LONG
656 # define EAFNOSUPPORT SANG_STATUS_UNSUPPORTED_FUNCTION
657 #endif
658 #endif /* __WINDOWS */
659 
660 #endif/* __WANPIPE_API_HDR__ */
u_int8_t digit
u_int32_t status
SANG_STATUS
Wanpipe API Return codes.
wp_api_hdr_t hdr
u_int8_t state
u_int16_t status
enum SANG_STATUS SANG_STATUS_T
Wanpipe API Return codes.
struct wan_iovec_list wan_iovec_list_t
Fixed-length List of Memory Descriptors.
unsigned char data[MAX_NO_DATA_BYTES_IN_FRAME]
struct wp_api_hdr::@39::@43 serial
u_int8_t operation_status
u_int8_t current_number_of_frames_in_tx_queue
Memory Descriptor of a single buffer. This structure used internally by libsangoma.
unsigned char reserved[WAN_MAX_EVENT_SZ_UNION]
u_int16_t crc
u_int32_t poll_events_bitmap
u_int32_t tx_idle_packets
u_int8_t current_number_of_frames_in_rx_queue
struct _API_POLL_STRUCT API_POLL_STRUCT
Windows poll structure used to implement blocking poll for read/write/event.
struct wp_api_hdr::@39::@41 rx_h
Wanpipe API Element contains header and data.
u_int32_t msg_iovlen
u_int8_t rbs_bits
struct wp_api_element wp_api_element_t
Wanpipe API Element contains header and data.
u_int32_t user_flags_bitmap
Wanpipe API Event Structure.
u_int32_t time_stamp_usec
u_int8_t channel
Fixed-length List of Memory Descriptors.
Variable-length List of Memory Descriptors.
u_int32_t time_stamp_sec
wan_iovec_t *WP_POINTER_64 msg_iov
u_int8_t max_rx_queue_length
u_int32_t alarm
u_int32_t time_stamp_usec
struct wan_iovec wan_iovec_t
Memory Descriptor of a single buffer. This structure used internally by libsangoma.
Windows poll structure used to implement blocking poll for read/write/event.
u_int8_t max_tx_queue_length
struct wp_api_event wp_api_event_t
Wanpipe API Event Structure.
u_int32_t time_stamp_sec
u_int16_t type
struct wan_msghdr wan_msghdr_t
Variable-length List of Memory Descriptors.
Wanpipe API Header Structure.
u_int16_t data_length
unsigned char operation_status
#define MAX_NO_DATA_BYTES_IN_FRAME
Maximum tx/rx data size.
u_int8_t event_type
wan_iovec_t iovec_list[WAN_IOVEC_LIST_LEN]
u_int32_t errors
struct wp_api_hdr wp_api_hdr_t
Wanpipe API Header Structure.