blob: d349b27b11a07eea80e252db3e108b178bc5a6e4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/* \file libpag.h
*
* \brief IIE ZeroCopy Packet I/O Library for CNCERT
* \author Qiuwen Lu<[email protected]>
* \date 2016-09-13
*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
int pag_open();
int pag_close();
void * pag_get_frame(int sid);
int pag_get_frame_length(int sid);
void * pag_get(int sid);
void *pag_getsendbuf(int sid);
int pag_send(int pkttype, int sid, int datalen);
void pag_freesendbuf(int sid);
void *pag_getsendbuf_eth(int sid, int port);
int pag_send_eth(int sid, int eth_datalen, int port);
void pag_freesendbuf_eth(int sid, int port);
uint64_t pag_time(void *pkt);
#if 0
/* Compatible with DF dual stack system, running on line */
typedef void packet_t;
packet_t * pag_get_packet(int sid);
void * pag_get_frame_with_packet(packet_t * packet);
#define pag_get_frame(x) \
__builtin_choose_expr( \
__builtin_types_compatible_p(typeof(x), int), pag_get_frame(x) \
__builtin_choose_expr(__builtin_types_compatible_p(typeof(x), packet_t *), \
pag_get_frame_with_packet(x))) \
#endif
/* Extended Interface */
void * pag_get_frame_with_len(int sid, unsigned int * len);
#ifdef __cplusplus
}
#endif
|