|  |  |  | @ -200,20 +200,33 @@ impl SkMsg { | 
		
	
		
			
				|  |  |  |  | pub struct Xdp { | 
		
	
		
			
				|  |  |  |  |     item: ItemFn, | 
		
	
		
			
				|  |  |  |  |     name: Option<String>, | 
		
	
		
			
				|  |  |  |  |     frags: bool, | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | impl Xdp { | 
		
	
		
			
				|  |  |  |  |     pub fn from_syn(mut args: Args, item: ItemFn) -> Result<Xdp> { | 
		
	
		
			
				|  |  |  |  |         let name = name_arg(&mut args)?; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         Ok(Xdp { item, name }) | 
		
	
		
			
				|  |  |  |  |         let name = pop_arg(&mut args, "name"); | 
		
	
		
			
				|  |  |  |  |         let mut frags = false; | 
		
	
		
			
				|  |  |  |  |         if let Some(s) = pop_arg(&mut args, "frags") { | 
		
	
		
			
				|  |  |  |  |             if let Ok(m) = s.parse() { | 
		
	
		
			
				|  |  |  |  |                 frags = m | 
		
	
		
			
				|  |  |  |  |             } else { | 
		
	
		
			
				|  |  |  |  |                 return Err(Error::new_spanned( | 
		
	
		
			
				|  |  |  |  |                     "mutlibuffer", | 
		
	
		
			
				|  |  |  |  |                     "invalid value. should be 'true' or 'false'", | 
		
	
		
			
				|  |  |  |  |                 )); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         err_on_unknown_args(&args)?; | 
		
	
		
			
				|  |  |  |  |         Ok(Xdp { item, name, frags }) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     pub fn expand(&self) -> Result<TokenStream> { | 
		
	
		
			
				|  |  |  |  |         let section_prefix = if self.frags { "xdp.frags" } else { "xdp" }; | 
		
	
		
			
				|  |  |  |  |         let section_name = if let Some(name) = &self.name { | 
		
	
		
			
				|  |  |  |  |             format!("xdp/{name}") | 
		
	
		
			
				|  |  |  |  |             format!("{section_prefix}/{name}") | 
		
	
		
			
				|  |  |  |  |         } else { | 
		
	
		
			
				|  |  |  |  |             "xdp".to_owned() | 
		
	
		
			
				|  |  |  |  |             section_prefix.to_string() | 
		
	
		
			
				|  |  |  |  |         }; | 
		
	
		
			
				|  |  |  |  |         let fn_vis = &self.item.vis; | 
		
	
		
			
				|  |  |  |  |         let fn_name = &self.item.sig.ident; | 
		
	
	
		
			
				
					|  |  |  | 
 |