// luwenpeng 2022/11/17
use crate::protocol::ethernet::{self};
use crate::protocol::ethernet::{EtherType, EthernetFrame};
use crate::protocol::ip::IPProtocol;
use crate::protocol::ipv4::{self, IPv4Header};
use crate::protocol::tcp::{self};
use bytes::Bytes;
use bytes::BytesMut;
use std::io;
use tokio_util::codec::Decoder;
use tokio_util::codec::Encoder;
/******************************************************************************
* Encoder/Decoder trait
******************************************************************************/
#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Default)]
pub struct PktCodec(());
impl PktCodec {
pub fn new() -> PktCodec {
PktCodec(())
}
}
fn handle_l4_over_v4(
ipv4_header: IPv4Header,
ipv4_payload: &[u8],
) -> Result