diff --git a/REFERENCE.md b/REFERENCE.md index 80d1d9f6..4ccb0368 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): Network device configuration(Link) +* [`Systemd::Interface::Link::Link`](#Systemd--Interface--Link--Link): Network device configuration(Link) Link section definition +* [`Systemd::Interface::Link::Link_advertise`](#Systemd--Interface--Link--Link_advertise): Network device configuration(Link), link advertise speeds +* [`Systemd::Interface::Link::Match`](#Systemd--Interface--Link--Match): Network device configuration(Link) Match section definition +* [`Systemd::Interface::Link::Sr_iov`](#Systemd--Interface--Link--Sr_iov): Network device configuration(Link) SR-IOV section definition +* [`Systemd::Interface::Netdev`](#Systemd--Interface--Netdev): interface netdev configs +* [`Systemd::Interface::Netdev::Bareudp`](#Systemd--Interface--Netdev--Bareudp): netdev BareUDP section +* [`Systemd::Interface::Netdev::Batmanadvanced`](#Systemd--Interface--Netdev--Batmanadvanced): netdev BatmanAdvanced section +* [`Systemd::Interface::Netdev::Bond`](#Systemd--Interface--Netdev--Bond): netdev Bond section +* [`Systemd::Interface::Netdev::Bridge`](#Systemd--Interface--Netdev--Bridge): netdev Bridge section +* [`Systemd::Interface::Netdev::Foooverudp`](#Systemd--Interface--Netdev--Foooverudp): netdev FooOverUDP section +* [`Systemd::Interface::Netdev::Geneve`](#Systemd--Interface--Netdev--Geneve): netdev GENEVE section +* [`Systemd::Interface::Netdev::Ipoib`](#Systemd--Interface--Netdev--Ipoib): netdev IPoIB section +* [`Systemd::Interface::Netdev::Ipvlan`](#Systemd--Interface--Netdev--Ipvlan): netdev IPVLAN and IPVTAP section +* [`Systemd::Interface::Netdev::L2tp`](#Systemd--Interface--Netdev--L2tp): netdev L2TP section +* [`Systemd::Interface::Netdev::L2tpsession`](#Systemd--Interface--Netdev--L2tpsession): netdev L2TPSession section +* [`Systemd::Interface::Netdev::Macsec`](#Systemd--Interface--Netdev--Macsec): netdev MACsec section +* [`Systemd::Interface::Netdev::Macsecreceiveassociation`](#Systemd--Interface--Netdev--Macsecreceiveassociation): netdev MACsecReceiveAssociation section +* [`Systemd::Interface::Netdev::Macsecreceivechannel`](#Systemd--Interface--Netdev--Macsecreceivechannel): netdev MACsecReceiveChannel section +* [`Systemd::Interface::Netdev::Macsectransmitassociation`](#Systemd--Interface--Netdev--Macsectransmitassociation): netdev MACsecTransmitAssociation section +* [`Systemd::Interface::Netdev::Macvlan`](#Systemd--Interface--Netdev--Macvlan): netdev MACVLAN and MACVTAP section +* [`Systemd::Interface::Netdev::Match`](#Systemd--Interface--Netdev--Match): netdev match section +* [`Systemd::Interface::Netdev::Netdev`](#Systemd--Interface--Netdev--Netdev): netdev NetDev section +* [`Systemd::Interface::Netdev::Peer`](#Systemd--Interface--Netdev--Peer): netdev Peer section +* [`Systemd::Interface::Netdev::Tun`](#Systemd--Interface--Netdev--Tun): netdev Tun and Tap section +* [`Systemd::Interface::Netdev::Tunnel`](#Systemd--Interface--Netdev--Tunnel): netdev Tunnel section +* [`Systemd::Interface::Netdev::Vlan`](#Systemd--Interface--Netdev--Vlan): netdev VLAN section +* [`Systemd::Interface::Netdev::Vrf`](#Systemd--Interface--Netdev--Vrf): netdev VRF section +* [`Systemd::Interface::Netdev::Vxcan`](#Systemd--Interface--Netdev--Vxcan): netdev VXCAN section +* [`Systemd::Interface::Netdev::Vxlan`](#Systemd--Interface--Netdev--Vxlan): netdev VXLAN section +* [`Systemd::Interface::Netdev::Wireguard`](#Systemd--Interface--Netdev--Wireguard): netdev WireGuard section +* [`Systemd::Interface::Netdev::Wireguardpeer`](#Systemd--Interface--Netdev--Wireguardpeer): netdev WireGuard section +* [`Systemd::Interface::Netdev::Wlan`](#Systemd--Interface--Netdev--Wlan): netdev WLAN section +* [`Systemd::Interface::Netdev::Xfrm`](#Systemd--Interface--Netdev--Xfrm): netdev Xfrm section +* [`Systemd::Interface::Network`](#Systemd--Interface--Network): interface definition +* [`Systemd::Interface::Network::Address`](#Systemd--Interface--Network--Address): interface network Address section definition +* [`Systemd::Interface::Network::Bfifo`](#Systemd--Interface--Network--Bfifo): interface network BFIFO section definition +* [`Systemd::Interface::Network::Bridge`](#Systemd--Interface--Network--Bridge): interface network Bridge section definition +* [`Systemd::Interface::Network::Bridgefdb`](#Systemd--Interface--Network--Bridgefdb): interface network BridgeFDB section definition +* [`Systemd::Interface::Network::Bridgemdb`](#Systemd--Interface--Network--Bridgemdb): interface network BridgeMDB section definition +* [`Systemd::Interface::Network::Bridgevlan`](#Systemd--Interface--Network--Bridgevlan): interface network BridgeVLAN section definition +* [`Systemd::Interface::Network::Cake`](#Systemd--Interface--Network--Cake): interface network CAKE section definition +* [`Systemd::Interface::Network::Can`](#Systemd--Interface--Network--Can): interface network CAN section definition +* [`Systemd::Interface::Network::Controlleddelay`](#Systemd--Interface--Network--Controlleddelay): interface network ControlledDelay section definition +* [`Systemd::Interface::Network::Deficitroundrobinscheduler`](#Systemd--Interface--Network--Deficitroundrobinscheduler): interface network DeficitRoundRobinScheduler section definition +* [`Systemd::Interface::Network::Deficitroundrobinschedulerclass`](#Systemd--Interface--Network--Deficitroundrobinschedulerclass): interface network DeficitRoundRobinSchedulerClass section definition +* [`Systemd::Interface::Network::Dhcpprefixdelegation`](#Systemd--Interface--Network--Dhcpprefixdelegation): interface network DHCPPrefixDelegation section definition +* [`Systemd::Interface::Network::Dhcpserver`](#Systemd--Interface--Network--Dhcpserver): interface network DHCPServer section definition +* [`Systemd::Interface::Network::Dhcpserverstaticlease`](#Systemd--Interface--Network--Dhcpserverstaticlease): interface network DHCPServerStaticLease section definition +* [`Systemd::Interface::Network::Dhcpv4`](#Systemd--Interface--Network--Dhcpv4): interface network DHCPv4 section definition +* [`Systemd::Interface::Network::Dhcpv6`](#Systemd--Interface--Network--Dhcpv6): interface network DHCPv6 section definition +* [`Systemd::Interface::Network::Enhancedtransmissionselection`](#Systemd--Interface--Network--Enhancedtransmissionselection): interface network EnhancedTransmissionSelection section definition +* [`Systemd::Interface::Network::Fairqueueing`](#Systemd--Interface--Network--Fairqueueing): interface network FairQueueing section definition +* [`Systemd::Interface::Network::Fairqueueingcontrolleddelay`](#Systemd--Interface--Network--Fairqueueingcontrolleddelay): interface network FairQueueingControlledDelay section definition +* [`Systemd::Interface::Network::Flowqueuepie`](#Systemd--Interface--Network--Flowqueuepie): interface network FlowQueuePIE section definition +* [`Systemd::Interface::Network::Genericrandomearlydetection`](#Systemd--Interface--Network--Genericrandomearlydetection): interface network GenericRandomEarlyDetection section definition +* [`Systemd::Interface::Network::Heavyhitterfilter`](#Systemd--Interface--Network--Heavyhitterfilter): interface network HeavyHitterFilter section definition +* [`Systemd::Interface::Network::Hierarchytokenbucketclass`](#Systemd--Interface--Network--Hierarchytokenbucketclass): interface network HierarchyTokenBucketClass section definition +* [`Systemd::Interface::Network::Ipoib`](#Systemd--Interface--Network--Ipoib): interface network IPoIB section definition +* [`Systemd::Interface::Network::Ipv6acceptra`](#Systemd--Interface--Network--Ipv6acceptra): interface network IPv6AcceptRA section definition +* [`Systemd::Interface::Network::Ipv6addresslabel`](#Systemd--Interface--Network--Ipv6addresslabel): interface network IPv6AddressLabel section definition +* [`Systemd::Interface::Network::Ipv6pref64prefix`](#Systemd--Interface--Network--Ipv6pref64prefix): interface network IPv6PREF64Prefix section definition +* [`Systemd::Interface::Network::Ipv6prefix`](#Systemd--Interface--Network--Ipv6prefix): interface network IPv6Prefix section definition +* [`Systemd::Interface::Network::Ipv6routeprefix`](#Systemd--Interface--Network--Ipv6routeprefix): interface network IPv6RoutePrefix section definition +* [`Systemd::Interface::Network::Ipv6sendra`](#Systemd--Interface--Network--Ipv6sendra): interface network IPv6SendRA section definition +* [`Systemd::Interface::Network::Link`](#Systemd--Interface--Network--Link): interface network Link section definition +* [`Systemd::Interface::Network::Lldp`](#Systemd--Interface--Network--Lldp): interface network LLDP section definition +* [`Systemd::Interface::Network::Match`](#Systemd--Interface--Network--Match): interface network Match section definition +* [`Systemd::Interface::Network::Neighbor`](#Systemd--Interface--Network--Neighbor): interface network Neighbor section definition +* [`Systemd::Interface::Network::Network`](#Systemd--Interface--Network--Network): interface network Network section definition +* [`Systemd::Interface::Network::Networkemulator`](#Systemd--Interface--Network--Networkemulator): interface network NetworkEmulator section definition +* [`Systemd::Interface::Network::Nexthop`](#Systemd--Interface--Network--Nexthop): interface network NextHop section definition +* [`Systemd::Interface::Network::Pfifo`](#Systemd--Interface--Network--Pfifo): interface network PFIFO section definition +* [`Systemd::Interface::Network::Pfifofast`](#Systemd--Interface--Network--Pfifofast): interface network PFIFOFast section definition +* [`Systemd::Interface::Network::Pfifoheaddrop`](#Systemd--Interface--Network--Pfifoheaddrop): interface network PFIFOHeadDrop section definition +* [`Systemd::Interface::Network::Pie`](#Systemd--Interface--Network--Pie): interface network PIE section definition +* [`Systemd::Interface::Network::Qdisc`](#Systemd--Interface--Network--Qdisc): interface network QDisc section definition +* [`Systemd::Interface::Network::Quickfairqueueingclass`](#Systemd--Interface--Network--Quickfairqueueingclass): interface network QuickFairQueueingClass section definition +* [`Systemd::Interface::Network::Route`](#Systemd--Interface--Network--Route): interface network Route section definition +* [`Systemd::Interface::Network::Routingpolicyrule`](#Systemd--Interface--Network--Routingpolicyrule): interface network RoutingPolicyRule section definition +* [`Systemd::Interface::Network::Sr_iov`](#Systemd--Interface--Network--Sr_iov): interface network SR-IOV section definition +* [`Systemd::Interface::Network::Stochasticfairblue`](#Systemd--Interface--Network--Stochasticfairblue): interface network StochasticFairBlue section definition +* [`Systemd::Interface::Network::Stochasticfairnessqueueing`](#Systemd--Interface--Network--Stochasticfairnessqueueing): interface network StochasticFairnessQueueing section definition +* [`Systemd::Interface::Network::Tokenbucketfilter`](#Systemd--Interface--Network--Tokenbucketfilter): interface network TokenBucketFilter section definition +* [`Systemd::Interface::Network::Triviallinkequalizer`](#Systemd--Interface--Network--Triviallinkequalizer): interface network TrivialLinkEqualizer section definition * [`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 @@ -2787,6 +2873,2166 @@ 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` + +Network device configuration(Link) + +* **See also** + * https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html + +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` + +Network device configuration(Link) Link section definition + +* **See also** + * https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html + +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` + +Network device configuration(Link), link advertise speeds + +* **See also** + * https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html + +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` + +Network device configuration(Link) Match section definition + +* **See also** + * https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html + +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` + +Network device configuration(Link) SR-IOV section definition + +* **See also** + * https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html + +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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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 also** + * 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..1020208f 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 its 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 its 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 its 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, + 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..431ca306 --- /dev/null +++ b/types/interface/link.pp @@ -0,0 +1,7 @@ +# @summary Network device configuration(Link) +# @see https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html +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..abad770d --- /dev/null +++ b/types/interface/link/link.pp @@ -0,0 +1,85 @@ +# @summary Network device configuration(Link) Link section definition +# @see https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html +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..944a1690 --- /dev/null +++ b/types/interface/link/link_advertise.pp @@ -0,0 +1,103 @@ +# @summary Network device configuration(Link), link advertise speeds +# @see https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html +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..3fa17d72 --- /dev/null +++ b/types/interface/link/match.pp @@ -0,0 +1,22 @@ +# @summary Network device configuration(Link) Match section definition +# @see https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html +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..132db6b1 --- /dev/null +++ b/types/interface/link/sr_iov.pp @@ -0,0 +1,13 @@ +# @summary Network device configuration(Link) SR-IOV section definition +# @see https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html +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..61284fef --- /dev/null +++ b/types/interface/netdev.pp @@ -0,0 +1,35 @@ +# @summary 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..b9e00551 --- /dev/null +++ b/types/interface/netdev/bareudp.pp @@ -0,0 +1,6 @@ +# @summary 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..c78a0340 --- /dev/null +++ b/types/interface/netdev/batmanadvanced.pp @@ -0,0 +1,14 @@ +# @summary 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..8e7be0bb --- /dev/null +++ b/types/interface/netdev/bond.pp @@ -0,0 +1,32 @@ +# @summary 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..a2ea8247 --- /dev/null +++ b/types/interface/netdev/bridge.pp @@ -0,0 +1,17 @@ +# @summary 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..93c6af1f --- /dev/null +++ b/types/interface/netdev/foooverudp.pp @@ -0,0 +1,10 @@ +# @summary 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..4c2f3c83 --- /dev/null +++ b/types/interface/netdev/geneve.pp @@ -0,0 +1,15 @@ +# @summary 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..e4ed51dd --- /dev/null +++ b/types/interface/netdev/ipoib.pp @@ -0,0 +1,7 @@ +# @summary 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..21c4de94 --- /dev/null +++ b/types/interface/netdev/ipvlan.pp @@ -0,0 +1,6 @@ +# @summary 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..127b845d --- /dev/null +++ b/types/interface/netdev/l2tp.pp @@ -0,0 +1,14 @@ +# @summary 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..22a5ab64 --- /dev/null +++ b/types/interface/netdev/l2tpsession.pp @@ -0,0 +1,8 @@ +# @summary 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..7a43b63f --- /dev/null +++ b/types/interface/netdev/macsec.pp @@ -0,0 +1,6 @@ +# @summary 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..c1f52005 --- /dev/null +++ b/types/interface/netdev/macsecreceiveassociation.pp @@ -0,0 +1,11 @@ +# @summary 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..e682b013 --- /dev/null +++ b/types/interface/netdev/macsecreceivechannel.pp @@ -0,0 +1,6 @@ +# @summary 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..9184ae50 --- /dev/null +++ b/types/interface/netdev/macsectransmitassociation.pp @@ -0,0 +1,10 @@ +# @summary 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..c18e45fd --- /dev/null +++ b/types/interface/netdev/macvlan.pp @@ -0,0 +1,8 @@ +# @summary 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..6a6cb371 --- /dev/null +++ b/types/interface/netdev/match.pp @@ -0,0 +1,11 @@ +# @summary 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..7e1dd578 --- /dev/null +++ b/types/interface/netdev/netdev.pp @@ -0,0 +1,9 @@ +# @summary 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..a50b56f1 --- /dev/null +++ b/types/interface/netdev/peer.pp @@ -0,0 +1,6 @@ +# @summary 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..a028adaf --- /dev/null +++ b/types/interface/netdev/tun.pp @@ -0,0 +1,10 @@ +# @summary 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..34c88cf5 --- /dev/null +++ b/types/interface/netdev/tunnel.pp @@ -0,0 +1,32 @@ +# @summary 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..a4539c36 --- /dev/null +++ b/types/interface/netdev/vlan.pp @@ -0,0 +1,12 @@ +# @summary 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..fb9694df --- /dev/null +++ b/types/interface/netdev/vrf.pp @@ -0,0 +1,5 @@ +# @summary 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..67ca714d --- /dev/null +++ b/types/interface/netdev/vxcan.pp @@ -0,0 +1,5 @@ +# @summary 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..4c09990d --- /dev/null +++ b/types/interface/netdev/vxlan.pp @@ -0,0 +1,29 @@ +# @summary 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..e04e3eb3 --- /dev/null +++ b/types/interface/netdev/wireguard.pp @@ -0,0 +1,10 @@ +# @summary 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..66ebb6e7 --- /dev/null +++ b/types/interface/netdev/wireguardpeer.pp @@ -0,0 +1,12 @@ +# @summary 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..b1108f65 --- /dev/null +++ b/types/interface/netdev/wlan.pp @@ -0,0 +1,8 @@ +# @summary 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..ba5d7c42 --- /dev/null +++ b/types/interface/netdev/xfrm.pp @@ -0,0 +1,6 @@ +# @summary 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..a64812d6 --- /dev/null +++ b/types/interface/network.pp @@ -0,0 +1,89 @@ +# @summary 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..ad44090c --- /dev/null +++ b/types/interface/network/address.pp @@ -0,0 +1,18 @@ +# @summary 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..77480404 --- /dev/null +++ b/types/interface/network/bfifo.pp @@ -0,0 +1,7 @@ +# @summary 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..d64ae929 --- /dev/null +++ b/types/interface/network/bridge.pp @@ -0,0 +1,19 @@ +# @summary 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..cfdc1f60 --- /dev/null +++ b/types/interface/network/bridgefdb.pp @@ -0,0 +1,10 @@ +# @summary 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..87883eda --- /dev/null +++ b/types/interface/network/bridgemdb.pp @@ -0,0 +1,6 @@ +# @summary 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..9e08e216 --- /dev/null +++ b/types/interface/network/bridgevlan.pp @@ -0,0 +1,7 @@ +# @summary 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..de256666 --- /dev/null +++ b/types/interface/network/cake.pp @@ -0,0 +1,19 @@ +# @summary 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..be0b6696 --- /dev/null +++ b/types/interface/network/can.pp @@ -0,0 +1,29 @@ +# @summary 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..507d1530 --- /dev/null +++ b/types/interface/network/controlleddelay.pp @@ -0,0 +1,10 @@ +# @summary 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..bedb7c74 --- /dev/null +++ b/types/interface/network/deficitroundrobinscheduler.pp @@ -0,0 +1,6 @@ +# @summary 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..4ebd6a1a --- /dev/null +++ b/types/interface/network/deficitroundrobinschedulerclass.pp @@ -0,0 +1,7 @@ +# @summary 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..e17c5414 --- /dev/null +++ b/types/interface/network/dhcpprefixdelegation.pp @@ -0,0 +1,13 @@ +# @summary 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..25fe238c --- /dev/null +++ b/types/interface/network/dhcpserver.pp @@ -0,0 +1,38 @@ +# @summary 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..77a5bdd9 --- /dev/null +++ b/types/interface/network/dhcpserverstaticlease.pp @@ -0,0 +1,6 @@ +# @summary 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..8b7525a7 --- /dev/null +++ b/types/interface/network/dhcpv4.pp @@ -0,0 +1,53 @@ +# @summary 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..022c931e --- /dev/null +++ b/types/interface/network/dhcpv6.pp @@ -0,0 +1,28 @@ +# @summary 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..bd1b8ae4 --- /dev/null +++ b/types/interface/network/enhancedtransmissionselection.pp @@ -0,0 +1,10 @@ +# @summary 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..d473a893 --- /dev/null +++ b/types/interface/network/fairqueueing.pp @@ -0,0 +1,15 @@ +# @summary 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..f515e6da --- /dev/null +++ b/types/interface/network/fairqueueingcontrolleddelay.pp @@ -0,0 +1,14 @@ +# @summary 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..b2b7d64f --- /dev/null +++ b/types/interface/network/flowqueuepie.pp @@ -0,0 +1,7 @@ +# @summary 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..cee929e7 --- /dev/null +++ b/types/interface/network/genericrandomearlydetection.pp @@ -0,0 +1,9 @@ +# @summary 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..7ab70be4 --- /dev/null +++ b/types/interface/network/heavyhitterfilter.pp @@ -0,0 +1,7 @@ +# @summary 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..2728c042 --- /dev/null +++ b/types/interface/network/hierarchytokenbucketclass.pp @@ -0,0 +1,14 @@ +# @summary 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..beebfc7b --- /dev/null +++ b/types/interface/network/ipoib.pp @@ -0,0 +1,6 @@ +# @summary 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..8ff29629 --- /dev/null +++ b/types/interface/network/ipv6acceptra.pp @@ -0,0 +1,30 @@ +# @summary 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..d0039db1 --- /dev/null +++ b/types/interface/network/ipv6addresslabel.pp @@ -0,0 +1,6 @@ +# @summary 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..157be549 --- /dev/null +++ b/types/interface/network/ipv6pref64prefix.pp @@ -0,0 +1,6 @@ +# @summary 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..dc0e2df9 --- /dev/null +++ b/types/interface/network/ipv6prefix.pp @@ -0,0 +1,12 @@ +# @summary 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..d65c7f9b --- /dev/null +++ b/types/interface/network/ipv6routeprefix.pp @@ -0,0 +1,6 @@ +# @summary 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..79f57e65 --- /dev/null +++ b/types/interface/network/ipv6sendra.pp @@ -0,0 +1,20 @@ +# @summary 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..2ad0d094 --- /dev/null +++ b/types/interface/network/link.pp @@ -0,0 +1,17 @@ +# @summary 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..68db3a70 --- /dev/null +++ b/types/interface/network/lldp.pp @@ -0,0 +1,5 @@ +# @summary 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..f3f0b9d6 --- /dev/null +++ b/types/interface/network/match.pp @@ -0,0 +1,27 @@ +# @summary 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..8b8e01f3 --- /dev/null +++ b/types/interface/network/neighbor.pp @@ -0,0 +1,6 @@ +# @summary 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..f1301fc6 --- /dev/null +++ b/types/interface/network/network.pp @@ -0,0 +1,67 @@ +# @summary 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..6a5b2a21 --- /dev/null +++ b/types/interface/network/networkemulator.pp @@ -0,0 +1,10 @@ +# @summary 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..3f148847 --- /dev/null +++ b/types/interface/network/nexthop.pp @@ -0,0 +1,10 @@ +# @summary 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..4e065747 --- /dev/null +++ b/types/interface/network/pfifo.pp @@ -0,0 +1,7 @@ +# @summary 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..1cc5d0e8 --- /dev/null +++ b/types/interface/network/pfifofast.pp @@ -0,0 +1,6 @@ +# @summary 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..429e17c3 --- /dev/null +++ b/types/interface/network/pfifoheaddrop.pp @@ -0,0 +1,7 @@ +# @summary 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..bf5386ce --- /dev/null +++ b/types/interface/network/pie.pp @@ -0,0 +1,7 @@ +# @summary 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..701eb34a --- /dev/null +++ b/types/interface/network/qdisc.pp @@ -0,0 +1,6 @@ +# @summary 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..e64f4a23 --- /dev/null +++ b/types/interface/network/quickfairqueueingclass.pp @@ -0,0 +1,8 @@ +# @summary 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..abf01e55 --- /dev/null +++ b/types/interface/network/route.pp @@ -0,0 +1,29 @@ +# @summary 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..f46ba77b --- /dev/null +++ b/types/interface/network/routingpolicyrule.pp @@ -0,0 +1,22 @@ +# @summary 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..ddce85f1 --- /dev/null +++ b/types/interface/network/sr_iov.pp @@ -0,0 +1,13 @@ +# @summary 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..27316566 --- /dev/null +++ b/types/interface/network/stochasticfairblue.pp @@ -0,0 +1,7 @@ +# @summary 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..2c979a4a --- /dev/null +++ b/types/interface/network/stochasticfairnessqueueing.pp @@ -0,0 +1,7 @@ +# @summary 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..15eeb9e5 --- /dev/null +++ b/types/interface/network/tokenbucketfilter.pp @@ -0,0 +1,13 @@ +# @summary 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..39ea4964 --- /dev/null +++ b/types/interface/network/triviallinkequalizer.pp @@ -0,0 +1,8 @@ +# @summary 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]] +}]