diff options
author | Paul Holzinger <pholzing@redhat.com> | 2024-05-30 12:04:30 +0200 |
---|---|---|
committer | Paul Holzinger <pholzing@redhat.com> | 2024-05-30 12:06:54 +0200 |
commit | 8c28d20453b7cc1f4da786bfbb41d249d5939b15 (patch) | |
tree | 361aa96b97eb0bee0c6f6932b87fa8ad736e2956 /src | |
parent | 46e455907e95ac82bb1663d029ff33c8b3a692b5 (diff) |
update netlink-packet-route to 0.20.0
Includes fixes for the breaking changes:
- new macvlan/ipvlan types
- net LinkFlags bitmap instad of the old vector
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/network/core_utils.rs | 33 | ||||
-rw-r--r-- | src/network/netlink.rs | 7 | ||||
-rw-r--r-- | src/network/vlan.rs | 8 |
3 files changed, 19 insertions, 29 deletions
diff --git a/src/network/core_utils.rs b/src/network/core_utils.rs index 8638f98..34f0caf 100644 --- a/src/network/core_utils.rs +++ b/src/network/core_utils.rs @@ -3,6 +3,7 @@ use crate::network::{constants, internal_types, types}; use crate::wrap; use ipnet::IpNet; use log::debug; +use netlink_packet_route::link::{IpVlanMode, MacVlanMode}; use nix::sched; use sha2::{Digest, Sha512}; use std::collections::HashMap; @@ -19,18 +20,6 @@ use sysctl::{Sysctl, SysctlError}; use super::netlink; -pub const IPVLAN_MODE_L2: u16 = 0; -pub const IPVLAN_MODE_L3: u16 = 1; -pub const IPVLAN_MODE_L3S: u16 = 2; - -// const were removed upstream: -// https://github.com/rust-netlink/netlink-packet-route/issues/88 -pub const MACVLAN_MODE_PRIVATE: u32 = 1; -pub const MACVLAN_MODE_VEPA: u32 = 2; -pub const MACVLAN_MODE_BRIDGE: u32 = 4; -pub const MACVLAN_MODE_PASSTHRU: u32 = 8; -pub const MACVLAN_MODE_SOURCE: u32 = 16; - pub struct CoreUtils { pub networkns: String, } @@ -229,14 +218,14 @@ impl CoreUtils { Ok(result) } - pub fn get_macvlan_mode_from_string(mode: Option<&str>) -> NetavarkResult<u32> { + pub fn get_macvlan_mode_from_string(mode: Option<&str>) -> NetavarkResult<MacVlanMode> { match mode { // default to bridge when unset - None | Some("") | Some("bridge") => Ok(MACVLAN_MODE_BRIDGE), - Some("private") => Ok(MACVLAN_MODE_PRIVATE), - Some("vepa") => Ok(MACVLAN_MODE_VEPA), - Some("passthru") => Ok(MACVLAN_MODE_PASSTHRU), - Some("source") => Ok(MACVLAN_MODE_SOURCE), + None | Some("") | Some("bridge") => Ok(MacVlanMode::Bridge), + Some("private") => Ok(MacVlanMode::Private), + Some("vepa") => Ok(MacVlanMode::Vepa), + Some("passthru") => Ok(MacVlanMode::Passthrough), + Some("source") => Ok(MacVlanMode::Source), // default to bridge Some(name) => Err(NetavarkError::msg(format!( "invalid macvlan mode \"{name}\"" @@ -244,12 +233,12 @@ impl CoreUtils { } } - pub fn get_ipvlan_mode_from_string(mode: Option<&str>) -> NetavarkResult<u16> { + pub fn get_ipvlan_mode_from_string(mode: Option<&str>) -> NetavarkResult<IpVlanMode> { match mode { // default to l2 when unset - None | Some("") | Some("l2") => Ok(IPVLAN_MODE_L2), - Some("l3") => Ok(IPVLAN_MODE_L3), - Some("l3s") => Ok(IPVLAN_MODE_L3S), + None | Some("") | Some("l2") => Ok(IpVlanMode::L2), + Some("l3") => Ok(IpVlanMode::L3), + Some("l3s") => Ok(IpVlanMode::L3S), Some(name) => Err(NetavarkError::msg(format!( "invalid ipvlan mode \"{name}\"" ))), diff --git a/src/network/netlink.rs b/src/network/netlink.rs index c95a67b..0c0d6d0 100644 --- a/src/network/netlink.rs +++ b/src/network/netlink.rs @@ -15,8 +15,7 @@ use netlink_packet_core::{ }; use netlink_packet_route::{ address::AddressMessage, - link::{InfoData, InfoKind, LinkAttribute, LinkInfo}, - link::{LinkFlag, LinkMessage}, + link::{InfoData, InfoKind, LinkAttribute, LinkFlags, LinkInfo, LinkMessage}, route::{RouteAddress, RouteMessage, RouteProtocol, RouteScope, RouteType}, AddressFamily, RouteNetlinkMessage, }; @@ -395,8 +394,8 @@ impl Socket { LinkID::Name(name) => msg.attributes.push(LinkAttribute::IfName(name)), } - msg.header.flags = vec![LinkFlag::Up]; - msg.header.change_mask = vec![LinkFlag::Up]; + msg.header.flags = LinkFlags::Up; + msg.header.change_mask = LinkFlags::Up; let result = self.make_netlink_request( RouteNetlinkMessage::SetLink(msg), diff --git a/src/network/vlan.rs b/src/network/vlan.rs index 6434d94..f5b6b52 100644 --- a/src/network/vlan.rs +++ b/src/network/vlan.rs @@ -2,7 +2,9 @@ use log::{debug, error}; use std::os::fd::BorrowedFd; use std::{collections::HashMap, net::IpAddr}; -use netlink_packet_route::link::{InfoData, InfoIpVlan, InfoKind, InfoMacVlan, LinkAttribute}; +use netlink_packet_route::link::{ + InfoData, InfoIpVlan, InfoKind, InfoMacVlan, IpVlanMode, LinkAttribute, MacVlanMode, +}; use rand::distributions::{Alphanumeric, DistString}; use crate::network::macvlan_dhcp::{get_dhcp_lease, release_dhcp_lease}; @@ -30,14 +32,14 @@ enum KindData { /// static mac address mac_address: Option<Vec<u8>>, /// macvlan mode - mode: u32, + mode: MacVlanMode, // IFLA_MACVLAN_BC_CUTOFF option if set bclim: Option<i32>, }, IpVlan { /// ipvlan mode - mode: u16, + mode: IpVlanMode, }, } |