ipsec_parser/
ikev2_debug.rs

1use crate::ikev2::*;
2use crate::ikev2_transforms::*;
3use rusticata_macros::debug::HexSlice;
4use std::fmt;
5
6// ------------------------- ikev2_transforms.rs ------------------------------
7//
8impl<'a> fmt::Debug for IkeV2RawTransform<'a> {
9    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
10        let (tf_type, tf_id) = match self.transform_type {
11            IkeTransformType::EncryptionAlgorithm => (
12                "EncryptionAlgorithm".to_string(),
13                format!("{:?}", self.transform_id),
14            ),
15            IkeTransformType::PseudoRandomFunction => (
16                "PseudoRandomFunction".to_string(),
17                format!("{:?}", self.transform_id),
18            ),
19            IkeTransformType::IntegrityAlgorithm => (
20                "IntegrityAlgorithm".to_string(),
21                format!("{:?}", self.transform_id),
22            ),
23            IkeTransformType::DiffieHellmanGroup => (
24                "DiffieHellmanGroup".to_string(),
25                format!("{:?}", self.transform_id),
26            ),
27            IkeTransformType::ExtendedSequenceNumbers => (
28                "ExtendedSequenceNumbers".to_string(),
29                format!("{:?}", self.transform_id),
30            ),
31            _ => (
32                format!("<Unknown transform type {}>", self.transform_type.0),
33                "".to_string(),
34            ),
35        };
36        fmt.debug_struct("IkeV2RawTransform")
37            .field("last", &self.last)
38            .field("reserved1", &self.reserved1)
39            .field("transform_length", &self.transform_length)
40            .field("transform_type", &tf_type)
41            .field("reserved2", &self.reserved2)
42            .field("transform_id", &tf_id)
43            .field("attributes", &self.attributes)
44            .finish()
45    }
46}
47
48// ------------------------- ikev2.rs ------------------------------
49
50impl<'a> fmt::Debug for NoncePayload<'a> {
51    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
52        fmt.debug_struct("NoncePayload")
53            .field("nonce_data", &HexSlice(self.nonce_data))
54            .finish()
55    }
56}
57
58impl<'a> fmt::Debug for NotifyPayload<'a> {
59    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
60        fmt.debug_struct("NotifyPayload")
61            .field("protocol_id", &self.protocol_id)
62            .field("spi_size", &self.spi_size)
63            .field("notify_type", &self.notify_type)
64            .field("spi", &self.spi)
65            .field("notify_data", &self.notify_data.map(HexSlice))
66            .finish()
67    }
68}