diff --git a/REFERENCE.md b/REFERENCE.md index 42295a2e..1fffe4c9 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -62,6 +62,92 @@ * [`Systemd::Capabilities`](#Systemd--Capabilities): Defines allowed capabilities * [`Systemd::CoredumpSettings`](#Systemd--CoredumpSettings): Configurations for coredump.conf * [`Systemd::Dropin`](#Systemd--Dropin): custom datatype that validates filenames/paths for valid systemd dropin files +* [`Systemd::Interface`](#Systemd--Interface): network interface definition +* [`Systemd::Interface::Link`](#Systemd--Interface--Link): interface definition +* [`Systemd::Interface::Link::Link`](#Systemd--Interface--Link--Link): interface definition +* [`Systemd::Interface::Link::Link_advertise`](#Systemd--Interface--Link--Link_advertise): interface definition +* [`Systemd::Interface::Link::Match`](#Systemd--Interface--Link--Match): interface definition +* [`Systemd::Interface::Link::Sr_iov`](#Systemd--Interface--Link--Sr_iov): interface definition +* [`Systemd::Interface::Netdev`](#Systemd--Interface--Netdev): interface netdev configs see: https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Bareudp`](#Systemd--Interface--Netdev--Bareudp): netdev BareUDP section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Batmanadvanced`](#Systemd--Interface--Netdev--Batmanadvanced): netdev BatmanAdvanced section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Bond`](#Systemd--Interface--Netdev--Bond): netdev Bond section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Bridge`](#Systemd--Interface--Netdev--Bridge): netdev Bridge section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Foooverudp`](#Systemd--Interface--Netdev--Foooverudp): netdev FooOverUDP section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Geneve`](#Systemd--Interface--Netdev--Geneve): netdev GENEVE section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Ipoib`](#Systemd--Interface--Netdev--Ipoib): netdev IPoIB section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Ipvlan`](#Systemd--Interface--Netdev--Ipvlan): netdev IPVLAN and IPVTAP section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::L2tp`](#Systemd--Interface--Netdev--L2tp): netdev L2TP section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::L2tpsession`](#Systemd--Interface--Netdev--L2tpsession): netdev L2TPSession section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Macsec`](#Systemd--Interface--Netdev--Macsec): netdev MACsec section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Macsecreceiveassociation`](#Systemd--Interface--Netdev--Macsecreceiveassociation): netdev MACsecReceiveAssociation section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Macsecreceivechannel`](#Systemd--Interface--Netdev--Macsecreceivechannel): netdev MACsecReceiveChannel section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Macsectransmitassociation`](#Systemd--Interface--Netdev--Macsectransmitassociation): netdev MACsecTransmitAssociation section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Macvlan`](#Systemd--Interface--Netdev--Macvlan): netdev MACVLAN and MACVTAP section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Match`](#Systemd--Interface--Netdev--Match): netdev match section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Netdev`](#Systemd--Interface--Netdev--Netdev): netdev NetDev section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Peer`](#Systemd--Interface--Netdev--Peer): netdev Peer section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Tun`](#Systemd--Interface--Netdev--Tun): netdev Tun and Tap section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Tunnel`](#Systemd--Interface--Netdev--Tunnel): netdev Tunnel section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Vlan`](#Systemd--Interface--Netdev--Vlan): netdev VLAN section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Vrf`](#Systemd--Interface--Netdev--Vrf): netdev VRF section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Vxcan`](#Systemd--Interface--Netdev--Vxcan): netdev VXCAN section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Vxlan`](#Systemd--Interface--Netdev--Vxlan): netdev VXLAN section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Wireguard`](#Systemd--Interface--Netdev--Wireguard): netdev WireGuard section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Wireguardpeer`](#Systemd--Interface--Netdev--Wireguardpeer): netdev WireGuard section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Wlan`](#Systemd--Interface--Netdev--Wlan): netdev WLAN section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Netdev::Xfrm`](#Systemd--Interface--Netdev--Xfrm): netdev Xfrm section see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +* [`Systemd::Interface::Network`](#Systemd--Interface--Network): interface definition see https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Address`](#Systemd--Interface--Network--Address): interface network Address section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Bfifo`](#Systemd--Interface--Network--Bfifo): interface network BFIFO section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Bridge`](#Systemd--Interface--Network--Bridge): interface network Bridge section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Bridgefdb`](#Systemd--Interface--Network--Bridgefdb): interface network BridgeFDB section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Bridgemdb`](#Systemd--Interface--Network--Bridgemdb): interface network BridgeMDB section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Bridgevlan`](#Systemd--Interface--Network--Bridgevlan): interface network BridgeVLAN section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Cake`](#Systemd--Interface--Network--Cake): interface network CAKE section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Can`](#Systemd--Interface--Network--Can): interface network CAN section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Controlleddelay`](#Systemd--Interface--Network--Controlleddelay): interface network ControlledDelay section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Deficitroundrobinscheduler`](#Systemd--Interface--Network--Deficitroundrobinscheduler): interface network DeficitRoundRobinScheduler section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network. +* [`Systemd::Interface::Network::Deficitroundrobinschedulerclass`](#Systemd--Interface--Network--Deficitroundrobinschedulerclass): interface network DeficitRoundRobinSchedulerClass section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.net +* [`Systemd::Interface::Network::Dhcpprefixdelegation`](#Systemd--Interface--Network--Dhcpprefixdelegation): interface network DHCPPrefixDelegation section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Dhcpserver`](#Systemd--Interface--Network--Dhcpserver): interface network DHCPServer section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Dhcpserverstaticlease`](#Systemd--Interface--Network--Dhcpserverstaticlease): interface network DHCPServerStaticLease section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Dhcpv4`](#Systemd--Interface--Network--Dhcpv4): interface network DHCPv4 section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Dhcpv6`](#Systemd--Interface--Network--Dhcpv6): interface network DHCPv6 section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Enhancedtransmissionselection`](#Systemd--Interface--Network--Enhancedtransmissionselection): interface network EnhancedTransmissionSelection section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.netwo +* [`Systemd::Interface::Network::Fairqueueing`](#Systemd--Interface--Network--Fairqueueing): interface network FairQueueing section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Fairqueueingcontrolleddelay`](#Systemd--Interface--Network--Fairqueueingcontrolleddelay): interface network FairQueueingControlledDelay section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network +* [`Systemd::Interface::Network::Flowqueuepie`](#Systemd--Interface--Network--Flowqueuepie): interface network FlowQueuePIE section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Genericrandomearlydetection`](#Systemd--Interface--Network--Genericrandomearlydetection): interface network GenericRandomEarlyDetection section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network +* [`Systemd::Interface::Network::Heavyhitterfilter`](#Systemd--Interface--Network--Heavyhitterfilter): interface network HeavyHitterFilter section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Hierarchytokenbucketclass`](#Systemd--Interface--Network--Hierarchytokenbucketclass): interface network HierarchyTokenBucketClass section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.h +* [`Systemd::Interface::Network::Ipoib`](#Systemd--Interface--Network--Ipoib): interface network IPoIB section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6acceptra`](#Systemd--Interface--Network--Ipv6acceptra): interface network IPv6AcceptRA section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6addresslabel`](#Systemd--Interface--Network--Ipv6addresslabel): interface network IPv6AddressLabel section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6pref64prefix`](#Systemd--Interface--Network--Ipv6pref64prefix): interface network IPv6PREF64Prefix section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6prefix`](#Systemd--Interface--Network--Ipv6prefix): interface network IPv6Prefix section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6routeprefix`](#Systemd--Interface--Network--Ipv6routeprefix): interface network IPv6RoutePrefix section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Ipv6sendra`](#Systemd--Interface--Network--Ipv6sendra): interface network IPv6SendRA section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Link`](#Systemd--Interface--Network--Link): interface network Link section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Lldp`](#Systemd--Interface--Network--Lldp): interface network LLDP section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Match`](#Systemd--Interface--Network--Match): interface network Match section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Neighbor`](#Systemd--Interface--Network--Neighbor): interface network Neighbor section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Network`](#Systemd--Interface--Network--Network): interface network Network section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Networkemulator`](#Systemd--Interface--Network--Networkemulator): interface network NetworkEmulator section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Nexthop`](#Systemd--Interface--Network--Nexthop): interface network NextHop section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Pfifo`](#Systemd--Interface--Network--Pfifo): interface network PFIFO section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Pfifofast`](#Systemd--Interface--Network--Pfifofast): interface network PFIFOFast section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Pfifoheaddrop`](#Systemd--Interface--Network--Pfifoheaddrop): interface network PFIFOHeadDrop section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Pie`](#Systemd--Interface--Network--Pie): interface network PIE section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Qdisc`](#Systemd--Interface--Network--Qdisc): interface network QDisc section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Quickfairqueueingclass`](#Systemd--Interface--Network--Quickfairqueueingclass): interface network QuickFairQueueingClass section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Route`](#Systemd--Interface--Network--Route): interface network Route section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Routingpolicyrule`](#Systemd--Interface--Network--Routingpolicyrule): interface network RoutingPolicyRule section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Sr_iov`](#Systemd--Interface--Network--Sr_iov): interface network SR-IOV section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Stochasticfairblue`](#Systemd--Interface--Network--Stochasticfairblue): interface network StochasticFairBlue section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Stochasticfairnessqueueing`](#Systemd--Interface--Network--Stochasticfairnessqueueing): interface network StochasticFairnessQueueing section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network. +* [`Systemd::Interface::Network::Tokenbucketfilter`](#Systemd--Interface--Network--Tokenbucketfilter): interface network TokenBucketFilter section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +* [`Systemd::Interface::Network::Triviallinkequalizer`](#Systemd--Interface--Network--Triviallinkequalizer): interface network TrivialLinkEqualizer section definition see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html * [`Systemd::JournalRemoteSettings`](#Systemd--JournalRemoteSettings): matches Systemd journal remote config Struct * [`Systemd::JournalUploadSettings`](#Systemd--JournalUploadSettings): matches Systemd journal upload config Struct * [`Systemd::JournaldSettings`](#Systemd--JournaldSettings): Matches Systemd journald config Struct @@ -2730,6 +2816,1991 @@ custom datatype that validates filenames/paths for valid systemd dropin files Alias of `Pattern['^[^/]+\.conf$']` +### `Systemd::Interface` + +network interface definition + +Alias of + +```puppet +Struct[{ + filename => Optional[String[1]], + network => Optional[Systemd::Interface::Network], + netdev => Optional[Systemd::Interface::Netdev], + link => Optional[Systemd::Interface::Link], +}] +``` + +### `Systemd::Interface::Link` + +interface definition + +Alias of + +```puppet +Struct[{ + 'Match' => Optional[Systemd::Interface::Link::Match], + 'Link' => Optional[Systemd::Interface::Link::Link], + 'SR-IOV' => Optional[Systemd::Interface::Link::Sr_iov], +}] +``` + +### `Systemd::Interface::Link::Link` + +interface definition + +Alias of + +```puppet +Struct[{ + 'Description' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'ImportProperty' => Optional[String[1]], + 'UnsetProperty' => Optional[String[1]], + 'Alias' => Optional[String[1]], + 'MACAddressPolicy' => Optional[Enum['persistent', 'random', 'none', '']], + 'MACAddress' => Optional[String[1]], + 'NamePolicy' => Optional[Enum[ + 'kernel', 'database', 'onboard', 'slot', + 'path', 'mac', 'keep' + ]], + 'Name' => Optional[String[1]], + 'AlternativeNamesPolicy' => Optional[String[1]], + 'AlternativeName' => Optional[String[1]], + 'TransmitQueues' => Optional[Integer[1,4096]], + 'ReceiveQueues' => Optional[Integer[1,4096]], + 'TransmitQueueLength' => Optional[Integer[0, 4294967294]], + 'MTUBytes' => Optional[Integer[1280]], + 'BitsPerSecond' => Optional[String[1]], + 'Duplex' => Optional[String[1]], + 'AutoNegotiation' => Optional[Enum['yes','no']], + 'WakeOnLan' => Optional[Enum[ + 'phy', 'unicast', 'multicast', 'broadcast', + 'arp', 'magic', 'secureon' + ]], + 'WakeOnLanPassword' => Optional[String[1]], + 'Port' => Optional[Enum['tp', 'aui', 'bnc', 'mii', 'fibre']], + 'Advertise' => Optional[Variant[ + Systemd::Interface::Link::Link_advertise, + Array[Systemd::Interface::Link::Link_advertise] + ]], + 'ReceiveChecksumOffload' => Optional[Enum['yes','no']], + 'TransmitChecksumOffload' => Optional[Enum['yes','no']], + 'TCPSegmentationOffload' => Optional[Enum['yes','no']], + 'TCP6SegmentationOffload' => Optional[Enum['yes','no']], + 'GenericSegmentationOffload' => Optional[Enum['yes','no']], + 'GenericReceiveOffload' => Optional[Enum['yes','no']], + 'LargeReceiveOffload' => Optional[Enum['yes','no']], + 'ReceivePacketSteeringCPUMask' => Optional[String[1]], + 'ReceiveVLANCTAGHardwareAcceleration' => Optional[Enum['yes','no']], + 'TransmitVLANCTAGHardwareAcceleration'=> Optional[Enum['yes','no']], + 'ReceiveVLANCTAGFilter' => Optional[Enum['yes','no']], + 'TransmitVLANSTAGHardwareAcceleration'=> Optional[Enum['yes','no']], + 'NTupleFilter' => Optional[Enum['yes','no']], + 'RxChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'TxChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'OtherChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'CombinedChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxMiniBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxJumboBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'TxBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxFlowControl' => Optional[Enum['yes','no']], + 'TxFlowControl' => Optional[Enum['yes','no']], + 'AutoNegotiationFlowControl' => Optional[Enum['yes','no']], + 'GenericSegmentOffloadMaxBytes' => Optional[String[1]], + 'GenericSegmentOffloadMaxSegments' => Optional[Integer[1, 65535]], + 'UseAdaptiveRxCoalesce' => Optional[Enum['yes','no']], + 'UseAdaptiveTxCoalesce' => Optional[Enum['yes','no']], + 'RxCoalesceSec' => Optional[Integer], + 'RxCoalesceIrqSec' => Optional[Integer], + 'RxCoalesceLowSec' => Optional[Integer], + 'RxCoalesceHighSec' => Optional[Integer], + 'TxCoalesceSec' => Optional[Integer], + 'TxCoalesceIrqSec' => Optional[Integer], + 'TxCoalesceLowSec' => Optional[Integer], + 'TxCoalesceHighSec' => Optional[Integer], + 'RxMaxCoalescedFrames' => Optional[Integer], + 'RxMaxCoalescedIrqFrames' => Optional[Integer], + 'RxMaxCoalescedLowFrames' => Optional[Integer], + 'RxMaxCoalescedHighFrames' => Optional[Integer], + 'TxMaxCoalescedFrames' => Optional[Integer], + 'TxMaxCoalescedIrqFrames' => Optional[Integer], + 'TxMaxCoalescedLowFrames' => Optional[Integer], + 'TxMaxCoalescedHighFrames' => Optional[Integer], + 'CoalescePacketRateLow' => Optional[Integer], + 'CoalescePacketRateHigh' => Optional[Integer], + 'CoalescePacketRateSampleIntervalSec' => Optional[Integer], + 'StatisticsBlockCoalesceSec' => Optional[Integer[1]], + 'MDI' => Optional[Enum['straight', 'mdi', 'crossover', 'mdi-x', 'mdix', 'auto']], + 'SR_IOVVirtualFunctions' => Optional[Integer[0, 2147483647]], +}] +``` + +### `Systemd::Interface::Link::Link_advertise` + +interface definition + +Alias of `Enum['10baset-full', '10baset1l-full', '10baset-half', '100basefx-full', '100baset-full', '100baset1-full', '100basefx-half', '100baset-half', '1000basekx-ful', '1000baset-full', '1000baset1-full', '1000basex-full', '1000baset-half', '2500baset-full', '2500basex-full', '5000baset-full', '10000baser-fec', '10000basecr-full', '10000baseer-full', '10000basekr-full', '10000basekx4-full', '10000baselr-full', '10000baselrm-full', '10000basesr-full', '10000baset-full', '20000basekr2-full', '20000basemld2-full', '25000basecr-full', '25000basekr-full', '25000basesr-full', '40000basecr4-full', '40000basekr4-full', '40000baselr4-full', '40000basesr4-full', '50000basecr-full', '50000basecr2-full', '50000basedr-full', '50000basekr-full', '50000basekr2-full', '50000baselr-er-fr-full', '50000basesr-full', '50000basesr2-full', '56000basecr4-full', '56000basekr4-full', '56000baselr4-full', '56000basesr4-full', '100000basecr-full', '100000basecr2-full', '100000basecr4-full', '100000basedr-full', '100000basedr2-full', '100000basekr-full', '100000basekr2-full', '100000basekr4-full', '100000baselr-er-fr-full', '100000baselr2-er2-fr2-full', '100000baselr4-er4-full', '100000basesr-full', '100000basesr2-full', '100000basesr4-full', '200000basecr2-full', '200000basecr4-full', '200000basedr2-full', '200000basedr4-full', '200000basekr2-full', '200000basekr4-full', '200000baselr2-er2-fr2-full', '200000baselr4-er4-fr4-full', '200000basesr2-full', '200000basesr4-full', '400000basecr4-full', '400000basecr8-full', '400000basedr4-full', '400000basedr8-full', '400000basekr4-full', '400000basekr8-full', '400000baselr4-er4-fr4-full', '400000baselr8-er8-fr8-full', '400000basesr4-full', '400000basesr8-full', '800000basecr8-full', '800000basedr8-2-full', '800000basedr8-full', '800000basekr8-full', '800000basesr8-full', '800000basevr8-full', 'asym-pause', 'aui', 'autonegotiation', 'backplane', 'bnc', 'fec-baser', 'fec-llrs', 'fec-none', 'fec-rs', 'fibre', 'mii', 'pause', 'tp']` + +### `Systemd::Interface::Link::Match` + +interface definition + +Alias of + +```puppet +Struct[{ + 'Name' => Optional[String[1]], + 'MACAddress' => Optional[String[1]], + 'PermanentMACAddress' => Optional[String[1]], + 'Path' => Optional[String[1]], + 'Driver' => Optional[String[1]], + 'Type' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'OriginalName' => Optional[String[1]], + 'SSID' => Optional[String[1]], + 'BSSID' => Optional[String[1]], + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Link::Sr_iov` + +interface definition + +Alias of + +```puppet +Struct[{ + 'VirtualFunction' => Optional[Integer[0,2147483646]], + 'VLANId' => Optional[Integer[1,4095]], + 'QualityOfService' => Optional[Integer[1,4294967294]], + 'VLANProtocol' => Optional[Enum['802.1Q', '802.1ad']], + 'MACSpoofCheck' => Optional[Enum['yes','no']], + 'QueryReceiveSideScaling' => Optional[Enum['yes','no']], + 'Trust' => Optional[Enum['yes','no']], + 'LinkState' => Optional[Enum['yes','no','auto']], + 'MACAddress' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev` + +interface netdev configs +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Match' => Optional[Systemd::Interface::Netdev::Match], + 'NetDev' => Optional[Systemd::Interface::Netdev::Netdev], + 'Bridge' => Optional[Systemd::Interface::Netdev::Bridge], + 'Vlan' => Optional[Systemd::Interface::Netdev::Vlan], + 'MACVLAN' => Optional[Systemd::Interface::Netdev::Macvlan], + 'MACVTAP' => Optional[Systemd::Interface::Netdev::Macvlan], + 'IPVLAN' => Optional[Systemd::Interface::Netdev::Ipvlan], + 'IPVTAP' => Optional[Systemd::Interface::Netdev::Ipvlan], + 'VXLAN' => Optional[Systemd::Interface::Netdev::Vxlan], + 'GENEVE' => Optional[Systemd::Interface::Netdev::Geneve], + 'BareUDP' => Optional[Systemd::Interface::Netdev::Bareudp], + 'L2TP' => Optional[Systemd::Interface::Netdev::L2tp], + 'L2TPSession' => Optional[Systemd::Interface::Netdev::L2tpsession], + 'MACsec' => Optional[Systemd::Interface::Netdev::Macsec], + 'MACsecReceiveChannel' => Optional[Systemd::Interface::Netdev::Macsecreceivechannel], + 'MACsecTransmitAssociation' => Optional[Systemd::Interface::Netdev::Macsectransmitassociation], + 'MACsecReceiveAssociation' => Optional[Systemd::Interface::Netdev::Macsecreceiveassociation], + 'Tunnel' => Optional[Systemd::Interface::Netdev::Tunnel], + 'FooOverUDP' => Optional[Systemd::Interface::Netdev::Foooverudp], + 'Peer' => Optional[Systemd::Interface::Netdev::Peer], + 'VXCAN' => Optional[Systemd::Interface::Netdev::Vxcan], + 'Tun' => Optional[Systemd::Interface::Netdev::Tun], + 'Tap' => Optional[Systemd::Interface::Netdev::Tun], + 'WireGuard' => Optional[Systemd::Interface::Netdev::Wireguard], + 'WireGuardPeer' => Optional[Systemd::Interface::Netdev::Wireguardpeer], + 'Bond' => Optional[Systemd::Interface::Netdev::Bond], + 'Xfrm' => Optional[Systemd::Interface::Netdev::Xfrm], + 'VRF' => Optional[Systemd::Interface::Netdev::Vrf], + 'BatmanAdvanced' => Optional[Systemd::Interface::Netdev::Batmanadvanced], + 'IPoIB' => Optional[Systemd::Interface::Netdev::Ipoib], + 'WLAN' => Optional[Systemd::Interface::Netdev::Wlan], +}] +``` + +### `Systemd::Interface::Netdev::Bareudp` + +netdev BareUDP section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'DestinationPort' => Integer[1, 65535], + 'EtherType' => Enum['ipv4', 'ipv6', 'mpls-uc', 'mpls-mc'], +}] +``` + +### `Systemd::Interface::Netdev::Batmanadvanced` + +netdev BatmanAdvanced section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'GatewayMode' => Optional[Enum['off', 'server', 'client']], + 'Aggregation' => Optional[Enum['yes','no']], + 'BridgeLoopAvoidance' => Optional[Enum['yes','no']], + 'DistributedArpTable' => Optional[Enum['yes','no']], + 'Fragmentation' => Optional[Enum['yes','no']], + 'HopPenalty' => Optional[Integer[0,255]], + 'OriginatorIntervalSec' => Optional[String[1]], + 'GatewayBandwidthDown' => Optional[String[1]], + 'GatewayBandwidthUp' => Optional[String[1]], + 'RoutingAlgorithm' => Optional[Enum['batman-v', 'batman-iv']], +}] +``` + +### `Systemd::Interface::Netdev::Bond` + +netdev Bond section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Mode' => Optional[Enum[ + 'balance-rr', 'active-backup', 'balance-xor', + 'broadcast', '802.3ad', 'balance-tlb', 'balance-alb' + ]], + 'TransmitHashPolicy' => Optional[Enum['layer2', 'layer3+4', 'layer2+3', 'encap2+3', 'encap3+4']], + 'LACPTransmitRate' => Optional[Enum['slow','fast']], + 'MIIMonitorSec' => Optional[Integer], + 'PeerNotifyDelaySec' => Optional[Integer[0,300]], + 'UpDelaySec' => Optional[Integer[0]], + 'DownDelaySec' => Optional[Integer[0]], + 'LearnPacketIntervalSec' => Optional[Integer[1]], + 'AdSelect' => Optional[Enum['stable', 'bandwidth', 'count']], + 'AdActorSystemPriority' => Optional[Integer[1,65535]], + 'AdUserPortKey' => Optional[Integer[1,1023]], + 'AdActorSystem' => Optional[String[1]], + 'FailOverMACPolicy' => Optional[Enum['none', 'active', 'follow']], + 'ARPValidate' => Optional[Enum['none', 'active', 'backup', 'all']], + 'ARPIntervalSec' => Optional[String[1]], + 'ARPIPTargets' => Optional[String[1]], + 'ARPAllTargets' => Optional[Enum['any','all']], + 'PrimaryReselectPolicy' => Optional[Enum['alwayas', 'better', 'failure']], + 'ResendIGMP' => Optional[Integer[0,255]], + 'PacketsPerSlave' => Optional[Integer[0,65535]], + 'GratuitousARP' => Optional[Integer[0,255]], + 'AllSlavesActive' => Optional[Enum['yes','no']], + 'DynamicTransmitLoadBalancing' => Optional[Enum['yes','no']], + 'MinLinks' => Optional[Integer], + 'ARPMissedMax' => Optional[Integer], +}] +``` + +### `Systemd::Interface::Netdev::Bridge` + +netdev Bridge section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Description' => Optional[String[1]], + 'HelloTimeSec' => Optional[Integer[1]], + 'MaxAgeSec' => Optional[Integer[1]], + 'ForwardDelaySec' => Optional[Integer[1]], + 'AgeingTimeSec' => Optional[Integer[1]], + 'Priority' => Optional[Integer[0, 65535]], + 'GroupForwardMask' => Optional[String[1]], + 'DefaultPVID' => Optional[Variant[Enum['none'],String[1, 4094]]], + 'MulticastQuerier' => Optional[Enum['yes','no']], + 'MulticastSnooping' => Optional[Enum['yes','no']], + 'VLANFiltering' => Optional[Enum['yes','no']], + 'STP' => Optional[Enum['yes','no']], + 'MulticastIGMPVersion' => Optional[Integer[2,3]], +}] +``` + +### `Systemd::Interface::Netdev::Foooverudp` + +netdev FooOverUDP section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Encapsulation' => Optional[Enum['FooOverUDP','GenericUDPEncapsulation']], + 'Port' => Integer[1], + 'PeerPort' => Optional[Integer[1]], + 'Protocol' => Optional[Variant[Enum['gre','ipip'], Integer[1,255]]], + 'Peer' => Optional[String[1]], + 'Local' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev::Geneve` + +netdev GENEVE section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Id' => Integer[0,16777215], + 'Remote' => Optional[String[1]], + 'TOS' => Optional[Integer[1,255]], + 'TTL' => Optional[Variant[Enum['inherit'], Integer[0,255]]], + 'UDPChecksum' => Optional[Enum['yes', 'no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes', 'no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes', 'no']], + 'DestinationPort' => Optional[Integer[1]], + 'FlowLabel' => Optional[String[1]], + 'IPDoNotFragment' => Optional[Enum['yes', 'no']], + 'InheritInnerProtocol' => Optional[Enum['yes', 'no']], +}] +``` + +### `Systemd::Interface::Netdev::Ipoib` + +netdev IPoIB section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'PartitionKey' => Optional[Integer[1]], + 'Mode' => Optional[Enum['datagram','connected']], + 'IgnoreUserspaceMulticastGroup' => Optional[Enum['yes', 'no']], +}] +``` + +### `Systemd::Interface::Netdev::Ipvlan` + +netdev IPVLAN and IPVTAP section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Mode' => Optional[Enum['L2', 'L3', 'L3S']], + 'Flags' => Optional[Enum['bridge', 'private', 'vepa']], +}] +``` + +### `Systemd::Interface::Netdev::L2tp` + +netdev L2TP section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'TunnelId' => Integer[1,4294967295], + 'PeerTunnelId' => Integer[1,4294967295], + 'Remote' => String[1], + 'Local' => Optional[Variant[Enum['auto', 'static', 'dynamic'],String[1]]], + 'EncapsulationType' => Optional[Enum['udp','ip']], + 'UDPSourcePort' => Optional[Integer[1]], + 'UDPDestinationPort' => Optional[Integer[1]], + 'UDPChecksum' => Optional[Enum['yes' ,'no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes' ,'no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes' ,'no']], +}] +``` + +### `Systemd::Interface::Netdev::L2tpsession` + +netdev L2TPSession section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Name' => String[1], + 'SessionId' => Integer[1,4294967295], + 'PeerSessionId' => Integer[1,4294967295], + 'Layer2SpecificHeader' => Optional[Enum['none', 'default']], +}] +``` + +### `Systemd::Interface::Netdev::Macsec` + +netdev MACsec section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Port' => Optional[Integer[1, 65535]], + 'Encrypt' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Macsecreceiveassociation` + +netdev MACsecReceiveAssociation section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Port' => Integer[1, 65535], + 'MACAddress' => String[1], + 'PacketNumber' => Optional[Variant[Integer[1,4],Integer[294,295],Integer[967,967]]], + 'KeyId' => Optional[Integer[0,255]], + 'Key' => Optional[String[1]], + 'KeyFile' => Optional[String[1]], + 'Activate' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Macsecreceivechannel` + +netdev MACsecReceiveChannel section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Port' => Integer[1, 65535], + 'MACAddress' => String[1], +}] +``` + +### `Systemd::Interface::Netdev::Macsectransmitassociation` + +netdev MACsecTransmitAssociation section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'PacketNumber' => Optional[Variant[Integer[1,4],Integer[294,295],Integer[967,967]]], + 'KeyId' => Optional[Integer[0,255]], + 'Key' => Optional[String[1]], + 'KeyFile' => Optional[String[1]], + 'Activate' => Optional[Enum['yes','no']], + 'UseForEncoding' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Macvlan` + +netdev MACVLAN and MACVTAP section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Mode' => Optional[Enum['private', 'vepa', 'bridge', 'passthru', 'source']], + 'SourceMACAddress' => Optional[Variant[String[1],Array[String[1]]]], + 'BroadcastMulticastQueueLength' => Optional[Integer[0,4294967294]], + 'BroadcastQueueThreshold' => Optional[Variant[Enum['no'],Integer[0,2147483647]]], +}] +``` + +### `Systemd::Interface::Netdev::Match` + +netdev match section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev::Netdev` + +netdev NetDev section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Description' => Optional[String[1]], + 'Name' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], + 'MACAddress' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev::Peer` + +netdev Peer section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Name' => String[1], + 'MACAddress' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev::Tun` + +netdev Tun and Tap section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'MultiQueue' => Optional[Enum['yes','no']], + 'PacketInfo' => Optional[Enum['yes','no']], + 'VNetHeader' => Optional[Enum['yes','no']], + 'User' => Optional[String[1]], + 'Group' => Optional[String[1]], + 'KeepCarrier' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Tunnel` + +netdev Tunnel section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'External' => Optional[Enum['yes','no']], + 'Local' => Optional[Variant[Enum['any', 'ipv4_link_local', 'ipv6_link_local', 'dhcp4', 'dhcp6', 'slaac'], String[1]]], + 'Remote' => Optional[Variant[Enum['any'], String[1]]], + 'TOS' => Optional[String[1]], + 'TTL' => Optional[Integer[1,255]], + 'DiscoverPathMTU' => Optional[Enum['yes','no']], + 'IgnoreDontFragment' => Optional[Enum['yes','no']], + 'IPv6FlowLabel' => Optional[String[1]], + 'CopyDSCP' => Optional[Enum['yes','no']], + 'EncapsulationLimit' => Optional[Integer[1,255]], + 'Key' => Optional[String[1]], + 'InputKey' => Optional[String[1]], + 'OutputKey' => Optional[String[1]], + 'Mode' => Optional[Enum['ip6ip6', 'ipip6', 'any']], + 'Independent' => Optional[Enum['yes','no']], + 'AssignToLoopback' => Optional[Enum['yes','no']], + 'AllowLocalRemote' => Optional[Enum['yes','no']], + 'FooOverUDP' => Optional[Enum['yes','no']], + 'FOUDestinationPort' => Optional[Integer[1]], + 'FOUSourcePort' => Optional[Integer[0]], + 'Encapsulation' => Optional[Enum['FooOverUDP','GenericUDPEncapsulation']], + 'IPv6RapidDeploymentPrefix' => Optional[String[1]], + 'ISATAP' => Optional[Enum['yes','no']], + 'SerializeTunneledPackets' => Optional[Enum['yes','no']], + 'ERSPANVersion' => Optional[Integer[0,2]], + 'ERSPANIndex' => Optional[Integer[0,1048575]], + 'ERSPANDirection' => Optional[Enum['ingress','egress']], + 'ERSPANHardwareId' => Optional[Integer[0,63]], +}] +``` + +### `Systemd::Interface::Netdev::Vlan` + +netdev VLAN section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Id' => Optional[Integer[0,4094]], + 'Protocol' => Optional[Enum['802.1q','802.1ad']], + 'GVRP' => Optional[Enum['yes','no']], + 'MVRP' => Optional[Enum['yes','no']], + 'LooseBinding' => Optional[Enum['yes','no']], + 'ReorderHeader' => Optional[Enum['yes','no']], + 'EgressQOSMaps' => Optional[String[1]], + 'IngressQOSMaps' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Netdev::Vrf` + +netdev VRF section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Table' => Integer[0], +}] +``` + +### `Systemd::Interface::Netdev::Vxcan` + +netdev VXCAN section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'Peer' => String[1], +}] +``` + +### `Systemd::Interface::Netdev::Vxlan` + +netdev VXLAN section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'VNI' => Optional[Integer[1, 16777215]], + 'Remote' => Optional[String[1]], + 'Local' => Optional[Variant[Enum['ipv4_link_local', 'ipv6_link_local', 'dhcp4', 'dhcp6', 'slaac'], String[1]]], + 'Group' => Optional[String[1]], + 'TOS' => Optional[String[1]], + 'TTL' => Optional[Variant[Enum['inherit'], Integer[0,255]]], + 'MacLearning' => Optional[Enum['yes','no']], + 'FDBAgeingSec' => Optional[String[1]], + 'MaximumFDBEntries' => Optional[Integer[1]], + 'ReduceARPProxy' => Optional[Enum['yes','no']], + 'L2MissNotification' => Optional[Enum['yes','no']], + 'L3MissNotification' => Optional[Enum['yes','no']], + 'RouteShortCircuit' => Optional[Enum['yes','no']], + 'UDPChecksum' => Optional[Enum['yes','no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes','no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes','no']], + 'RemoteChecksumTx' => Optional[Enum['yes','no']], + 'RemoteChecksumRx' => Optional[Enum['yes','no']], + 'GroupPolicyExtension' => Optional[Enum['yes','no']], + 'GenericProtocolExtension' => Optional[Enum['yes','no']], + 'DestinationPort' => Optional[Integer[1]], + 'PortRange' => Optional[String[1]], + 'FlowLabel' => Optional[Integer[0,1048575]], + 'IPDoNotFragment' => Optional[Enum['yes','no']], + 'Independent' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Wireguard` + +netdev WireGuard section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'PrivateKey' => Optional[String[1]], + 'PrivateKeyFile' => Optional[Stdlib::Absolutepath], + 'ListenPort' => Optional[Variant[Integer[1,65535], Enum['auto']]], + 'FirewallMark' => Optional[Integer[1,4294967295]], + 'RouteTable' => Optional[Variant[String[1],Integer[1,4294967295]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], +}] +``` + +### `Systemd::Interface::Netdev::Wireguardpeer` + +netdev WireGuard section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'PublicKey' => Optional[String[1]], + 'PresharedKey' => Optional[String[1]], + 'PresharedKeyFile' => Optional[Stdlib::Absolutepath], + 'AllowedIPs' => Optional[Variant[String, Array[String]]], + 'Endpoint' => Optional[String[1]], + 'PersistentKeepalive' => Optional[Variant[Integer[0,65535],Enum['off']]], + 'RouteTable' => Optional[Variant[Integer[0,4294967295],String[1]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], +}] +``` + +### `Systemd::Interface::Netdev::Wlan` + +netdev WLAN section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'PhysicalDevice' => Optional[Variant[Integer[0], String[1]]], + 'Type' => Enum['ad-hoc', 'station', 'ap', 'ap-vlan', 'wds', + 'monitor', 'mesh-point', 'p2p-client', 'p2p-go', 'p2p-device', 'ocb', 'nan'], + 'WDS' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Netdev::Xfrm` + +netdev Xfrm section +see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html + +Alias of + +```puppet +Struct[{ + 'InterfaceId' => Optional[Variant[Integer[1],String[1]]], + 'Independent' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Network` + +interface definition +see https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Match' => Optional[Systemd::Interface::Network::Match], + 'Link' => Optional[Systemd::Interface::Network::Link], + 'SR-IOV' => Optional[Systemd::Interface::Network::Sr_iov], + 'Network' => Optional[Systemd::Interface::Network::Network], + 'Address' => Optional[Variant[ + Systemd::Interface::Network::Address, + Array[Systemd::Interface::Network::Address], + ]], + 'Neighbor' => Optional[Variant[ + Systemd::Interface::Network::Neighbor, + Array[Systemd::Interface::Network::Neighbor], + ]], + 'IPv6AddressLabel' => Optional[Systemd::Interface::Network::Ipv6addresslabel], + 'RoutingPolicyRule' => Optional[Variant[ + Systemd::Interface::Network::Routingpolicyrule, + Array[Systemd::Interface::Network::Routingpolicyrule], + ]], + 'NextHop' => Optional[Variant[ + Systemd::Interface::Network::Nexthop, + Array[Systemd::Interface::Network::Nexthop], + ]], + 'Route' => Optional[Variant[ + Systemd::Interface::Network::Route, + Array[Systemd::Interface::Network::Route], + ]], + 'DHCPv4' => Optional[Systemd::Interface::Network::Dhcpv4], + 'DHCPv6' => Optional[Systemd::Interface::Network::Dhcpv6], + 'DHCPPrefixDelegation' => Optional[Systemd::Interface::Network::Dhcpprefixdelegation], + 'IPv6AcceptRA' => Optional[Systemd::Interface::Network::Ipv6acceptra], + 'DHCPServer' => Optional[Systemd::Interface::Network::Dhcpserver], + 'DHCPServerStaticLease' => Optional[Variant[ + Systemd::Interface::Network::Dhcpserverstaticlease, + Array[Systemd::Interface::Network::Dhcpserverstaticlease], + ]], + 'IPv6SendRA' => Optional[Systemd::Interface::Network::Ipv6sendra], + 'IPv6Prefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6prefix, + Array[Systemd::Interface::Network::Ipv6prefix], + ]], + 'IPv6RoutePrefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6routeprefix, + Array[Systemd::Interface::Network::Ipv6routeprefix], + ]], + 'IPv6PREF64Prefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6pref64prefix, + Array[Systemd::Interface::Network::Ipv6pref64prefix], + ]], + 'Bridge' => Optional[Systemd::Interface::Network::Bridge], + 'BridgeFDB' => Optional[Variant[ + Systemd::Interface::Network::Bridgefdb, + Array[Systemd::Interface::Network::Bridgefdb], + ]], + 'BridgeMDB' => Optional[Variant[ + Systemd::Interface::Network::Bridgemdb, + Array[Systemd::Interface::Network::Bridgemdb], + ]], + 'LLDP' => Optional[Systemd::Interface::Network::Lldp], + 'CAN' => Optional[Systemd::Interface::Network::Can], + 'IPoIB' => Optional[Systemd::Interface::Network::Ipoib], + 'QDisc' => Optional[Systemd::Interface::Network::Qdisc], + 'NetworkEmulator' => Optional[Systemd::Interface::Network::Networkemulator], + 'TokenBucketFilter' => Optional[Systemd::Interface::Network::Tokenbucketfilter], + 'PIE' => Optional[Systemd::Interface::Network::Pie], + 'FlowQueuePIE' => Optional[Systemd::Interface::Network::Flowqueuepie], + 'StochasticFairBlue' => Optional[Systemd::Interface::Network::Stochasticfairblue], + 'StochasticFairnessQueueing' => Optional[Systemd::Interface::Network::Stochasticfairnessqueueing], + 'BFIFO' => Optional[Systemd::Interface::Network::Bfifo], + 'PFIFO' => Optional[Systemd::Interface::Network::Pfifo], + 'PFIFOHeadDrop' => Optional[Systemd::Interface::Network::Pfifoheaddrop], + 'PFIFOFast' => Optional[Systemd::Interface::Network::Pfifofast], + 'CAKE' => Optional[Systemd::Interface::Network::Cake], + 'ControlledDelay' => Optional[Systemd::Interface::Network::Controlleddelay], + 'DeficitRoundRobinScheduler' => Optional[Systemd::Interface::Network::Deficitroundrobinscheduler], + 'DeficitRoundRobinSchedulerClass' => Optional[Systemd::Interface::Network::Deficitroundrobinschedulerclass], + 'EnhancedTransmissionSelection' => Optional[Systemd::Interface::Network::Enhancedtransmissionselection], + 'GenericRandomEarlyDetection' => Optional[Systemd::Interface::Network::Genericrandomearlydetection], + 'FairQueueingControlledDelay' => Optional[Systemd::Interface::Network::Fairqueueingcontrolleddelay], + 'FairQueueing' => Optional[Systemd::Interface::Network::Fairqueueing], + 'TrivialLinkEqualizer' => Optional[Systemd::Interface::Network::Triviallinkequalizer], + 'HierarchyTokenBucket' => Optional[Systemd::Interface::Network::Hierarchytokenbucket], + 'HierarchyTokenBucketClass' => Optional[Systemd::Interface::Network::Hierarchytokenbucketclass], + 'HeavyHitterFilter' => Optional[Systemd::Interface::Network::Heavyhitterfilter], + 'QuickFairQueueing' => Optional[Systemd::Interface::Network::Quickfairqueueing], + 'QuickFairQueueingClass' => Optional[Systemd::Interface::Network::Quickfairqueueingclass], + 'BridgeVLAN' => Optional[Systemd::Interface::Network::Bridgevlan], +}] +``` + +### `Systemd::Interface::Network::Address` + +interface network Address section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Address' => String[1], + 'Peer' => Optional[String[1]], + 'Broadcast' => Optional[String[1]], + 'Label' => Optional[String[1,15]], + 'PreferredLifetime' => Optional[Enum['forever', 'infinity', '0']], + 'Scope' => Optional[Variant[Enum['global', 'link', 'host'],Integer[0,255]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'HomeAddress' => Optional[Enum['yes', 'no']], + 'DuplicateAddressDetection' => Optional[Enum['ipv4', 'ipv6', 'both', 'none']], + 'ManageTemporaryAddress' => Optional[Enum['yes', 'no']], + 'AddPrefixRoute' => Optional[Enum['yes', 'no']], + 'AutoJoin' => Optional[Enum['yes', 'no']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Bfifo` + +interface network BFIFO section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'LimitBytes' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Bridge` + +interface network Bridge section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'UnicastFlood' => Optional[Enum['yes', 'no']], + 'MulticastFlood' => Optional[Enum['yes', 'no']], + 'MulticastToUnicast' => Optional[Enum['yes', 'no']], + 'NeighborSuppression' => Optional[Enum['yes', 'no']], + 'Learning' => Optional[Enum['yes', 'no']], + 'HairPin' => Optional[Enum['yes', 'no']], + 'Isolated' => Optional[Enum['yes', 'no']], + 'UseBPDU' => Optional[Enum['yes', 'no']], + 'FastLeave' => Optional[Enum['yes', 'no']], + 'AllowPortToBeRoot' => Optional[Enum['yes', 'no']], + 'ProxyARP' => Optional[Enum['yes', 'no']], + 'ProxyARPWiFi' => Optional[Enum['yes', 'no']], + 'MulticastRouter' => Optional[Enum['no', 'query', 'permanent', 'temporary']], + 'Cost' => Optional[Integer[1, 65535]], + 'Priority' => Optional[Integer[0,63]], +}] +``` + +### `Systemd::Interface::Network::Bridgefdb` + +interface network BridgeFDB section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MACAddress' => String[1], + 'Destination' => Optional[String[1]], + 'VLANId' => Optional[String[1]], + 'VNI' => Optional[Integer[1, 16777215]], + 'AssociatedWith' => Optional[Enum['use', 'self', 'master', 'router']], + 'OutgoingInterface' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Bridgemdb` + +interface network BridgeMDB section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MulticastGroupAddress' => Optional[String[1]], + 'VLANID' => Optional[Integer[0,4094]], +}] +``` + +### `Systemd::Interface::Network::Bridgevlan` + +interface network BridgeVLAN section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'VLAN' => Optional[Variant[String[1], Array[String[1]]]], + 'EgressUntagged' => Optional[Variant[String[1], Array[String[1]]]], + 'PVID' => Optional[Variant[Enum['no','false'],Integer[1]]], +}] +``` + +### `Systemd::Interface::Network::Cake` + +interface network CAKE section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Bandwidth' => Optional[String[1]], + 'AutoRateIngress' => Optional[Enum['yes','no']], + 'OverheadBytes' => Optional[Integer[-64,256]], + 'MPUBytes' => Optional[Integer[1,256]], + 'CompensationMode' => Optional[Enum['none', 'atm', 'ptm']], + 'UseRawPacketSize' => Optional[Enum['yes','no']], + 'FlowIsolationMode' => Optional[Enum['none','src-host', 'dst-host', 'hosts', 'flows','dual-src-host', 'dual-dst-host', 'triple']], + 'NAT' => Optional[Enum['yes','no']], + 'PriorityQueueingPreset' => Optional[Enum['besteffort','precedence', 'diffserv8', 'diffserv4', 'diffserv3']], + 'FirewallMark' => Optional[Integer[1,4294967295]], + 'Wash' => Optional[Enum['yes','no']], + 'SplitGSO' => Optional[Enum['yes','no']], + 'RTTSec' => Optional[String[1]], + 'AckFilter' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Network::Can` + +interface network CAN section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'BitRate' => Optional[String[1]], + 'SamplePoint' => Optional[String[1]], + 'TimeQuantaNSec' => Optional[String[1]], + 'PropagationSegment' => Optional[Integer[0,4294967295]], + 'PhaseBufferSegment1' => Optional[Integer[0,4294967295]], + 'PhaseBufferSegment2' => Optional[Integer[0,4294967295]], + 'SyncJumpWidth' => Optional[Integer[0,4294967295]], + 'DataBitRate' => Optional[String[1]], + 'DataSamplePoint' => Optional[String[1]], + 'DataTimeQuantaNSec' => Optional[String[1]], + 'DataPropagationSegment' => Optional[String[1]], + 'DataPhaseBufferSegment1' => Optional[String[1]], + 'DataPhaseBufferSegment2' => Optional[String[1]], + 'DataSyncJumpWidth' => Optional[String[1]], + 'FDMode' => Optional[Enum['yes','no']], + 'FDNonISO' => Optional[Enum['yes','no']], + 'RestartSec' => Optional[String[1]], + 'Termination' => Optional[Enum['yes','no']], + 'TripleSampling' => Optional[Enum['yes','no']], + 'BusErrorReporting' => Optional[Enum['yes','no']], + 'ListenOnly' => Optional[Enum['yes','no']], + 'Loopback' => Optional[Enum['yes','no']], + 'OneShot' => Optional[Enum['yes','no']], + 'PresumeAck' => Optional[Enum['yes','no']], + 'ClassicDataLengthCode' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Network::Controlleddelay` + +interface network ControlledDelay section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'TargetSec' => Optional[String[1]], + 'IntervalSec' => Optional[String[1]], + 'CEThresholdSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Deficitroundrobinscheduler` + +interface network DeficitRoundRobinScheduler section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Deficitroundrobinschedulerclass` + +interface network DeficitRoundRobinSchedulerClass section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Dhcpprefixdelegation` + +interface network DHCPPrefixDelegation section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'UplinkInterface' => Optional[String[1]], + 'SubnetId' => Optional[String[1]], + 'Announce' => Optional[Enum['yes','no']], + 'Assign' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'ManageTemporaryAddress' => Optional[Enum['yes', 'no']], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Dhcpserver` + +interface network DHCPServer section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'ServerAddress' => Optional[String[1]], + 'PoolOffset' => Optional[String[1]], + 'PoolSize' => Optional[String[1]], + 'DefaultLeaseTimeSec' => Optional[String[1]], + 'MaxLeaseTimeSec' => Optional[String[1]], + 'UplinkInterface' => Optional[String[1]], + 'EmitDNS' => Optional[Enum['yes','no']], + 'DNS' => Optional[String[1]], + 'EmitNTP' => Optional[Enum['yes','no']], + 'NTP' => Optional[String[1]], + 'EmitSIP' => Optional[Enum['yes','no']], + 'SIP' => Optional[String[1]], + 'EmitPOP3' => Optional[Enum['yes','no']], + 'POP3' => Optional[String[1]], + 'EmitSMTP' => Optional[Enum['yes','no']], + 'SMTP' => Optional[String[1]], + 'EmitLPR' => Optional[Enum['yes','no']], + 'LPR' => Optional[String[1]], + 'EmitRouter' => Optional[Enum['yes','no']], + 'Router' => Optional[String[1]], + 'EmitTimezone' => Optional[Enum['yes','no']], + 'Timezone' => Optional[String[1]], + 'BootServerAddress' => Optional[String[1]], + 'BootServerName' => Optional[String[1]], + 'BootFilename' => Optional[String[1]], + 'IPv6OnlyPreferredSec' => Optional[String[1]], + 'SendOption' => Optional[String[1]], + 'SendVendorOption' => Optional[String[1]], + 'BindToInterface' => Optional[Enum['yes','no']], + 'RelayTarget' => Optional[String[1]], + 'RelayAgentCircuitId' => Optional[String[1]], + 'RelayAgentRemoteId' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'PersistLeases' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Network::Dhcpserverstaticlease` + +interface network DHCPServerStaticLease section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MACAddress' => String[1], + 'Address' => String[1], +}] +``` + +### `Systemd::Interface::Network::Dhcpv4` + +interface network DHCPv4 section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'RequestAddress' => Optional[String[1]], + 'SendHostname' => Optional[Enum['yes','no']], + 'Hostname' => Optional[String[1]], + 'MUDURL' => Optional[String[1]], + 'ClientIdentifier' => Optional[String[1]], + 'VendorClassIdentifier' => Optional[String[1]], + 'UserClass' => Optional[String[1]], + 'DUIDType' => Optional[String[1]], + 'DUIDRawData' => Optional[String[1]], + 'IAID' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'Anonymize' => Optional[Enum['yes','no']], + 'RequestOptions' => Optional[String[1]], + 'SendOption' => Optional[String[1]], + 'SendVendorOption' => Optional[String[1]], + 'IPServiceType' => Optional[Enum['none','CS6', 'CS3']], + 'SocketPriority' => Optional[Integer[0,6]], + 'Label' => Optional[String[1]], + 'UseDNS' => Optional[Enum['yes','no']], + 'RoutesToDNS' => Optional[Enum['yes','no']], + 'UseNTP' => Optional[Enum['yes','no']], + 'RoutesToNTP' => Optional[Enum['yes','no']], + 'UseSIP' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UseMTU' => Optional[Enum['yes','no']], + 'UseHostname' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'UseRoutes' => Optional[Enum['yes','no']], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'RouteTable' => Optional[Variant[String[1],Integer[0,4294967295]]], + 'RouteMTUBytes' => Optional[String[1]], + 'QuickAck' => Optional[Enum['yes','no']], + 'InitialCongestionWindow' => Optional[String[1]], + 'InitialAdvertisedReceiveWindow' => Optional[String[1]], + 'UseGateway' => Optional[Enum['yes','no']], + 'UseTimezone' => Optional[Enum['yes','no']], + 'Use6RD' => Optional[Enum['yes','no']], + 'IPv6OnlyMode' => Optional[Enum['yes','no']], + 'FallbackLeaseLifetimeSec' => Optional[Enum['forever', 'infinity']], + 'RequestBroadcast' => Optional[Enum['yes','no']], + 'MaxAttempts' => Optional[Variant[Integer[0],Enum['forever', 'infinity']]], + 'ListenPort' => Optional[String[1]], + 'ServerPort' => Optional[String[1]], + 'DenyList' => Optional[String[1]], + 'AllowList' => Optional[String[1]], + 'SendRelease' => Optional[Enum['yes','no']], + 'SendDecline' => Optional[Enum['yes','no']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Dhcpv6` + +interface network DHCPv6 section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MUDURL' => Optional[String[1]], + 'IAID' => Optional[String[1]], + 'DUIDType' => Optional[String[1]], + 'DUIDRawData' => Optional[String[1]], + 'RequestOptions' => Optional[String[1]], + 'SendOption' => Optional[Integer[1,65536]], + 'SendVendorOption' => Optional[String[1]], + 'UserClass' => Optional[String[1]], + 'VendorClass' => Optional[String[1]], + 'PrefixDelegationHint' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'SendHostname' => Optional[Enum['yes','no']], + 'Hostname' => Optional[String[1]], + 'UseAddress' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UseDelegatedPrefix' => Optional[Enum['yes','no']], + 'UseDNS' => Optional[Enum['yes','no']], + 'UseNTP' => Optional[Enum['yes','no']], + 'UseHostname' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'NetLabel' => Optional[Enum['yes','no']], + 'SendRelease' => Optional[Enum['yes','no']], + 'NFTSet' => Optional[String[1]], + 'WithoutRA' => Optional[Enum['no', 'solicit', 'information-request']], +}] +``` + +### `Systemd::Interface::Network::Enhancedtransmissionselection` + +interface network EnhancedTransmissionSelection section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'Bands' => Optional[Integer[1,16]], + 'StrictBands' => Optional[Integer[1,16]], + 'QuantumBytes' => Optional[String[1]], + 'PriorityMap' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Fairqueueing` + +interface network FairQueueing section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'FlowLimit' => Optional[Integer[1]], + 'QuantumBytes' => Optional[String[1]], + 'InitialQuantumBytes' => Optional[String[1]], + 'MaximumRate' => Optional[String[1]], + 'Buckets' => Optional[String[1]], + 'OrphanMask' => Optional[Integer[0]], + 'Pacing' => Optional[Enum['yes','no']], + 'CEThresholdSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Fairqueueingcontrolleddelay` + +interface network FairQueueingControlledDelay section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'MemoryLimitBytes' => Optional[String[1]], + 'Flows' => Optional[String[1]], + 'TargetSec' => Optional[String[1]], + 'IntervalSec' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], + 'ECN' => Optional[Enum['yes','no']], + 'CEThresholdSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Flowqueuepie` + +interface network FlowQueuePIE section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] +``` + +### `Systemd::Interface::Network::Genericrandomearlydetection` + +interface network GenericRandomEarlyDetection section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'VirtualQueues' => Optional[Integer[1,16]], + 'DefaultVirtualQueues' => Optional[Integer[1,16]], + 'GenericRIO' => Optional[Enum['yes','no']], +}] +``` + +### `Systemd::Interface::Network::Heavyhitterfilter` + +interface network HeavyHitterFilter section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]] +}] +``` + +### `Systemd::Interface::Network::Hierarchytokenbucketclass` + +interface network HierarchyTokenBucketClass section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'Priority' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], + 'OverheadBytes' => Optional[String[1]], + 'Rate' => Optional[String[1]], + 'CeilRate' => Optional[String[1]], + 'BufferBytes' => Optional[String[1]], + 'CeilBufferBytes' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Ipoib` + +interface network IPoIB section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Mode' => Optional[Enum['datagram','connected']], + 'IgnoreUserspaceMulticastGroup' => Optional[Enum['yes', 'no']], +}] +``` + +### `Systemd::Interface::Network::Ipv6acceptra` + +interface network IPv6AcceptRA section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'UseRedirect' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'UseDNS' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'RouteTable' => Optional[Variant[String[1],Integer[0,4294967295]]], + 'RouteMetric' => Optional[String[1]], + 'QuickAck' => Optional[Enum['yes','no']], + 'UseMTU' => Optional[Enum['yes','no']], + 'UseHopLimit' => Optional[Enum['yes','no']], + 'UseReachableTime' => Optional[Enum['yes','no']], + 'UseRetransmissionTime' => Optional[Enum['yes','no']], + 'UseGateway' => Optional[Enum['yes','no']], + 'UseRoutePrefix' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UsePREF64' => Optional[Enum['yes','no']], + 'UseAutonomousPrefix' => Optional[Enum['yes','no']], + 'UseOnLinkPrefix' => Optional[Enum['yes','no']], + 'RouterDenyList' => Optional[String[1]], + 'RouterAllowList' => Optional[String[1]], + 'PrefixDenyList' => Optional[String[1]], + 'PrefixAllowList' => Optional[String[1]], + 'RouteDenyList' => Optional[String[1]], + 'RouteAllowList' => Optional[String[1]], + 'DHCPv6Client' => Optional[Enum['yes','no', 'always']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Ipv6addresslabel` + +interface network IPv6AddressLabel section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Label' => Optional[Integer[0,4294967294]], + 'Prefix' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Ipv6pref64prefix` + +interface network IPv6PREF64Prefix section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Prefix' => Optional[String[1]], + 'LifetimeSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Ipv6prefix` + +interface network IPv6Prefix section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'AddressAutoconfiguration' => Optional[Enum['yes','no']], + 'OnLink' => Optional[Enum['yes','no']], + 'Prefix' => Optional[String[1]], + 'PreferredLifetimeSec' => Optional[String[1]], + 'ValidLifetimeSec' => Optional[String[1]], + 'Assign' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'RouteMetric' => Optional[Integer[0, 4294967295]], +}] +``` + +### `Systemd::Interface::Network::Ipv6routeprefix` + +interface network IPv6RoutePrefix section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Route' => Optional[String[1]], + 'LifetimeSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Ipv6sendra` + +interface network IPv6SendRA section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Managed' => Optional[Enum['yes','no']], + 'OtherInformation' => Optional[Enum['yes','no']], + 'RouterLifetimeSec' => Optional[String[1]], + 'ReachableTimeSec' => Optional[String[1]], + 'RetransmitSec' => Optional[String[1]], + 'RouterPreference' => Optional[Enum['high', 'medium', 'low', 'normal', 'default']], + 'HopLimit' => Optional[Integer[0,255]], + 'UplinkInterface' => Optional[String[1]], + 'EmitDNS' => Optional[Enum['yes','no']], + 'DNS' => Optional[String[1]], + 'EmitDomains' => Optional[Enum['yes','no']], + 'Domains' => Optional[String[1]], + 'DNSLifetimeSec' => Optional[String[1]], + 'HomeAgent' => Optional[Enum['yes','no']], + 'HomeAgentLifetimeSec' => Optional[String[1]], + 'HomeAgentPreference' => Optional[Integer[0,65535]], +}] +``` + +### `Systemd::Interface::Network::Link` + +interface network Link section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MACAddress' => Optional[String[1]], + 'MTUBytes' => Optional[Integer[1280]], + 'ARP' => Optional[Enum['yes','no']], + 'Multicast' => Optional[Enum['yes','no']], + 'AllMulticast' => Optional[Enum['yes','no']], + 'Promiscuous' => Optional[Enum['yes','no']], + 'Unmanaged' => Optional[Enum['yes','no']], + 'Group' => Optional[Integer[0,2147483647]], + 'RequiredForOnline' => Optional[String[1]], + 'RequiredFamilyForOnline' => Optional[Enum['no', 'ipv4', 'ipv6', 'both', 'any']], + 'ActivationPolicy' => Optional[Enum[ + 'up', 'always-up', 'manual', 'always-down', 'down', 'bound' + ]], +}] +``` + +### `Systemd::Interface::Network::Lldp` + +interface network LLDP section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MUDURL' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Match` + +interface network Match section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'MACAddress' => Optional[String[1]], + 'PermanentMACAddress' => Optional[String[1]], + 'Path' => Optional[String[1]], + 'Driver' => Optional[String[1]], + 'Type' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'Name' => Optional[String[1]], + 'WLANInterfaceType' => Optional[Enum[ + 'ad-hoc', 'station', 'ap', 'ap-vlan', 'wds', 'monitor', + 'mesh-point', 'p2p-client', 'p2p-go', 'p2p-device', 'ocb', 'nan', + '!ad-hoc', '!station', '!ap', '!ap-vlan', '!wds', '!monitor', + '!mesh-point', '!p2p-client', '!p2p-go', '!p2p-device', '!ocb', '!nan' + ]], + 'SSID' => Optional[String[1]], + 'BSSID' => Optional[String[1]], + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Neighbor` + +interface network Neighbor section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Address' => Optional[String[1]], + 'LinkLayerAddress' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Network` + +interface network Network section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Description' => Optional[String[1]], + 'DHCP' => Optional[Enum['yes', 'no', 'ipv4', 'ipv6']], + 'DHCPServer' => Optional[Enum['yes', 'no']], + 'LinkLocalAddressing' => Optional[Enum['yes', 'no', 'ipv4', 'ipv6']], + 'IPv6LinkLocalAddressGenerationMode' => Optional[Enum[ + 'eui64', 'none', 'stable-privacy', 'random' + ]], + 'IPv6StableSecretAddress' => Optional[String[1]], + 'IPv4LLStartAddress' => Optional[String[1]], + 'IPv4LLRoute' => Optional[Enum['yes', 'no']], + 'DefaultRouteOnDevice' => Optional[Enum['yes', 'no']], + 'LLMNR' => Optional[Enum['yes', 'no', 'resolve']], + 'MulticastDNS' => Optional[Enum['yes', 'no', 'resolve']], + 'DNSOverTLS' => Optional[Enum['yes', 'no', 'opportunistic']], + 'DNSSEC' => Optional[Enum['yes', 'no', 'allow-downgrade']], + 'DNSSECNegativeTrustAnchors' => Optional[String[1]], + 'LLDP' => Optional[Enum['yes', 'no', 'routers-only']], + 'EmitLLDP' => Optional[Enum['yes', 'no', 'nearest-bridge', 'non-tpmr-bridge', 'customer-bridge']], + 'BindCarrier' => Optional[String[1]], + 'Address' => Optional[Variant[Array[String[1]], String[1]]], + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'DNS' => Optional[Variant[Array[String[1]], String[1]]], + 'UseDomains' => Optional[Enum['yes', 'no', 'route']], + 'DNSDefaultRoute' => Optional[Enum['yes', 'no']], + 'NTP' => Optional[Enum['yes', 'no', 'route']], + 'IPv4Forwarding' => Optional[Enum['yes', 'no']], + 'IPv6Forwarding' => Optional[Enum['yes', 'no']], + 'IPMasquerade' => Optional[Enum['ipv4', 'ipv6', 'both', 'no']], + 'IPv6PrivacyExtensions' => Optional[Enum['yes', 'no', 'prefer-public', 'kernel']], + 'IPv6AcceptRA' => Optional[Enum['yes', 'no']], + 'IPv6DuplicateAddressDetection' => Optional[Integer], + 'IPv6HopLimit' => Optional[Integer[1,255]], + 'IPv6RetransmissionTimeSec' => Optional[Integer[0]], + 'IPv4ReversePathFilter' => Optional[Enum['no', 'strict', 'loose']], + 'IPv4AcceptLocal' => Optional[Enum['yes', 'no']], + 'IPv4RouteLocalnet' => Optional[Enum['yes', 'no']], + 'IPv4ProxyARP' => Optional[Enum['yes', 'no']], + 'IPv4ProxyARPPrivateVLAN' => Optional[Enum['yes', 'no']], + 'IPv6ProxyNDP' => Optional[Enum['yes', 'no']], + 'IPv6ProxyNDPAddress' => Optional[Variant[String[1], Array[String[1]]]], + 'IPv6SendRA' => Optional[Enum['yes', 'no']], + 'DHCPPrefixDelegation' => Optional[Enum['yes', 'no']], + 'IPv6MTUBytes' => Optional[Integer[1280]], + 'KeepMaster' => Optional[Enum['yes', 'no']], + 'BatmanAdvanced' => Optional[String[1]], + 'Bond' => Optional[String[1]], + 'Bridge' => Optional[String[1]], + 'VRF' => Optional[String[1]], + 'IPoIB' => Optional[Variant[String[1],Array[String[1]]]], + 'IPVLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'IPVTAP' => Optional[Variant[String[1],Array[String[1]]]], + 'MACsec' => Optional[Variant[String[1],Array[String[1]]]], + 'MACVLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'MACVTAP' => Optional[Variant[String[1],Array[String[1]]]], + 'Tunnel' => Optional[Variant[String[1],Array[String[1]]]], + 'VLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'VXLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'Xfrm' => Optional[Variant[String[1],Array[String[1]]]], + 'ActiveSlave' => Optional[Enum['yes', 'no']], + 'PrimarySlave' => Optional[Enum['yes', 'no']], + 'ConfigureWithoutCarrier' => Optional[Enum['yes', 'no']], + # 'IgnoreCarrierLoss' => Optional[Variant[Enum['yes', 'no'],Systemd::Unit::Timespan]], + 'KeepConfiguration' => Optional[Enum['yes', 'no', 'static', 'dhcp-on-stop', 'dhcp']], +}] +``` + +### `Systemd::Interface::Network::Networkemulator` + +interface network NetworkEmulator section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact','ingress'],String[1]]], + 'Handle' => Optional[String[1]], + 'DelayJitterSec' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'LossRate' => Optional[String[1]], + 'DuplicateRate' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Nexthop` + +interface network NextHop section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Id' => Optional[Integer[1, 4294967295]], + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'Familiy' => Optional[Enum['ipv4','ipv6']], + 'OnLink' => Optional[Enum['yes','no']], + 'Blackhole' => Optional[Enum['yes','no']], + 'Group' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Pfifo` + +interface network PFIFO section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]] +}] +``` + +### `Systemd::Interface::Network::Pfifofast` + +interface network PFIFOFast section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Pfifoheaddrop` + +interface network PFIFOHeadDrop section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], +}] +``` + +### `Systemd::Interface::Network::Pie` + +interface network PIE section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] +``` + +### `Systemd::Interface::Network::Qdisc` + +interface network QDisc section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Enum['clsact', 'ingress']], + 'Handle' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Quickfairqueueingclass` + +interface network QuickFairQueueingClass section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'Weight' => Optional[Integer[1,1023]], + 'MaxPacketBytes' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Route` + +interface network Route section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'GatewayOnLink' => Optional[Enum['yes', 'no']], + 'Destination' => Optional[String[1]], + 'Source' => Optional[String[1]], + 'Metric' => Optional[Integer[0,4294967295]], + 'IPv6Preference' => Optional[Enum['low','medium', 'high']], + 'Scope' => Optional[Enum['global', 'site', 'link', 'host', 'nowhere']], + 'PreferredSource' => Optional[String[1]], + 'Table' => Optional[Variant[String[1], Enum['default','main', 'local'], Integer[1,4294967295]]], + 'HopLimit' => Optional[Integer[1,255]], + 'Protocol' => Optional[Variant[Integer[0,255], Enum['kernel', 'boot', 'static', 'ra', 'dhcp']]], + 'Type' => Optional[Enum[ + 'unicast', 'local', 'broadcast', 'anycast', 'multicast', + 'blackhole', 'unreachable', 'prohibit', 'throw', 'nat', 'xresolve' + ]], + 'InitialCongestionWindow' => Optional[Integer[0,1023]], + 'InitialAdvertisedReceiveWindow' => Optional[Integer[0,1023]], + 'QuickAck' => Optional[Enum['yes', 'no',]], + 'FastOpenNoCookie' => Optional[Enum['yes', 'no',]], + 'MTUBytes' => Optional[String[1]], + 'TCPAdvertisedMaximumSegmentSize' => Optional[String[1]], + 'TCPCongestionControlAlgorithm' => Optional[Enum['bbr', 'dctcp', 'vegas']], + 'TCPRetransmissionTimeoutSeca' => Optional[Integer[1]], + 'MultiPathRoute' => Optional[Variant[String[1],Array[String[1]]]], + 'NextHop' => Optional[Integer[1, 4294967295]], +}] +``` + +### `Systemd::Interface::Network::Routingpolicyrule` + +interface network RoutingPolicyRule section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'TypeOfService' => Optional[Integer[0,255]], + 'From' => Optional[String[1]], + 'To' => Optional[String[1]], + 'FirewallMark' => Optional[Variant[String[1],Integer[1, 4294967295]]], + 'Table' => Optional[Variant[Enum['default','main','local'],Integer[1,4294967295],String[1]]], + 'Priority' => Optional[Integer[0,4294967295]], + 'IncomingInterface' => Optional[String[1]], + 'OutgoingInterface' => Optional[String[1]], + 'L3MasterDevice' => Optional[Enum['yes','no']], + 'SourcePort' => Optional[String[1]], + 'DestinationPort' => Optional[String[1]], + 'IPProtocol' => Optional[String[1]], + 'InvertRule' => Optional[Enum['yes','no']], + 'Family' => Optional[Enum['ipv4', 'ipv6', 'both']], + 'User' => Optional[String[1]], + 'SuppressPrefixLength' => Optional[Integer[0,128]], + 'SuppressInterfaceGroup' => Optional[Integer[0,2147483647]], + 'Type' => Optional[Enum['blackhole','unreachable','prohibit']], +}] +``` + +### `Systemd::Interface::Network::Sr_iov` + +interface network SR-IOV section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'VirtualFunction' => Optional[Integer[0,2147483646]], + 'VLANId' => Optional[Integer[1,4095]], + 'QualityOfService' => Optional[Integer[0,4294967294]], + 'VLANProtocol' => Optional[Enum['802.1Q', '802.1ad']], + 'MACSpoofCheck' => Optional[Enum['no','yes']], + 'QueryReceiveSideScaling' => Optional[Enum['no','yes']], + 'Trust' => Optional[Enum['no','yes']], + 'LinkState' => Optional[Enum['no','yes','auto']], + 'MACAddress' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Stochasticfairblue` + +interface network StochasticFairBlue section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] +``` + +### `Systemd::Interface::Network::Stochasticfairnessqueueing` + +interface network StochasticFairnessQueueing section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PerturbPeriodSec' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Tokenbucketfilter` + +interface network TokenBucketFilter section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'LatencySec' => Optional[String[1]], + 'LimitBytes' => Optional[String[1]], + 'BurstBytes' => Optional[String[1]], + 'Rate' => Optional[String[1]], + 'MPUBytes' => Optional[String[1]], + 'PeakRate' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], +}] +``` + +### `Systemd::Interface::Network::Triviallinkequalizer` + +interface network TrivialLinkEqualizer section definition +see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html + +Alias of + +```puppet +Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'DefaultClass' => Optional[String[1]], + 'RateToQuantum' => Optional[Integer[0]] +}] +``` + ### `Systemd::JournalRemoteSettings` matches Systemd journal remote config Struct diff --git a/manifests/networkd.pp b/manifests/networkd.pp index c553caa6..c2970c8a 100644 --- a/manifests/networkd.pp +++ b/manifests/networkd.pp @@ -5,10 +5,53 @@ # @param ensure The state that the ``networkd`` service should be in # @param path path where all networkd files are placed in # @param manage_all_network_files if enabled, all networkd files that aren't managed by puppet will be purged +# @param link_profiles +# Hash of network link profiles that can be referenced by it's key on an interface +# The structure is equal to the 'link' parameter of an interface. +# @param netdev_profiles +# Hash of netdev profiles that can be referenced by it's key on an interface +# The structure is equal to the 'netdev' parameter of an interface. +# @param network_profiles +# Hash of network profiles that can be referenced by it's key on an interface +# The structure is equal to the 'network' parameter of an interface. +# @param interfaces +# Hash of interfaces to configure on a node. +# The link, netdev and network parameters are deep merged with the respective profile +# (referenced by the key of the interface). +# With the profiles you can set the default values for a network. +# Hint: to remove a profile setting for an interface you can either overwrite or +# set it to '~' for removal. +# Example (hiera yaml notation): +# systemd::networkd::network_profiles: +# mynet: +# Network: +# Gateway: '192.168.0.1' +# +# systemd::networkd +# mynet: +# filename: '50-static' +# network: +# Match: +# Name: 'eno0' +# Network: +# Address: '192.168.0.15/24' +# +# Gives you a file /etc/systemd/network/50-static.network +# with content: +# [Match] +# Name=enp2s0 +# [Network] +# Address=192.168.0.15/24 +# Gateway=192.168.0.1 +# class systemd::networkd ( - Enum['stopped','running'] $ensure = $systemd::networkd_ensure, - Stdlib::Absolutepath $path = $systemd::network_path, - Boolean $manage_all_network_files = $systemd::manage_all_network_files, + Enum['stopped','running'] $ensure = $systemd::networkd_ensure, + Stdlib::Absolutepath $path = $systemd::network_path, + Boolean $manage_all_network_files = $systemd::manage_all_network_files, + Hash[String[1],Systemd::Interface::Link] $link_profiles = {}, + Hash[String[1],Systemd::Interface::Netdev] $netdev_profiles = {}, + Hash[String[1],Systemd::Interface::Network] $network_profiles = {}, + Hash[String[1],Systemd::Interface] $interfaces = {}, ) { assert_private() @@ -32,4 +75,35 @@ notify => Service['systemd-networkd'], } } + + $interfaces.each | String[1] $interface_name, Systemd::Interface $interface | { + $_filename=pick($interface['filename'], $interface_name) + if 'link' in $interface.keys() { + systemd::network { "${_filename}.link": + path => $path, + content => epp('systemd/network.epp', { + fname => "${_filename}.link", + config => deep_merge(pick($link_profiles[$interface_name], {}), $interface['link']), + }), + } + } + if 'netdev' in $interface.keys() { + systemd::network { "${_filename}.netdev": + path => $path, + content => epp('systemd/network.epp', { + fname => "${_filename}.netdev", + config => deep_merge(pick($netdev_profiles[$interface_name], {}), $interface['netdev']), + }), + } + } + if 'network' in $interface.keys() { + systemd::network { "${_filename}.network": + path => $path, + content => epp('systemd/network.epp', { + fname => "${_filename}.network", + config => deep_merge(pick($network_profiles[$interface_name], {}), $interface['network']), + }), + } + } + } } diff --git a/spec/classes/networkd_spec.rb b/spec/classes/networkd_spec.rb new file mode 100644 index 00000000..e0187523 --- /dev/null +++ b/spec/classes/networkd_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'systemd::networkd' do + on_supported_os.each do |os, os_facts| + context "on #{os}" do + let(:facts) { os_facts } + let(:pre_condition) do + [ + 'include systemd', + # Fake assert_private function from stdlib to not fail within this test + 'function assert_private () { }', + ] + end + + it { is_expected.to compile.with_all_deps } + end + end +end diff --git a/spec/type_aliases/interface/link_spec.rb b/spec/type_aliases/interface/link_spec.rb new file mode 100644 index 00000000..3585d8b9 --- /dev/null +++ b/spec/type_aliases/interface/link_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'Systemd::Interface::Link' do + describe 'valid types' do + context 'with valid types' do + [ + {}, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + end + + describe 'invalid types' do + context 'with garbage inputs' do + [ + true, + false, + :keyword, + nil, + { 'foo' => 'bar' }, + '42', + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end +end diff --git a/spec/type_aliases/interface/netdev_spec.rb b/spec/type_aliases/interface/netdev_spec.rb new file mode 100644 index 00000000..d6054e67 --- /dev/null +++ b/spec/type_aliases/interface/netdev_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'Systemd::Interface::Netdev' do + describe 'valid types' do + context 'with valid types' do + [ + {}, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + end + + describe 'invalid types' do + context 'with garbage inputs' do + [ + true, + false, + :keyword, + nil, + { 'foo' => 'bar' }, + '42', + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end +end diff --git a/spec/type_aliases/interface/network_spec.rb b/spec/type_aliases/interface/network_spec.rb new file mode 100644 index 00000000..c3cf4cd9 --- /dev/null +++ b/spec/type_aliases/interface/network_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'Systemd::Interface::Network' do + describe 'valid types' do + context 'with valid types' do + [ + {}, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + end + + describe 'invalid types' do + context 'with garbage inputs' do + [ + true, + false, + :keyword, + nil, + { 'foo' => 'bar' }, + '42', + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end +end diff --git a/spec/type_aliases/systemd_interface_spec.rb b/spec/type_aliases/systemd_interface_spec.rb new file mode 100644 index 00000000..11c646f4 --- /dev/null +++ b/spec/type_aliases/systemd_interface_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'Systemd::Interface' do + describe 'valid types' do + context 'with valid types' do + [ + {}, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + end + + describe 'invalid types' do + context 'with garbage inputs' do + [ + true, + false, + :keyword, + nil, + { 'foo' => 'bar' }, + '42', + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end +end diff --git a/templates/network.epp b/templates/network.epp new file mode 100644 index 00000000..00efb7fb --- /dev/null +++ b/templates/network.epp @@ -0,0 +1,26 @@ +<%- | String[1] $fname = {}, + Hash $config = {}, +| -%> +# +# This file is managed with puppet +# +# File name: <%= $fname %> +# +<% $config.each |String $head, Variant[Hash,Array] $vals| { -%> + <%- if $vals =~ Array { $_loop= $vals } else { $_loop = [ $vals ] } -%> + <%- $_loop.each | Hash $vals | { -%> + + <%- %>[<%= $head %>] + <%- $vals.each() | String $key, Any $value | { -%> + <%- if $value =~ Array[String] { -%> + <%- $value.each() | String $val | { -%> + <%- %><%= $key %>=<%= $val %> + <%- } -%> + <%- } else { -%> + <%- if $value !~ Undef { -%> + <%- %><%= $key %>=<%= $value %> + <%- } -%> + <%- } -%> + <%- } -%> + <%- } -%> +<% } -%> diff --git a/types/interface.pp b/types/interface.pp new file mode 100644 index 00000000..d0deb6f1 --- /dev/null +++ b/types/interface.pp @@ -0,0 +1,7 @@ +# network interface definition +type Systemd::Interface = Struct[{ + filename => Optional[String[1]], + network => Optional[Systemd::Interface::Network], + netdev => Optional[Systemd::Interface::Netdev], + link => Optional[Systemd::Interface::Link], +}] diff --git a/types/interface/link.pp b/types/interface/link.pp new file mode 100644 index 00000000..0cabea14 --- /dev/null +++ b/types/interface/link.pp @@ -0,0 +1,6 @@ +# interface definition +type Systemd::Interface::Link = Struct[{ + 'Match' => Optional[Systemd::Interface::Link::Match], + 'Link' => Optional[Systemd::Interface::Link::Link], + 'SR-IOV' => Optional[Systemd::Interface::Link::Sr_iov], +}] diff --git a/types/interface/link/link.pp b/types/interface/link/link.pp new file mode 100644 index 00000000..aa805a86 --- /dev/null +++ b/types/interface/link/link.pp @@ -0,0 +1,84 @@ +# interface definition +type Systemd::Interface::Link::Link = Struct[{ + 'Description' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'ImportProperty' => Optional[String[1]], + 'UnsetProperty' => Optional[String[1]], + 'Alias' => Optional[String[1]], + 'MACAddressPolicy' => Optional[Enum['persistent', 'random', 'none', '']], + 'MACAddress' => Optional[String[1]], + 'NamePolicy' => Optional[Enum[ + 'kernel', 'database', 'onboard', 'slot', + 'path', 'mac', 'keep' + ]], + 'Name' => Optional[String[1]], + 'AlternativeNamesPolicy' => Optional[String[1]], + 'AlternativeName' => Optional[String[1]], + 'TransmitQueues' => Optional[Integer[1,4096]], + 'ReceiveQueues' => Optional[Integer[1,4096]], + 'TransmitQueueLength' => Optional[Integer[0, 4294967294]], + 'MTUBytes' => Optional[Integer[1280]], + 'BitsPerSecond' => Optional[String[1]], + 'Duplex' => Optional[String[1]], + 'AutoNegotiation' => Optional[Enum['yes','no']], + 'WakeOnLan' => Optional[Enum[ + 'phy', 'unicast', 'multicast', 'broadcast', + 'arp', 'magic', 'secureon' + ]], + 'WakeOnLanPassword' => Optional[String[1]], + 'Port' => Optional[Enum['tp', 'aui', 'bnc', 'mii', 'fibre']], + 'Advertise' => Optional[Variant[ + Systemd::Interface::Link::Link_advertise, + Array[Systemd::Interface::Link::Link_advertise] + ]], + 'ReceiveChecksumOffload' => Optional[Enum['yes','no']], + 'TransmitChecksumOffload' => Optional[Enum['yes','no']], + 'TCPSegmentationOffload' => Optional[Enum['yes','no']], + 'TCP6SegmentationOffload' => Optional[Enum['yes','no']], + 'GenericSegmentationOffload' => Optional[Enum['yes','no']], + 'GenericReceiveOffload' => Optional[Enum['yes','no']], + 'LargeReceiveOffload' => Optional[Enum['yes','no']], + 'ReceivePacketSteeringCPUMask' => Optional[String[1]], + 'ReceiveVLANCTAGHardwareAcceleration' => Optional[Enum['yes','no']], + 'TransmitVLANCTAGHardwareAcceleration'=> Optional[Enum['yes','no']], + 'ReceiveVLANCTAGFilter' => Optional[Enum['yes','no']], + 'TransmitVLANSTAGHardwareAcceleration'=> Optional[Enum['yes','no']], + 'NTupleFilter' => Optional[Enum['yes','no']], + 'RxChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'TxChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'OtherChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'CombinedChannels' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxMiniBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxJumboBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'TxBufferSize' => Optional[Variant[Enum['max'],Integer[1,4294967295]]], + 'RxFlowControl' => Optional[Enum['yes','no']], + 'TxFlowControl' => Optional[Enum['yes','no']], + 'AutoNegotiationFlowControl' => Optional[Enum['yes','no']], + 'GenericSegmentOffloadMaxBytes' => Optional[String[1]], + 'GenericSegmentOffloadMaxSegments' => Optional[Integer[1, 65535]], + 'UseAdaptiveRxCoalesce' => Optional[Enum['yes','no']], + 'UseAdaptiveTxCoalesce' => Optional[Enum['yes','no']], + 'RxCoalesceSec' => Optional[Integer], + 'RxCoalesceIrqSec' => Optional[Integer], + 'RxCoalesceLowSec' => Optional[Integer], + 'RxCoalesceHighSec' => Optional[Integer], + 'TxCoalesceSec' => Optional[Integer], + 'TxCoalesceIrqSec' => Optional[Integer], + 'TxCoalesceLowSec' => Optional[Integer], + 'TxCoalesceHighSec' => Optional[Integer], + 'RxMaxCoalescedFrames' => Optional[Integer], + 'RxMaxCoalescedIrqFrames' => Optional[Integer], + 'RxMaxCoalescedLowFrames' => Optional[Integer], + 'RxMaxCoalescedHighFrames' => Optional[Integer], + 'TxMaxCoalescedFrames' => Optional[Integer], + 'TxMaxCoalescedIrqFrames' => Optional[Integer], + 'TxMaxCoalescedLowFrames' => Optional[Integer], + 'TxMaxCoalescedHighFrames' => Optional[Integer], + 'CoalescePacketRateLow' => Optional[Integer], + 'CoalescePacketRateHigh' => Optional[Integer], + 'CoalescePacketRateSampleIntervalSec' => Optional[Integer], + 'StatisticsBlockCoalesceSec' => Optional[Integer[1]], + 'MDI' => Optional[Enum['straight', 'mdi', 'crossover', 'mdi-x', 'mdix', 'auto']], + 'SR_IOVVirtualFunctions' => Optional[Integer[0, 2147483647]], +}] diff --git a/types/interface/link/link_advertise.pp b/types/interface/link/link_advertise.pp new file mode 100644 index 00000000..5b35ce5f --- /dev/null +++ b/types/interface/link/link_advertise.pp @@ -0,0 +1,102 @@ +# interface definition +type Systemd::Interface::Link::Link_advertise = Enum[ + '10baset-full', + '10baset1l-full', + '10baset-half', + '100basefx-full', + '100baset-full', + '100baset1-full', + '100basefx-half', + '100baset-half', + '1000basekx-ful', + '1000baset-full', + '1000baset1-full', + '1000basex-full', + '1000baset-half', + '2500baset-full', + '2500basex-full', + '5000baset-full', + '10000baser-fec', + '10000basecr-full', + '10000baseer-full', + '10000basekr-full', + '10000basekx4-full', + '10000baselr-full', + '10000baselrm-full', + '10000basesr-full', + '10000baset-full', + '20000basekr2-full', + '20000basemld2-full', + '25000basecr-full', + '25000basekr-full', + '25000basesr-full', + '40000basecr4-full', + '40000basekr4-full', + '40000baselr4-full', + '40000basesr4-full', + '50000basecr-full', + '50000basecr2-full', + '50000basedr-full', + '50000basekr-full', + '50000basekr2-full', + '50000baselr-er-fr-full', + '50000basesr-full', + '50000basesr2-full', + '56000basecr4-full', + '56000basekr4-full', + '56000baselr4-full', + '56000basesr4-full', + '100000basecr-full', + '100000basecr2-full', + '100000basecr4-full', + '100000basedr-full', + '100000basedr2-full', + '100000basekr-full', + '100000basekr2-full', + '100000basekr4-full', + '100000baselr-er-fr-full', + '100000baselr2-er2-fr2-full', + '100000baselr4-er4-full', + '100000basesr-full', + '100000basesr2-full', + '100000basesr4-full', + '200000basecr2-full', + '200000basecr4-full', + '200000basedr2-full', + '200000basedr4-full', + '200000basekr2-full', + '200000basekr4-full', + '200000baselr2-er2-fr2-full', + '200000baselr4-er4-fr4-full', + '200000basesr2-full', + '200000basesr4-full', + '400000basecr4-full', + '400000basecr8-full', + '400000basedr4-full', + '400000basedr8-full', + '400000basekr4-full', + '400000basekr8-full', + '400000baselr4-er4-fr4-full', + '400000baselr8-er8-fr8-full', + '400000basesr4-full', + '400000basesr8-full', + '800000basecr8-full', + '800000basedr8-2-full', + '800000basedr8-full', + '800000basekr8-full', + '800000basesr8-full', + '800000basevr8-full', + 'asym-pause', + 'aui', + 'autonegotiation', + 'backplane', + 'bnc', + 'fec-baser', + 'fec-llrs', + 'fec-none', + 'fec-rs', + 'fibre', + 'mii', + 'pause', + 'tp' +] diff --git a/types/interface/link/match.pp b/types/interface/link/match.pp new file mode 100644 index 00000000..65f3dd9a --- /dev/null +++ b/types/interface/link/match.pp @@ -0,0 +1,21 @@ +# interface definition +type Systemd::Interface::Link::Match = Struct[{ + 'Name' => Optional[String[1]], + 'MACAddress' => Optional[String[1]], + 'PermanentMACAddress' => Optional[String[1]], + 'Path' => Optional[String[1]], + 'Driver' => Optional[String[1]], + 'Type' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'OriginalName' => Optional[String[1]], + 'SSID' => Optional[String[1]], + 'BSSID' => Optional[String[1]], + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] diff --git a/types/interface/link/sr_iov.pp b/types/interface/link/sr_iov.pp new file mode 100644 index 00000000..51296bd1 --- /dev/null +++ b/types/interface/link/sr_iov.pp @@ -0,0 +1,12 @@ +# interface definition +type Systemd::Interface::Link::Sr_iov = Struct[{ + 'VirtualFunction' => Optional[Integer[0,2147483646]], + 'VLANId' => Optional[Integer[1,4095]], + 'QualityOfService' => Optional[Integer[1,4294967294]], + 'VLANProtocol' => Optional[Enum['802.1Q', '802.1ad']], + 'MACSpoofCheck' => Optional[Enum['yes','no']], + 'QueryReceiveSideScaling' => Optional[Enum['yes','no']], + 'Trust' => Optional[Enum['yes','no']], + 'LinkState' => Optional[Enum['yes','no','auto']], + 'MACAddress' => Optional[String[1]], +}] diff --git a/types/interface/netdev.pp b/types/interface/netdev.pp new file mode 100644 index 00000000..e9dd3dc9 --- /dev/null +++ b/types/interface/netdev.pp @@ -0,0 +1,35 @@ +# interface netdev configs +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev = Struct[{ + 'Match' => Optional[Systemd::Interface::Netdev::Match], + 'NetDev' => Optional[Systemd::Interface::Netdev::Netdev], + 'Bridge' => Optional[Systemd::Interface::Netdev::Bridge], + 'Vlan' => Optional[Systemd::Interface::Netdev::Vlan], + 'MACVLAN' => Optional[Systemd::Interface::Netdev::Macvlan], + 'MACVTAP' => Optional[Systemd::Interface::Netdev::Macvlan], + 'IPVLAN' => Optional[Systemd::Interface::Netdev::Ipvlan], + 'IPVTAP' => Optional[Systemd::Interface::Netdev::Ipvlan], + 'VXLAN' => Optional[Systemd::Interface::Netdev::Vxlan], + 'GENEVE' => Optional[Systemd::Interface::Netdev::Geneve], + 'BareUDP' => Optional[Systemd::Interface::Netdev::Bareudp], + 'L2TP' => Optional[Systemd::Interface::Netdev::L2tp], + 'L2TPSession' => Optional[Systemd::Interface::Netdev::L2tpsession], + 'MACsec' => Optional[Systemd::Interface::Netdev::Macsec], + 'MACsecReceiveChannel' => Optional[Systemd::Interface::Netdev::Macsecreceivechannel], + 'MACsecTransmitAssociation' => Optional[Systemd::Interface::Netdev::Macsectransmitassociation], + 'MACsecReceiveAssociation' => Optional[Systemd::Interface::Netdev::Macsecreceiveassociation], + 'Tunnel' => Optional[Systemd::Interface::Netdev::Tunnel], + 'FooOverUDP' => Optional[Systemd::Interface::Netdev::Foooverudp], + 'Peer' => Optional[Systemd::Interface::Netdev::Peer], + 'VXCAN' => Optional[Systemd::Interface::Netdev::Vxcan], + 'Tun' => Optional[Systemd::Interface::Netdev::Tun], + 'Tap' => Optional[Systemd::Interface::Netdev::Tun], + 'WireGuard' => Optional[Systemd::Interface::Netdev::Wireguard], + 'WireGuardPeer' => Optional[Systemd::Interface::Netdev::Wireguardpeer], + 'Bond' => Optional[Systemd::Interface::Netdev::Bond], + 'Xfrm' => Optional[Systemd::Interface::Netdev::Xfrm], + 'VRF' => Optional[Systemd::Interface::Netdev::Vrf], + 'BatmanAdvanced' => Optional[Systemd::Interface::Netdev::Batmanadvanced], + 'IPoIB' => Optional[Systemd::Interface::Netdev::Ipoib], + 'WLAN' => Optional[Systemd::Interface::Netdev::Wlan], +}] diff --git a/types/interface/netdev/bareudp.pp b/types/interface/netdev/bareudp.pp new file mode 100644 index 00000000..a76c9fc8 --- /dev/null +++ b/types/interface/netdev/bareudp.pp @@ -0,0 +1,6 @@ +# netdev BareUDP section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Bareudp = Struct[{ + 'DestinationPort' => Integer[1, 65535], + 'EtherType' => Enum['ipv4', 'ipv6', 'mpls-uc', 'mpls-mc'], +}] diff --git a/types/interface/netdev/batmanadvanced.pp b/types/interface/netdev/batmanadvanced.pp new file mode 100644 index 00000000..df179a62 --- /dev/null +++ b/types/interface/netdev/batmanadvanced.pp @@ -0,0 +1,14 @@ +# netdev BatmanAdvanced section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Batmanadvanced = Struct[{ + 'GatewayMode' => Optional[Enum['off', 'server', 'client']], + 'Aggregation' => Optional[Enum['yes','no']], + 'BridgeLoopAvoidance' => Optional[Enum['yes','no']], + 'DistributedArpTable' => Optional[Enum['yes','no']], + 'Fragmentation' => Optional[Enum['yes','no']], + 'HopPenalty' => Optional[Integer[0,255]], + 'OriginatorIntervalSec' => Optional[String[1]], + 'GatewayBandwidthDown' => Optional[String[1]], + 'GatewayBandwidthUp' => Optional[String[1]], + 'RoutingAlgorithm' => Optional[Enum['batman-v', 'batman-iv']], +}] diff --git a/types/interface/netdev/bond.pp b/types/interface/netdev/bond.pp new file mode 100644 index 00000000..32b44a17 --- /dev/null +++ b/types/interface/netdev/bond.pp @@ -0,0 +1,32 @@ +# netdev Bond section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Bond = Struct[{ + 'Mode' => Optional[Enum[ + 'balance-rr', 'active-backup', 'balance-xor', + 'broadcast', '802.3ad', 'balance-tlb', 'balance-alb' + ]], + 'TransmitHashPolicy' => Optional[Enum['layer2', 'layer3+4', 'layer2+3', 'encap2+3', 'encap3+4']], + 'LACPTransmitRate' => Optional[Enum['slow','fast']], + 'MIIMonitorSec' => Optional[Integer], + 'PeerNotifyDelaySec' => Optional[Integer[0,300]], + 'UpDelaySec' => Optional[Integer[0]], + 'DownDelaySec' => Optional[Integer[0]], + 'LearnPacketIntervalSec' => Optional[Integer[1]], + 'AdSelect' => Optional[Enum['stable', 'bandwidth', 'count']], + 'AdActorSystemPriority' => Optional[Integer[1,65535]], + 'AdUserPortKey' => Optional[Integer[1,1023]], + 'AdActorSystem' => Optional[String[1]], + 'FailOverMACPolicy' => Optional[Enum['none', 'active', 'follow']], + 'ARPValidate' => Optional[Enum['none', 'active', 'backup', 'all']], + 'ARPIntervalSec' => Optional[String[1]], + 'ARPIPTargets' => Optional[String[1]], + 'ARPAllTargets' => Optional[Enum['any','all']], + 'PrimaryReselectPolicy' => Optional[Enum['alwayas', 'better', 'failure']], + 'ResendIGMP' => Optional[Integer[0,255]], + 'PacketsPerSlave' => Optional[Integer[0,65535]], + 'GratuitousARP' => Optional[Integer[0,255]], + 'AllSlavesActive' => Optional[Enum['yes','no']], + 'DynamicTransmitLoadBalancing' => Optional[Enum['yes','no']], + 'MinLinks' => Optional[Integer], + 'ARPMissedMax' => Optional[Integer], +}] diff --git a/types/interface/netdev/bridge.pp b/types/interface/netdev/bridge.pp new file mode 100644 index 00000000..a6cd6412 --- /dev/null +++ b/types/interface/netdev/bridge.pp @@ -0,0 +1,17 @@ +# netdev Bridge section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Bridge = Struct[{ + 'Description' => Optional[String[1]], + 'HelloTimeSec' => Optional[Integer[1]], + 'MaxAgeSec' => Optional[Integer[1]], + 'ForwardDelaySec' => Optional[Integer[1]], + 'AgeingTimeSec' => Optional[Integer[1]], + 'Priority' => Optional[Integer[0, 65535]], + 'GroupForwardMask' => Optional[String[1]], + 'DefaultPVID' => Optional[Variant[Enum['none'],String[1, 4094]]], + 'MulticastQuerier' => Optional[Enum['yes','no']], + 'MulticastSnooping' => Optional[Enum['yes','no']], + 'VLANFiltering' => Optional[Enum['yes','no']], + 'STP' => Optional[Enum['yes','no']], + 'MulticastIGMPVersion' => Optional[Integer[2,3]], +}] diff --git a/types/interface/netdev/foooverudp.pp b/types/interface/netdev/foooverudp.pp new file mode 100644 index 00000000..c9eeddc0 --- /dev/null +++ b/types/interface/netdev/foooverudp.pp @@ -0,0 +1,10 @@ +# netdev FooOverUDP section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Foooverudp = Struct[{ + 'Encapsulation' => Optional[Enum['FooOverUDP','GenericUDPEncapsulation']], + 'Port' => Integer[1], + 'PeerPort' => Optional[Integer[1]], + 'Protocol' => Optional[Variant[Enum['gre','ipip'], Integer[1,255]]], + 'Peer' => Optional[String[1]], + 'Local' => Optional[String[1]], +}] diff --git a/types/interface/netdev/geneve.pp b/types/interface/netdev/geneve.pp new file mode 100644 index 00000000..c5462e62 --- /dev/null +++ b/types/interface/netdev/geneve.pp @@ -0,0 +1,15 @@ +# netdev GENEVE section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Geneve = Struct[{ + 'Id' => Integer[0,16777215], + 'Remote' => Optional[String[1]], + 'TOS' => Optional[Integer[1,255]], + 'TTL' => Optional[Variant[Enum['inherit'], Integer[0,255]]], + 'UDPChecksum' => Optional[Enum['yes', 'no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes', 'no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes', 'no']], + 'DestinationPort' => Optional[Integer[1]], + 'FlowLabel' => Optional[String[1]], + 'IPDoNotFragment' => Optional[Enum['yes', 'no']], + 'InheritInnerProtocol' => Optional[Enum['yes', 'no']], +}] diff --git a/types/interface/netdev/ipoib.pp b/types/interface/netdev/ipoib.pp new file mode 100644 index 00000000..bf2e07be --- /dev/null +++ b/types/interface/netdev/ipoib.pp @@ -0,0 +1,7 @@ +# netdev IPoIB section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Ipoib = Struct[{ + 'PartitionKey' => Optional[Integer[1]], + 'Mode' => Optional[Enum['datagram','connected']], + 'IgnoreUserspaceMulticastGroup' => Optional[Enum['yes', 'no']], +}] diff --git a/types/interface/netdev/ipvlan.pp b/types/interface/netdev/ipvlan.pp new file mode 100644 index 00000000..a4be8c0b --- /dev/null +++ b/types/interface/netdev/ipvlan.pp @@ -0,0 +1,6 @@ +# netdev IPVLAN and IPVTAP section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Ipvlan = Struct[{ + 'Mode' => Optional[Enum['L2', 'L3', 'L3S']], + 'Flags' => Optional[Enum['bridge', 'private', 'vepa']], +}] diff --git a/types/interface/netdev/l2tp.pp b/types/interface/netdev/l2tp.pp new file mode 100644 index 00000000..d5b4f900 --- /dev/null +++ b/types/interface/netdev/l2tp.pp @@ -0,0 +1,14 @@ +# netdev L2TP section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::L2tp = Struct[{ + 'TunnelId' => Integer[1,4294967295], + 'PeerTunnelId' => Integer[1,4294967295], + 'Remote' => String[1], + 'Local' => Optional[Variant[Enum['auto', 'static', 'dynamic'],String[1]]], + 'EncapsulationType' => Optional[Enum['udp','ip']], + 'UDPSourcePort' => Optional[Integer[1]], + 'UDPDestinationPort' => Optional[Integer[1]], + 'UDPChecksum' => Optional[Enum['yes' ,'no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes' ,'no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes' ,'no']], +}] diff --git a/types/interface/netdev/l2tpsession.pp b/types/interface/netdev/l2tpsession.pp new file mode 100644 index 00000000..f03a3079 --- /dev/null +++ b/types/interface/netdev/l2tpsession.pp @@ -0,0 +1,8 @@ +# netdev L2TPSession section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::L2tpsession = Struct[{ + 'Name' => String[1], + 'SessionId' => Integer[1,4294967295], + 'PeerSessionId' => Integer[1,4294967295], + 'Layer2SpecificHeader' => Optional[Enum['none', 'default']], +}] diff --git a/types/interface/netdev/macsec.pp b/types/interface/netdev/macsec.pp new file mode 100644 index 00000000..27111edd --- /dev/null +++ b/types/interface/netdev/macsec.pp @@ -0,0 +1,6 @@ +# netdev MACsec section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Macsec = Struct[{ + 'Port' => Optional[Integer[1, 65535]], + 'Encrypt' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/macsecreceiveassociation.pp b/types/interface/netdev/macsecreceiveassociation.pp new file mode 100644 index 00000000..e87db7db --- /dev/null +++ b/types/interface/netdev/macsecreceiveassociation.pp @@ -0,0 +1,11 @@ +# netdev MACsecReceiveAssociation section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Macsecreceiveassociation = Struct[{ + 'Port' => Integer[1, 65535], + 'MACAddress' => String[1], + 'PacketNumber' => Optional[Variant[Integer[1,4],Integer[294,295],Integer[967,967]]], + 'KeyId' => Optional[Integer[0,255]], + 'Key' => Optional[String[1]], + 'KeyFile' => Optional[String[1]], + 'Activate' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/macsecreceivechannel.pp b/types/interface/netdev/macsecreceivechannel.pp new file mode 100644 index 00000000..b5480fb9 --- /dev/null +++ b/types/interface/netdev/macsecreceivechannel.pp @@ -0,0 +1,6 @@ +# netdev MACsecReceiveChannel section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Macsecreceivechannel = Struct[{ + 'Port' => Integer[1, 65535], + 'MACAddress' => String[1], +}] diff --git a/types/interface/netdev/macsectransmitassociation.pp b/types/interface/netdev/macsectransmitassociation.pp new file mode 100644 index 00000000..7628ad28 --- /dev/null +++ b/types/interface/netdev/macsectransmitassociation.pp @@ -0,0 +1,10 @@ +# netdev MACsecTransmitAssociation section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Macsectransmitassociation = Struct[{ + 'PacketNumber' => Optional[Variant[Integer[1,4],Integer[294,295],Integer[967,967]]], + 'KeyId' => Optional[Integer[0,255]], + 'Key' => Optional[String[1]], + 'KeyFile' => Optional[String[1]], + 'Activate' => Optional[Enum['yes','no']], + 'UseForEncoding' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/macvlan.pp b/types/interface/netdev/macvlan.pp new file mode 100644 index 00000000..36e451cd --- /dev/null +++ b/types/interface/netdev/macvlan.pp @@ -0,0 +1,8 @@ +# netdev MACVLAN and MACVTAP section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Macvlan = Struct[{ + 'Mode' => Optional[Enum['private', 'vepa', 'bridge', 'passthru', 'source']], + 'SourceMACAddress' => Optional[Variant[String[1],Array[String[1]]]], + 'BroadcastMulticastQueueLength' => Optional[Integer[0,4294967294]], + 'BroadcastQueueThreshold' => Optional[Variant[Enum['no'],Integer[0,2147483647]]], +}] diff --git a/types/interface/netdev/match.pp b/types/interface/netdev/match.pp new file mode 100644 index 00000000..06cdbdcc --- /dev/null +++ b/types/interface/netdev/match.pp @@ -0,0 +1,11 @@ +# netdev match section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Match = Struct[{ + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] diff --git a/types/interface/netdev/netdev.pp b/types/interface/netdev/netdev.pp new file mode 100644 index 00000000..6e355257 --- /dev/null +++ b/types/interface/netdev/netdev.pp @@ -0,0 +1,9 @@ +# netdev NetDev section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Netdev = Struct[{ + 'Description' => Optional[String[1]], + 'Name' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], + 'MACAddress' => Optional[String[1]], +}] diff --git a/types/interface/netdev/peer.pp b/types/interface/netdev/peer.pp new file mode 100644 index 00000000..563cd913 --- /dev/null +++ b/types/interface/netdev/peer.pp @@ -0,0 +1,6 @@ +# netdev Peer section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Peer = Struct[{ + 'Name' => String[1], + 'MACAddress' => Optional[String[1]], +}] diff --git a/types/interface/netdev/tun.pp b/types/interface/netdev/tun.pp new file mode 100644 index 00000000..2809381b --- /dev/null +++ b/types/interface/netdev/tun.pp @@ -0,0 +1,10 @@ +# netdev Tun and Tap section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Tun = Struct[{ + 'MultiQueue' => Optional[Enum['yes','no']], + 'PacketInfo' => Optional[Enum['yes','no']], + 'VNetHeader' => Optional[Enum['yes','no']], + 'User' => Optional[String[1]], + 'Group' => Optional[String[1]], + 'KeepCarrier' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/tunnel.pp b/types/interface/netdev/tunnel.pp new file mode 100644 index 00000000..3c7b23ac --- /dev/null +++ b/types/interface/netdev/tunnel.pp @@ -0,0 +1,32 @@ +# netdev Tunnel section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Tunnel = Struct[{ + 'External' => Optional[Enum['yes','no']], + 'Local' => Optional[Variant[Enum['any', 'ipv4_link_local', 'ipv6_link_local', 'dhcp4', 'dhcp6', 'slaac'], String[1]]], + 'Remote' => Optional[Variant[Enum['any'], String[1]]], + 'TOS' => Optional[String[1]], + 'TTL' => Optional[Integer[1,255]], + 'DiscoverPathMTU' => Optional[Enum['yes','no']], + 'IgnoreDontFragment' => Optional[Enum['yes','no']], + 'IPv6FlowLabel' => Optional[String[1]], + 'CopyDSCP' => Optional[Enum['yes','no']], + 'EncapsulationLimit' => Optional[Integer[1,255]], + 'Key' => Optional[String[1]], + 'InputKey' => Optional[String[1]], + 'OutputKey' => Optional[String[1]], + 'Mode' => Optional[Enum['ip6ip6', 'ipip6', 'any']], + 'Independent' => Optional[Enum['yes','no']], + 'AssignToLoopback' => Optional[Enum['yes','no']], + 'AllowLocalRemote' => Optional[Enum['yes','no']], + 'FooOverUDP' => Optional[Enum['yes','no']], + 'FOUDestinationPort' => Optional[Integer[1]], + 'FOUSourcePort' => Optional[Integer[0]], + 'Encapsulation' => Optional[Enum['FooOverUDP','GenericUDPEncapsulation']], + 'IPv6RapidDeploymentPrefix' => Optional[String[1]], + 'ISATAP' => Optional[Enum['yes','no']], + 'SerializeTunneledPackets' => Optional[Enum['yes','no']], + 'ERSPANVersion' => Optional[Integer[0,2]], + 'ERSPANIndex' => Optional[Integer[0,1048575]], + 'ERSPANDirection' => Optional[Enum['ingress','egress']], + 'ERSPANHardwareId' => Optional[Integer[0,63]], +}] diff --git a/types/interface/netdev/vlan.pp b/types/interface/netdev/vlan.pp new file mode 100644 index 00000000..9dfee1e1 --- /dev/null +++ b/types/interface/netdev/vlan.pp @@ -0,0 +1,12 @@ +# netdev VLAN section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Vlan = Struct[{ + 'Id' => Optional[Integer[0,4094]], + 'Protocol' => Optional[Enum['802.1q','802.1ad']], + 'GVRP' => Optional[Enum['yes','no']], + 'MVRP' => Optional[Enum['yes','no']], + 'LooseBinding' => Optional[Enum['yes','no']], + 'ReorderHeader' => Optional[Enum['yes','no']], + 'EgressQOSMaps' => Optional[String[1]], + 'IngressQOSMaps' => Optional[String[1]], +}] diff --git a/types/interface/netdev/vrf.pp b/types/interface/netdev/vrf.pp new file mode 100644 index 00000000..7f1687e0 --- /dev/null +++ b/types/interface/netdev/vrf.pp @@ -0,0 +1,5 @@ +# netdev VRF section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Vrf = Struct[{ + 'Table' => Integer[0], +}] diff --git a/types/interface/netdev/vxcan.pp b/types/interface/netdev/vxcan.pp new file mode 100644 index 00000000..8655c1e9 --- /dev/null +++ b/types/interface/netdev/vxcan.pp @@ -0,0 +1,5 @@ +# netdev VXCAN section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Vxcan = Struct[{ + 'Peer' => String[1], +}] diff --git a/types/interface/netdev/vxlan.pp b/types/interface/netdev/vxlan.pp new file mode 100644 index 00000000..b265ec76 --- /dev/null +++ b/types/interface/netdev/vxlan.pp @@ -0,0 +1,29 @@ +# netdev VXLAN section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Vxlan = Struct[{ + 'VNI' => Optional[Integer[1, 16777215]], + 'Remote' => Optional[String[1]], + 'Local' => Optional[Variant[Enum['ipv4_link_local', 'ipv6_link_local', 'dhcp4', 'dhcp6', 'slaac'], String[1]]], + 'Group' => Optional[String[1]], + 'TOS' => Optional[String[1]], + 'TTL' => Optional[Variant[Enum['inherit'], Integer[0,255]]], + 'MacLearning' => Optional[Enum['yes','no']], + 'FDBAgeingSec' => Optional[String[1]], + 'MaximumFDBEntries' => Optional[Integer[1]], + 'ReduceARPProxy' => Optional[Enum['yes','no']], + 'L2MissNotification' => Optional[Enum['yes','no']], + 'L3MissNotification' => Optional[Enum['yes','no']], + 'RouteShortCircuit' => Optional[Enum['yes','no']], + 'UDPChecksum' => Optional[Enum['yes','no']], + 'UDP6ZeroChecksumTx' => Optional[Enum['yes','no']], + 'UDP6ZeroChecksumRx' => Optional[Enum['yes','no']], + 'RemoteChecksumTx' => Optional[Enum['yes','no']], + 'RemoteChecksumRx' => Optional[Enum['yes','no']], + 'GroupPolicyExtension' => Optional[Enum['yes','no']], + 'GenericProtocolExtension' => Optional[Enum['yes','no']], + 'DestinationPort' => Optional[Integer[1]], + 'PortRange' => Optional[String[1]], + 'FlowLabel' => Optional[Integer[0,1048575]], + 'IPDoNotFragment' => Optional[Enum['yes','no']], + 'Independent' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/wireguard.pp b/types/interface/netdev/wireguard.pp new file mode 100644 index 00000000..23351f71 --- /dev/null +++ b/types/interface/netdev/wireguard.pp @@ -0,0 +1,10 @@ +# netdev WireGuard section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Wireguard = Struct[{ + 'PrivateKey' => Optional[String[1]], + 'PrivateKeyFile' => Optional[Stdlib::Absolutepath], + 'ListenPort' => Optional[Variant[Integer[1,65535], Enum['auto']]], + 'FirewallMark' => Optional[Integer[1,4294967295]], + 'RouteTable' => Optional[Variant[String[1],Integer[1,4294967295]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], +}] diff --git a/types/interface/netdev/wireguardpeer.pp b/types/interface/netdev/wireguardpeer.pp new file mode 100644 index 00000000..e058bc2f --- /dev/null +++ b/types/interface/netdev/wireguardpeer.pp @@ -0,0 +1,12 @@ +# netdev WireGuard section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Wireguardpeer = Struct[{ + 'PublicKey' => Optional[String[1]], + 'PresharedKey' => Optional[String[1]], + 'PresharedKeyFile' => Optional[Stdlib::Absolutepath], + 'AllowedIPs' => Optional[Variant[String, Array[String]]], + 'Endpoint' => Optional[String[1]], + 'PersistentKeepalive' => Optional[Variant[Integer[0,65535],Enum['off']]], + 'RouteTable' => Optional[Variant[Integer[0,4294967295],String[1]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], +}] diff --git a/types/interface/netdev/wlan.pp b/types/interface/netdev/wlan.pp new file mode 100644 index 00000000..8e20dbe2 --- /dev/null +++ b/types/interface/netdev/wlan.pp @@ -0,0 +1,8 @@ +# netdev WLAN section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Wlan = Struct[{ + 'PhysicalDevice' => Optional[Variant[Integer[0], String[1]]], + 'Type' => Enum['ad-hoc', 'station', 'ap', 'ap-vlan', 'wds', + 'monitor', 'mesh-point', 'p2p-client', 'p2p-go', 'p2p-device', 'ocb', 'nan'], + 'WDS' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/netdev/xfrm.pp b/types/interface/netdev/xfrm.pp new file mode 100644 index 00000000..68f5ee92 --- /dev/null +++ b/types/interface/netdev/xfrm.pp @@ -0,0 +1,6 @@ +# netdev Xfrm section +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html +type Systemd::Interface::Netdev::Xfrm = Struct[{ + 'InterfaceId' => Optional[Variant[Integer[1],String[1]]], + 'Independent' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/network.pp b/types/interface/network.pp new file mode 100644 index 00000000..7411c927 --- /dev/null +++ b/types/interface/network.pp @@ -0,0 +1,89 @@ +# interface definition +# see https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network = Struct[{ + 'Match' => Optional[Systemd::Interface::Network::Match], + 'Link' => Optional[Systemd::Interface::Network::Link], + 'SR-IOV' => Optional[Systemd::Interface::Network::Sr_iov], + 'Network' => Optional[Systemd::Interface::Network::Network], + 'Address' => Optional[Variant[ + Systemd::Interface::Network::Address, + Array[Systemd::Interface::Network::Address], + ]], + 'Neighbor' => Optional[Variant[ + Systemd::Interface::Network::Neighbor, + Array[Systemd::Interface::Network::Neighbor], + ]], + 'IPv6AddressLabel' => Optional[Systemd::Interface::Network::Ipv6addresslabel], + 'RoutingPolicyRule' => Optional[Variant[ + Systemd::Interface::Network::Routingpolicyrule, + Array[Systemd::Interface::Network::Routingpolicyrule], + ]], + 'NextHop' => Optional[Variant[ + Systemd::Interface::Network::Nexthop, + Array[Systemd::Interface::Network::Nexthop], + ]], + 'Route' => Optional[Variant[ + Systemd::Interface::Network::Route, + Array[Systemd::Interface::Network::Route], + ]], + 'DHCPv4' => Optional[Systemd::Interface::Network::Dhcpv4], + 'DHCPv6' => Optional[Systemd::Interface::Network::Dhcpv6], + 'DHCPPrefixDelegation' => Optional[Systemd::Interface::Network::Dhcpprefixdelegation], + 'IPv6AcceptRA' => Optional[Systemd::Interface::Network::Ipv6acceptra], + 'DHCPServer' => Optional[Systemd::Interface::Network::Dhcpserver], + 'DHCPServerStaticLease' => Optional[Variant[ + Systemd::Interface::Network::Dhcpserverstaticlease, + Array[Systemd::Interface::Network::Dhcpserverstaticlease], + ]], + 'IPv6SendRA' => Optional[Systemd::Interface::Network::Ipv6sendra], + 'IPv6Prefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6prefix, + Array[Systemd::Interface::Network::Ipv6prefix], + ]], + 'IPv6RoutePrefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6routeprefix, + Array[Systemd::Interface::Network::Ipv6routeprefix], + ]], + 'IPv6PREF64Prefix' => Optional[Variant[ + Systemd::Interface::Network::Ipv6pref64prefix, + Array[Systemd::Interface::Network::Ipv6pref64prefix], + ]], + 'Bridge' => Optional[Systemd::Interface::Network::Bridge], + 'BridgeFDB' => Optional[Variant[ + Systemd::Interface::Network::Bridgefdb, + Array[Systemd::Interface::Network::Bridgefdb], + ]], + 'BridgeMDB' => Optional[Variant[ + Systemd::Interface::Network::Bridgemdb, + Array[Systemd::Interface::Network::Bridgemdb], + ]], + 'LLDP' => Optional[Systemd::Interface::Network::Lldp], + 'CAN' => Optional[Systemd::Interface::Network::Can], + 'IPoIB' => Optional[Systemd::Interface::Network::Ipoib], + 'QDisc' => Optional[Systemd::Interface::Network::Qdisc], + 'NetworkEmulator' => Optional[Systemd::Interface::Network::Networkemulator], + 'TokenBucketFilter' => Optional[Systemd::Interface::Network::Tokenbucketfilter], + 'PIE' => Optional[Systemd::Interface::Network::Pie], + 'FlowQueuePIE' => Optional[Systemd::Interface::Network::Flowqueuepie], + 'StochasticFairBlue' => Optional[Systemd::Interface::Network::Stochasticfairblue], + 'StochasticFairnessQueueing' => Optional[Systemd::Interface::Network::Stochasticfairnessqueueing], + 'BFIFO' => Optional[Systemd::Interface::Network::Bfifo], + 'PFIFO' => Optional[Systemd::Interface::Network::Pfifo], + 'PFIFOHeadDrop' => Optional[Systemd::Interface::Network::Pfifoheaddrop], + 'PFIFOFast' => Optional[Systemd::Interface::Network::Pfifofast], + 'CAKE' => Optional[Systemd::Interface::Network::Cake], + 'ControlledDelay' => Optional[Systemd::Interface::Network::Controlleddelay], + 'DeficitRoundRobinScheduler' => Optional[Systemd::Interface::Network::Deficitroundrobinscheduler], + 'DeficitRoundRobinSchedulerClass' => Optional[Systemd::Interface::Network::Deficitroundrobinschedulerclass], + 'EnhancedTransmissionSelection' => Optional[Systemd::Interface::Network::Enhancedtransmissionselection], + 'GenericRandomEarlyDetection' => Optional[Systemd::Interface::Network::Genericrandomearlydetection], + 'FairQueueingControlledDelay' => Optional[Systemd::Interface::Network::Fairqueueingcontrolleddelay], + 'FairQueueing' => Optional[Systemd::Interface::Network::Fairqueueing], + 'TrivialLinkEqualizer' => Optional[Systemd::Interface::Network::Triviallinkequalizer], + 'HierarchyTokenBucket' => Optional[Systemd::Interface::Network::Hierarchytokenbucket], + 'HierarchyTokenBucketClass' => Optional[Systemd::Interface::Network::Hierarchytokenbucketclass], + 'HeavyHitterFilter' => Optional[Systemd::Interface::Network::Heavyhitterfilter], + 'QuickFairQueueing' => Optional[Systemd::Interface::Network::Quickfairqueueing], + 'QuickFairQueueingClass' => Optional[Systemd::Interface::Network::Quickfairqueueingclass], + 'BridgeVLAN' => Optional[Systemd::Interface::Network::Bridgevlan], +}] diff --git a/types/interface/network/address.pp b/types/interface/network/address.pp new file mode 100644 index 00000000..b2fc566d --- /dev/null +++ b/types/interface/network/address.pp @@ -0,0 +1,18 @@ +# interface network Address section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Address = Struct[{ + 'Address' => String[1], + 'Peer' => Optional[String[1]], + 'Broadcast' => Optional[String[1]], + 'Label' => Optional[String[1,15]], + 'PreferredLifetime' => Optional[Enum['forever', 'infinity', '0']], + 'Scope' => Optional[Variant[Enum['global', 'link', 'host'],Integer[0,255]]], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'HomeAddress' => Optional[Enum['yes', 'no']], + 'DuplicateAddressDetection' => Optional[Enum['ipv4', 'ipv6', 'both', 'none']], + 'ManageTemporaryAddress' => Optional[Enum['yes', 'no']], + 'AddPrefixRoute' => Optional[Enum['yes', 'no']], + 'AutoJoin' => Optional[Enum['yes', 'no']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] diff --git a/types/interface/network/bfifo.pp b/types/interface/network/bfifo.pp new file mode 100644 index 00000000..cffeb2e8 --- /dev/null +++ b/types/interface/network/bfifo.pp @@ -0,0 +1,7 @@ +# interface network BFIFO section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Bfifo = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'LimitBytes' => Optional[String[1]], +}] diff --git a/types/interface/network/bridge.pp b/types/interface/network/bridge.pp new file mode 100644 index 00000000..968dbdd3 --- /dev/null +++ b/types/interface/network/bridge.pp @@ -0,0 +1,19 @@ +# interface network Bridge section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Bridge = Struct[{ + 'UnicastFlood' => Optional[Enum['yes', 'no']], + 'MulticastFlood' => Optional[Enum['yes', 'no']], + 'MulticastToUnicast' => Optional[Enum['yes', 'no']], + 'NeighborSuppression' => Optional[Enum['yes', 'no']], + 'Learning' => Optional[Enum['yes', 'no']], + 'HairPin' => Optional[Enum['yes', 'no']], + 'Isolated' => Optional[Enum['yes', 'no']], + 'UseBPDU' => Optional[Enum['yes', 'no']], + 'FastLeave' => Optional[Enum['yes', 'no']], + 'AllowPortToBeRoot' => Optional[Enum['yes', 'no']], + 'ProxyARP' => Optional[Enum['yes', 'no']], + 'ProxyARPWiFi' => Optional[Enum['yes', 'no']], + 'MulticastRouter' => Optional[Enum['no', 'query', 'permanent', 'temporary']], + 'Cost' => Optional[Integer[1, 65535]], + 'Priority' => Optional[Integer[0,63]], +}] diff --git a/types/interface/network/bridgefdb.pp b/types/interface/network/bridgefdb.pp new file mode 100644 index 00000000..1cf8f7c2 --- /dev/null +++ b/types/interface/network/bridgefdb.pp @@ -0,0 +1,10 @@ +# interface network BridgeFDB section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Bridgefdb = Struct[{ + 'MACAddress' => String[1], + 'Destination' => Optional[String[1]], + 'VLANId' => Optional[String[1]], + 'VNI' => Optional[Integer[1, 16777215]], + 'AssociatedWith' => Optional[Enum['use', 'self', 'master', 'router']], + 'OutgoingInterface' => Optional[String[1]], +}] diff --git a/types/interface/network/bridgemdb.pp b/types/interface/network/bridgemdb.pp new file mode 100644 index 00000000..3d25676a --- /dev/null +++ b/types/interface/network/bridgemdb.pp @@ -0,0 +1,6 @@ +# interface network BridgeMDB section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Bridgemdb = Struct[{ + 'MulticastGroupAddress' => Optional[String[1]], + 'VLANID' => Optional[Integer[0,4094]], +}] diff --git a/types/interface/network/bridgevlan.pp b/types/interface/network/bridgevlan.pp new file mode 100644 index 00000000..18a0e008 --- /dev/null +++ b/types/interface/network/bridgevlan.pp @@ -0,0 +1,7 @@ +# interface network BridgeVLAN section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Bridgevlan = Struct[{ + 'VLAN' => Optional[Variant[String[1], Array[String[1]]]], + 'EgressUntagged' => Optional[Variant[String[1], Array[String[1]]]], + 'PVID' => Optional[Variant[Enum['no','false'],Integer[1]]], +}] diff --git a/types/interface/network/cake.pp b/types/interface/network/cake.pp new file mode 100644 index 00000000..2f1fbe1e --- /dev/null +++ b/types/interface/network/cake.pp @@ -0,0 +1,19 @@ +# interface network CAKE section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Cake = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Bandwidth' => Optional[String[1]], + 'AutoRateIngress' => Optional[Enum['yes','no']], + 'OverheadBytes' => Optional[Integer[-64,256]], + 'MPUBytes' => Optional[Integer[1,256]], + 'CompensationMode' => Optional[Enum['none', 'atm', 'ptm']], + 'UseRawPacketSize' => Optional[Enum['yes','no']], + 'FlowIsolationMode' => Optional[Enum['none','src-host', 'dst-host', 'hosts', 'flows','dual-src-host', 'dual-dst-host', 'triple']], + 'NAT' => Optional[Enum['yes','no']], + 'PriorityQueueingPreset' => Optional[Enum['besteffort','precedence', 'diffserv8', 'diffserv4', 'diffserv3']], + 'FirewallMark' => Optional[Integer[1,4294967295]], + 'Wash' => Optional[Enum['yes','no']], + 'SplitGSO' => Optional[Enum['yes','no']], + 'RTTSec' => Optional[String[1]], + 'AckFilter' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/network/can.pp b/types/interface/network/can.pp new file mode 100644 index 00000000..df370bd3 --- /dev/null +++ b/types/interface/network/can.pp @@ -0,0 +1,29 @@ +# interface network CAN section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Can = Struct[{ + 'BitRate' => Optional[String[1]], + 'SamplePoint' => Optional[String[1]], + 'TimeQuantaNSec' => Optional[String[1]], + 'PropagationSegment' => Optional[Integer[0,4294967295]], + 'PhaseBufferSegment1' => Optional[Integer[0,4294967295]], + 'PhaseBufferSegment2' => Optional[Integer[0,4294967295]], + 'SyncJumpWidth' => Optional[Integer[0,4294967295]], + 'DataBitRate' => Optional[String[1]], + 'DataSamplePoint' => Optional[String[1]], + 'DataTimeQuantaNSec' => Optional[String[1]], + 'DataPropagationSegment' => Optional[String[1]], + 'DataPhaseBufferSegment1' => Optional[String[1]], + 'DataPhaseBufferSegment2' => Optional[String[1]], + 'DataSyncJumpWidth' => Optional[String[1]], + 'FDMode' => Optional[Enum['yes','no']], + 'FDNonISO' => Optional[Enum['yes','no']], + 'RestartSec' => Optional[String[1]], + 'Termination' => Optional[Enum['yes','no']], + 'TripleSampling' => Optional[Enum['yes','no']], + 'BusErrorReporting' => Optional[Enum['yes','no']], + 'ListenOnly' => Optional[Enum['yes','no']], + 'Loopback' => Optional[Enum['yes','no']], + 'OneShot' => Optional[Enum['yes','no']], + 'PresumeAck' => Optional[Enum['yes','no']], + 'ClassicDataLengthCode' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/network/controlleddelay.pp b/types/interface/network/controlleddelay.pp new file mode 100644 index 00000000..32536731 --- /dev/null +++ b/types/interface/network/controlleddelay.pp @@ -0,0 +1,10 @@ +# interface network ControlledDelay section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Controlleddelay= Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'TargetSec' => Optional[String[1]], + 'IntervalSec' => Optional[String[1]], + 'CEThresholdSec' => Optional[String[1]], +}] diff --git a/types/interface/network/deficitroundrobinscheduler.pp b/types/interface/network/deficitroundrobinscheduler.pp new file mode 100644 index 00000000..1de79b60 --- /dev/null +++ b/types/interface/network/deficitroundrobinscheduler.pp @@ -0,0 +1,6 @@ +# interface network DeficitRoundRobinScheduler section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Deficitroundrobinscheduler= Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], +}] diff --git a/types/interface/network/deficitroundrobinschedulerclass.pp b/types/interface/network/deficitroundrobinschedulerclass.pp new file mode 100644 index 00000000..5a5a06c6 --- /dev/null +++ b/types/interface/network/deficitroundrobinschedulerclass.pp @@ -0,0 +1,7 @@ +# interface network DeficitRoundRobinSchedulerClass section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Deficitroundrobinschedulerclass = Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], +}] diff --git a/types/interface/network/dhcpprefixdelegation.pp b/types/interface/network/dhcpprefixdelegation.pp new file mode 100644 index 00000000..5460f455 --- /dev/null +++ b/types/interface/network/dhcpprefixdelegation.pp @@ -0,0 +1,13 @@ +# interface network DHCPPrefixDelegation section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Dhcpprefixdelegation = Struct[{ + 'UplinkInterface' => Optional[String[1]], + 'SubnetId' => Optional[String[1]], + 'Announce' => Optional[Enum['yes','no']], + 'Assign' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'ManageTemporaryAddress' => Optional[Enum['yes', 'no']], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] diff --git a/types/interface/network/dhcpserver.pp b/types/interface/network/dhcpserver.pp new file mode 100644 index 00000000..20b17415 --- /dev/null +++ b/types/interface/network/dhcpserver.pp @@ -0,0 +1,38 @@ +# interface network DHCPServer section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Dhcpserver = Struct[{ + 'ServerAddress' => Optional[String[1]], + 'PoolOffset' => Optional[String[1]], + 'PoolSize' => Optional[String[1]], + 'DefaultLeaseTimeSec' => Optional[String[1]], + 'MaxLeaseTimeSec' => Optional[String[1]], + 'UplinkInterface' => Optional[String[1]], + 'EmitDNS' => Optional[Enum['yes','no']], + 'DNS' => Optional[String[1]], + 'EmitNTP' => Optional[Enum['yes','no']], + 'NTP' => Optional[String[1]], + 'EmitSIP' => Optional[Enum['yes','no']], + 'SIP' => Optional[String[1]], + 'EmitPOP3' => Optional[Enum['yes','no']], + 'POP3' => Optional[String[1]], + 'EmitSMTP' => Optional[Enum['yes','no']], + 'SMTP' => Optional[String[1]], + 'EmitLPR' => Optional[Enum['yes','no']], + 'LPR' => Optional[String[1]], + 'EmitRouter' => Optional[Enum['yes','no']], + 'Router' => Optional[String[1]], + 'EmitTimezone' => Optional[Enum['yes','no']], + 'Timezone' => Optional[String[1]], + 'BootServerAddress' => Optional[String[1]], + 'BootServerName' => Optional[String[1]], + 'BootFilename' => Optional[String[1]], + 'IPv6OnlyPreferredSec' => Optional[String[1]], + 'SendOption' => Optional[String[1]], + 'SendVendorOption' => Optional[String[1]], + 'BindToInterface' => Optional[Enum['yes','no']], + 'RelayTarget' => Optional[String[1]], + 'RelayAgentCircuitId' => Optional[String[1]], + 'RelayAgentRemoteId' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'PersistLeases' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/network/dhcpserverstaticlease.pp b/types/interface/network/dhcpserverstaticlease.pp new file mode 100644 index 00000000..05bcd2d1 --- /dev/null +++ b/types/interface/network/dhcpserverstaticlease.pp @@ -0,0 +1,6 @@ +# interface network DHCPServerStaticLease section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Dhcpserverstaticlease = Struct[{ + 'MACAddress' => String[1], + 'Address' => String[1], +}] diff --git a/types/interface/network/dhcpv4.pp b/types/interface/network/dhcpv4.pp new file mode 100644 index 00000000..05352285 --- /dev/null +++ b/types/interface/network/dhcpv4.pp @@ -0,0 +1,53 @@ +# interface network DHCPv4 section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Dhcpv4 = Struct[{ + 'RequestAddress' => Optional[String[1]], + 'SendHostname' => Optional[Enum['yes','no']], + 'Hostname' => Optional[String[1]], + 'MUDURL' => Optional[String[1]], + 'ClientIdentifier' => Optional[String[1]], + 'VendorClassIdentifier' => Optional[String[1]], + 'UserClass' => Optional[String[1]], + 'DUIDType' => Optional[String[1]], + 'DUIDRawData' => Optional[String[1]], + 'IAID' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'Anonymize' => Optional[Enum['yes','no']], + 'RequestOptions' => Optional[String[1]], + 'SendOption' => Optional[String[1]], + 'SendVendorOption' => Optional[String[1]], + 'IPServiceType' => Optional[Enum['none','CS6', 'CS3']], + 'SocketPriority' => Optional[Integer[0,6]], + 'Label' => Optional[String[1]], + 'UseDNS' => Optional[Enum['yes','no']], + 'RoutesToDNS' => Optional[Enum['yes','no']], + 'UseNTP' => Optional[Enum['yes','no']], + 'RoutesToNTP' => Optional[Enum['yes','no']], + 'UseSIP' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UseMTU' => Optional[Enum['yes','no']], + 'UseHostname' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'UseRoutes' => Optional[Enum['yes','no']], + 'RouteMetric' => Optional[Integer[0,4294967295]], + 'RouteTable' => Optional[Variant[String[1],Integer[0,4294967295]]], + 'RouteMTUBytes' => Optional[String[1]], + 'QuickAck' => Optional[Enum['yes','no']], + 'InitialCongestionWindow' => Optional[String[1]], + 'InitialAdvertisedReceiveWindow' => Optional[String[1]], + 'UseGateway' => Optional[Enum['yes','no']], + 'UseTimezone' => Optional[Enum['yes','no']], + 'Use6RD' => Optional[Enum['yes','no']], + 'IPv6OnlyMode' => Optional[Enum['yes','no']], + 'FallbackLeaseLifetimeSec' => Optional[Enum['forever', 'infinity']], + 'RequestBroadcast' => Optional[Enum['yes','no']], + 'MaxAttempts' => Optional[Variant[Integer[0],Enum['forever', 'infinity']]], + 'ListenPort' => Optional[String[1]], + 'ServerPort' => Optional[String[1]], + 'DenyList' => Optional[String[1]], + 'AllowList' => Optional[String[1]], + 'SendRelease' => Optional[Enum['yes','no']], + 'SendDecline' => Optional[Enum['yes','no']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] diff --git a/types/interface/network/dhcpv6.pp b/types/interface/network/dhcpv6.pp new file mode 100644 index 00000000..f3bb2b94 --- /dev/null +++ b/types/interface/network/dhcpv6.pp @@ -0,0 +1,28 @@ +# interface network DHCPv6 section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Dhcpv6 = Struct[{ + 'MUDURL' => Optional[String[1]], + 'IAID' => Optional[String[1]], + 'DUIDType' => Optional[String[1]], + 'DUIDRawData' => Optional[String[1]], + 'RequestOptions' => Optional[String[1]], + 'SendOption' => Optional[Integer[1,65536]], + 'SendVendorOption' => Optional[String[1]], + 'UserClass' => Optional[String[1]], + 'VendorClass' => Optional[String[1]], + 'PrefixDelegationHint' => Optional[String[1]], + 'RapidCommit' => Optional[Enum['yes','no']], + 'SendHostname' => Optional[Enum['yes','no']], + 'Hostname' => Optional[String[1]], + 'UseAddress' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UseDelegatedPrefix' => Optional[Enum['yes','no']], + 'UseDNS' => Optional[Enum['yes','no']], + 'UseNTP' => Optional[Enum['yes','no']], + 'UseHostname' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'NetLabel' => Optional[Enum['yes','no']], + 'SendRelease' => Optional[Enum['yes','no']], + 'NFTSet' => Optional[String[1]], + 'WithoutRA' => Optional[Enum['no', 'solicit', 'information-request']], +}] diff --git a/types/interface/network/enhancedtransmissionselection.pp b/types/interface/network/enhancedtransmissionselection.pp new file mode 100644 index 00000000..1c313255 --- /dev/null +++ b/types/interface/network/enhancedtransmissionselection.pp @@ -0,0 +1,10 @@ +# interface network EnhancedTransmissionSelection section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Enhancedtransmissionselection = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'Bands' => Optional[Integer[1,16]], + 'StrictBands' => Optional[Integer[1,16]], + 'QuantumBytes' => Optional[String[1]], + 'PriorityMap' => Optional[String[1]], +}] diff --git a/types/interface/network/fairqueueing.pp b/types/interface/network/fairqueueing.pp new file mode 100644 index 00000000..ea708437 --- /dev/null +++ b/types/interface/network/fairqueueing.pp @@ -0,0 +1,15 @@ +# interface network FairQueueing section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Fairqueueing = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'FlowLimit' => Optional[Integer[1]], + 'QuantumBytes' => Optional[String[1]], + 'InitialQuantumBytes' => Optional[String[1]], + 'MaximumRate' => Optional[String[1]], + 'Buckets' => Optional[String[1]], + 'OrphanMask' => Optional[Integer[0]], + 'Pacing' => Optional[Enum['yes','no']], + 'CEThresholdSec' => Optional[String[1]], +}] diff --git a/types/interface/network/fairqueueingcontrolleddelay.pp b/types/interface/network/fairqueueingcontrolleddelay.pp new file mode 100644 index 00000000..ffdc551b --- /dev/null +++ b/types/interface/network/fairqueueingcontrolleddelay.pp @@ -0,0 +1,14 @@ +# interface network FairQueueingControlledDelay section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Fairqueueingcontrolleddelay = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'MemoryLimitBytes' => Optional[String[1]], + 'Flows' => Optional[String[1]], + 'TargetSec' => Optional[String[1]], + 'IntervalSec' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], + 'ECN' => Optional[Enum['yes','no']], + 'CEThresholdSec' => Optional[String[1]], +}] diff --git a/types/interface/network/flowqueuepie.pp b/types/interface/network/flowqueuepie.pp new file mode 100644 index 00000000..170432e9 --- /dev/null +++ b/types/interface/network/flowqueuepie.pp @@ -0,0 +1,7 @@ +# interface network FlowQueuePIE section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Flowqueuepie = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] diff --git a/types/interface/network/genericrandomearlydetection.pp b/types/interface/network/genericrandomearlydetection.pp new file mode 100644 index 00000000..357ddcfc --- /dev/null +++ b/types/interface/network/genericrandomearlydetection.pp @@ -0,0 +1,9 @@ +# interface network GenericRandomEarlyDetection section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Genericrandomearlydetection = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'VirtualQueues' => Optional[Integer[1,16]], + 'DefaultVirtualQueues' => Optional[Integer[1,16]], + 'GenericRIO' => Optional[Enum['yes','no']], +}] diff --git a/types/interface/network/heavyhitterfilter.pp b/types/interface/network/heavyhitterfilter.pp new file mode 100644 index 00000000..fcc9439b --- /dev/null +++ b/types/interface/network/heavyhitterfilter.pp @@ -0,0 +1,7 @@ +# interface network HeavyHitterFilter section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Heavyhitterfilter = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]] +}] diff --git a/types/interface/network/hierarchytokenbucketclass.pp b/types/interface/network/hierarchytokenbucketclass.pp new file mode 100644 index 00000000..e1b999b0 --- /dev/null +++ b/types/interface/network/hierarchytokenbucketclass.pp @@ -0,0 +1,14 @@ +# interface network HierarchyTokenBucketClass section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Hierarchytokenbucketclass = Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'Priority' => Optional[String[1]], + 'QuantumBytes' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], + 'OverheadBytes' => Optional[String[1]], + 'Rate' => Optional[String[1]], + 'CeilRate' => Optional[String[1]], + 'BufferBytes' => Optional[String[1]], + 'CeilBufferBytes' => Optional[String[1]], +}] diff --git a/types/interface/network/ipoib.pp b/types/interface/network/ipoib.pp new file mode 100644 index 00000000..9a51bfdf --- /dev/null +++ b/types/interface/network/ipoib.pp @@ -0,0 +1,6 @@ +# interface network IPoIB section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipoib = Struct[{ + 'Mode' => Optional[Enum['datagram','connected']], + 'IgnoreUserspaceMulticastGroup' => Optional[Enum['yes', 'no']], +}] diff --git a/types/interface/network/ipv6acceptra.pp b/types/interface/network/ipv6acceptra.pp new file mode 100644 index 00000000..5c1ad815 --- /dev/null +++ b/types/interface/network/ipv6acceptra.pp @@ -0,0 +1,30 @@ +# interface network IPv6AcceptRA section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6acceptra = Struct[{ + 'UseRedirect' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'UseDNS' => Optional[Enum['yes','no']], + 'UseDomains' => Optional[Enum['yes','no']], + 'RouteTable' => Optional[Variant[String[1],Integer[0,4294967295]]], + 'RouteMetric' => Optional[String[1]], + 'QuickAck' => Optional[Enum['yes','no']], + 'UseMTU' => Optional[Enum['yes','no']], + 'UseHopLimit' => Optional[Enum['yes','no']], + 'UseReachableTime' => Optional[Enum['yes','no']], + 'UseRetransmissionTime' => Optional[Enum['yes','no']], + 'UseGateway' => Optional[Enum['yes','no']], + 'UseRoutePrefix' => Optional[Enum['yes','no']], + 'UseCaptivePortal' => Optional[Enum['yes','no']], + 'UsePREF64' => Optional[Enum['yes','no']], + 'UseAutonomousPrefix' => Optional[Enum['yes','no']], + 'UseOnLinkPrefix' => Optional[Enum['yes','no']], + 'RouterDenyList' => Optional[String[1]], + 'RouterAllowList' => Optional[String[1]], + 'PrefixDenyList' => Optional[String[1]], + 'PrefixAllowList' => Optional[String[1]], + 'RouteDenyList' => Optional[String[1]], + 'RouteAllowList' => Optional[String[1]], + 'DHCPv6Client' => Optional[Enum['yes','no', 'always']], + 'NetLabel' => Optional[String[1]], + 'NFTSet' => Optional[String[1]], +}] diff --git a/types/interface/network/ipv6addresslabel.pp b/types/interface/network/ipv6addresslabel.pp new file mode 100644 index 00000000..934d35df --- /dev/null +++ b/types/interface/network/ipv6addresslabel.pp @@ -0,0 +1,6 @@ +# interface network IPv6AddressLabel section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6addresslabel = Struct[{ + 'Label' => Optional[Integer[0,4294967294]], + 'Prefix' => Optional[String[1]], +}] diff --git a/types/interface/network/ipv6pref64prefix.pp b/types/interface/network/ipv6pref64prefix.pp new file mode 100644 index 00000000..fc4e17f7 --- /dev/null +++ b/types/interface/network/ipv6pref64prefix.pp @@ -0,0 +1,6 @@ +# interface network IPv6PREF64Prefix section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6pref64prefix = Struct[{ + 'Prefix' => Optional[String[1]], + 'LifetimeSec' => Optional[String[1]], +}] diff --git a/types/interface/network/ipv6prefix.pp b/types/interface/network/ipv6prefix.pp new file mode 100644 index 00000000..eb2ef2fa --- /dev/null +++ b/types/interface/network/ipv6prefix.pp @@ -0,0 +1,12 @@ +# interface network IPv6Prefix section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6prefix = Struct[{ + 'AddressAutoconfiguration' => Optional[Enum['yes','no']], + 'OnLink' => Optional[Enum['yes','no']], + 'Prefix' => Optional[String[1]], + 'PreferredLifetimeSec' => Optional[String[1]], + 'ValidLifetimeSec' => Optional[String[1]], + 'Assign' => Optional[Enum['yes','no']], + 'Token' => Optional[String[1]], + 'RouteMetric' => Optional[Integer[0, 4294967295]], +}] diff --git a/types/interface/network/ipv6routeprefix.pp b/types/interface/network/ipv6routeprefix.pp new file mode 100644 index 00000000..195b2a06 --- /dev/null +++ b/types/interface/network/ipv6routeprefix.pp @@ -0,0 +1,6 @@ +# interface network IPv6RoutePrefix section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6routeprefix = Struct[{ + 'Route' => Optional[String[1]], + 'LifetimeSec' => Optional[String[1]], +}] diff --git a/types/interface/network/ipv6sendra.pp b/types/interface/network/ipv6sendra.pp new file mode 100644 index 00000000..0ea6ee6b --- /dev/null +++ b/types/interface/network/ipv6sendra.pp @@ -0,0 +1,20 @@ +# interface network IPv6SendRA section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Ipv6sendra = Struct[{ + 'Managed' => Optional[Enum['yes','no']], + 'OtherInformation' => Optional[Enum['yes','no']], + 'RouterLifetimeSec' => Optional[String[1]], + 'ReachableTimeSec' => Optional[String[1]], + 'RetransmitSec' => Optional[String[1]], + 'RouterPreference' => Optional[Enum['high', 'medium', 'low', 'normal', 'default']], + 'HopLimit' => Optional[Integer[0,255]], + 'UplinkInterface' => Optional[String[1]], + 'EmitDNS' => Optional[Enum['yes','no']], + 'DNS' => Optional[String[1]], + 'EmitDomains' => Optional[Enum['yes','no']], + 'Domains' => Optional[String[1]], + 'DNSLifetimeSec' => Optional[String[1]], + 'HomeAgent' => Optional[Enum['yes','no']], + 'HomeAgentLifetimeSec' => Optional[String[1]], + 'HomeAgentPreference' => Optional[Integer[0,65535]], +}] diff --git a/types/interface/network/link.pp b/types/interface/network/link.pp new file mode 100644 index 00000000..017957e6 --- /dev/null +++ b/types/interface/network/link.pp @@ -0,0 +1,17 @@ +# interface network Link section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Link = Struct[{ + 'MACAddress' => Optional[String[1]], + 'MTUBytes' => Optional[Integer[1280]], + 'ARP' => Optional[Enum['yes','no']], + 'Multicast' => Optional[Enum['yes','no']], + 'AllMulticast' => Optional[Enum['yes','no']], + 'Promiscuous' => Optional[Enum['yes','no']], + 'Unmanaged' => Optional[Enum['yes','no']], + 'Group' => Optional[Integer[0,2147483647]], + 'RequiredForOnline' => Optional[String[1]], + 'RequiredFamilyForOnline' => Optional[Enum['no', 'ipv4', 'ipv6', 'both', 'any']], + 'ActivationPolicy' => Optional[Enum[ + 'up', 'always-up', 'manual', 'always-down', 'down', 'bound' + ]], +}] diff --git a/types/interface/network/lldp.pp b/types/interface/network/lldp.pp new file mode 100644 index 00000000..0e890de9 --- /dev/null +++ b/types/interface/network/lldp.pp @@ -0,0 +1,5 @@ +# interface network LLDP section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Lldp = Struct[{ + 'MUDURL' => Optional[String[1]], +}] diff --git a/types/interface/network/match.pp b/types/interface/network/match.pp new file mode 100644 index 00000000..c5488713 --- /dev/null +++ b/types/interface/network/match.pp @@ -0,0 +1,27 @@ +# interface network Match section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Match = Struct[{ + 'MACAddress' => Optional[String[1]], + 'PermanentMACAddress' => Optional[String[1]], + 'Path' => Optional[String[1]], + 'Driver' => Optional[String[1]], + 'Type' => Optional[String[1]], + 'Kind' => Optional[String[1]], + 'Property' => Optional[String[1]], + 'Name' => Optional[String[1]], + 'WLANInterfaceType' => Optional[Enum[ + 'ad-hoc', 'station', 'ap', 'ap-vlan', 'wds', 'monitor', + 'mesh-point', 'p2p-client', 'p2p-go', 'p2p-device', 'ocb', 'nan', + '!ad-hoc', '!station', '!ap', '!ap-vlan', '!wds', '!monitor', + '!mesh-point', '!p2p-client', '!p2p-go', '!p2p-device', '!ocb', '!nan' + ]], + 'SSID' => Optional[String[1]], + 'BSSID' => Optional[String[1]], + 'Host' => Optional[String[1]], + 'Virtualization' => Optional[String[1]], + 'KernelCommandLine' => Optional[String[1]], + 'KernelVersion' => Optional[String[1]], + 'Credential' => Optional[String[1]], + 'Architecture' => Optional[String[1]], + 'Firmware' => Optional[String[1]], +}] diff --git a/types/interface/network/neighbor.pp b/types/interface/network/neighbor.pp new file mode 100644 index 00000000..5588e871 --- /dev/null +++ b/types/interface/network/neighbor.pp @@ -0,0 +1,6 @@ +# interface network Neighbor section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Neighbor = Struct[{ + 'Address' => Optional[String[1]], + 'LinkLayerAddress' => Optional[String[1]], +}] diff --git a/types/interface/network/network.pp b/types/interface/network/network.pp new file mode 100644 index 00000000..0b8c63c0 --- /dev/null +++ b/types/interface/network/network.pp @@ -0,0 +1,67 @@ +# interface network Network section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Network = Struct[{ + 'Description' => Optional[String[1]], + 'DHCP' => Optional[Enum['yes', 'no', 'ipv4', 'ipv6']], + 'DHCPServer' => Optional[Enum['yes', 'no']], + 'LinkLocalAddressing' => Optional[Enum['yes', 'no', 'ipv4', 'ipv6']], + 'IPv6LinkLocalAddressGenerationMode' => Optional[Enum[ + 'eui64', 'none', 'stable-privacy', 'random' + ]], + 'IPv6StableSecretAddress' => Optional[String[1]], + 'IPv4LLStartAddress' => Optional[String[1]], + 'IPv4LLRoute' => Optional[Enum['yes', 'no']], + 'DefaultRouteOnDevice' => Optional[Enum['yes', 'no']], + 'LLMNR' => Optional[Enum['yes', 'no', 'resolve']], + 'MulticastDNS' => Optional[Enum['yes', 'no', 'resolve']], + 'DNSOverTLS' => Optional[Enum['yes', 'no', 'opportunistic']], + 'DNSSEC' => Optional[Enum['yes', 'no', 'allow-downgrade']], + 'DNSSECNegativeTrustAnchors' => Optional[String[1]], + 'LLDP' => Optional[Enum['yes', 'no', 'routers-only']], + 'EmitLLDP' => Optional[Enum['yes', 'no', 'nearest-bridge', 'non-tpmr-bridge', 'customer-bridge']], + 'BindCarrier' => Optional[String[1]], + 'Address' => Optional[Variant[Array[String[1]], String[1]]], + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'DNS' => Optional[Variant[Array[String[1]], String[1]]], + 'UseDomains' => Optional[Enum['yes', 'no', 'route']], + 'DNSDefaultRoute' => Optional[Enum['yes', 'no']], + 'NTP' => Optional[Enum['yes', 'no', 'route']], + 'IPv4Forwarding' => Optional[Enum['yes', 'no']], + 'IPv6Forwarding' => Optional[Enum['yes', 'no']], + 'IPMasquerade' => Optional[Enum['ipv4', 'ipv6', 'both', 'no']], + 'IPv6PrivacyExtensions' => Optional[Enum['yes', 'no', 'prefer-public', 'kernel']], + 'IPv6AcceptRA' => Optional[Enum['yes', 'no']], + 'IPv6DuplicateAddressDetection' => Optional[Integer], + 'IPv6HopLimit' => Optional[Integer[1,255]], + 'IPv6RetransmissionTimeSec' => Optional[Integer[0]], + 'IPv4ReversePathFilter' => Optional[Enum['no', 'strict', 'loose']], + 'IPv4AcceptLocal' => Optional[Enum['yes', 'no']], + 'IPv4RouteLocalnet' => Optional[Enum['yes', 'no']], + 'IPv4ProxyARP' => Optional[Enum['yes', 'no']], + 'IPv4ProxyARPPrivateVLAN' => Optional[Enum['yes', 'no']], + 'IPv6ProxyNDP' => Optional[Enum['yes', 'no']], + 'IPv6ProxyNDPAddress' => Optional[Variant[String[1], Array[String[1]]]], + 'IPv6SendRA' => Optional[Enum['yes', 'no']], + 'DHCPPrefixDelegation' => Optional[Enum['yes', 'no']], + 'IPv6MTUBytes' => Optional[Integer[1280]], + 'KeepMaster' => Optional[Enum['yes', 'no']], + 'BatmanAdvanced' => Optional[String[1]], + 'Bond' => Optional[String[1]], + 'Bridge' => Optional[String[1]], + 'VRF' => Optional[String[1]], + 'IPoIB' => Optional[Variant[String[1],Array[String[1]]]], + 'IPVLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'IPVTAP' => Optional[Variant[String[1],Array[String[1]]]], + 'MACsec' => Optional[Variant[String[1],Array[String[1]]]], + 'MACVLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'MACVTAP' => Optional[Variant[String[1],Array[String[1]]]], + 'Tunnel' => Optional[Variant[String[1],Array[String[1]]]], + 'VLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'VXLAN' => Optional[Variant[String[1],Array[String[1]]]], + 'Xfrm' => Optional[Variant[String[1],Array[String[1]]]], + 'ActiveSlave' => Optional[Enum['yes', 'no']], + 'PrimarySlave' => Optional[Enum['yes', 'no']], + 'ConfigureWithoutCarrier' => Optional[Enum['yes', 'no']], + # 'IgnoreCarrierLoss' => Optional[Variant[Enum['yes', 'no'],Systemd::Unit::Timespan]], + 'KeepConfiguration' => Optional[Enum['yes', 'no', 'static', 'dhcp-on-stop', 'dhcp']], +}] diff --git a/types/interface/network/networkemulator.pp b/types/interface/network/networkemulator.pp new file mode 100644 index 00000000..3812703e --- /dev/null +++ b/types/interface/network/networkemulator.pp @@ -0,0 +1,10 @@ +# interface network NetworkEmulator section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Networkemulator = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact','ingress'],String[1]]], + 'Handle' => Optional[String[1]], + 'DelayJitterSec' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], + 'LossRate' => Optional[String[1]], + 'DuplicateRate' => Optional[String[1]], +}] diff --git a/types/interface/network/nexthop.pp b/types/interface/network/nexthop.pp new file mode 100644 index 00000000..6d092703 --- /dev/null +++ b/types/interface/network/nexthop.pp @@ -0,0 +1,10 @@ +# interface network NextHop section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Nexthop = Struct[{ + 'Id' => Optional[Integer[1, 4294967295]], + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'Familiy' => Optional[Enum['ipv4','ipv6']], + 'OnLink' => Optional[Enum['yes','no']], + 'Blackhole' => Optional[Enum['yes','no']], + 'Group' => Optional[String[1]], +}] diff --git a/types/interface/network/pfifo.pp b/types/interface/network/pfifo.pp new file mode 100644 index 00000000..e171f75c --- /dev/null +++ b/types/interface/network/pfifo.pp @@ -0,0 +1,7 @@ +# interface network PFIFO section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Pfifo = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]] +}] diff --git a/types/interface/network/pfifofast.pp b/types/interface/network/pfifofast.pp new file mode 100644 index 00000000..77bc677f --- /dev/null +++ b/types/interface/network/pfifofast.pp @@ -0,0 +1,6 @@ +# interface network PFIFOFast section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Pfifofast = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], +}] diff --git a/types/interface/network/pfifoheaddrop.pp b/types/interface/network/pfifoheaddrop.pp new file mode 100644 index 00000000..a020a13a --- /dev/null +++ b/types/interface/network/pfifoheaddrop.pp @@ -0,0 +1,7 @@ +# interface network PFIFOHeadDrop section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Pfifoheaddrop = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[0,4294967294]], +}] diff --git a/types/interface/network/pie.pp b/types/interface/network/pie.pp new file mode 100644 index 00000000..c31cfc52 --- /dev/null +++ b/types/interface/network/pie.pp @@ -0,0 +1,7 @@ +# interface network PIE section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Pie = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] diff --git a/types/interface/network/qdisc.pp b/types/interface/network/qdisc.pp new file mode 100644 index 00000000..5574698a --- /dev/null +++ b/types/interface/network/qdisc.pp @@ -0,0 +1,6 @@ +# interface network QDisc section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Qdisc = Struct[{ + 'Parent' => Optional[Enum['clsact', 'ingress']], + 'Handle' => Optional[String[1]], +}] diff --git a/types/interface/network/quickfairqueueingclass.pp b/types/interface/network/quickfairqueueingclass.pp new file mode 100644 index 00000000..0c2e95df --- /dev/null +++ b/types/interface/network/quickfairqueueingclass.pp @@ -0,0 +1,8 @@ +# interface network QuickFairQueueingClass section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Quickfairqueueingclass= Struct[{ + 'Parent' => Optional[Variant[Enum['root'], String[1]]], + 'ClassId' => Optional[String[1]], + 'Weight' => Optional[Integer[1,1023]], + 'MaxPacketBytes' => Optional[String[1]], +}] diff --git a/types/interface/network/route.pp b/types/interface/network/route.pp new file mode 100644 index 00000000..f02485c6 --- /dev/null +++ b/types/interface/network/route.pp @@ -0,0 +1,29 @@ +# interface network Route section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Route = Struct[{ + 'Gateway' => Optional[Variant[Array[String[1]], String[1]]], + 'GatewayOnLink' => Optional[Enum['yes', 'no']], + 'Destination' => Optional[String[1]], + 'Source' => Optional[String[1]], + 'Metric' => Optional[Integer[0,4294967295]], + 'IPv6Preference' => Optional[Enum['low','medium', 'high']], + 'Scope' => Optional[Enum['global', 'site', 'link', 'host', 'nowhere']], + 'PreferredSource' => Optional[String[1]], + 'Table' => Optional[Variant[String[1], Enum['default','main', 'local'], Integer[1,4294967295]]], + 'HopLimit' => Optional[Integer[1,255]], + 'Protocol' => Optional[Variant[Integer[0,255], Enum['kernel', 'boot', 'static', 'ra', 'dhcp']]], + 'Type' => Optional[Enum[ + 'unicast', 'local', 'broadcast', 'anycast', 'multicast', + 'blackhole', 'unreachable', 'prohibit', 'throw', 'nat', 'xresolve' + ]], + 'InitialCongestionWindow' => Optional[Integer[0,1023]], + 'InitialAdvertisedReceiveWindow' => Optional[Integer[0,1023]], + 'QuickAck' => Optional[Enum['yes', 'no',]], + 'FastOpenNoCookie' => Optional[Enum['yes', 'no',]], + 'MTUBytes' => Optional[String[1]], + 'TCPAdvertisedMaximumSegmentSize' => Optional[String[1]], + 'TCPCongestionControlAlgorithm' => Optional[Enum['bbr', 'dctcp', 'vegas']], + 'TCPRetransmissionTimeoutSeca' => Optional[Integer[1]], + 'MultiPathRoute' => Optional[Variant[String[1],Array[String[1]]]], + 'NextHop' => Optional[Integer[1, 4294967295]], +}] diff --git a/types/interface/network/routingpolicyrule.pp b/types/interface/network/routingpolicyrule.pp new file mode 100644 index 00000000..d2a605cb --- /dev/null +++ b/types/interface/network/routingpolicyrule.pp @@ -0,0 +1,22 @@ +# interface network RoutingPolicyRule section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Routingpolicyrule = Struct[{ + 'TypeOfService' => Optional[Integer[0,255]], + 'From' => Optional[String[1]], + 'To' => Optional[String[1]], + 'FirewallMark' => Optional[Variant[String[1],Integer[1, 4294967295]]], + 'Table' => Optional[Variant[Enum['default','main','local'],Integer[1,4294967295],String[1]]], + 'Priority' => Optional[Integer[0,4294967295]], + 'IncomingInterface' => Optional[String[1]], + 'OutgoingInterface' => Optional[String[1]], + 'L3MasterDevice' => Optional[Enum['yes','no']], + 'SourcePort' => Optional[String[1]], + 'DestinationPort' => Optional[String[1]], + 'IPProtocol' => Optional[String[1]], + 'InvertRule' => Optional[Enum['yes','no']], + 'Family' => Optional[Enum['ipv4', 'ipv6', 'both']], + 'User' => Optional[String[1]], + 'SuppressPrefixLength' => Optional[Integer[0,128]], + 'SuppressInterfaceGroup' => Optional[Integer[0,2147483647]], + 'Type' => Optional[Enum['blackhole','unreachable','prohibit']], +}] diff --git a/types/interface/network/sr_iov.pp b/types/interface/network/sr_iov.pp new file mode 100644 index 00000000..3f61cae9 --- /dev/null +++ b/types/interface/network/sr_iov.pp @@ -0,0 +1,13 @@ +# interface network SR-IOV section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Sr_iov = Struct[{ + 'VirtualFunction' => Optional[Integer[0,2147483646]], + 'VLANId' => Optional[Integer[1,4095]], + 'QualityOfService' => Optional[Integer[0,4294967294]], + 'VLANProtocol' => Optional[Enum['802.1Q', '802.1ad']], + 'MACSpoofCheck' => Optional[Enum['no','yes']], + 'QueryReceiveSideScaling' => Optional[Enum['no','yes']], + 'Trust' => Optional[Enum['no','yes']], + 'LinkState' => Optional[Enum['no','yes','auto']], + 'MACAddress' => Optional[String[1]], +}] diff --git a/types/interface/network/stochasticfairblue.pp b/types/interface/network/stochasticfairblue.pp new file mode 100644 index 00000000..e3ba9fad --- /dev/null +++ b/types/interface/network/stochasticfairblue.pp @@ -0,0 +1,7 @@ +# interface network StochasticFairBlue section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Stochasticfairblue= Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PacketLimit' => Optional[Integer[1,4294967294]], +}] diff --git a/types/interface/network/stochasticfairnessqueueing.pp b/types/interface/network/stochasticfairnessqueueing.pp new file mode 100644 index 00000000..7c12985a --- /dev/null +++ b/types/interface/network/stochasticfairnessqueueing.pp @@ -0,0 +1,7 @@ +# interface network StochasticFairnessQueueing section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Stochasticfairnessqueueing = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'PerturbPeriodSec' => Optional[String[1]], +}] diff --git a/types/interface/network/tokenbucketfilter.pp b/types/interface/network/tokenbucketfilter.pp new file mode 100644 index 00000000..21674e67 --- /dev/null +++ b/types/interface/network/tokenbucketfilter.pp @@ -0,0 +1,13 @@ +# interface network TokenBucketFilter section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Tokenbucketfilter = Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'LatencySec' => Optional[String[1]], + 'LimitBytes' => Optional[String[1]], + 'BurstBytes' => Optional[String[1]], + 'Rate' => Optional[String[1]], + 'MPUBytes' => Optional[String[1]], + 'PeakRate' => Optional[String[1]], + 'MTUBytes' => Optional[String[1]], +}] diff --git a/types/interface/network/triviallinkequalizer.pp b/types/interface/network/triviallinkequalizer.pp new file mode 100644 index 00000000..e6638b7d --- /dev/null +++ b/types/interface/network/triviallinkequalizer.pp @@ -0,0 +1,8 @@ +# interface network TrivialLinkEqualizer section definition +# see: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html +type Systemd::Interface::Network::Triviallinkequalizer= Struct[{ + 'Parent' => Optional[Variant[Enum['root', 'clsact', 'ingress'], String[1]]], + 'Handle' => Optional[String[1]], + 'DefaultClass' => Optional[String[1]], + 'RateToQuantum' => Optional[Integer[0]] +}]