Skip to main content

nmstate/nispor/
ipvlan.rs

1// SPDX-License-Identifier: Apache-2.0
2
3use crate::{BaseInterface, IpVlanConfig, IpVlanInterface, IpVlanMode};
4
5pub(crate) fn np_ipvlan_to_nmstate(
6    np_iface: &nispor::Iface,
7    base_iface: BaseInterface,
8) -> IpVlanInterface {
9    let ipvlan_conf =
10        np_iface
11            .ip_vlan
12            .as_ref()
13            .map(|np_ipvlan_info| IpVlanConfig {
14                mode: match &np_ipvlan_info.mode {
15                    nispor::IpVlanMode::L2 => Some(IpVlanMode::L2),
16                    nispor::IpVlanMode::L3 => Some(IpVlanMode::L3),
17                    nispor::IpVlanMode::L3S => Some(IpVlanMode::L3S),
18                    _ => {
19                        log::warn!(
20                            "Unknown supported IPVLAN mode {:?}",
21                            np_ipvlan_info.mode
22                        );
23                        Some(IpVlanMode::L3)
24                    }
25                },
26                private: Some(
27                    np_ipvlan_info.flags.contains(&nispor::IpVlanFlag::Private),
28                ),
29                vepa: Some(
30                    np_ipvlan_info.flags.contains(&nispor::IpVlanFlag::Vepa),
31                ),
32                base_iface: Some(np_ipvlan_info.base_iface.clone()),
33            });
34
35    IpVlanInterface {
36        base: base_iface,
37        ipvlan: ipvlan_conf,
38    }
39}