ext.rs 759 B

123456789101112131415161718192021222324
  1. //! ```cargo
  2. //! [dependencies]
  3. //! aya = { path = "../../../../aya" }
  4. //! ```
  5. use aya::{
  6. Bpf, BpfLoader,
  7. programs::{Extension, ProgramFd, Xdp, XdpFlags},
  8. };
  9. use std::convert::TryInto;
  10. fn main() {
  11. println!("Loading Root XDP program");
  12. let mut bpf = Bpf::load_file("main.o").unwrap();
  13. let pass: &mut Xdp = bpf.program_mut("pass").unwrap().try_into().unwrap();
  14. pass.load().unwrap();
  15. pass.attach("lo", XdpFlags::default()).unwrap();
  16. println!("Loading Extension Program");
  17. let mut bpf = BpfLoader::new().extension("drop").load_file("ext.o").unwrap();
  18. let drop_: &mut Extension = bpf.program_mut("drop").unwrap().try_into().unwrap();
  19. drop_.load(pass.fd().unwrap(), "xdp_pass").unwrap();
  20. println!("Success...");
  21. }