Skip to content

Commit a00cf5d

Browse files
d-e-s-odanielocfb
authored andcommitted
Remove Program::fd() method
In recent times we started using file descriptor abstractions over "raw" integers. As part of that we also relied on the AsFd trait and provided implementations for the same. Given that we implement this trait, it no longer makes sense to have a dedicated fd() method. With this change we remove it from the Program type. Signed-off-by: Daniel Müller <[email protected]>
1 parent a6975a7 commit a00cf5d

File tree

6 files changed

+25
-18
lines changed

6 files changed

+25
-18
lines changed

examples/tc_port_whitelist/src/main.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
use std::os::unix::io::AsFd as _;
2+
13
use anyhow::bail;
24
use anyhow::Result;
5+
36
use clap::Parser;
7+
48
use libbpf_rs::skel::OpenSkel;
59
use libbpf_rs::skel::SkelBuilder;
610
use libbpf_rs::MapFlags;
@@ -66,7 +70,7 @@ fn main() -> Result<()> {
6670
let progs = skel.progs();
6771
let ifidx = nix::net::if_::if_nametoindex(opts.iface.as_str())? as i32;
6872

69-
let mut tc_builder = TcHookBuilder::new(progs.handle_tc().fd());
73+
let mut tc_builder = TcHookBuilder::new(progs.handle_tc().as_fd());
7074
tc_builder
7175
.ifindex(ifidx)
7276
.replace(true)
@@ -79,7 +83,7 @@ fn main() -> Result<()> {
7983
custom.parent(TC_H_CLSACT, TC_H_MIN_INGRESS).handle(2);
8084

8185
// we can create a TcHook w/o the builder
82-
let mut destroy_all = libbpf_rs::TcHook::new(progs.handle_tc().fd());
86+
let mut destroy_all = libbpf_rs::TcHook::new(progs.handle_tc().as_fd());
8387
destroy_all
8488
.ifindex(ifidx)
8589
.attach_point(TC_EGRESS | TC_INGRESS);

examples/tproxy/src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use std::net::Ipv4Addr;
2+
use std::os::unix::io::AsFd as _;
23
use std::str::FromStr;
34
use std::sync::atomic::AtomicBool;
45
use std::sync::atomic::Ordering;
@@ -71,7 +72,7 @@ fn main() -> Result<()> {
7172
let skel = open_skel.load()?;
7273
let progs = skel.progs();
7374
// Set up and attach ingress TC hook
74-
let mut ingress = TcHookBuilder::new(progs.tproxy().fd())
75+
let mut ingress = TcHookBuilder::new(progs.tproxy().as_fd())
7576
.ifindex(opts.ifindex)
7677
.replace(true)
7778
.handle(1)

libbpf-rs/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Unreleased
1313
- Removed support for creating `Map` objects standalone (i.e. maps not created
1414
by libbpf)
1515
- Removed `Map::fd()` in favor of `Map::as_fd()`
16+
- Removed `Program::fd()` in favor of `Program::as_fd()`
1617
- Improved `btf_type_match!` macro, adding support for most of Rust's `match`
1718
capabilities
1819
- Added `skel` module exposing skeleton related traits

libbpf-rs/src/program.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -416,11 +416,6 @@ impl Program {
416416
}
417417
}
418418

419-
/// Returns a file descriptor to the underlying program.
420-
pub fn fd(&self) -> BorrowedFd {
421-
self.as_fd()
422-
}
423-
424419
/// Returns program fd by id
425420
pub fn get_fd_by_id(id: u32) -> Result<OwnedFd> {
426421
let ret = unsafe { libbpf_sys::bpf_prog_get_fd_by_id(id) };
@@ -710,7 +705,12 @@ impl Program {
710705
/// Attach a verdict/parser to a [sockmap/sockhash](https://lwn.net/Articles/731133/)
711706
pub fn attach_sockmap(&self, map_fd: i32) -> Result<()> {
712707
let err = unsafe {
713-
libbpf_sys::bpf_prog_attach(self.fd().as_raw_fd(), map_fd, self.attach_type() as u32, 0)
708+
libbpf_sys::bpf_prog_attach(
709+
self.as_fd().as_raw_fd(),
710+
map_fd,
711+
self.attach_type() as u32,
712+
0,
713+
)
714714
};
715715
util::parse_ret(err)
716716
}

libbpf-rs/tests/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1448,7 +1448,7 @@ fn test_sudo_program_get_fd_and_id() {
14481448
.prog("handle__sched_wakeup")
14491449
.expect("failed to find program");
14501450

1451-
let prog_fd = prog.fd();
1451+
let prog_fd = prog.as_fd();
14521452
let prog_id = Program::get_id_by_fd(prog_fd).expect("failed to get program id by fd");
14531453
let owned_prog_fd = Program::get_fd_by_id(prog_id).expect("failed to get program fd by id");
14541454
close(owned_prog_fd.as_raw_fd()).expect("failed to close owned program fd");

libbpf-rs/tests/test_tc.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::os::unix::io::AsFd as _;
12
use std::os::unix::io::BorrowedFd;
23

34
use serial_test::serial;
@@ -45,7 +46,7 @@ fn test_sudo_tc_basic_cycle() {
4546
bump_rlimit_mlock();
4647

4748
let obj = get_test_object("tc-unit.bpf.o");
48-
let fd = obj.prog("handle_tc").unwrap().fd();
49+
let fd = obj.prog("handle_tc").unwrap().as_fd();
4950

5051
let mut tc_builder = TcHookBuilder::new(fd);
5152
tc_builder
@@ -87,7 +88,7 @@ fn test_sudo_tc_attach_no_qdisc() {
8788
bump_rlimit_mlock();
8889

8990
let obj = get_test_object("tc-unit.bpf.o");
90-
let fd = obj.prog("handle_tc").unwrap().fd();
91+
let fd = obj.prog("handle_tc").unwrap().as_fd();
9192

9293
let mut tc_builder = TcHookBuilder::new(fd);
9394
tc_builder
@@ -112,7 +113,7 @@ fn test_sudo_tc_attach_basic() {
112113
bump_rlimit_mlock();
113114

114115
let obj = get_test_object("tc-unit.bpf.o");
115-
let fd = obj.prog("handle_tc").unwrap().fd();
116+
let fd = obj.prog("handle_tc").unwrap().as_fd();
116117

117118
let mut tc_builder = TcHookBuilder::new(fd);
118119
tc_builder
@@ -141,7 +142,7 @@ fn test_sudo_tc_attach_repeat() {
141142
bump_rlimit_mlock();
142143

143144
let obj = get_test_object("tc-unit.bpf.o");
144-
let fd = obj.prog("handle_tc").unwrap().fd();
145+
let fd = obj.prog("handle_tc").unwrap().as_fd();
145146

146147
let mut tc_builder = TcHookBuilder::new(fd);
147148
tc_builder
@@ -180,7 +181,7 @@ fn test_sudo_tc_attach_repeat() {
180181
fn test_sudo_tc_attach_custom() {
181182
bump_rlimit_mlock();
182183
let obj = get_test_object("tc-unit.bpf.o");
183-
let fd = obj.prog("handle_tc").unwrap().fd();
184+
let fd = obj.prog("handle_tc").unwrap().as_fd();
184185

185186
let mut tc_builder = TcHookBuilder::new(fd);
186187
tc_builder
@@ -233,7 +234,7 @@ fn test_sudo_tc_attach_custom() {
233234
fn test_sudo_tc_detach_basic() {
234235
bump_rlimit_mlock();
235236
let obj = get_test_object("tc-unit.bpf.o");
236-
let fd = obj.prog("handle_tc").unwrap().fd();
237+
let fd = obj.prog("handle_tc").unwrap().as_fd();
237238

238239
let mut tc_builder = TcHookBuilder::new(fd);
239240
tc_builder
@@ -280,7 +281,7 @@ fn test_sudo_tc_query() {
280281
bump_rlimit_mlock();
281282

282283
let obj = get_test_object("tc-unit.bpf.o");
283-
let fd = obj.prog("handle_tc").unwrap().fd();
284+
let fd = obj.prog("handle_tc").unwrap().as_fd();
284285

285286
let mut tc_builder = TcHookBuilder::new(fd);
286287
tc_builder
@@ -352,7 +353,7 @@ fn test_sudo_tc_double_create() {
352353
bump_rlimit_mlock();
353354

354355
let obj = get_test_object("tc-unit.bpf.o");
355-
let fd = obj.prog("handle_tc").unwrap().fd();
356+
let fd = obj.prog("handle_tc").unwrap().as_fd();
356357

357358
let mut tc_builder = TcHookBuilder::new(fd);
358359
tc_builder

0 commit comments

Comments
 (0)