pub struct ArpLayer {
pub index: LayerIndex,
}Expand description
A view into an ARP packet.
Fields§
§index: LayerIndexImplementations§
Source§impl ArpLayer
impl ArpLayer
pub const fn new(start: usize, end: usize) -> Self
pub const fn at_offset(offset: usize) -> Self
pub fn at_offset_dynamic(buf: &[u8], offset: usize) -> Result<Self, FieldError>
pub fn validate(buf: &[u8], offset: usize) -> Result<(), FieldError>
pub fn calculate_len(&self, buf: &[u8]) -> usize
pub fn hwtype(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn ptype(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn hwlen(&self, buf: &[u8]) -> Result<u8, FieldError>
pub fn plen(&self, buf: &[u8]) -> Result<u8, FieldError>
pub fn op(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn set_hwtype(&self, buf: &mut [u8], val: u16) -> Result<(), FieldError>
pub fn set_ptype(&self, buf: &mut [u8], val: u16) -> Result<(), FieldError>
pub fn set_hwlen(&self, buf: &mut [u8], val: u8) -> Result<(), FieldError>
pub fn set_plen(&self, buf: &mut [u8], val: u8) -> Result<(), FieldError>
pub fn set_op(&self, buf: &mut [u8], val: u16) -> Result<(), FieldError>
pub fn hwsrc_raw(&self, buf: &[u8]) -> Result<HardwareAddr, FieldError>
pub fn hwsrc(&self, buf: &[u8]) -> Result<MacAddress, FieldError>
pub fn psrc_raw(&self, buf: &[u8]) -> Result<ProtocolAddr, FieldError>
pub fn psrc(&self, buf: &[u8]) -> Result<Ipv4Addr, FieldError>
pub fn psrc_v6(&self, buf: &[u8]) -> Result<Ipv6Addr, FieldError>
pub fn hwdst_raw(&self, buf: &[u8]) -> Result<HardwareAddr, FieldError>
pub fn hwdst(&self, buf: &[u8]) -> Result<MacAddress, FieldError>
pub fn pdst_raw(&self, buf: &[u8]) -> Result<ProtocolAddr, FieldError>
pub fn pdst(&self, buf: &[u8]) -> Result<Ipv4Addr, FieldError>
pub fn pdst_v6(&self, buf: &[u8]) -> Result<Ipv6Addr, FieldError>
pub fn set_hwsrc( &self, buf: &mut [u8], mac: MacAddress, ) -> Result<(), FieldError>
pub fn set_hwsrc_raw( &self, buf: &mut [u8], addr: &HardwareAddr, ) -> Result<(), FieldError>
pub fn set_psrc(&self, buf: &mut [u8], ip: Ipv4Addr) -> Result<(), FieldError>
pub fn set_psrc_v6( &self, buf: &mut [u8], ip: Ipv6Addr, ) -> Result<(), FieldError>
pub fn set_psrc_raw( &self, buf: &mut [u8], addr: &ProtocolAddr, ) -> Result<(), FieldError>
pub fn set_hwdst( &self, buf: &mut [u8], mac: MacAddress, ) -> Result<(), FieldError>
pub fn set_hwdst_raw( &self, buf: &mut [u8], addr: &HardwareAddr, ) -> Result<(), FieldError>
pub fn set_pdst(&self, buf: &mut [u8], ip: Ipv4Addr) -> Result<(), FieldError>
pub fn set_pdst_v6( &self, buf: &mut [u8], ip: Ipv6Addr, ) -> Result<(), FieldError>
pub fn set_pdst_raw( &self, buf: &mut [u8], addr: &ProtocolAddr, ) -> Result<(), FieldError>
pub fn get_field( &self, buf: &[u8], name: &str, ) -> Option<Result<FieldValue, FieldError>>
pub fn set_field( &self, buf: &mut [u8], name: &str, value: FieldValue, ) -> Option<Result<(), FieldError>>
pub fn field_names() -> &'static [&'static str]
pub fn is_request(&self, buf: &[u8]) -> bool
pub fn is_reply(&self, buf: &[u8]) -> bool
pub fn is_who_has(&self, buf: &[u8]) -> bool
pub fn is_is_at(&self, buf: &[u8]) -> bool
Sourcepub fn answers(&self, buf: &[u8], other: &ArpLayer, other_buf: &[u8]) -> bool
pub fn answers(&self, buf: &[u8], other: &ArpLayer, other_buf: &[u8]) -> bool
Check if this packet answers another (for sr() matching).
Sourcepub fn extract_padding<'a>(&self, buf: &'a [u8]) -> (&'a [u8], &'a [u8])
pub fn extract_padding<'a>(&self, buf: &'a [u8]) -> (&'a [u8], &'a [u8])
Extract padding: ARP has no payload, remaining bytes are padding.
Sourcepub fn resolve_dst_mac(&self, buf: &[u8]) -> Option<MacAddress>
pub fn resolve_dst_mac(&self, buf: &[u8]) -> Option<MacAddress>
Resolve the destination MAC for this ARP packet.
pub fn header_bytes<'a>(&self, buf: &'a [u8]) -> &'a [u8] ⓘ
pub fn header_copy(&self, buf: &[u8]) -> Vec<u8> ⓘ
pub fn op_name(&self, buf: &[u8]) -> &'static str
pub fn hwtype_name(&self, buf: &[u8]) -> &'static str
Trait Implementations§
Source§impl Layer for ArpLayer
impl Layer for ArpLayer
Source§fn header_len(&self, buf: &[u8]) -> usize
fn header_len(&self, buf: &[u8]) -> usize
Get the header length for this layer
Source§fn answers(&self, buf: &[u8], other: &Self, other_buf: &[u8]) -> bool
fn answers(&self, buf: &[u8], other: &Self, other_buf: &[u8]) -> bool
Check if this packet answers another packet.
Source§fn extract_padding<'a>(&self, buf: &'a [u8]) -> (&'a [u8], &'a [u8])
fn extract_padding<'a>(&self, buf: &'a [u8]) -> (&'a [u8], &'a [u8])
Extract padding from the packet.
Source§fn field_names(&self) -> &'static [&'static str]
fn field_names(&self) -> &'static [&'static str]
Get the list of field names for this layer
Auto Trait Implementations§
impl Freeze for ArpLayer
impl RefUnwindSafe for ArpLayer
impl Send for ArpLayer
impl Sync for ArpLayer
impl Unpin for ArpLayer
impl UnsafeUnpin for ArpLayer
impl UnwindSafe for ArpLayer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more