|  |  |  | @ -3,7 +3,7 @@ use core::{ | 
		
	
		
			
				|  |  |  |  |     mem::{self, MaybeUninit}, | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | use aya_bpf_bindings::helpers::{bpf_l4_csum_replace, bpf_skb_load_bytes, bpf_skb_store_bytes}; | 
		
	
		
			
				|  |  |  |  | use aya_bpf_bindings::helpers::{bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_skb_load_bytes, bpf_skb_store_bytes}; | 
		
	
		
			
				|  |  |  |  | use aya_bpf_cty::c_long; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | use crate::{bindings::__sk_buff, BpfContext}; | 
		
	
	
		
			
				
					|  |  |  | @ -17,6 +17,11 @@ impl SkSkbContext { | 
		
	
		
			
				|  |  |  |  |         SkSkbContext { skb } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     #[inline] | 
		
	
		
			
				|  |  |  |  |     pub fn set_mark(&mut self, mark: u32) { | 
		
	
		
			
				|  |  |  |  |         unsafe { *self.skb }.mark = mark; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     #[inline] | 
		
	
		
			
				|  |  |  |  |     pub fn load<T>(&self, offset: usize) -> Result<T, c_long> { | 
		
	
		
			
				|  |  |  |  |         unsafe { | 
		
	
	
		
			
				
					|  |  |  | @ -36,7 +41,7 @@ impl SkSkbContext { | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     #[inline] | 
		
	
		
			
				|  |  |  |  |     pub fn store<T>(&self, offset: usize, v: &T) -> Result<(), c_long> { | 
		
	
		
			
				|  |  |  |  |     pub fn store<T>(&mut self, offset: usize, v: &T) -> Result<(), c_long> { | 
		
	
		
			
				|  |  |  |  |         unsafe { | 
		
	
		
			
				|  |  |  |  |             let ret = bpf_skb_store_bytes( | 
		
	
		
			
				|  |  |  |  |                 self.skb as *mut _, | 
		
	
	
		
			
				
					|  |  |  | @ -53,6 +58,24 @@ impl SkSkbContext { | 
		
	
		
			
				|  |  |  |  |         Ok(()) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     #[inline] | 
		
	
		
			
				|  |  |  |  |     pub fn l3_csum_replace( | 
		
	
		
			
				|  |  |  |  |         &self, | 
		
	
		
			
				|  |  |  |  |         offset: usize, | 
		
	
		
			
				|  |  |  |  |         from: u64, | 
		
	
		
			
				|  |  |  |  |         to: u64, | 
		
	
		
			
				|  |  |  |  |         size: u64, | 
		
	
		
			
				|  |  |  |  |     ) -> Result<(), c_long> { | 
		
	
		
			
				|  |  |  |  |         unsafe { | 
		
	
		
			
				|  |  |  |  |             let ret = bpf_l3_csum_replace(self.skb as *mut _, offset as u32, from, to, size); | 
		
	
		
			
				|  |  |  |  |             if ret < 0 { | 
		
	
		
			
				|  |  |  |  |                 return Err(ret); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         Ok(()) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     #[inline] | 
		
	
		
			
				|  |  |  |  |     pub fn l4_csum_replace( | 
		
	
		
			
				|  |  |  |  |         &self, | 
		
	
	
		
			
				
					|  |  |  | 
 |