Skip to main content

Module stack

Module stack 

Source
Expand description

Layer stacking support for packet composition.

This module provides the LayerStack type for composing packets using the / operator syntax: Ether() / IP() / TCP().

§Example

use stackforge_core::layer::{
    EthernetBuilder, LayerStack, LayerStackEntry, LayerKind,
    ipv4::Ipv4Builder,
    tcp::TcpBuilder,
};
use stackforge_core::layer::field::MacAddress;
use std::net::Ipv4Addr;

// Build a TCP SYN packet
let pkt = LayerStack::new()
    .push(LayerStackEntry::Ethernet(
        EthernetBuilder::new()
            .dst(MacAddress::BROADCAST)
            .src(MacAddress::new([0x00, 0x11, 0x22, 0x33, 0x44, 0x55]))
    ))
    .push(LayerStackEntry::Ipv4(
        Ipv4Builder::new()
            .src(Ipv4Addr::new(192, 168, 1, 1))
            .dst(Ipv4Addr::new(192, 168, 1, 2))
            .ttl(64)
    ))
    .push(LayerStackEntry::Tcp(
        TcpBuilder::new()
            .src_port(12345)
            .dst_port(80)
            .syn()
    ))
    .build();

Structs§

LayerStack
A stack of protocol layers that can be combined into a packet.

Enums§

LayerStackEntry
An entry in a layer stack, representing a protocol layer builder.

Traits§

IntoLayerStackEntry
Trait for types that can be converted into a LayerStackEntry.