瀏覽代碼

Address review comments

Signed-off-by: Andre Fredette <afredette@redhat.com>
Andre Fredette 2 年之前
父節點
當前提交
65f5b76
共有 1 個文件被更改,包括 16 次插入8 次删除
  1. 16 8
      aya/src/programs/tc.rs

+ 16 - 8
aya/src/programs/tc.rs

@@ -251,6 +251,7 @@ define_link_wrapper!(
 /// #
 /// # use aya::programs::tc::{SchedClassifierLink};
 /// # use aya::programs::{tc, Link, SchedClassifier, TcAttachType};
+/// # use std::mem;
 /// let tc_link_id = prog.attach("eth0", TcAttachType::Ingress)?;
 ///
 /// let tc_link = prog.take_link(tc_link_id)?;
@@ -259,9 +260,16 @@ define_link_wrapper!(
 /// let priority = tc_link.priority();
 /// let handle = tc_link.handle();
 ///
-/// // A new SchedClassifierLink can be constructed to access an existing attachment
-/// let new_tc_link = SchedClassifierLink::new("eth0", TcAttachType::Ingress, priority, handle)?;
+/// // The following call "forgets" about tc_link so that it is not detached on drop.
+///  mem::forget(tc_link);
 ///
+/// // The link can be re-instantiated and detached as shown below.
+/// let new_tc_link = SchedClassifierLink::new_tc_link(
+///     "eth0",
+///     TcAttachType::Ingress,
+///     priority,
+///     handle,
+/// )?;
 /// new_tc_link.detach()?;
 ///
 /// # Ok::<(), Error>(())
@@ -274,19 +282,19 @@ impl SchedClassifierLink {
     /// [SchedClassifier::attach], the output of the `tc filter` command or from the output of
     /// another BPF loader.
     ///
-    /// # Warnings
+    /// Note: If you create a link for a program that you do not own, detaching it may have
+    /// unintended consequences.
+    ///
+    /// # Errors
     /// - If a program is not attached with the provided parameters, calls to
     ///   [`SchedClassifierLink::detach`] will return a [`TcError::NetlinkError`]
-    /// - If you create a link for a program that you do not own, detaching it may have unintended
-    ///   consequences.
     pub fn new_tc_link(
         if_name: &str,
         attach_type: TcAttachType,
         priority: u16,
         handle: u32,
-    ) -> Result<SchedClassifierLink, ProgramError> {
-        let if_index =
-            ifindex_from_ifname(if_name).map_err(|io_error| TcError::NetlinkError { io_error })?;
+    ) -> Result<SchedClassifierLink, io::Error> {
+        let if_index = ifindex_from_ifname(if_name)?;
         Ok(SchedClassifierLink(TcLink {
             if_index: if_index as i32,
             attach_type,