diff options
author | Vadim Kochan <vadim4j@gmail.com> | 2017-06-07 22:24:52 +0300 |
---|---|---|
committer | Tobias Klauser <tklauser@distanz.ch> | 2017-06-09 15:50:06 +0200 |
commit | 78c13b71e196a107eaa4ec00bb40b062929a6a88 (patch) | |
tree | 39598c8a9bd49e1a3d13247c288c04ea0778d69d /trafgen_l3.c | |
parent | 322deaf9bae5dc87b174c4369e7d00b6bb0bf641 (diff) |
trafgen: Allow to generate packets to output pcap file
Add trafgen_dev.c module which provides generic way of
reading and writing packets to/from networking device or a pcap file.
Also allow to handle output pcap file via '-o, --out, --dev' option.
It might be useful in future for testing some link protocols which is
not easy to capture (e.g. wlan packets) w/o having some special setup.
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
[tklauser: fix whitespace issues]
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen_l3.c')
-rw-r--r-- | trafgen_l3.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/trafgen_l3.c b/trafgen_l3.c index 7c8a786..7199b89 100644 --- a/trafgen_l3.c +++ b/trafgen_l3.c @@ -35,10 +35,10 @@ static struct proto_field ipv4_fields[] = { static void ipv4_header_init(struct proto_hdr *hdr) { - const char *dev = proto_dev_get(); + struct dev_io *dev = proto_dev_get(); /* In case of tun interface we do not need to create Ethernet header */ - if (dev && device_mtu(dev) && device_type(dev) != ARPHRD_NONE) + if (dev_io_is_pcap(dev) || device_type(dev_io_name_get(dev)) != ARPHRD_NONE) proto_lower_default_add(hdr, PROTO_ETH); proto_header_fields_add(hdr, ipv4_fields, array_size(ipv4_fields)); @@ -140,10 +140,10 @@ static struct proto_field ipv6_fields[] = { static void ipv6_header_init(struct proto_hdr *hdr) { - const char *dev = proto_dev_get(); + struct dev_io *dev = proto_dev_get(); /* In case of tun interface we do not need to create Ethernet header */ - if (dev && device_mtu(dev) && device_type(dev) != ARPHRD_NONE) + if (dev_io_is_netdev(dev) && device_type(dev_io_name_get(dev)) != ARPHRD_NONE) proto_lower_default_add(hdr, PROTO_ETH); proto_header_fields_add(hdr, ipv6_fields, array_size(ipv6_fields)); |