summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trafgen.c6
-rw-r--r--trafgen_dev.c21
-rw-r--r--trafgen_dev.h4
3 files changed, 20 insertions, 11 deletions
diff --git a/trafgen.c b/trafgen.c
index 9b54399..9c5a9a6 100644
--- a/trafgen.c
+++ b/trafgen.c
@@ -977,6 +977,7 @@ static void main_loop(struct ctx *ctx, char *confname, bool slow,
fflush(stdout);
}
+ dev_io_open(ctx->dev_out);
if (dev_io_is_netdev(ctx->dev_out) && ctx->qdisc_path == false)
set_sock_qdisc_bypass(dev_io_fd_get(ctx->dev_out), ctx->verbose);
@@ -1266,12 +1267,13 @@ int main(int argc, char **argv)
xlockme();
if (ctx.pcap_in) {
- ctx.dev_in = dev_io_open(ctx.pcap_in, DEV_IO_IN);
+ ctx.dev_in = dev_io_create(ctx.pcap_in, DEV_IO_IN);
if (!ctx.dev_in)
panic("Failed to open input device\n");
+ dev_io_open(ctx.dev_in);
}
- ctx.dev_out = dev_io_open(ctx.device, DEV_IO_OUT);
+ ctx.dev_out = dev_io_create(ctx.device, DEV_IO_OUT);
if (!ctx.dev_out)
panic("Failed to open output device\n");
diff --git a/trafgen_dev.c b/trafgen_dev.c
index f65442f..489da98 100644
--- a/trafgen_dev.c
+++ b/trafgen_dev.c
@@ -242,10 +242,11 @@ static const struct dev_io_ops dev_cfg_ops = {
.close = dev_cfg_close,
};
-struct dev_io *dev_io_open(const char *name, enum dev_io_mode_t mode)
+struct dev_io *dev_io_create(const char *name, enum dev_io_mode_t mode)
{
struct dev_io *dev = xzmalloc(sizeof(struct dev_io));
+ dev->mode = mode;
if (strstr(name, ".pcap")) {
dev->name = xstrdup(name);
dev->ops = &dev_pcap_ops;
@@ -260,16 +261,20 @@ struct dev_io *dev_io_open(const char *name, enum dev_io_mode_t mode)
return NULL;
}
- if (dev->ops->open) {
- if (dev->ops->open(dev, name, mode)) {
- xfree(dev);
- return NULL;
- }
- }
-
return dev;
};
+extern void dev_io_open(struct dev_io *dev)
+{
+ bug_on(!dev);
+ bug_on(!dev->ops);
+
+ if (dev->ops->open)
+ if (dev->ops->open(dev, dev->name, dev->mode))
+ panic("Cannot open io %s mode %d\n", dev->name,
+ dev->mode);
+}
+
int dev_io_write(struct dev_io *dev, struct packet *pkt)
{
bug_on(!dev);
diff --git a/trafgen_dev.h b/trafgen_dev.h
index 80086d7..bcb88f3 100644
--- a/trafgen_dev.h
+++ b/trafgen_dev.h
@@ -24,6 +24,7 @@ struct dev_io {
uint32_t pcap_magic;
bool is_initialized;
enum pcap_mode pcap_mode;
+ enum dev_io_mode_t mode;
size_t buf_len;
uint8_t *buf;
@@ -39,7 +40,8 @@ struct dev_io_ops {
void(*close) (struct dev_io *dev);
};
-extern struct dev_io *dev_io_open(const char *name, enum dev_io_mode_t mode);
+extern struct dev_io *dev_io_create(const char *name, enum dev_io_mode_t mode);
+extern void dev_io_open(struct dev_io *dev);
extern int dev_io_write(struct dev_io *dev, struct packet *pkt);
extern struct packet *dev_io_read(struct dev_io *dev);
extern int dev_io_ifindex_get(struct dev_io *dev);
layid.h?id=9a9a7a572709487acb0d2de83b375e8fbb4f9d91'>logplain -rw-r--r--drm_dp_dual_mode_helper.h4532logplain -rw-r--r--drm_dp_helper.h30638logplain -rw-r--r--drm_dp_mst_helper.h16260logplain -rw-r--r--drm_drv.h14861logplain -rw-r--r--drm_edid.h14335logplain -rw-r--r--drm_encoder.h8160logplain -rw-r--r--drm_encoder_slave.h6583logplain -rw-r--r--drm_fb_cma_helper.h1929logplain -rw-r--r--drm_fb_helper.h15125logplain -rw-r--r--drm_fixed.h4825logplain -rw-r--r--drm_flip_work.h3071logplain -rw-r--r--drm_fourcc.h2748logplain -rw-r--r--drm_framebuffer.h9623logplain -rw-r--r--drm_gem.h8052logplain -rw-r--r--drm_gem_cma_helper.h2286logplain -rw-r--r--drm_global.h2011logplain -rw-r--r--drm_hashtab.h3139logplain -rw-r--r--drm_irq.h6323logplain -rw-r--r--drm_legacy.h6933logplain -rw-r--r--drm_mem_util.h2468logplain -rw-r--r--drm_mipi_dsi.h10327logplain -rw-r--r--drm_mm.h11462logplain -rw-r--r--drm_mode_config.h23728logplain -rw-r--r--drm_mode_object.h4911logplain -rw-r--r--drm_modes.h17078logplain -rw-r--r--drm_modeset_helper.h1576logplain -rw-r--r--drm_modeset_helper_vtables.h41180logplain -rw-r--r--drm_modeset_lock.h4241logplain -rw-r--r--drm_of.h2034logplain -rw-r--r--drm_os_linux.h2230logplain -rw-r--r--drm_panel.h7079logplain -rw-r--r--drm_pciids.h68035logplain -rw-r--r--drm_plane.h19435logplain -rw-r--r--drm_plane_helper.h3186logplain -rw-r--r--drm_print.h3232logplain -rw-r--r--drm_property.h11460logplain -rw-r--r--drm_rect.h5103logplain -rw-r--r--drm_simple_kms_helper.h4090logplain -rw-r--r--drm_sysfs.h300logplain -rw-r--r--drm_vma_manager.h7840logplain -rw-r--r--gma_drm.h1033logplain d---------i2c109logplain