pub enum EbpfMonitorError {
Unsupported {
host: &'static str,
},
FeatureDisabled,
ObjectMissing {
path: String,
},
Setns {
source: Error,
},
LoadFailed {
message: String,
},
AttachFailed {
iface: String,
message: String,
},
RingBufferOpenFailed {
message: String,
},
}Expand description
Errors returned by EbpfFlowMonitor::start.
All variants are non-fatal at the supervisor level: the per-flow
activation path (per_flow::activate_per_flow_listener) catches them,
logs a tracing::warn, and falls back to the nflog listener so the
cell still emits network_flow_decision events on the existing path.
Variants§
Unsupported
Host platform is not Linux. eBPF requires Linux kernel support.
FeatureDisabled
Linux host but the crate was built without the ebpf-aya Cargo
feature. The supervisor binary ships with the feature off by
default so macOS / non-eBPF Linux builds don’t pay for a kernel
dependency they cannot use.
ObjectMissing
The BPF object file referenced by CELLOS_EBPF_OBJECT_PATH (or
the default path) was not present on disk. Real deployments
pre-build cellos-supervisor-ebpf via cargo bpf and stage the
resulting object alongside the supervisor binary; the env var
lets operators override the location.
Setns
setns(2) into the cell’s network namespace failed. Usually
EPERM (missing CAP_SYS_ADMIN) or ENOENT (cell already torn
down).
LoadFailed
Loading the BPF object via aya failed. Surfaces verifier rejections, license issues, missing program sections, etc.
AttachFailed
Attaching the loaded program to the tap interface via
tc clsact failed. Usually ENODEV (tap iface missing) or
EEXIST (clsact qdisc collision with an operator-provisioned
qdisc on the same interface).
RingBufferOpenFailed
Opening the ring-buffer map for draining failed.
Trait Implementations§
Source§impl Debug for EbpfMonitorError
impl Debug for EbpfMonitorError
Source§impl Display for EbpfMonitorError
impl Display for EbpfMonitorError
Source§impl Error for EbpfMonitorError
impl Error for EbpfMonitorError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for EbpfMonitorError
impl !RefUnwindSafe for EbpfMonitorError
impl Send for EbpfMonitorError
impl Sync for EbpfMonitorError
impl Unpin for EbpfMonitorError
impl UnsafeUnpin for EbpfMonitorError
impl !UnwindSafe for EbpfMonitorError
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.