aya: rename LinkInner::FdLink to LinkInner::Fd to standardize

Renaming to implement a macro for TryFrom<link> for FdLink for various
program types

Refs: #1264

Co-authored-by: Benjamin Barzen <bbarzen@amazon.com>
reviewable/pr1264/r4
Mehnaz Yunus 4 weeks ago
parent 6314e6100e
commit 469d982a38

@ -87,7 +87,7 @@ impl Iter {
self.data self.data
.links .links
.insert(IterLink::new(PerfLinkInner::FdLink(FdLink::new(link_fd)))) .insert(IterLink::new(PerfLinkInner::Fd(FdLink::new(link_fd))))
} }
} }
@ -108,7 +108,7 @@ impl TryFrom<IterLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: IterLink) -> Result<Self, Self::Error> { fn try_from(value: IterLink) -> Result<Self, Self::Error> {
if let PerfLinkInner::FdLink(fd) = value.into_inner() { if let PerfLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -122,7 +122,7 @@ impl TryFrom<FdLink> for IterLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (BPF_LINK_TYPE_ITER as u32) { if info.type_ == (BPF_LINK_TYPE_ITER as u32) {
return Ok(Self::new(PerfLinkInner::FdLink(fd_link))); return Ok(Self::new(PerfLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }
@ -142,7 +142,7 @@ impl IterLink {
/// Converts [`IterLink`] into a [`File`] that can be used to retrieve the /// Converts [`IterLink`] into a [`File`] that can be used to retrieve the
/// outputs of the iterator program. /// outputs of the iterator program.
pub fn into_file(self) -> Result<File, LinkError> { pub fn into_file(self) -> Result<File, LinkError> {
if let PerfLinkInner::FdLink(fd) = self.into_inner() { if let PerfLinkInner::Fd(fd) = self.into_inner() {
let fd = bpf_create_iter(fd.fd.as_fd()).map_err(|io_error| { let fd = bpf_create_iter(fd.fd.as_fd()).map_err(|io_error| {
LinkError::SyscallError(SyscallError { LinkError::SyscallError(SyscallError {
call: "bpf_iter_create", call: "bpf_iter_create",

@ -131,7 +131,7 @@ impl TryFrom<KProbeLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: KProbeLink) -> Result<Self, Self::Error> { fn try_from(value: KProbeLink) -> Result<Self, Self::Error> {
if let PerfLinkInner::FdLink(fd) = value.into_inner() { if let PerfLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -145,7 +145,7 @@ impl TryFrom<FdLink> for KProbeLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_KPROBE_MULTI as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_KPROBE_MULTI as u32) {
return Ok(Self::new(PerfLinkInner::FdLink(fd_link))); return Ok(Self::new(PerfLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

@ -26,7 +26,7 @@ pub(crate) enum PerfLinkIdInner {
#[derive(Debug)] #[derive(Debug)]
pub(crate) enum PerfLinkInner { pub(crate) enum PerfLinkInner {
FdLink(FdLink), Fd(FdLink),
PerfLink(PerfLink), PerfLink(PerfLink),
} }
@ -35,14 +35,14 @@ impl Link for PerfLinkInner {
fn id(&self) -> Self::Id { fn id(&self) -> Self::Id {
match self { match self {
Self::FdLink(link) => PerfLinkIdInner::FdLinkId(link.id()), Self::Fd(link) => PerfLinkIdInner::FdLinkId(link.id()),
Self::PerfLink(link) => PerfLinkIdInner::PerfLinkId(link.id()), Self::PerfLink(link) => PerfLinkIdInner::PerfLinkId(link.id()),
} }
} }
fn detach(self) -> Result<(), ProgramError> { fn detach(self) -> Result<(), ProgramError> {
match self { match self {
Self::FdLink(link) => link.detach(), Self::Fd(link) => link.detach(),
Self::PerfLink(link) => link.detach(), Self::PerfLink(link) => link.detach(),
} }
} }
@ -101,7 +101,7 @@ pub(crate) fn perf_attach(
call: "bpf_link_create", call: "bpf_link_create",
io_error, io_error,
})?; })?;
Ok(PerfLinkInner::FdLink(FdLink::new(link_fd))) Ok(PerfLinkInner::Fd(FdLink::new(link_fd)))
} else { } else {
perf_attach_either(prog_fd, fd, None) perf_attach_either(prog_fd, fd, None)
} }

@ -192,7 +192,7 @@ impl TryFrom<PerfEventLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: PerfEventLink) -> Result<Self, Self::Error> { fn try_from(value: PerfEventLink) -> Result<Self, Self::Error> {
if let PerfLinkInner::FdLink(fd) = value.into_inner() { if let PerfLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -206,7 +206,7 @@ impl TryFrom<FdLink> for PerfEventLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_PERF_EVENT as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_PERF_EVENT as u32) {
return Ok(Self::new(PerfLinkInner::FdLink(fd_link))); return Ok(Self::new(PerfLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

@ -231,7 +231,7 @@ impl SchedClassifier {
let prog_fd = self.fd()?; let prog_fd = self.fd()?;
let prog_fd = prog_fd.as_fd(); let prog_fd = prog_fd.as_fd();
match link.into_inner() { match link.into_inner() {
TcLinkInner::FdLink(link) => { TcLinkInner::Fd(link) => {
let fd = link.fd; let fd = link.fd;
let link_fd = fd.as_fd(); let link_fd = fd.as_fd();
@ -244,7 +244,7 @@ impl SchedClassifier {
self.data self.data
.links .links
.insert(SchedClassifierLink::new(TcLinkInner::FdLink(FdLink::new( .insert(SchedClassifierLink::new(TcLinkInner::Fd(FdLink::new(
fd, fd,
)))) ))))
} }
@ -314,7 +314,7 @@ impl SchedClassifier {
self.data self.data
.links .links
.insert(SchedClassifierLink::new(TcLinkInner::FdLink(FdLink::new( .insert(SchedClassifierLink::new(TcLinkInner::Fd(FdLink::new(
link_fd, link_fd,
)))) ))))
} }
@ -414,7 +414,7 @@ pub(crate) enum TcLinkIdInner {
#[derive(Debug)] #[derive(Debug)]
pub(crate) enum TcLinkInner { pub(crate) enum TcLinkInner {
FdLink(FdLink), Fd(FdLink),
NlLink(NlLink), NlLink(NlLink),
} }
@ -423,14 +423,14 @@ impl Link for TcLinkInner {
fn id(&self) -> Self::Id { fn id(&self) -> Self::Id {
match self { match self {
Self::FdLink(link) => TcLinkIdInner::FdLinkId(link.id()), Self::Fd(link) => TcLinkIdInner::FdLinkId(link.id()),
Self::NlLink(link) => TcLinkIdInner::NlLinkId(link.id()), Self::NlLink(link) => TcLinkIdInner::NlLinkId(link.id()),
} }
} }
fn detach(self) -> Result<(), ProgramError> { fn detach(self) -> Result<(), ProgramError> {
match self { match self {
Self::FdLink(link) => link.detach(), Self::Fd(link) => link.detach(),
Self::NlLink(link) => link.detach(), Self::NlLink(link) => link.detach(),
} }
} }
@ -442,7 +442,7 @@ impl<'a> TryFrom<&'a SchedClassifierLink> for &'a FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: &'a SchedClassifierLink) -> Result<Self, Self::Error> { fn try_from(value: &'a SchedClassifierLink) -> Result<Self, Self::Error> {
if let TcLinkInner::FdLink(fd) = value.inner() { if let TcLinkInner::Fd(fd) = value.inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -454,7 +454,7 @@ impl TryFrom<SchedClassifierLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: SchedClassifierLink) -> Result<Self, Self::Error> { fn try_from(value: SchedClassifierLink) -> Result<Self, Self::Error> {
if let TcLinkInner::FdLink(fd) = value.into_inner() { if let TcLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -468,7 +468,7 @@ impl TryFrom<FdLink> for SchedClassifierLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TCX as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TCX as u32) {
return Ok(Self::new(TcLinkInner::FdLink(fd_link))); return Ok(Self::new(TcLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

@ -103,7 +103,7 @@ impl TryFrom<TracePointLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: TracePointLink) -> Result<Self, Self::Error> { fn try_from(value: TracePointLink) -> Result<Self, Self::Error> {
if let PerfLinkInner::FdLink(fd) = value.into_inner() { if let PerfLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -117,7 +117,7 @@ impl TryFrom<FdLink> for TracePointLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TRACING as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TRACING as u32) {
return Ok(Self::new(PerfLinkInner::FdLink(fd_link))); return Ok(Self::new(PerfLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

@ -224,7 +224,7 @@ impl TryFrom<UProbeLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: UProbeLink) -> Result<Self, Self::Error> { fn try_from(value: UProbeLink) -> Result<Self, Self::Error> {
if let PerfLinkInner::FdLink(fd) = value.into_inner() { if let PerfLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -238,7 +238,7 @@ impl TryFrom<FdLink> for UProbeLink {
fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> { fn try_from(fd_link: FdLink) -> Result<Self, Self::Error> {
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TRACING as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_TRACING as u32) {
return Ok(Self::new(PerfLinkInner::FdLink(fd_link))); return Ok(Self::new(PerfLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

@ -158,7 +158,7 @@ impl Xdp {
})?; })?;
self.data self.data
.links .links
.insert(XdpLink::new(XdpLinkInner::FdLink(FdLink::new(link_fd)))) .insert(XdpLink::new(XdpLinkInner::Fd(FdLink::new(link_fd))))
} else { } else {
let if_index = if_index as i32; let if_index = if_index as i32;
unsafe { netlink_set_xdp_fd(if_index, Some(prog_fd), None, flags.bits()) } unsafe { netlink_set_xdp_fd(if_index, Some(prog_fd), None, flags.bits()) }
@ -197,7 +197,7 @@ impl Xdp {
let prog_fd = self.fd()?; let prog_fd = self.fd()?;
let prog_fd = prog_fd.as_fd(); let prog_fd = prog_fd.as_fd();
match link.into_inner() { match link.into_inner() {
XdpLinkInner::FdLink(fd_link) => { XdpLinkInner::Fd(fd_link) => {
let link_fd = fd_link.fd; let link_fd = fd_link.fd;
bpf_link_update(link_fd.as_fd(), prog_fd, None, 0).map_err(|io_error| { bpf_link_update(link_fd.as_fd(), prog_fd, None, 0).map_err(|io_error| {
SyscallError { SyscallError {
@ -208,7 +208,7 @@ impl Xdp {
self.data self.data
.links .links
.insert(XdpLink::new(XdpLinkInner::FdLink(FdLink::new(link_fd)))) .insert(XdpLink::new(XdpLinkInner::Fd(FdLink::new(link_fd))))
} }
XdpLinkInner::NlLink(nl_link) => { XdpLinkInner::NlLink(nl_link) => {
let if_index = nl_link.if_index; let if_index = nl_link.if_index;
@ -280,7 +280,7 @@ pub(crate) enum XdpLinkIdInner {
#[derive(Debug)] #[derive(Debug)]
pub(crate) enum XdpLinkInner { pub(crate) enum XdpLinkInner {
FdLink(FdLink), Fd(FdLink),
NlLink(NlLink), NlLink(NlLink),
} }
@ -289,14 +289,14 @@ impl Link for XdpLinkInner {
fn id(&self) -> Self::Id { fn id(&self) -> Self::Id {
match self { match self {
Self::FdLink(link) => XdpLinkIdInner::FdLinkId(link.id()), Self::Fd(link) => XdpLinkIdInner::FdLinkId(link.id()),
Self::NlLink(link) => XdpLinkIdInner::NlLinkId(link.id()), Self::NlLink(link) => XdpLinkIdInner::NlLinkId(link.id()),
} }
} }
fn detach(self) -> Result<(), ProgramError> { fn detach(self) -> Result<(), ProgramError> {
match self { match self {
Self::FdLink(link) => link.detach(), Self::Fd(link) => link.detach(),
Self::NlLink(link) => link.detach(), Self::NlLink(link) => link.detach(),
} }
} }
@ -308,7 +308,7 @@ impl TryFrom<XdpLink> for FdLink {
type Error = LinkError; type Error = LinkError;
fn try_from(value: XdpLink) -> Result<Self, Self::Error> { fn try_from(value: XdpLink) -> Result<Self, Self::Error> {
if let XdpLinkInner::FdLink(fd) = value.into_inner() { if let XdpLinkInner::Fd(fd) = value.into_inner() {
Ok(fd) Ok(fd)
} else { } else {
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
@ -323,7 +323,7 @@ impl TryFrom<FdLink> for XdpLink {
// unwrap of fd_link.fd will not panic since it's only None when being dropped. // unwrap of fd_link.fd will not panic since it's only None when being dropped.
let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?; let info = bpf_link_get_info_by_fd(fd_link.fd.as_fd())?;
if info.type_ == (bpf_link_type::BPF_LINK_TYPE_XDP as u32) { if info.type_ == (bpf_link_type::BPF_LINK_TYPE_XDP as u32) {
return Ok(Self::new(XdpLinkInner::FdLink(fd_link))); return Ok(Self::new(XdpLinkInner::Fd(fd_link)));
} }
Err(LinkError::InvalidLink) Err(LinkError::InvalidLink)
} }

Loading…
Cancel
Save