use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct IPv4 {
#[serde(rename = "AnycastGatewayIPAddress")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub anycast_gateway_ip_address: Option<String>,
#[serde(rename = "AnycastGatewayMACAddress")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub anycast_gateway_mac_address: Option<String>,
#[serde(rename = "DHCP")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dhcp: Option<models::address_pool::v1_2_1::DHCP>,
#[serde(rename = "DNSDomainName")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dns_domain_name: Option<String>,
#[serde(rename = "DNSServer")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dns_server: Option<Vec<String>>,
#[serde(rename = "DistributeIntoUnderlayEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub distribute_into_underlay_enabled: Option<bool>,
#[serde(rename = "EBGPAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ebgp_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "FabricLinkAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fabric_link_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "GatewayIPAddress")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gateway_ip_address: Option<String>,
#[serde(rename = "HostAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub host_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "IBGPAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ibgp_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "LoopbackAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub loopback_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "ManagementAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub management_address_range: Option<models::address_pool::v1_2_1::IPv4AddressRange>,
#[serde(rename = "NTPOffsetHoursMinutes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ntp_offset_hours_minutes: Option<i64>,
#[serde(rename = "NTPServer")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ntp_server: Option<Vec<String>>,
#[serde(rename = "NTPTimezone")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ntp_timezone: Option<String>,
#[serde(rename = "NativeVLAN")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub native_vlan: Option<i64>,
#[serde(rename = "SystemMACRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub system_mac_range: Option<models::address_pool::v1_2_1::SystemMACRange>,
#[serde(rename = "VLANIdentifierAddressRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vlan_identifier_address_range: Option<models::address_pool::v1_2_1::VLANIdentifierAddressRange>,
}
impl crate::Metadata<'static> for IPv4 {
const JSON_SCHEMA: &'static str = "AddressPool.v1_2_1.json";
}