Expand description

This crate helps writing extcap plugins for Wireshark.

See Extcap: Developer Guide also.

Quick Example

use extcap::{Extcap, ExtcapListener, ExtcapResult, ExtcapWriter, IFace};
use pcap_file::{pcap::PcapHeader, DataLink, PcapWriter};

struct HelloDump {}

impl ExtcapListener for HelloDump {
    fn capture_header(&mut self, extcap: &Extcap, ifc: &IFace) -> PcapHeader {
        PcapHeader { datalink: DataLink::USER10, ..Default::default() }
    }

    fn capture(&mut self, extcap: &Extcap, ifc: &IFace, mut pcap_writer: PcapWriter<ExtcapWriter>) -> ExtcapResult<()> {
        let pkt = b"Hello Extcap!";
        pcap_writer.write(0, 0, pkt, pkt.len() as u32);
        Ok(())
    }
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut ex = Extcap::new("hellodump");
    ex.add_interface(IFace::new("helloif"));
    ex.run(HelloDump {});
    Ok(())
}

More examples can be found in the examples directory

Structs

Control representation

Control protocol message

Control value representation

Exctcap representation

Extcap specific error

Interface representation

Argument representation

Argument value representation

Enums

Button roles

Interface toolbar Control commands

Interface toolbar Control types

Extcap steps

Possible writers for PcapWriter

Extcap Argument types

Traits

A trait for Extcap callbacks

Type Definitions

Control pipes

Packet receiver for async-api

Extcap specific result