use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct EthernetInterface {
#[serde(rename = "@odata.context")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_context: Option<models::odata_v4::Context>,
#[serde(rename = "@odata.etag")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_etag: Option<models::odata_v4::Etag>,
#[serde(rename = "@odata.id")]
#[serde(skip_deserializing)]
pub odata_id: models::odata_v4::Id,
#[serde(rename = "@odata.type")]
#[serde(skip_deserializing)]
#[derivative(Default(value = "models::odata_v4::Type(\"#EthernetInterface.v1_10_0.EthernetInterface\".to_string())"))]
pub odata_type: models::odata_v4::Type,
#[serde(rename = "Actions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actions: Option<models::ethernet_interface::v1_10_0::Actions>,
#[serde(rename = "AutoNeg")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auto_neg: Option<bool>,
#[serde(rename = "DHCPv4")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dhc_pv_4: Option<models::ethernet_interface::v1_10_0::DHCPv4C>,
#[serde(rename = "DHCPv6")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dhc_pv_6: Option<models::ethernet_interface::v1_10_0::DHCPv6C>,
#[serde(rename = "Description")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<models::resource::Description>,
#[serde(rename = "EthernetInterfaceType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ethernet_interface_type: Option<models::ethernet_interface::v1_10_0::EthernetDeviceType>,
#[serde(rename = "FQDN")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fqdn: Option<String>,
#[serde(rename = "FullDuplex")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub full_duplex: Option<bool>,
#[serde(rename = "HostName")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub host_name: Option<String>,
#[serde(rename = "IPv4Addresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv4_addresses: Option<Vec<models::ip_addresses::IPv4Address>>,
#[serde(rename = "IPv4StaticAddresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv4_static_addresses: Option<Vec<models::ip_addresses::IPv4Address>>,
#[serde(rename = "IPv6AddressPolicyTable")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv6_address_policy_table: Option<Vec<models::ethernet_interface::v1_10_0::IPv6AddressPolicyEntry>>,
#[serde(rename = "IPv6Addresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv6_addresses: Option<Vec<models::ip_addresses::IPv6Address>>,
#[serde(rename = "IPv6DefaultGateway")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv6_default_gateway: Option<String>,
#[serde(rename = "IPv6StaticAddresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv6_static_addresses: Option<Vec<models::ip_addresses::IPv6StaticAddress>>,
#[serde(rename = "IPv6StaticDefaultGateways")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ipv6_static_default_gateways: Option<Vec<models::ip_addresses::IPv6GatewayStaticAddress>>,
#[serde(rename = "Id")]
#[serde(skip_deserializing)]
pub id: models::resource::Id,
#[serde(rename = "InterfaceEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interface_enabled: Option<bool>,
#[serde(rename = "LinkStatus")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_status: Option<models::ethernet_interface::v1_10_0::LinkStatus>,
#[serde(rename = "Links")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub links: Option<models::ethernet_interface::v1_10_0::Links>,
#[serde(rename = "MACAddress")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mac_address: Option<models::ethernet_interface::v1_10_0::MACAddress>,
#[serde(rename = "MTUSize")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mtu_size: Option<i64>,
#[serde(rename = "MaxIPv6StaticAddresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_ipv6_static_addresses: Option<i64>,
#[serde(rename = "Name")]
#[serde(skip_deserializing)]
pub name: models::resource::Name,
#[serde(rename = "NameServers")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name_servers: Option<Vec<String>>,
#[serde(rename = "Oem")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub oem: Option<models::resource::Oem>,
#[serde(rename = "PermanentMACAddress")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permanent_mac_address: Option<models::ethernet_interface::v1_10_0::MACAddress>,
#[serde(rename = "SpeedMbps")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub speed_mbps: Option<i64>,
#[serde(rename = "StatelessAddressAutoConfig")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stateless_address_auto_config: Option<models::ethernet_interface::v1_10_0::StatelessAddressAutoConfiguration>,
#[serde(rename = "StaticNameServers")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub static_name_servers: Option<Vec<String>>,
#[serde(rename = "Status")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<models::resource::Status>,
#[serde(rename = "TeamMode")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub team_mode: Option<models::ethernet_interface::v1_10_0::TeamMode>,
#[serde(rename = "UefiDevicePath")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uefi_device_path: Option<String>,
#[serde(rename = "VLAN")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vlan: Option<models::vlan_network_interface::VLAN>,
#[serde(rename = "VLANs")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vlans: Option<models::odata_v4::IdRef>,
}
impl crate::Metadata<'static> for EthernetInterface {
const JSON_SCHEMA: &'static str = "EthernetInterface.v1_10_0.json";
}