ifpps: use uint32_t instead of u32
[netsniff-ng.git] / trafgen_dev.h
blob80086d7c11d524b942af54870037c83bee4e9a24
1 #ifndef TRAFGEN_DEV_H
2 #define TRAFGEN_DEV_H
4 #include <stdbool.h>
5 #include <inttypes.h>
7 #include "pcap_io.h"
9 enum dev_io_mode_t {
10 DEV_IO_IN = 1 << 0,
11 DEV_IO_OUT = 1 << 1,
14 struct dev_io_ops;
15 struct packet;
17 struct dev_io {
18 int fd;
19 char *name;
20 char *trans;
21 int ifindex;
22 int dev_type;
23 uint32_t link_type;
24 uint32_t pcap_magic;
25 bool is_initialized;
26 enum pcap_mode pcap_mode;
27 size_t buf_len;
28 uint8_t *buf;
30 const struct pcap_file_ops *pcap_ops;
31 const struct dev_io_ops *ops;
34 struct dev_io_ops {
35 int(*open) (struct dev_io *dev, const char *name, enum dev_io_mode_t mode);
36 int(*write) (struct dev_io *dev, struct packet *pkt);
37 struct packet *(*read) (struct dev_io *dev);
38 int(*set_link_type) (struct dev_io *dev, int link_type);
39 void(*close) (struct dev_io *dev);
42 extern struct dev_io *dev_io_open(const char *name, enum dev_io_mode_t mode);
43 extern int dev_io_write(struct dev_io *dev, struct packet *pkt);
44 extern struct packet *dev_io_read(struct dev_io *dev);
45 extern int dev_io_ifindex_get(struct dev_io *dev);
46 extern int dev_io_fd_get(struct dev_io *dev);
47 extern const char *dev_io_name_get(struct dev_io *dev);
48 extern int dev_io_link_type_set(struct dev_io *dev, int link_type);
49 extern bool dev_io_is_netdev(struct dev_io *dev);
50 extern bool dev_io_is_pcap(struct dev_io *dev);
51 extern void dev_io_close(struct dev_io *dev);
53 #endif /* TRAFGEN_DEV_H */