1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// SPDX-License-Identifier: GPL-2.0-only
// Copyright (C) Nathaniel Bennett <me@nathanielbennett.com>

//! A library for creating, decoding and modifying packet layers.
//! 

#![allow(clippy::len_without_is_empty)]
#![allow(dead_code)]

pub mod sequence;
pub mod error;
pub mod layers;
pub mod sessions;
pub mod utils;

mod private {
    pub trait Sealed {}
}

#[cfg(test)]
mod tests {
    use crate::layers::ip::Ipv4;
    use crate::layers::tcp::{Tcp, TcpRef};
    use crate::layers::traits::*;
    use crate::layers::traits::extras::*;
    use crate::parse_layers;
    use crate::sequence::*;

    #[test]
    fn from_the_layers() {
        let bytes = b"hello".as_slice();
        let _tcp = Tcp::from_bytes(bytes);

        let tcpref = TcpRef::from_bytes_unchecked(bytes);

        let _into_tcp: Tcp = tcpref.into();

        let _layers = parse_layers!(bytes, Tcp, Tcp, Ipv4).unwrap();

        //let layers = Tcp::from_layers(bytes, [Tcp, Ipv4, Tcp]);
    }

    #[test]
    fn multi_layer_sequence() {
        let ip1 = Ipv4Sequence::new();

        let mut layered_seq = LayeredSequence::new(ip1, false)
                .add(Ipv4Sequence::new(), true)
                .add(Ipv4Sequence::new(), false)
                .add(Ipv4Sequence::new(), true);

    }
}