Просмотр исходного кода

bpf: Fix cgroup_skb macro

This commit ensures that if no attach type is provided, that we use the
cgroup/skb section. If an attach type is provided we use the
cgroup_skb/$attach_type section.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker 3 лет назад
Родитель
Сommit
fa037a88e2
1 измененных файлов с 11 добавлено и 6 удалено
  1. 11 6
      bpf/aya-bpf-macros/src/expand.rs

+ 11 - 6
bpf/aya-bpf-macros/src/expand.rs

@@ -215,14 +215,14 @@ impl SchedClassifier {
 
 pub struct CgroupSkb {
     item: ItemFn,
-    expected_attach_type: String,
+    expected_attach_type: Option<String>,
     name: Option<String>,
 }
 
 impl CgroupSkb {
     pub fn from_syn(mut args: Args, item: ItemFn) -> Result<CgroupSkb> {
         let name = pop_arg(&mut args, "name");
-        let expected_attach_type = pop_arg(&mut args, "attach").unwrap_or_else(|| "skb".to_owned());
+        let expected_attach_type = pop_arg(&mut args, "attach");
 
         Ok(CgroupSkb {
             item,
@@ -232,11 +232,16 @@ impl CgroupSkb {
     }
 
     pub fn expand(&self) -> Result<TokenStream> {
-        let attach = &self.expected_attach_type;
-        let section_name = if let Some(name) = &self.name {
-            format!("cgroup_skb/{}/{}", attach, name)
+        let section_name = if let Some(attach) = &self.expected_attach_type {
+            if let Some(name) = &self.name {
+                format!("cgroup_skb/{}/{}", attach, name)
+            } else {
+                format!("cgroup_skb/{}", attach)
+            }
+        } else if let Some(name) = &self.name {
+            format!("cgroup/skb/{}", name)
         } else {
-            format!("cgroup_skb/{}", attach)
+            ("cgroup/skb").to_owned()
         };
         let fn_name = &self.item.sig.ident;
         let item = &self.item;