pub struct MpeDatagramSection<'a> {
pub section_syntax_indicator: bool,
pub private_indicator: bool,
pub mac_address: [u8; 6],
pub payload_scrambling_control: u8,
pub address_scrambling_control: u8,
pub llc_snap_flag: bool,
pub current_next_indicator: bool,
pub section_number: u8,
pub last_section_number: u8,
pub payload: &'a [u8],
pub checksum: [u8; 4],
}Expand description
MPE datagram_section (ETSI EN 301 192 §7.1).
The 48-bit destination MAC is scattered across the section by the wire
format (Figure 1, PDF p. 18): MAC_address_1 (the most-significant byte)
lands last, MAC_address_6 (the least-significant byte) lands first:
section byte: 3 4 8 9 10 11
MAC field: MAC_6 MAC_5 MAC_4 MAC_3 MAC_2 MAC_1
MAC byte: LSB ... ... MSBWe reassemble it into MpeDatagramSection::mac_address in network order
(MAC_1..MAC_6, most-significant first), so mac_address[0] is MAC_1
and mac_address[5] is MAC_6.
Fields§
§section_syntax_indicator: boolsection_syntax_indicator bit. When true the trailer is a computed
CRC_32; when false it is an ISO/IEC 13818-6 checksum preserved
verbatim in Self::checksum.
private_indicator: boolprivate_indicator bit (byte 1, bit 6).
mac_address: [u8; 6]Destination MAC address in network order, MAC_1 (MSB) first through
MAC_6 (LSB) last. See the struct docs for the wire scatter.
payload_scrambling_control: u82-bit payload_scrambling_control (EN 301 192 Table 4). 0 =
unscrambled; 1/2/3 = service-defined.
address_scrambling_control: u82-bit address_scrambling_control (EN 301 192 Table 5). 0 =
unscrambled; 1/2/3 = service-defined.
llc_snap_flag: boolLLC_SNAP_flag. When true, Self::payload is an LLC/SNAP-
encapsulated datagram; when false, a bare IP datagram. We keep the
payload raw either way (LLC/SNAP and IP framing are out of scope).
current_next_indicator: boolcurrent_next_indicator bit (the spec mandates 1).
section_number: u8Section index within the fragmented datagram.
last_section_number: u8Final section index of the fragmented datagram.
payload: &'a [u8]Raw payload: LLC/SNAP bytes when Self::llc_snap_flag is set, else
IP datagram bytes — plus any trailing stuffing_bytes — kept as one
borrowed slice running from byte 12 to the 4-byte trailer. We do not
parse LLC/SNAP or IP, nor split out stuffing (EN 301 192 §7.1).
checksum: [u8; 4]Verbatim trailer bytes when section_syntax_indicator == false (an
ISO/IEC 13818-6 checksum we cannot recompute). Ignored when SSI is
true, where the trailer is a computed CRC_32.
Trait Implementations§
Source§impl<'a> Clone for MpeDatagramSection<'a>
impl<'a> Clone for MpeDatagramSection<'a>
Source§fn clone(&self) -> MpeDatagramSection<'a>
fn clone(&self) -> MpeDatagramSection<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for MpeDatagramSection<'a>
impl<'a> Debug for MpeDatagramSection<'a>
Source§impl<'de: 'a, 'a> Deserialize<'de> for MpeDatagramSection<'a>
impl<'de: 'a, 'a> Deserialize<'de> for MpeDatagramSection<'a>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<'a> Eq for MpeDatagramSection<'a>
Source§impl<'a> From<MpeDatagramSection<'a>> for AnyTable<'a>
impl<'a> From<MpeDatagramSection<'a>> for AnyTable<'a>
Source§fn from(t: MpeDatagramSection<'a>) -> Self
fn from(t: MpeDatagramSection<'a>) -> Self
Source§impl<'a> Parse<'a> for MpeDatagramSection<'a>
impl<'a> Parse<'a> for MpeDatagramSection<'a>
Source§impl<'a> PartialEq for MpeDatagramSection<'a>
impl<'a> PartialEq for MpeDatagramSection<'a>
Source§fn eq(&self, other: &MpeDatagramSection<'a>) -> bool
fn eq(&self, other: &MpeDatagramSection<'a>) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for MpeDatagramSection<'_>
impl Serialize for MpeDatagramSection<'_>
Source§type Error = Error
type Error = Error
Parse impl, but need not be).Source§fn serialized_len(&self) -> usize
fn serialized_len(&self) -> usize
serialize_into will write.Source§impl<'a> Serialize for MpeDatagramSection<'a>
impl<'a> Serialize for MpeDatagramSection<'a>
impl<'a> StructuralPartialEq for MpeDatagramSection<'a>
Source§impl<'a> Table<'a> for MpeDatagramSection<'a>
impl<'a> Table<'a> for MpeDatagramSection<'a>
Source§impl<'a> TableDef<'a> for MpeDatagramSection<'a>
impl<'a> TableDef<'a> for MpeDatagramSection<'a>
Source§const TABLE_ID_RANGES: &'static [(u8, u8)]
const TABLE_ID_RANGES: &'static [(u8, u8)]
0x3E is included in DsmccSection’s range [(0x3A, 0x3F)] and is
NOT auto-dispatched to this type by the default dispatcher. Use
AnyTable::parse_as::<MpeDatagramSection> or
MpeDatagramSection::parse to obtain the typed MPE view.