Struct libafl::events::llmp::LlmpEventManager [−][src]
pub struct LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static, { /* fields omitted */ }
Expand description
An EventManager
that forwards all events to other attached fuzzers on shared maps or via tcp,
using low-level message passing, crate::bolts::llmp
.
Implementations
impl<I, OT, S, SP> LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
impl<I, OT, S, SP> LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
Create a manager from a raw llmp client
Create llmp on a port If the port is not yet bound, it will act as broker Else, it will act as client.
If a client respawns, it may reuse the existing connection, previously stored by LlmpClient::to_env()
.
Describe the client event mgr’s llmp parts in a restorable fashion
pub fn existing_client_from_description(
shmem_provider: SP,
description: &LlmpClientDescription,
configuration: String
) -> Result<Self, Error>
pub fn existing_client_from_description(
shmem_provider: SP,
description: &LlmpClientDescription,
configuration: String
) -> Result<Self, Error>
Create an existing client from description
Write the config for a client EventManager
to env vars, a new client can reattach using LlmpEventManager::existing_client_from_env()
.
Trait Implementations
impl<I: Debug, OT: Debug, S: Debug, SP: Debug> Debug for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
impl<I: Debug, OT: Debug, S: Debug, SP: Debug> Debug for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
impl<I, OT, S, SP> Drop for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
impl<I, OT, S, SP> Drop for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider + 'static,
impl<I, OT, S, SP> EventFirer<I, S> for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider,
impl<I, OT, S, SP> EventFirer<I, S> for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider,
Get the configuration
fn serialize_observers<OT>(&mut self, observers: &OT) -> Result<Vec<u8>, Error> where
OT: ObserversTuple<I, S> + Serialize,
fn serialize_observers<OT>(&mut self, observers: &OT) -> Result<Vec<u8>, Error> where
OT: ObserversTuple<I, S> + Serialize,
Serialize all observers for this type and manager
impl<E, I, OT, S, SP, Z> EventProcessor<E, I, S, Z> for LlmpEventManager<I, OT, S, SP> where
SP: ShMemProvider,
E: Executor<Self, I, S, Z> + HasObservers<I, OT, S>,
I: Input,
OT: ObserversTuple<I, S> + DeserializeOwned,
Z: ExecutionProcessor<I, OT, S> + EvaluatorObservers<I, OT, S>,
impl<E, I, OT, S, SP, Z> EventProcessor<E, I, S, Z> for LlmpEventManager<I, OT, S, SP> where
SP: ShMemProvider,
E: Executor<Self, I, S, Z> + HasObservers<I, OT, S>,
I: Input,
OT: ObserversTuple<I, S> + DeserializeOwned,
Z: ExecutionProcessor<I, OT, S> + EvaluatorObservers<I, OT, S>,
Lookup for incoming events and process them. Return the number of processes events or an error Read more
fn deserialize_observers<OT>(
&mut self,
observers_buf: &[u8]
) -> Result<OT, Error> where
OT: ObserversTuple<I, S> + DeserializeOwned,
fn deserialize_observers<OT>(
&mut self,
observers_buf: &[u8]
) -> Result<OT, Error> where
OT: ObserversTuple<I, S> + DeserializeOwned,
Deserialize all observers for this type and manager
impl<I, OT, S, SP> EventRestarter<S> for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider,
impl<I, OT, S, SP> EventRestarter<S> for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S>,
SP: ShMemProvider,
The llmp client needs to wait until a broker mapped all pages, before shutting down. Otherwise, the OS may already have removed the shared maps,
impl<I, OT, S, SP> HasEventManagerId for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S> + DeserializeOwned,
SP: ShMemProvider,
impl<I, OT, S, SP> HasEventManagerId for LlmpEventManager<I, OT, S, SP> where
I: Input,
OT: ObserversTuple<I, S> + DeserializeOwned,
SP: ShMemProvider,
Gets the id assigned to this staterestorer.
impl<E, I, OT, S, SP, Z> EventManager<E, I, S, Z> for LlmpEventManager<I, OT, S, SP> where
E: Executor<Self, I, S, Z> + HasObservers<I, OT, S>,
I: Input,
OT: ObserversTuple<I, S> + DeserializeOwned,
SP: ShMemProvider,
Z: ExecutionProcessor<I, OT, S> + EvaluatorObservers<I, OT, S>,
Auto Trait Implementations
impl<I, OT, S, SP> RefUnwindSafe for LlmpEventManager<I, OT, S, SP> where
I: RefUnwindSafe,
OT: RefUnwindSafe,
S: RefUnwindSafe,
SP: RefUnwindSafe,
<SP as ShMemProvider>::Mem: RefUnwindSafe,
impl<I, OT, S, SP> !Send for LlmpEventManager<I, OT, S, SP>
impl<I, OT, S, SP> !Sync for LlmpEventManager<I, OT, S, SP>
impl<I, OT, S, SP> Unpin for LlmpEventManager<I, OT, S, SP> where
I: Unpin,
OT: Unpin,
S: Unpin,
SP: Unpin,
<SP as ShMemProvider>::Mem: Unpin,
impl<I, OT, S, SP> UnwindSafe for LlmpEventManager<I, OT, S, SP> where
I: UnwindSafe,
OT: UnwindSafe,
S: UnwindSafe,
SP: UnwindSafe,
<SP as ShMemProvider>::Mem: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
type PreprendResult = Tail
type PreprendResult = Tail
The Resulting TupleList
, of an Prepend::prepend()
call,
including the prepended entry. Read more
type Output = T
type Output = T
Should always be Self