|
@@ -1,6 +1,6 @@
|
|
|
mod expand;
|
|
|
|
|
|
-use expand::{Args, Map, Probe, ProbeKind};
|
|
|
+use expand::{Args, Map, Probe, ProbeKind, SkMsg, SockOps, Xdp};
|
|
|
use proc_macro::TokenStream;
|
|
|
use syn::{parse_macro_input, ItemFn, ItemStatic};
|
|
|
|
|
@@ -35,6 +35,39 @@ pub fn uretprobe(attrs: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
probe(ProbeKind::URetProbe, attrs, item)
|
|
|
}
|
|
|
|
|
|
+#[proc_macro_attribute]
|
|
|
+pub fn sock_ops(attrs: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
+ let args = parse_macro_input!(attrs as Args);
|
|
|
+ let item = parse_macro_input!(item as ItemFn);
|
|
|
+
|
|
|
+ SockOps::from_syn(args, item)
|
|
|
+ .and_then(|u| u.expand())
|
|
|
+ .unwrap_or_else(|err| err.to_compile_error())
|
|
|
+ .into()
|
|
|
+}
|
|
|
+
|
|
|
+#[proc_macro_attribute]
|
|
|
+pub fn sk_msg(attrs: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
+ let args = parse_macro_input!(attrs as Args);
|
|
|
+ let item = parse_macro_input!(item as ItemFn);
|
|
|
+
|
|
|
+ SkMsg::from_syn(args, item)
|
|
|
+ .and_then(|u| u.expand())
|
|
|
+ .unwrap_or_else(|err| err.to_compile_error())
|
|
|
+ .into()
|
|
|
+}
|
|
|
+
|
|
|
+#[proc_macro_attribute]
|
|
|
+pub fn xdp(attrs: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
+ let args = parse_macro_input!(attrs as Args);
|
|
|
+ let item = parse_macro_input!(item as ItemFn);
|
|
|
+
|
|
|
+ Xdp::from_syn(args, item)
|
|
|
+ .and_then(|u| u.expand())
|
|
|
+ .unwrap_or_else(|err| err.to_compile_error())
|
|
|
+ .into()
|
|
|
+}
|
|
|
+
|
|
|
fn probe(kind: ProbeKind, attrs: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
let args = parse_macro_input!(attrs as Args);
|
|
|
let item = parse_macro_input!(item as ItemFn);
|