aya: use enum to set verifier log level

pull/371/head
conectado 2 years ago
parent 3211646aef
commit edd80397dc
No known key found for this signature in database
GPG Key ID: 338C2256E2EB62D4

@ -194,7 +194,31 @@ pub struct BpfLoader<'a> {
globals: HashMap<&'a str, &'a [u8]>, globals: HashMap<&'a str, &'a [u8]>,
features: Features, features: Features,
extensions: HashSet<&'a str>, extensions: HashSet<&'a str>,
verifier_log_level: u32, verifier_log_level: VerifierLogLevel,
}
/// Used to set the verifier log level in [BpfLoader](BpfLoader::verifier_log_level()).
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Clone, Copy)]
pub enum VerifierLogLevel {
/// Disable all logging.
Disable = 0,
/// Sets logging to level 1.
Level1 = 1,
/// Sets logging to level 2.
Level2 = 3,
/// Only show verifier stats without any tracing.
Stats = 4,
/// Show stats along with traces corresponding to level 1.
StatsLevel1 = 5,
/// Show stats along with traces corresponding to level 2.
StatsLevel2 = 7,
} }
impl<'a> BpfLoader<'a> { impl<'a> BpfLoader<'a> {
@ -208,7 +232,7 @@ impl<'a> BpfLoader<'a> {
globals: HashMap::new(), globals: HashMap::new(),
features, features,
extensions: HashSet::new(), extensions: HashSet::new(),
verifier_log_level: 7, verifier_log_level: VerifierLogLevel::Stats,
} }
} }
@ -321,15 +345,15 @@ impl<'a> BpfLoader<'a> {
/// # Example /// # Example
/// ///
/// ```no_run /// ```no_run
/// use aya::BpfLoader; /// use aya::{BpfLoader, VerifierLogLevel};
/// ///
/// let bpf = BpfLoader::new() /// let bpf = BpfLoader::new()
/// .verifier_log_level(3) /// .verifier_log_level(VerifierLogLevel::Level1)
/// .load_file("file.o")?; /// .load_file("file.o")?;
/// # Ok::<(), aya::BpfError>(()) /// # Ok::<(), aya::BpfError>(())
/// ``` /// ```
/// ///
pub fn verifier_log_level(&mut self, level: u32) -> &mut BpfLoader<'a> { pub fn verifier_log_level(&mut self, level: VerifierLogLevel) -> &mut BpfLoader<'a> {
self.verifier_log_level = level; self.verifier_log_level = level;
self self
} }
@ -365,7 +389,7 @@ impl<'a> BpfLoader<'a> {
/// # Ok::<(), aya::BpfError>(()) /// # Ok::<(), aya::BpfError>(())
/// ``` /// ```
pub fn load(&mut self, data: &[u8]) -> Result<Bpf, BpfError> { pub fn load(&mut self, data: &[u8]) -> Result<Bpf, BpfError> {
let verifier_log_level = self.verifier_log_level; let verifier_log_level = self.verifier_log_level as u32;
let mut obj = Object::parse(data)?; let mut obj = Object::parse(data)?;
obj.patch_map_data(self.globals.clone())?; obj.patch_map_data(self.globals.clone())?;

Loading…
Cancel
Save