Skip to main content

push_packet_common/
lib.rs

1#![no_std]
2pub mod engine;
3
4pub const RING_BUF_NAME: &str = "PP_RING_BUF";
5pub const DEFAULT_RING_BUF_SIZE: u32 = 262144;
6
7/// Shared protocol, used for setting and executing filter rules
8#[non_exhaustive]
9#[repr(u8)]
10#[derive(Clone, Copy, Default, PartialEq, Eq, Hash)]
11pub enum Protocol {
12    Icmp = 1,
13    #[default]
14    Tcp = 6,
15    Udp = 17,
16    Icmpv6 = 58,
17}
18
19/// Shared action
20#[non_exhaustive]
21#[repr(u8)]
22#[derive(Clone, Copy, Default)]
23pub enum Action {
24    #[default]
25    Pass = 0,
26    Drop = 1,
27    Copy = 2,
28    Route = 3,
29}
30
31#[repr(u32)]
32#[derive(Clone, Copy, Debug)]
33pub enum FrameKind {
34    Eth = 0,
35    Ip = 1,
36}
37
38#[cfg(feature = "user")]
39unsafe impl aya::Pod for FrameKind {}
40
41#[repr(C)]
42#[derive(Clone, Copy)]
43pub struct CopyArgs {
44    pub take: u32,
45    pub rule_id: u32,
46    pub packet_len: u32,
47}
48
49#[repr(C)]
50#[derive(Clone, Copy)]
51pub struct RouteArgs {
52    pub rule_id: u32,
53}