2aacef
From d8468261b4f42c4252db283a9fcb2aef5abc39fd Mon Sep 17 00:00:00 2001
2aacef
From: =?UTF-8?q?Michal=20Koutn=C3=BD?= <mkoutny@suse.com>
2aacef
Date: Thu, 6 Oct 2022 16:48:01 +0200
2aacef
Subject: [PATCH] meson: Generate fuzzer inputs with directives
2aacef
2aacef
The lists of directives for fuzzer tests are maintained manually in the
2aacef
repo. There is a tools/check-directives.sh script that runs during test
2aacef
phase and reports stale directive lists.
2aacef
Let's rework the script into a generator so that these directive files
2aacef
are created on-the-flight and needn't be updated whenever a unit file
2aacef
directives change. The scripts is rewritten in Python to get rid of gawk
2aacef
dependency and each generated file is a separate meson target so that
2aacef
incremental builds refresh what is just necessary (and parallelize
2aacef
(negligible)).
2aacef
2aacef
Note: test/fuzz/fuzz-unit-file/directives-all.slice is kept since there
2aacef
is not automated way to generate it (it is not covered by the check
2aacef
script neither).
2aacef
2aacef
(cherry picked from commit 7e343b530e68c55f868a4a8261824ca543319a52)
2aacef
2aacef
Related: #2175619
2aacef
---
2aacef
 meson.build                                   |  31 +-
2aacef
 test/fuzz/fuzz-link-parser/directives.link    |  97 ---
2aacef
 .../fuzz/fuzz-netdev-parser/directives.netdev | 258 --------
2aacef
 test/fuzz/fuzz-network-parser/directives      | 595 ------------------
2aacef
 test/fuzz/fuzz-unit-file/directives.automount |   6 -
2aacef
 test/fuzz/fuzz-unit-file/directives.mount     | 216 -------
2aacef
 test/fuzz/fuzz-unit-file/directives.path      |  12 -
2aacef
 test/fuzz/fuzz-unit-file/directives.scope     |  68 --
2aacef
 test/fuzz/fuzz-unit-file/directives.service   | 370 -----------
2aacef
 test/fuzz/fuzz-unit-file/directives.slice     |  58 --
2aacef
 test/fuzz/fuzz-unit-file/directives.socket    | 266 --------
2aacef
 test/fuzz/fuzz-unit-file/directives.swap      | 210 -------
2aacef
 test/fuzz/fuzz-unit-file/directives.timer     |  17 -
2aacef
 test/fuzz/generate-directives.py              |  26 +
2aacef
 test/fuzz/meson.build                         |  50 +-
2aacef
 tools/check-directives.sh                     |  72 ---
2aacef
 16 files changed, 87 insertions(+), 2265 deletions(-)
2aacef
 delete mode 100644 test/fuzz/fuzz-link-parser/directives.link
2aacef
 delete mode 100644 test/fuzz/fuzz-netdev-parser/directives.netdev
2aacef
 delete mode 100644 test/fuzz/fuzz-network-parser/directives
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.automount
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.mount
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.path
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.scope
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.service
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.slice
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.socket
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.swap
2aacef
 delete mode 100644 test/fuzz/fuzz-unit-file/directives.timer
2aacef
 create mode 100644 test/fuzz/generate-directives.py
2aacef
 delete mode 100755 tools/check-directives.sh
2aacef
2aacef
diff --git a/meson.build b/meson.build
2aacef
index dc7388cfe3..5b2e7ca172 100644
2aacef
--- a/meson.build
2aacef
+++ b/meson.build
2aacef
@@ -3997,6 +3997,7 @@ foreach tuple : fuzzers
2aacef
         else
2aacef
                 sources += 'src/fuzz/fuzz-main.c'
2aacef
         endif
2aacef
+        sources += fuzz_generated_directives
2aacef
 
2aacef
         # FIXME: Use fs.stem() with meson >= 0.54.0
2aacef
         name = '@0@'.format(sources[0]).split('/')[-1].split('.')[0]
2aacef
@@ -4016,11 +4017,14 @@ foreach tuple : fuzzers
2aacef
         if want_tests != 'false' and name in fuzz_regression_tests
2aacef
                 # Run the fuzz regression tests without any sanitizers enabled.
2aacef
                 # Additional invocations with sanitizers may be added below.
2aacef
-                foreach fuzz_in : fuzz_regression_tests[name]
2aacef
+                foreach tuple : fuzz_regression_tests[name]
2aacef
+                        fuzz_dir = tuple[0]
2aacef
+                        fuzz_in = tuple[1]
2aacef
                         test('@0@_@1@'.format(name, fuzz_in),
2aacef
                              exe,
2aacef
                              suite : 'fuzzers',
2aacef
-                             args : [project_source_root / fuzz_testsdir / name / fuzz_in])
2aacef
+                             args : [fuzz_dir != '' ? project_source_root / fuzz_dir / name / fuzz_in
2aacef
+                                                    : fuzz_generated_in_dir / '@0@_@1@'.format(name, fuzz_in)])
2aacef
                 endforeach
2aacef
         endif
2aacef
 endforeach
2aacef
@@ -4109,19 +4113,6 @@ foreach exec : public_programs
2aacef
         endif
2aacef
 endforeach
2aacef
 
2aacef
-############################################################
2aacef
-
2aacef
-check_directives_sh = find_program('tools/check-directives.sh')
2aacef
-
2aacef
-if want_tests != 'false'
2aacef
-        test('check-directives',
2aacef
-             check_directives_sh,
2aacef
-             suite : 'dist-check',
2aacef
-             args : [project_source_root, project_build_root])
2aacef
-endif
2aacef
-
2aacef
-############################################################
2aacef
-
2aacef
 # Enable tests for all supported sanitizers
2aacef
 foreach tuple : fuzz_sanitizers
2aacef
         sanitizer = tuple[0]
2aacef
@@ -4141,20 +4132,24 @@ foreach tuple : fuzz_sanitizers
2aacef
                         exe = custom_target(
2aacef
                                 name,
2aacef
                                 output : name,
2aacef
-                                depends : build,
2aacef
+                                depends : [build] + fuzz_generated_directives,
2aacef
                                 command : [ln, '-fs',
2aacef
                                            build.full_path() / fuzzer,
2aacef
                                            '@OUTPUT@'],
2aacef
                                 build_by_default : true)
2aacef
 
2aacef
-                        foreach fuzz_in : fuzz_ins
2aacef
+                        foreach tuple : fuzz_ins
2aacef
+                                fuzz_dir = tuple[0]
2aacef
+                                fuzz_in = tuple[1]
2aacef
+
2aacef
                                 test('@0@_@1@_@2@'.format(fuzzer, fuzz_in, sanitizer),
2aacef
                                      env,
2aacef
                                      suite : 'fuzz+san',
2aacef
                                      env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
2aacef
                                      timeout : 60,
2aacef
                                      args : [exe.full_path(),
2aacef
-                                             project_source_root / fuzz_testsdir / fuzzer / fuzz_in])
2aacef
+                                             fuzz_dir != '' ? project_source_root / fuzz_dir / fuzzer / fuzz_in
2aacef
+                                                            : fuzz_generated_in_dir / '@0@_@1@'.format(fuzzer, fuzz_in)])
2aacef
                         endforeach
2aacef
                 endforeach
2aacef
         endif
2aacef
diff --git a/test/fuzz/fuzz-link-parser/directives.link b/test/fuzz/fuzz-link-parser/directives.link
2aacef
deleted file mode 100644
2aacef
index a1c797a297..0000000000
2aacef
--- a/test/fuzz/fuzz-link-parser/directives.link
2aacef
+++ /dev/null
2aacef
@@ -1,97 +0,0 @@
2aacef
-[Match]
2aacef
-Architecture=
2aacef
-Credential=
2aacef
-Driver=
2aacef
-Firmware=
2aacef
-Host=
2aacef
-KernelCommandLine=
2aacef
-KernelVersion=
2aacef
-Kind=
2aacef
-MACAddress=
2aacef
-OriginalName=
2aacef
-Path=
2aacef
-PermanentMACAddress=
2aacef
-Property=
2aacef
-Type=
2aacef
-Virtualization=
2aacef
-[Link]
2aacef
-Description=
2aacef
-MACAddressPolicy=
2aacef
-MACAddress=
2aacef
-NamePolicy=
2aacef
-Name=
2aacef
-AlternativeNamesPolicy=
2aacef
-AlternativeName=
2aacef
-Alias=
2aacef
-TransmitQueues=
2aacef
-ReceiveQueues=
2aacef
-TransmitQueueLength=
2aacef
-MTUBytes=
2aacef
-BitsPerSecond=
2aacef
-Duplex=
2aacef
-AutoNegotiation=
2aacef
-WakeOnLan=
2aacef
-WakeOnLanPassword=
2aacef
-Port=
2aacef
-ReceiveChecksumOffload=
2aacef
-TransmitChecksumOffload=
2aacef
-GenericSegmentationOffload=
2aacef
-TCPSegmentationOffload=
2aacef
-TCP6SegmentationOffload=
2aacef
-UDPSegmentationOffload=
2aacef
-GenericReceiveOffload=
2aacef
-GenericReceiveOffloadHardware=
2aacef
-LargeReceiveOffload=
2aacef
-ReceiveVLANCTAGHardwareAcceleration=
2aacef
-TransmitVLANCTAGHardwareAcceleration=
2aacef
-ReceiveVLANCTAGFilter=
2aacef
-TransmitVLANSTAGHardwareAcceleration=
2aacef
-NTupleFilter=
2aacef
-RxChannels=
2aacef
-TxChannels=
2aacef
-OtherChannels=
2aacef
-CombinedChannels=
2aacef
-Advertise=
2aacef
-RxBufferSize=
2aacef
-RxMiniBufferSize=
2aacef
-RxJumboBufferSize=
2aacef
-TxBufferSize=
2aacef
-RxFlowControl=
2aacef
-TxFlowControl=
2aacef
-AutoNegotiationFlowControl=
2aacef
-GenericSegmentOffloadMaxBytes=
2aacef
-GenericSegmentOffloadMaxSegments=
2aacef
-RxCoalesceSec=
2aacef
-RxMaxCoalescedFrames=
2aacef
-RxCoalesceIrqSec=
2aacef
-RxMaxCoalescedIrqFrames=
2aacef
-TxCoalesceSec=
2aacef
-TxMaxCoalescedFrames=
2aacef
-TxCoalesceIrqSec=
2aacef
-TxMaxCoalescedIrqFrames=
2aacef
-StatisticsBlockCoalesceSec=
2aacef
-UseAdaptiveRxCoalesce=
2aacef
-UseAdaptiveTxCoalesce=
2aacef
-CoalescePacketRateLow=
2aacef
-RxCoalesceLowSec=
2aacef
-RxMaxCoalescedLowFrames=
2aacef
-TxCoalesceLowSec=
2aacef
-TxMaxCoalescedLowFrames=
2aacef
-CoalescePacketRateHigh=
2aacef
-RxCoalesceHighSec=
2aacef
-RxMaxCoalescedHighFrames=
2aacef
-TxCoalesceHighSec=
2aacef
-TxMaxCoalescedHighFrames=
2aacef
-CoalescePacketRateSampleIntervalSec=
2aacef
-MDI=
2aacef
-SR-IOVVirtualFunctions=
2aacef
-[SR-IOV]
2aacef
-VirtualFunction=
2aacef
-MACSpoofCheck=
2aacef
-VLANId=
2aacef
-VLANProtocol=
2aacef
-QualityOfService=
2aacef
-QueryReceiveSideScaling=
2aacef
-Trust=
2aacef
-LinkState=
2aacef
-MACAddress=
2aacef
diff --git a/test/fuzz/fuzz-netdev-parser/directives.netdev b/test/fuzz/fuzz-netdev-parser/directives.netdev
2aacef
deleted file mode 100644
2aacef
index 309941f58d..0000000000
2aacef
--- a/test/fuzz/fuzz-netdev-parser/directives.netdev
2aacef
+++ /dev/null
2aacef
@@ -1,258 +0,0 @@
2aacef
-[VLAN]
2aacef
-MVRP=
2aacef
-LooseBinding=
2aacef
-ReorderHeader=
2aacef
-Id=
2aacef
-GVRP=
2aacef
-Protocol=
2aacef
-EgressQOSMaps=
2aacef
-IngressQOSMaps=
2aacef
-[MACVLAN]
2aacef
-Mode=
2aacef
-SourceMACAddress=
2aacef
-BroadcastMulticastQueueLength=
2aacef
-[WireGuard]
2aacef
-ListenPort=
2aacef
-PrivateKey=
2aacef
-PrivateKeyFile=
2aacef
-FwMark=
2aacef
-FirewallMark=
2aacef
-RouteTable=
2aacef
-RouteMetric=
2aacef
-[MACVTAP]
2aacef
-Mode=
2aacef
-SourceMACAddress=
2aacef
-[Match]
2aacef
-Architecture=
2aacef
-Credential=
2aacef
-Firmware=
2aacef
-Host=
2aacef
-KernelCommandLine=
2aacef
-KernelVersion=
2aacef
-Virtualization=
2aacef
-[GENEVE]
2aacef
-DestinationPort=
2aacef
-TTL=
2aacef
-UDP6ZeroCheckSumTx=
2aacef
-TOS=
2aacef
-Id=
2aacef
-UDPChecksum=
2aacef
-UDP6ZeroChecksumTx=
2aacef
-FlowLabel=
2aacef
-UDP6ZeroChecksumRx=
2aacef
-Remote=
2aacef
-UDP6ZeroCheckSumRx=
2aacef
-IPDoNotFragment=
2aacef
-[Bridge]
2aacef
-ForwardDelaySec=
2aacef
-HelloTimeSec=
2aacef
-MaxAgeSec=
2aacef
-STP=
2aacef
-MulticastSnooping=
2aacef
-DefaultPVID=
2aacef
-MulticastQuerier=
2aacef
-AgeingTimeSec=
2aacef
-Priority=
2aacef
-GroupForwardMask=
2aacef
-VLANFiltering=
2aacef
-VLANProtocol=
2aacef
-MulticastIGMPVersion=
2aacef
-[VRF]
2aacef
-TableId=
2aacef
-Table=
2aacef
-[Peer]
2aacef
-MACAddress=
2aacef
-Name=
2aacef
-[WireGuardPeer]
2aacef
-Endpoint=
2aacef
-PresharedKey=
2aacef
-PresharedKeyFile=
2aacef
-PersistentKeepalive=
2aacef
-PublicKey=
2aacef
-AllowedIPs=
2aacef
-RouteTable=
2aacef
-RouteMetric=
2aacef
-[Tunnel]
2aacef
-FooOverUDP=
2aacef
-IPv6FlowLabel=
2aacef
-Remote=
2aacef
-AllowLocalRemote=
2aacef
-Local=
2aacef
-TOS=
2aacef
-Independent=
2aacef
-AssignToLoopback=
2aacef
-Key=
2aacef
-InputKey=
2aacef
-Encapsulation=
2aacef
-Mode=
2aacef
-OutputKey=
2aacef
-DiscoverPathMTU=
2aacef
-FOUDestinationPort=
2aacef
-CopyDSCP=
2aacef
-EncapsulationLimit=
2aacef
-TTL=
2aacef
-FOUSourcePort=
2aacef
-IPv6RapidDeploymentPrefix=
2aacef
-ERSPANVersion=
2aacef
-ERSPANIndex=
2aacef
-ERSPANDirection=
2aacef
-ERSPANHardwareId=
2aacef
-SerializeTunneledPackets=
2aacef
-ISATAP=
2aacef
-External=
2aacef
-[VXLAN]
2aacef
-UDP6ZeroChecksumRx=
2aacef
-ARPProxy=
2aacef
-FlowLabel=
2aacef
-Local=
2aacef
-RemoteChecksumTx=
2aacef
-RouteShortCircuit=
2aacef
-Remote=
2aacef
-L3MissNotification=
2aacef
-Group=
2aacef
-FDBAgeingSec=
2aacef
-MacLearning=
2aacef
-Id=
2aacef
-VNI=
2aacef
-RemoteChecksumRx=
2aacef
-TOS=
2aacef
-L2MissNotification=
2aacef
-UDP6ZeroChecksumTx=
2aacef
-UDP6ZeroCheckSumRx=
2aacef
-UDPCheckSum=
2aacef
-GroupPolicyExtension=
2aacef
-GenericProtocolExtension=
2aacef
-MaximumFDBEntries=
2aacef
-TTL=
2aacef
-DestinationPort=
2aacef
-ReduceARPProxy=
2aacef
-PortRange=
2aacef
-UDPChecksum=
2aacef
-UDP6ZeroCheckSumTx=
2aacef
-IPDoNotFragment=
2aacef
-Independent=
2aacef
-[VXCAN]
2aacef
-Peer=
2aacef
-[Bond]
2aacef
-LearnPacketIntervalSec=
2aacef
-TransmitHashPolicy=
2aacef
-MIIMonitorSec=
2aacef
-PacketsPerSlave=
2aacef
-DownDelaySec=
2aacef
-PrimaryReselectPolicy=
2aacef
-ResendIGMP=
2aacef
-ARPAllTargets=
2aacef
-AdActorSystemPriority=
2aacef
-UpDelaySec=
2aacef
-AdSelect=
2aacef
-AdActorSystem=
2aacef
-AdUserPortKey=
2aacef
-FailOverMACPolicy=
2aacef
-ARPValidate=
2aacef
-Mode=
2aacef
-GratuitousARP=
2aacef
-ARPIPTargets=
2aacef
-MinLinks=
2aacef
-LACPTransmitRate=
2aacef
-ARPIntervalSec=
2aacef
-AllSlavesActive=
2aacef
-DynamicTransmitLoadBalancing=
2aacef
-[FooOverUDP]
2aacef
-Protocol=
2aacef
-Port=
2aacef
-PeerPort=
2aacef
-Encapsulation=
2aacef
-Local=
2aacef
-Peer=
2aacef
-[Tap]
2aacef
-MultiQueue=
2aacef
-OneQueue=
2aacef
-User=
2aacef
-Group=
2aacef
-PacketInfo=
2aacef
-VNetHeader=
2aacef
-KeepCarrier=
2aacef
-[IPVLAN]
2aacef
-Mode=
2aacef
-Flags=
2aacef
-[IPVTAP]
2aacef
-Mode=
2aacef
-Flags=
2aacef
-[Tun]
2aacef
-OneQueue=
2aacef
-MultiQueue=
2aacef
-PacketInfo=
2aacef
-VNetHeader=
2aacef
-Group=
2aacef
-User=
2aacef
-KeepCarrier=
2aacef
-[NetDev]
2aacef
-Kind=
2aacef
-MACAddress=
2aacef
-MTUBytes=
2aacef
-Description=
2aacef
-Name=
2aacef
-[L2TP]
2aacef
-TunnelId=
2aacef
-PeerTunnelId=
2aacef
-UDPSourcePort=
2aacef
-UDPDestinationPort=
2aacef
-Local=
2aacef
-Remote=
2aacef
-EncapsulationType=
2aacef
-UDPCheckSum=
2aacef
-UDP6CheckSumRx=
2aacef
-UDP6CheckSumTx=
2aacef
-[L2TPSession]
2aacef
-SessionId=
2aacef
-PeerSessionId=
2aacef
-Layer2SpecificHeader=
2aacef
-Name=
2aacef
-[MACsec]
2aacef
-Port=
2aacef
-Encrypt=
2aacef
-[MACsecReceiveAssociation]
2aacef
-Port=
2aacef
-MACAddress=
2aacef
-PacketNumber=
2aacef
-KeyId=
2aacef
-Key=
2aacef
-KeyFile=
2aacef
-Activate=
2aacef
-UseForEncoding=
2aacef
-[MACsecReceiveChannel]
2aacef
-Port=
2aacef
-MACAddress=
2aacef
-[MACsecTransmitAssociation]
2aacef
-PacketNumber=
2aacef
-KeyId=
2aacef
-Key=
2aacef
-KeyFile=
2aacef
-Activate=
2aacef
-[Xfrm]
2aacef
-Independent=
2aacef
-InterfaceId=
2aacef
-[BareUDP]
2aacef
-DestinationPort=
2aacef
-EtherType=
2aacef
-[BatmanAdvanced]
2aacef
-GatewayMode=
2aacef
-Aggregation=
2aacef
-BridgeLoopAvoidance=
2aacef
-DistributedArpTable=
2aacef
-Fragmentation=
2aacef
-HopPenalty=
2aacef
-OriginatorIntervalSec=
2aacef
-GatewayBandwithDown=
2aacef
-GatewayBandwithUp=
2aacef
-GatewayBandwidthDown=
2aacef
-GatewayBandwidthUp=
2aacef
-RoutingAlgorithm=
2aacef
-[IPoIB]
2aacef
-PartitionKey=
2aacef
-Mode=
2aacef
-IgnoreUserspaceMulticastGroups=
2aacef
-[WLAN]
2aacef
-PhysicalDevice=
2aacef
-Type=
2aacef
-WDS=
2aacef
diff --git a/test/fuzz/fuzz-network-parser/directives b/test/fuzz/fuzz-network-parser/directives
2aacef
deleted file mode 100644
2aacef
index 171322ef20..0000000000
2aacef
--- a/test/fuzz/fuzz-network-parser/directives
2aacef
+++ /dev/null
2aacef
@@ -1,595 +0,0 @@
2aacef
-[Bridge]
2aacef
-Cost=
2aacef
-UseBPDU=
2aacef
-HairPin=
2aacef
-Isolated=
2aacef
-UnicastFlood=
2aacef
-FastLeave=
2aacef
-Priority=
2aacef
-AllowPortToBeRoot=
2aacef
-MulticastToUnicast=
2aacef
-MulticastFlood=
2aacef
-NeighborSuppression=
2aacef
-Learning=
2aacef
-ProxyARP=
2aacef
-ProxyARPWiFi=
2aacef
-MulticastRouter=
2aacef
-[Match]
2aacef
-Architecture=
2aacef
-BSSID=
2aacef
-Credential=
2aacef
-Driver=
2aacef
-Firmware=
2aacef
-Host=
2aacef
-KernelCommandLine=
2aacef
-KernelVersion=
2aacef
-Kind=
2aacef
-MACAddress=
2aacef
-Name=
2aacef
-Path=
2aacef
-PermanentMACAddress=
2aacef
-Property=
2aacef
-SSID=
2aacef
-Type=
2aacef
-Virtualization=
2aacef
-WLANInterfaceType=
2aacef
-[Link]
2aacef
-ActivationPolicy=
2aacef
-RequiredForOnline=
2aacef
-RequiredFamilyForOnline=
2aacef
-ARP=
2aacef
-AllMulticast=
2aacef
-Unmanaged=
2aacef
-MTUBytes=
2aacef
-Multicast=
2aacef
-MACAddress=
2aacef
-Group=
2aacef
-Promiscuous=
2aacef
-[SR-IOV]
2aacef
-VirtualFunction=
2aacef
-MACSpoofCheck=
2aacef
-VLANId=
2aacef
-VLANProtocol=
2aacef
-QualityOfService=
2aacef
-QueryReceiveSideScaling=
2aacef
-Trust=
2aacef
-LinkState=
2aacef
-MACAddress=
2aacef
-[BridgeFDB]
2aacef
-VLANId=
2aacef
-MACAddress=
2aacef
-Destination=
2aacef
-VNI=
2aacef
-AssociatedWith=
2aacef
-OutgoingInterface=
2aacef
-[BridgeMDB]
2aacef
-MulticastGroupAddress=
2aacef
-VLANId=
2aacef
-[DHCP]
2aacef
-UseDomains=
2aacef
-UseRoutes=
2aacef
-IAID=
2aacef
-UserClass=
2aacef
-UseNTP=
2aacef
-RapidCommit=
2aacef
-ForceDHCPv6PDOtherInformation=
2aacef
-UseMTU=
2aacef
-UseDomainName=
2aacef
-RouteMetric=
2aacef
-SendHostname=
2aacef
-Anonymize=
2aacef
-VendorClassIdentifier=
2aacef
-Hostname=
2aacef
-DUIDType=
2aacef
-UseHostname=
2aacef
-UseDNS=
2aacef
-CriticalConnection=
2aacef
-DUIDRawData=
2aacef
-RequestBroadcast=
2aacef
-ClientIdentifier=
2aacef
-ListenPort=
2aacef
-UseTimezone=
2aacef
-RouteTable=
2aacef
-[DHCPv4]
2aacef
-UseDNS=
2aacef
-RoutesToDNS=
2aacef
-UseDomains=
2aacef
-UseRoutes=
2aacef
-UseGateway=
2aacef
-IAID=
2aacef
-UserClass=
2aacef
-UseNTP=
2aacef
-RoutesToNTP=
2aacef
-UseSIP=
2aacef
-UseMTU=
2aacef
-UseDomainName=
2aacef
-RouteMetric=
2aacef
-SendHostname=
2aacef
-Anonymize=
2aacef
-VendorClassIdentifier=
2aacef
-Hostname=
2aacef
-DUIDType=
2aacef
-UseHostname=
2aacef
-Label=
2aacef
-CriticalConnection=
2aacef
-DUIDRawData=
2aacef
-RequestBroadcast=
2aacef
-ClientIdentifier=
2aacef
-ListenPort=
2aacef
-UseTimezone=
2aacef
-RouteTable=
2aacef
-DenyList=
2aacef
-BlackList=
2aacef
-AllowList=
2aacef
-RequestOptions=
2aacef
-SendRelease=
2aacef
-MaxAttempts=
2aacef
-IPServiceType=
2aacef
-SendOption=
2aacef
-SendVendorOption=
2aacef
-SendDecline=
2aacef
-MUDURL=
2aacef
-RouteMTUBytes=
2aacef
-FallbackLeaseLifetimeSec=
2aacef
-Use6RD=
2aacef
-NetLabel=
2aacef
-[DHCPv6]
2aacef
-UseAddress=
2aacef
-UseDelegatedPrefix=
2aacef
-UseNTP=
2aacef
-UseDNS=
2aacef
-UseHostname=
2aacef
-UseDomains=
2aacef
-RapidCommit=
2aacef
-ForceDHCPv6PDOtherInformation=
2aacef
-PrefixDelegationHint=
2aacef
-WithoutRA=
2aacef
-MUDURL=
2aacef
-SendOption=
2aacef
-RequestOptions=
2aacef
-UserClass=
2aacef
-VendorClass=
2aacef
-SendVendorOption=
2aacef
-RouteMetric=
2aacef
-IAID=
2aacef
-DUIDType=
2aacef
-DUIDRawData=
2aacef
-NetLabel=
2aacef
-[DHCPv6PrefixDelegation]
2aacef
-SubnetId=
2aacef
-Announce=
2aacef
-Assign=
2aacef
-ManageTemporaryAddress=
2aacef
-Token=
2aacef
-RouteMetric=
2aacef
-NetLabel=
2aacef
-[DHCPPrefixDelegation]
2aacef
-UplinkInterface=
2aacef
-SubnetId=
2aacef
-Announce=
2aacef
-Assign=
2aacef
-ManageTemporaryAddress=
2aacef
-Token=
2aacef
-RouteMetric=
2aacef
-NetLabel=
2aacef
-[Route]
2aacef
-Destination=
2aacef
-Protocol=
2aacef
-Table=
2aacef
-Gateway=
2aacef
-InitialAdvertisedReceiveWindow=
2aacef
-GatewayOnLink=
2aacef
-GatewayOnlink=
2aacef
-Type=
2aacef
-InitialCongestionWindow=
2aacef
-IPv6Preference=
2aacef
-PreferredSource=
2aacef
-Scope=
2aacef
-MTUBytes=
2aacef
-QuickAck=
2aacef
-FastOpenNoCookie=
2aacef
-Source=
2aacef
-Metric=
2aacef
-TTLPropagate=
2aacef
-MultiPathRoute=
2aacef
-TCPAdvertisedMaximumSegmentSize=
2aacef
-TCPCongestionControlAlgorithm=
2aacef
-NextHop=
2aacef
-[Network]
2aacef
-KeepMaster=
2aacef
-IPv6DuplicateAddressDetection=
2aacef
-IPMasquerade=
2aacef
-ProxyARP=
2aacef
-PrimarySlave=
2aacef
-IPv4LLRoute=
2aacef
-DefaultRouteOnDevice=
2aacef
-Address=
2aacef
-IPv6ProxyNDPAddress=
2aacef
-IPv6AcceptRA=
2aacef
-IPv6AcceptRouterAdvertisements=
2aacef
-IPv4AcceptLocal=
2aacef
-IPv4RouteLocalnet=
2aacef
-DNSSECNegativeTrustAnchors=
2aacef
-MACVTAP=
2aacef
-IPv6PrivacyExtensions=
2aacef
-MACVLAN=
2aacef
-MulticastDNS=
2aacef
-LLDP=
2aacef
-Tunnel=
2aacef
-Gateway=
2aacef
-IPv4LL=
2aacef
-IPVLAN=
2aacef
-IPVTAP=
2aacef
-EmitLLDP=
2aacef
-IPv6MTUBytes=
2aacef
-IPv4ProxyARP=
2aacef
-Bridge=
2aacef
-DNSOverTLS=
2aacef
-Bond=
2aacef
-IPv6ProxyNDP=
2aacef
-DNS=
2aacef
-DNSDefaultRoute=
2aacef
-ActiveSlave=
2aacef
-LLMNR=
2aacef
-DNSSEC=
2aacef
-IPv6HopLimit=
2aacef
-IPForward=
2aacef
-IPv6Token=
2aacef
-Xfrm=
2aacef
-Description=
2aacef
-VXLAN=
2aacef
-L2TP=
2aacef
-MACsec=
2aacef
-LinkLocalAddressing=
2aacef
-IPv4LLStartAddress=
2aacef
-IPv6LinkLocalAddressGenerationMode=
2aacef
-IPv6StableSecretAddress=
2aacef
-ConfigureWithoutCarrier=
2aacef
-NTP=
2aacef
-DHCP=
2aacef
-Domains=
2aacef
-IPv6SendRA=
2aacef
-IPv6PrefixDelegation=
2aacef
-VLAN=
2aacef
-DHCPServer=
2aacef
-BindCarrier=
2aacef
-VRF=
2aacef
-IgnoreCarrierLoss=
2aacef
-KeepConfiguration=
2aacef
-DHCPv6PrefixDelegation=
2aacef
-DHCPPrefixDelegation=
2aacef
-BatmanAdvanced=
2aacef
-IPoIB=
2aacef
-[IPv6Prefix]
2aacef
-Prefix=
2aacef
-OnLink=
2aacef
-PreferredLifetimeSec=
2aacef
-AddressAutoconfiguration=
2aacef
-ValidLifetimeSec=
2aacef
-Assign=
2aacef
-Token=
2aacef
-RouteMetric=
2aacef
-[IPv6RoutePrefix]
2aacef
-Route=
2aacef
-LifetimeSec=
2aacef
-[BridgeVLAN]
2aacef
-EgressUntagged=
2aacef
-VLAN=
2aacef
-PVID=
2aacef
-[LLDP]
2aacef
-MUDURL=
2aacef
-[CAN]
2aacef
-SamplePoint=
2aacef
-BitRate=
2aacef
-TimeQuantaNSec=
2aacef
-PropagationSegment=
2aacef
-PhaseBufferSegment1=
2aacef
-PhaseBufferSegment2=
2aacef
-SyncJumpWidth=
2aacef
-DataSamplePoint=
2aacef
-DataBitRate=
2aacef
-DataTimeQuantaNSec=
2aacef
-DataPropagationSegment=
2aacef
-DataPhaseBufferSegment1=
2aacef
-DataPhaseBufferSegment2=
2aacef
-DataSyncJumpWidth=
2aacef
-FDMode=
2aacef
-FDNonISO=
2aacef
-RestartSec=
2aacef
-TripleSampling=
2aacef
-BusErrorReporting=
2aacef
-Termination=
2aacef
-ListenOnly=
2aacef
-Loopback=
2aacef
-OneShot=
2aacef
-PresumeACK=
2aacef
-ClassicDataLengthCode=
2aacef
-[IPoIB]
2aacef
-Mode=
2aacef
-IgnoreUserspaceMulticastGroups=
2aacef
-[Address]
2aacef
-DuplicateAddressDetection=
2aacef
-AutoJoin=
2aacef
-PreferredLifetime=
2aacef
-Address=
2aacef
-Scope=
2aacef
-HomeAddress=
2aacef
-PrefixRoute=
2aacef
-AddPrefixRoute=
2aacef
-ManageTemporaryAddress=
2aacef
-Broadcast=
2aacef
-Peer=
2aacef
-Label=
2aacef
-RouteMetric=
2aacef
-[RoutingPolicyRule]
2aacef
-Table=
2aacef
-IncomingInterface=
2aacef
-To=
2aacef
-OutgoingInterface=
2aacef
-From=
2aacef
-TypeOfService=
2aacef
-Priority=
2aacef
-FirewallMark=
2aacef
-SourcePort=
2aacef
-DestinationPort=
2aacef
-IPProtocol=
2aacef
-InvertRule=
2aacef
-Family=
2aacef
-SuppressPrefixLength=
2aacef
-SuppressInterfaceGroup=
2aacef
-User=
2aacef
-Type=
2aacef
-[IPv6SendRA]
2aacef
-RouterPreference=
2aacef
-DNSLifetimeSec=
2aacef
-DNS=
2aacef
-RouterLifetimeSec=
2aacef
-Domains=
2aacef
-EmitDNS=
2aacef
-EmitDomains=
2aacef
-Managed=
2aacef
-OtherInformation=
2aacef
-UplinkInterface=
2aacef
-NetLabel=
2aacef
-[IPv6PrefixDelegation]
2aacef
-RouterPreference=
2aacef
-DNSLifetimeSec=
2aacef
-DNS=
2aacef
-RouterLifetimeSec=
2aacef
-Domains=
2aacef
-EmitDNS=
2aacef
-EmitDomains=
2aacef
-Managed=
2aacef
-OtherInformation=
2aacef
-[Neighbor]
2aacef
-Address=
2aacef
-LinkLayerAddress=
2aacef
-MACAddress=
2aacef
-[IPv6AddressLabel]
2aacef
-Label=
2aacef
-Prefix=
2aacef
-[IPv6AcceptRA]
2aacef
-UseDomains=
2aacef
-UseMTU=
2aacef
-RouteTable=
2aacef
-RouteMetric=
2aacef
-UseDNS=
2aacef
-DHCPv6Client=
2aacef
-UseGateway=
2aacef
-UseRoutePrefix=
2aacef
-UseAutonomousPrefix=
2aacef
-UseOnLinkPrefix=
2aacef
-RouterAllowList=
2aacef
-RouterDenyList=
2aacef
-PrefixAllowList=
2aacef
-PrefixDenyList=
2aacef
-RouteAllowList=
2aacef
-RouteDenyList=
2aacef
-DenyList=
2aacef
-BlackList=
2aacef
-Token=
2aacef
-[DHCPServer]
2aacef
-EmitNTP=
2aacef
-PoolSize=
2aacef
-PoolOffset=
2aacef
-Timezone=
2aacef
-EmitDNS=
2aacef
-NTP=
2aacef
-EmitSIP=
2aacef
-SIP=
2aacef
-EmitPOP3=
2aacef
-POP3=
2aacef
-EmitSMTP=
2aacef
-SMTP=
2aacef
-EmitLPR=
2aacef
-LPR=
2aacef
-EmitRouter=
2aacef
-Router=
2aacef
-MaxLeaseTimeSec=
2aacef
-DefaultLeaseTimeSec=
2aacef
-EmitTimezone=
2aacef
-DNS=
2aacef
-SendOption=
2aacef
-SendVendorOption=
2aacef
-BindToInterface=
2aacef
-RelayTarget=
2aacef
-RelayAgentCircuitId=
2aacef
-RelayAgentRemoteId=
2aacef
-ServerAddress=
2aacef
-UplinkInterface=
2aacef
-BootServerAddress=
2aacef
-BootServerName=
2aacef
-BootFilename=
2aacef
-[DHCPServerStaticLease]
2aacef
-MACAddress=
2aacef
-Address=
2aacef
-[NextHop]
2aacef
-Id=
2aacef
-Gateway=
2aacef
-Family=
2aacef
-OnLink=
2aacef
-Blackhole=
2aacef
-Group=
2aacef
-[QDisc]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-[NetworkEmulator]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-DelaySec=
2aacef
-DelayJitterSec=
2aacef
-LossRate=
2aacef
-DuplicateRate=
2aacef
-PacketLimit=
2aacef
-[TokenBucketFilter]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-Rate=
2aacef
-BurstBytes=
2aacef
-Burst=
2aacef
-LimitBytes=
2aacef
-LimitSize=
2aacef
-MTUBytes=
2aacef
-MPUBytes=
2aacef
-PeakRate=
2aacef
-LatencySec=
2aacef
-[StochasticFairnessQueueing]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PerturbPeriodSec=
2aacef
-[FairQueueingControlledDelay]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-MemoryLimitBytes=
2aacef
-MemoryLimit=
2aacef
-Flows=
2aacef
-QuantumBytes=
2aacef
-Quantum=
2aacef
-TargetSec=
2aacef
-IntervalSec=
2aacef
-CEThresholdSec=
2aacef
-ECN=
2aacef
-[FairQueueing]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-FlowLimit=
2aacef
-QuantumBytes=
2aacef
-Quantum=
2aacef
-InitialQuantumBytes=
2aacef
-InitialQuantum=
2aacef
-MaximumRate=
2aacef
-Buckets=
2aacef
-OrphanMask=
2aacef
-Pacing=
2aacef
-CEThresholdSec=
2aacef
-[ControlledDelay]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-TargetSec=
2aacef
-IntervalSec=
2aacef
-CEThresholdSec=
2aacef
-ECN=
2aacef
-[CAKE]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-Bandwidth=
2aacef
-AutoRateIngress=
2aacef
-OverheadBytes=
2aacef
-MPUBytes=
2aacef
-CompensationMode=
2aacef
-UseRawPacketSize=
2aacef
-FlowIsolationMode=
2aacef
-NAT=
2aacef
-PriorityQueueingPreset=
2aacef
-FirewallMark=
2aacef
-Wash=
2aacef
-SplitGSO=
2aacef
-[TrafficControlQueueingDiscipline]
2aacef
-Parent=
2aacef
-NetworkEmulatorDelaySec=
2aacef
-NetworkEmulatorDelayJitterSec=
2aacef
-NetworkEmulatorLossRate=
2aacef
-NetworkEmulatorDuplicateRate=
2aacef
-NetworkEmulatorPacketLimit=
2aacef
-[TrivialLinkEqualizer]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-Id=
2aacef
-[HierarchyTokenBucket]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-DefaultClass=
2aacef
-RateToQuantum=
2aacef
-[HierarchyTokenBucketClass]
2aacef
-Parent=
2aacef
-ClassId=
2aacef
-Priority=
2aacef
-QuantumBytes=
2aacef
-MTUBytes=
2aacef
-OverheadBytes=
2aacef
-Rate=
2aacef
-CeilRate=
2aacef
-BufferBytes=
2aacef
-CeilBufferBytes=
2aacef
-[BFIFO]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-LimitBytes=
2aacef
-[PFIFO]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-[PFIFOHeadDrop]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-[PFIFOFast]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-[GenericRandomEarlyDetection]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-VirtualQueues=
2aacef
-DefaultVirtualQueue=
2aacef
-GenericRIO=
2aacef
-[StochasticFairBlue]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-[PIE]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-[QuickFairQueueing]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-[QuickFairQueueingClass]
2aacef
-Parent=
2aacef
-ClassId=
2aacef
-Weight=
2aacef
-MaxPacketBytes=
2aacef
-[DeficitRoundRobinScheduler]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-[DeficitRoundRobinSchedulerClass]
2aacef
-Parent=
2aacef
-ClassId=
2aacef
-QuantumBytes=
2aacef
-[EnhancedTransmissionSelection]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-Bands=
2aacef
-StrictBands=
2aacef
-QuantumBytes=
2aacef
-PriorityMap=
2aacef
-[HeavyHitterFilter]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
-[FlowQueuePIE]
2aacef
-Parent=
2aacef
-Handle=
2aacef
-PacketLimit=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.automount b/test/fuzz/fuzz-unit-file/directives.automount
2aacef
deleted file mode 100644
2aacef
index fd0ce64a2e..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.automount
2aacef
+++ /dev/null
2aacef
@@ -1,6 +0,0 @@
2aacef
-automount
2aacef
-[Automount]
2aacef
-DirectoryMode=
2aacef
-TimeoutIdleSec=
2aacef
-Where=
2aacef
-ExtraOptions=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.mount b/test/fuzz/fuzz-unit-file/directives.mount
2aacef
deleted file mode 100644
2aacef
index 0a44328e5c..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.mount
2aacef
+++ /dev/null
2aacef
@@ -1,216 +0,0 @@
2aacef
-mount
2aacef
-[Mount]
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-AmbientCapabilities=
2aacef
-AppArmorProfile=
2aacef
-BPFProgram=
2aacef
-ExecSearchPath=
2aacef
-BindPaths=
2aacef
-BindReadOnlyPaths=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-CPUAccounting=
2aacef
-CPUAffinity=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUSchedulingPolicy=
2aacef
-CPUSchedulingPriority=
2aacef
-CPUSchedulingResetOnFork=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-CacheDirectory=
2aacef
-CacheDirectoryMode=
2aacef
-Capabilities=
2aacef
-CapabilityBoundingSet=
2aacef
-ConfigurationDirectory=
2aacef
-ConfigurationDirectoryMode=
2aacef
-CoredumpFilter=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DirectoryMode=
2aacef
-DisableControllers=
2aacef
-DynamicUser=
2aacef
-Environment=
2aacef
-EnvironmentFile=
2aacef
-ExecPaths=
2aacef
-ExtensionDirectories=
2aacef
-ExtensionImages=
2aacef
-FinalKillSignal=
2aacef
-ForceUnmount=
2aacef
-Group=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOSchedulingClass=
2aacef
-IOSchedulingPriority=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPCNamespacePath=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-IgnoreSIGPIPE=
2aacef
-InaccessibleDirectories=
2aacef
-InaccessiblePaths=
2aacef
-KeyringMode=
2aacef
-KillMode=
2aacef
-KillSignal=
2aacef
-LazyUnmount=
2aacef
-LimitAS=
2aacef
-LimitCORE=
2aacef
-LimitCPU=
2aacef
-LimitDATA=
2aacef
-LimitFSIZE=
2aacef
-LimitLOCKS=
2aacef
-LimitMEMLOCK=
2aacef
-LimitMSGQUEUE=
2aacef
-LimitNICE=
2aacef
-LimitNOFILE=
2aacef
-LimitNPROC=
2aacef
-LimitRSS=
2aacef
-LimitRTPRIO=
2aacef
-LimitRTTIME=
2aacef
-LimitSIGPENDING=
2aacef
-LimitSTACK=
2aacef
-LoadCredential=
2aacef
-LoadCredentialEncrypted=
2aacef
-LockPersonality=
2aacef
-LogExtraFields=
2aacef
-LogLevelMax=
2aacef
-LogNamespace=
2aacef
-LogRateLimitBurst=
2aacef
-LogRateLimitIntervalSec=
2aacef
-LogsDirectory=
2aacef
-LogsDirectoryMode=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-MemoryAccounting=
2aacef
-MemoryDenyWriteExecute=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-MountAPIVFS=
2aacef
-MountFlags=
2aacef
-MountImages=
2aacef
-NUMAMask=
2aacef
-NUMAPolicy=
2aacef
-NetClass=
2aacef
-NetworkNamespacePath=
2aacef
-Nice=
2aacef
-NoExecPaths=
2aacef
-NoNewPrivileges=
2aacef
-OOMScoreAdjust=
2aacef
-Options=
2aacef
-PAMName=
2aacef
-PassEnvironment=
2aacef
-Personality=
2aacef
-PrivateDevices=
2aacef
-PrivateIPC=
2aacef
-PrivateMounts=
2aacef
-PrivateNetwork=
2aacef
-PrivateTmp=
2aacef
-PrivateUsers=
2aacef
-ProcSubset=
2aacef
-ProtectClock=
2aacef
-ProtectControlGroups=
2aacef
-ProtectHome=
2aacef
-ProtectHostname=
2aacef
-ProtectKernelLogs=
2aacef
-ProtectKernelModules=
2aacef
-ProtectKernelTunables=
2aacef
-ProtectProc=
2aacef
-ProtectSystem=
2aacef
-ReadOnlyDirectories=
2aacef
-ReadOnlyPaths=
2aacef
-ReadWriteDirectories=
2aacef
-ReadWriteOnly=
2aacef
-ReadWritePaths=
2aacef
-RemoveIPC=
2aacef
-RestartKillSignal=
2aacef
-RestrictAddressFamilies=
2aacef
-RestrictFileSystems=
2aacef
-RestrictNamespaces=
2aacef
-RestrictNetworkInterfaces=
2aacef
-RestrictRealtime=
2aacef
-RestrictSUIDSGID=
2aacef
-RootDirectory=
2aacef
-RootHash=
2aacef
-RootHashSignature=
2aacef
-RootImage=
2aacef
-RootImageOptions=
2aacef
-RootVerity=
2aacef
-RuntimeDirectory=
2aacef
-RuntimeDirectoryMode=
2aacef
-RuntimeDirectoryPreserve=
2aacef
-SELinuxContext=
2aacef
-SecureBits=
2aacef
-SendSIGHUP=
2aacef
-SendSIGKILL=
2aacef
-SetCredential=
2aacef
-SetCredentialEncrypted=
2aacef
-Slice=
2aacef
-SloppyOptions=
2aacef
-SmackProcessLabel=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-StandardError=
2aacef
-StandardInput=
2aacef
-StandardInputData=
2aacef
-StandardInputText=
2aacef
-StandardOutput=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-StateDirectory=
2aacef
-StateDirectoryMode=
2aacef
-SupplementaryGroups=
2aacef
-SyslogFacility=
2aacef
-SyslogIdentifier=
2aacef
-SyslogLevel=
2aacef
-SyslogLevelPrefix=
2aacef
-SystemCallArchitectures=
2aacef
-SystemCallErrorNumber=
2aacef
-SystemCallFilter=
2aacef
-SystemCallLog=
2aacef
-TTYPath=
2aacef
-TTYReset=
2aacef
-TTYVHangup=
2aacef
-TTYVTDisallocate=
2aacef
-TTYRows=
2aacef
-TTYColumns=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
-TemporaryFileSystem=
2aacef
-TimeoutCleanSec=
2aacef
-TimeoutSec=
2aacef
-TimerSlackNSec=
2aacef
-Type=
2aacef
-UMask=
2aacef
-UnsetEnvironment=
2aacef
-User=
2aacef
-UtmpIdentifier=
2aacef
-UtmpMode=
2aacef
-WatchdogSignal=
2aacef
-What=
2aacef
-Where=
2aacef
-WorkingDirectory=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.path b/test/fuzz/fuzz-unit-file/directives.path
2aacef
deleted file mode 100644
2aacef
index 3c4df76b23..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.path
2aacef
+++ /dev/null
2aacef
@@ -1,12 +0,0 @@
2aacef
-path
2aacef
-[Path]
2aacef
-DirectoryMode=
2aacef
-DirectoryNotEmpty=
2aacef
-MakeDirectory=
2aacef
-PathChanged=
2aacef
-PathExists=
2aacef
-PathExistsGlob=
2aacef
-PathModified=
2aacef
-TriggerLimitBurst=
2aacef
-TriggerLimitIntervalSec=
2aacef
-Unit=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.scope b/test/fuzz/fuzz-unit-file/directives.scope
2aacef
deleted file mode 100644
2aacef
index 4552d0b403..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.scope
2aacef
+++ /dev/null
2aacef
@@ -1,68 +0,0 @@
2aacef
-scope
2aacef
-[Scope]
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-BPFProgram=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-CPUAccounting=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DisableControllers=
2aacef
-FinalKillSignal=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-KillMode=
2aacef
-KillSignal=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-MemoryAccounting=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-NetClass=
2aacef
-RestartKillSignal=
2aacef
-RestrictNetworkInterfaces=
2aacef
-RuntimeMaxSec=
2aacef
-RuntimeRandomizedExtraSec=
2aacef
-SendSIGHUP=
2aacef
-SendSIGKILL=
2aacef
-Slice=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
-TimeoutStopSec=
2aacef
-WatchdogSignal=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.service b/test/fuzz/fuzz-unit-file/directives.service
2aacef
deleted file mode 100644
2aacef
index 056edb9f17..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.service
2aacef
+++ /dev/null
2aacef
@@ -1,370 +0,0 @@
2aacef
-service
2aacef
-[Unit]
2aacef
-After=
2aacef
-AllowIsolate=
2aacef
-AssertACPower=
2aacef
-AssertArchitecture=
2aacef
-AssertCPUFeature=
2aacef
-AssertCPUPressure=
2aacef
-AssertCPUs=
2aacef
-AssertCapability=
2aacef
-AssertControlGroupController=
2aacef
-AssertCredential=
2aacef
-AssertDirectoryNotEmpty=
2aacef
-AssertEnvironment=
2aacef
-AssertFileIsExecutable=
2aacef
-AssertFileNotEmpty=
2aacef
-AssertFirstBoot=
2aacef
-AssertGroup=
2aacef
-AssertHost=
2aacef
-AssertIOPressure=
2aacef
-AssertKernelCommandLine=
2aacef
-AssertKernelVersion=
2aacef
-AssertMemory=
2aacef
-AssertMemoryPressure=
2aacef
-AssertNeedsUpdate=
2aacef
-AssertOSRelease=
2aacef
-AssertPathExists=
2aacef
-AssertPathExistsGlob=
2aacef
-AssertPathIsDirectory=
2aacef
-AssertPathIsEncrypted=
2aacef
-AssertPathIsMountPoint=
2aacef
-AssertPathIsReadWrite=
2aacef
-AssertPathIsSymbolicLink=
2aacef
-AssertSecurity=
2aacef
-AssertUser=
2aacef
-AssertVirtualization=
2aacef
-BPFProgram=
2aacef
-Before=
2aacef
-ExecSearchPath=
2aacef
-BindTo=
2aacef
-BindsTo=
2aacef
-CollectMode=
2aacef
-ConditionACPower=
2aacef
-ConditionArchitecture=
2aacef
-ConditionCPUFeature=
2aacef
-ConditionCPUPressure=
2aacef
-ConditionCPUs=
2aacef
-ConditionFirmware=
2aacef
-ConditionCapability=
2aacef
-ConditionControlGroupController=
2aacef
-ConditionCredential=
2aacef
-ConditionDirectoryNotEmpty=
2aacef
-ConditionEnvironment=
2aacef
-ConditionFileIsExecutable=
2aacef
-ConditionFileNotEmpty=
2aacef
-ConditionFirstBoot=
2aacef
-ConditionGroup=
2aacef
-ConditionHost=
2aacef
-ConditionIOPressure=
2aacef
-ConditionKernelCommandLine=
2aacef
-ConditionKernelVersion=
2aacef
-ConditionMemory=
2aacef
-ConditionMemoryPressure=
2aacef
-ConditionNeedsUpdate=
2aacef
-ConditionOSRelease=
2aacef
-ConditionPathExists=
2aacef
-ConditionPathExistsGlob=
2aacef
-ConditionPathIsDirectory=
2aacef
-ConditionPathIsEncrypted=
2aacef
-ConditionPathIsMountPoint=
2aacef
-ConditionPathIsReadWrite=
2aacef
-ConditionPathIsSymbolicLink=
2aacef
-ConditionSecurity=
2aacef
-ConditionUser=
2aacef
-ConditionVirtualization=
2aacef
-Conflicts=
2aacef
-DefaultDependencies=
2aacef
-Description=
2aacef
-Documentation=
2aacef
-FailureAction=
2aacef
-FailureActionExitStatus=
2aacef
-IgnoreOnIsolate=
2aacef
-IgnoreOnSnapshot=
2aacef
-JobRunningTimeoutSec=
2aacef
-JobTimeoutAction=
2aacef
-JobTimeoutRebootArgument=
2aacef
-JobTimeoutSec=
2aacef
-JoinsNamespaceOf=
2aacef
-OnFailure=
2aacef
-OnFailureIsolate=
2aacef
-OnFailureJobMode=
2aacef
-OnSuccess=
2aacef
-OnSuccessJobMode=
2aacef
-PartOf=
2aacef
-PropagateReloadFrom=
2aacef
-PropagateReloadTo=
2aacef
-PropagatesReloadTo=
2aacef
-PropagatesStopTo=
2aacef
-RebootArgument=
2aacef
-RefuseManualStart=
2aacef
-RefuseManualStop=
2aacef
-ReloadPropagatedFrom=
2aacef
-Requires=
2aacef
-RequiresMountsFor=
2aacef
-RequiresOverridable=
2aacef
-Requisite=
2aacef
-RequisiteOverridable=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-SourcePath=
2aacef
-StartLimitAction=
2aacef
-StartLimitBurst=
2aacef
-StartLimitInterval=
2aacef
-StartLimitIntervalSec=
2aacef
-StopWhenUnneeded=
2aacef
-StopPropagatedFrom=
2aacef
-SuccessAction=
2aacef
-SuccessActionExitStatus=
2aacef
-Upholds=
2aacef
-Wants=
2aacef
-[Install]
2aacef
-Alias=
2aacef
-Also=
2aacef
-DefaultInstance=
2aacef
-RequiredBy=
2aacef
-WantedBy=
2aacef
-[Service]
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-AmbientCapabilities=
2aacef
-AppArmorProfile=
2aacef
-BindPaths=
2aacef
-BindReadOnlyPaths=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-BusName=
2aacef
-BusPolicy=
2aacef
-CPUAccounting=
2aacef
-CPUAffinity=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUSchedulingPolicy=
2aacef
-CPUSchedulingPriority=
2aacef
-CPUSchedulingResetOnFork=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-CacheDirectory=
2aacef
-CacheDirectoryMode=
2aacef
-Capabilities=
2aacef
-CapabilityBoundingSet=
2aacef
-ConfigurationDirectory=
2aacef
-ConfigurationDirectoryMode=
2aacef
-CoredumpFilter=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DisableControllers=
2aacef
-DynamicUser=
2aacef
-Environment=
2aacef
-EnvironmentFile=
2aacef
-ExecCondition=
2aacef
-ExecPaths=
2aacef
-ExecReload=
2aacef
-ExecStart=
2aacef
-ExecStartPost=
2aacef
-ExecStartPre=
2aacef
-ExecStop=
2aacef
-ExecStopPost=
2aacef
-ExitType=
2aacef
-ExtensionDirectories=
2aacef
-ExtensionImages=
2aacef
-FailureAction=
2aacef
-FileDescriptorStoreMax=
2aacef
-FinalKillSignal=
2aacef
-Group=
2aacef
-GuessMainPID=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOSchedulingClass=
2aacef
-IOSchedulingPriority=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPCNamespacePath=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-IgnoreSIGPIPE=
2aacef
-InaccessibleDirectories=
2aacef
-InaccessiblePaths=
2aacef
-KeyringMode=
2aacef
-KillMode=
2aacef
-KillSignal=
2aacef
-LimitAS=
2aacef
-LimitCORE=
2aacef
-LimitCPU=
2aacef
-LimitDATA=
2aacef
-LimitFSIZE=
2aacef
-LimitLOCKS=
2aacef
-LimitMEMLOCK=
2aacef
-LimitMSGQUEUE=
2aacef
-LimitNICE=
2aacef
-LimitNOFILE=
2aacef
-LimitNPROC=
2aacef
-LimitRSS=
2aacef
-LimitRTPRIO=
2aacef
-LimitRTTIME=
2aacef
-LimitSIGPENDING=
2aacef
-LimitSTACK=
2aacef
-LoadCredential=
2aacef
-LoadCredentialEncrypted=
2aacef
-LockPersonality=
2aacef
-LogExtraFields=
2aacef
-LogLevelMax=
2aacef
-LogNamespace=
2aacef
-LogRateLimitBurst=
2aacef
-LogRateLimitIntervalSec=
2aacef
-LogsDirectory=
2aacef
-LogsDirectoryMode=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-MemoryAccounting=
2aacef
-MemoryDenyWriteExecute=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-MountAPIVFS=
2aacef
-MountFlags=
2aacef
-MountImages=
2aacef
-NUMAMask=
2aacef
-NUMAPolicy=
2aacef
-NetClass=
2aacef
-NetworkNamespacePath=
2aacef
-Nice=
2aacef
-NoExecPaths=
2aacef
-NoNewPrivileges=
2aacef
-NonBlocking=
2aacef
-NotifyAccess=
2aacef
-OOMPolicy=
2aacef
-OOMScoreAdjust=
2aacef
-PAMName=
2aacef
-PIDFile=
2aacef
-PassEnvironment=
2aacef
-PermissionsStartOnly=
2aacef
-Personality=
2aacef
-PrivateDevices=
2aacef
-PrivateIPC=
2aacef
-PrivateMounts=
2aacef
-PrivateNetwork=
2aacef
-PrivateTmp=
2aacef
-PrivateUsers=
2aacef
-ProcSubset=
2aacef
-ProtectClock=
2aacef
-ProtectControlGroups=
2aacef
-ProtectHome=
2aacef
-ProtectHostname=
2aacef
-ProtectKernelLogs=
2aacef
-ProtectKernelModules=
2aacef
-ProtectKernelTunables=
2aacef
-ProtectProc=
2aacef
-ProtectSystem=
2aacef
-ReadOnlyDirectories=
2aacef
-ReadOnlyPaths=
2aacef
-ReadWriteDirectories=
2aacef
-ReadWritePaths=
2aacef
-RebootArgument=
2aacef
-RemainAfterExit=
2aacef
-RemoveIPC=
2aacef
-Restart=
2aacef
-RestartForceExitStatus=
2aacef
-RestartKillSignal=
2aacef
-RestartPreventExitStatus=
2aacef
-RestartSec=
2aacef
-RestrictAddressFamilies=
2aacef
-RestrictFileSystems=
2aacef
-RestrictNamespaces=
2aacef
-RestrictNetworkInterfaces=
2aacef
-RestrictRealtime=
2aacef
-RestrictSUIDSGID=
2aacef
-RootDirectory=
2aacef
-RootDirectoryStartOnly=
2aacef
-RootHash=
2aacef
-RootHashSignature=
2aacef
-RootImage=
2aacef
-RootImageOptions=
2aacef
-RootVerity=
2aacef
-RuntimeDirectory=
2aacef
-RuntimeDirectoryMode=
2aacef
-RuntimeDirectoryPreserve=
2aacef
-RuntimeMaxSec=
2aacef
-RuntimeRandomizedExtraSec=
2aacef
-SELinuxContext=
2aacef
-SecureBits=
2aacef
-SendSIGHUP=
2aacef
-SendSIGKILL=
2aacef
-SetCredential=
2aacef
-SetCredentialEncrypted=
2aacef
-Slice=
2aacef
-SmackProcessLabel=
2aacef
-Sockets=
2aacef
-StandardError=
2aacef
-StandardInput=
2aacef
-StandardInputData=
2aacef
-StandardInputText=
2aacef
-StandardOutput=
2aacef
-StartLimitAction=
2aacef
-StartLimitBurst=
2aacef
-StartLimitInterval=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-StateDirectory=
2aacef
-StateDirectoryMode=
2aacef
-SuccessExitStatus=
2aacef
-SupplementaryGroups=
2aacef
-SysVStartPriority=
2aacef
-SyslogFacility=
2aacef
-SyslogIdentifier=
2aacef
-SyslogLevel=
2aacef
-SyslogLevelPrefix=
2aacef
-SystemCallArchitectures=
2aacef
-SystemCallErrorNumber=
2aacef
-SystemCallFilter=
2aacef
-SystemCallLog=
2aacef
-TTYPath=
2aacef
-TTYReset=
2aacef
-TTYVHangup=
2aacef
-TTYVTDisallocate=
2aacef
-TTYRows=
2aacef
-TTYColumns=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
-TemporaryFileSystem=
2aacef
-TimeoutAbortSec=
2aacef
-TimeoutCleanSec=
2aacef
-TimeoutSec=
2aacef
-TimeoutStartFailureMode=
2aacef
-TimeoutStartSec=
2aacef
-TimeoutStopFailureMode=
2aacef
-TimeoutStopSec=
2aacef
-TimerSlackNSec=
2aacef
-Type=
2aacef
-UMask=
2aacef
-USBFunctionDescriptors=
2aacef
-USBFunctionStrings=
2aacef
-UnsetEnvironment=
2aacef
-User=
2aacef
-UtmpIdentifier=
2aacef
-UtmpMode=
2aacef
-WatchdogSec=
2aacef
-WatchdogSignal=
2aacef
-WorkingDirectory=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.slice b/test/fuzz/fuzz-unit-file/directives.slice
2aacef
deleted file mode 100644
2aacef
index ab77070c5e..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.slice
2aacef
+++ /dev/null
2aacef
@@ -1,58 +0,0 @@
2aacef
-slice
2aacef
-[Slice]
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-BPFProgram=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-CPUAccounting=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DisableControllers=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-MemoryAccounting=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-NetClass=
2aacef
-RestrictNetworkInterfaces=
2aacef
-Slice=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.socket b/test/fuzz/fuzz-unit-file/directives.socket
2aacef
deleted file mode 100644
2aacef
index 90358fc11a..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.socket
2aacef
+++ /dev/null
2aacef
@@ -1,266 +0,0 @@
2aacef
-socket
2aacef
-[Socket]
2aacef
-Accept=
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-AmbientCapabilities=
2aacef
-AppArmorProfile=
2aacef
-BPFProgram=
2aacef
-Backlog=
2aacef
-ExecSearchPath=
2aacef
-BindIPv6Only=
2aacef
-BindPaths=
2aacef
-BindReadOnlyPaths=
2aacef
-BindToDevice=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-Broadcast=
2aacef
-CPUAccounting=
2aacef
-CPUAffinity=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUSchedulingPolicy=
2aacef
-CPUSchedulingPriority=
2aacef
-CPUSchedulingResetOnFork=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-CacheDirectory=
2aacef
-CacheDirectoryMode=
2aacef
-Capabilities=
2aacef
-CapabilityBoundingSet=
2aacef
-ConfigurationDirectory=
2aacef
-ConfigurationDirectoryMode=
2aacef
-CoredumpFilter=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-DeferAcceptSec=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DirectoryMode=
2aacef
-DisableControllers=
2aacef
-DynamicUser=
2aacef
-Environment=
2aacef
-EnvironmentFile=
2aacef
-ExecPaths=
2aacef
-ExecStartPost=
2aacef
-ExecStartPre=
2aacef
-ExecStopPost=
2aacef
-ExecStopPre=
2aacef
-ExtensionDirectories=
2aacef
-ExtensionImages=
2aacef
-FileDescriptorName=
2aacef
-FinalKillSignal=
2aacef
-FlushPending=
2aacef
-FreeBind=
2aacef
-Group=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOSchedulingClass=
2aacef
-IOSchedulingPriority=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPCNamespacePath=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-IPTOS=
2aacef
-IPTTL=
2aacef
-IgnoreSIGPIPE=
2aacef
-InaccessibleDirectories=
2aacef
-InaccessiblePaths=
2aacef
-KeepAlive=
2aacef
-KeepAliveIntervalSec=
2aacef
-KeepAliveProbes=
2aacef
-KeepAliveTimeSec=
2aacef
-KeyringMode=
2aacef
-KillMode=
2aacef
-KillSignal=
2aacef
-LimitAS=
2aacef
-LimitCORE=
2aacef
-LimitCPU=
2aacef
-LimitDATA=
2aacef
-LimitFSIZE=
2aacef
-LimitLOCKS=
2aacef
-LimitMEMLOCK=
2aacef
-LimitMSGQUEUE=
2aacef
-LimitNICE=
2aacef
-LimitNOFILE=
2aacef
-LimitNPROC=
2aacef
-LimitRSS=
2aacef
-LimitRTPRIO=
2aacef
-LimitRTTIME=
2aacef
-LimitSIGPENDING=
2aacef
-LimitSTACK=
2aacef
-ListenDatagram=
2aacef
-ListenFIFO=
2aacef
-ListenMessageQueue=
2aacef
-ListenNetlink=
2aacef
-ListenSequentialPacket=
2aacef
-ListenSpecial=
2aacef
-ListenStream=
2aacef
-ListenUSBFunction=
2aacef
-LoadCredential=
2aacef
-LoadCredentialEncrypted=
2aacef
-LockPersonality=
2aacef
-LogExtraFields=
2aacef
-LogLevelMax=
2aacef
-LogNamespace=
2aacef
-LogRateLimitBurst=
2aacef
-LogRateLimitIntervalSec=
2aacef
-LogsDirectory=
2aacef
-LogsDirectoryMode=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-Mark=
2aacef
-MaxConnections=
2aacef
-MaxConnectionsPerSource=
2aacef
-MemoryAccounting=
2aacef
-MemoryDenyWriteExecute=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-MessageQueueMaxMessages=
2aacef
-MessageQueueMessageSize=
2aacef
-MountAPIVFS=
2aacef
-MountFlags=
2aacef
-MountImages=
2aacef
-NUMAMask=
2aacef
-NUMAPolicy=
2aacef
-NetClass=
2aacef
-NetworkNamespacePath=
2aacef
-Nice=
2aacef
-NoDelay=
2aacef
-NoExecPaths=
2aacef
-NoNewPrivileges=
2aacef
-OOMScoreAdjust=
2aacef
-PAMName=
2aacef
-PassCredentials=
2aacef
-PassEnvironment=
2aacef
-PassPacketInfo=
2aacef
-PassSecurity=
2aacef
-Personality=
2aacef
-PipeSize=
2aacef
-Priority=
2aacef
-PrivateDevices=
2aacef
-PrivateIPC=
2aacef
-PrivateMounts=
2aacef
-PrivateNetwork=
2aacef
-PrivateTmp=
2aacef
-PrivateUsers=
2aacef
-ProcSubset=
2aacef
-ProtectClock=
2aacef
-ProtectControlGroups=
2aacef
-ProtectHome=
2aacef
-ProtectHostname=
2aacef
-ProtectKernelLogs=
2aacef
-ProtectKernelModules=
2aacef
-ProtectKernelTunables=
2aacef
-ProtectProc=
2aacef
-ProtectSystem=
2aacef
-ReadOnlyDirectories=
2aacef
-ReadOnlyPaths=
2aacef
-ReadWriteDirectories=
2aacef
-ReadWritePaths=
2aacef
-ReceiveBuffer=
2aacef
-RemoveIPC=
2aacef
-RemoveOnStop=
2aacef
-RestartKillSignal=
2aacef
-RestrictAddressFamilies=
2aacef
-RestrictFileSystems=
2aacef
-RestrictNamespaces=
2aacef
-RestrictNetworkInterfaces=
2aacef
-RestrictRealtime=
2aacef
-RestrictSUIDSGID=
2aacef
-ReusePort=
2aacef
-RootDirectory=
2aacef
-RootHash=
2aacef
-RootHashSignature=
2aacef
-RootImage=
2aacef
-RootImageOptions=
2aacef
-RootVerity=
2aacef
-RuntimeDirectory=
2aacef
-RuntimeDirectoryMode=
2aacef
-RuntimeDirectoryPreserve=
2aacef
-SELinuxContext=
2aacef
-SELinuxContextFromNet=
2aacef
-SecureBits=
2aacef
-SendBuffer=
2aacef
-SendSIGHUP=
2aacef
-SendSIGKILL=
2aacef
-Service=
2aacef
-SetCredential=
2aacef
-SetCredentialEncrypted=
2aacef
-Slice=
2aacef
-SmackLabel=
2aacef
-SmackLabelIPIn=
2aacef
-SmackLabelIPOut=
2aacef
-SmackProcessLabel=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-SocketGroup=
2aacef
-SocketMode=
2aacef
-SocketProtocol=
2aacef
-SocketUser=
2aacef
-StandardError=
2aacef
-StandardInput=
2aacef
-StandardInputData=
2aacef
-StandardInputText=
2aacef
-StandardOutput=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-StateDirectory=
2aacef
-StateDirectoryMode=
2aacef
-SupplementaryGroups=
2aacef
-Symlinks=
2aacef
-SyslogFacility=
2aacef
-SyslogIdentifier=
2aacef
-SyslogLevel=
2aacef
-SyslogLevelPrefix=
2aacef
-SystemCallArchitectures=
2aacef
-SystemCallErrorNumber=
2aacef
-SystemCallFilter=
2aacef
-SystemCallLog=
2aacef
-TCPCongestion=
2aacef
-TTYPath=
2aacef
-TTYReset=
2aacef
-TTYVHangup=
2aacef
-TTYVTDisallocate=
2aacef
-TTYRows=
2aacef
-TTYColumns=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
-TemporaryFileSystem=
2aacef
-TimeoutCleanSec=
2aacef
-TimeoutSec=
2aacef
-TimerSlackNSec=
2aacef
-Timestamping=
2aacef
-Transparent=
2aacef
-TriggerLimitBurst=
2aacef
-TriggerLimitIntervalSec=
2aacef
-UMask=
2aacef
-UnsetEnvironment=
2aacef
-User=
2aacef
-UtmpIdentifier=
2aacef
-UtmpMode=
2aacef
-WatchdogSignal=
2aacef
-WorkingDirectory=
2aacef
-Writable=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.swap b/test/fuzz/fuzz-unit-file/directives.swap
2aacef
deleted file mode 100644
2aacef
index 5d057fa630..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.swap
2aacef
+++ /dev/null
2aacef
@@ -1,210 +0,0 @@
2aacef
-swap
2aacef
-[Swap]
2aacef
-AllowedCPUs=
2aacef
-AllowedMemoryNodes=
2aacef
-AmbientCapabilities=
2aacef
-AppArmorProfile=
2aacef
-BPFProgram=
2aacef
-ExecSearchPath=
2aacef
-BindPaths=
2aacef
-BindReadOnlyPaths=
2aacef
-BlockIOAccounting=
2aacef
-BlockIODeviceWeight=
2aacef
-BlockIOReadBandwidth=
2aacef
-BlockIOWeight=
2aacef
-BlockIOWriteBandwidth=
2aacef
-CPUAccounting=
2aacef
-CPUAffinity=
2aacef
-CPUQuota=
2aacef
-CPUQuotaPeriodSec=
2aacef
-CPUSchedulingPolicy=
2aacef
-CPUSchedulingPriority=
2aacef
-CPUSchedulingResetOnFork=
2aacef
-CPUShares=
2aacef
-CPUWeight=
2aacef
-CacheDirectory=
2aacef
-CacheDirectoryMode=
2aacef
-Capabilities=
2aacef
-CapabilityBoundingSet=
2aacef
-ConfigurationDirectory=
2aacef
-ConfigurationDirectoryMode=
2aacef
-CoredumpFilter=
2aacef
-DefaultMemoryLow=
2aacef
-DefaultMemoryMin=
2aacef
-Delegate=
2aacef
-DeviceAllow=
2aacef
-DevicePolicy=
2aacef
-DisableControllers=
2aacef
-DynamicUser=
2aacef
-Environment=
2aacef
-EnvironmentFile=
2aacef
-ExecPaths=
2aacef
-ExtensionDirectories=
2aacef
-ExtensionImages=
2aacef
-FinalKillSignal=
2aacef
-Group=
2aacef
-IOAccounting=
2aacef
-IODeviceLatencyTargetSec=
2aacef
-IODeviceWeight=
2aacef
-IOReadBandwidthMax=
2aacef
-IOReadIOPSMax=
2aacef
-IOSchedulingClass=
2aacef
-IOSchedulingPriority=
2aacef
-IOWeight=
2aacef
-IOWriteBandwidthMax=
2aacef
-IOWriteIOPSMax=
2aacef
-IPAccounting=
2aacef
-IPAddressAllow=
2aacef
-IPAddressDeny=
2aacef
-IPCNamespacePath=
2aacef
-IPEgressFilterPath=
2aacef
-IPIngressFilterPath=
2aacef
-IgnoreSIGPIPE=
2aacef
-InaccessibleDirectories=
2aacef
-InaccessiblePaths=
2aacef
-KeyringMode=
2aacef
-KillMode=
2aacef
-KillSignal=
2aacef
-LimitAS=
2aacef
-LimitCORE=
2aacef
-LimitCPU=
2aacef
-LimitDATA=
2aacef
-LimitFSIZE=
2aacef
-LimitLOCKS=
2aacef
-LimitMEMLOCK=
2aacef
-LimitMSGQUEUE=
2aacef
-LimitNICE=
2aacef
-LimitNOFILE=
2aacef
-LimitNPROC=
2aacef
-LimitRSS=
2aacef
-LimitRTPRIO=
2aacef
-LimitRTTIME=
2aacef
-LimitSIGPENDING=
2aacef
-LimitSTACK=
2aacef
-LoadCredential=
2aacef
-LoadCredentialEncrypted=
2aacef
-LockPersonality=
2aacef
-LogExtraFields=
2aacef
-LogLevelMax=
2aacef
-LogNamespace=
2aacef
-LogRateLimitBurst=
2aacef
-LogRateLimitIntervalSec=
2aacef
-LogsDirectory=
2aacef
-LogsDirectoryMode=
2aacef
-ManagedOOMMemoryPressure=
2aacef
-ManagedOOMMemoryPressureLimit=
2aacef
-ManagedOOMPreference=
2aacef
-ManagedOOMSwap=
2aacef
-MemoryAccounting=
2aacef
-MemoryDenyWriteExecute=
2aacef
-MemoryHigh=
2aacef
-MemoryLimit=
2aacef
-MemoryLow=
2aacef
-MemoryMax=
2aacef
-MemoryMin=
2aacef
-MemorySwapMax=
2aacef
-MountAPIVFS=
2aacef
-MountFlags=
2aacef
-MountImages=
2aacef
-NUMAMask=
2aacef
-NUMAPolicy=
2aacef
-NetClass=
2aacef
-NetworkNamespacePath=
2aacef
-Nice=
2aacef
-NoExecPaths=
2aacef
-NoNewPrivileges=
2aacef
-OOMScoreAdjust=
2aacef
-Options=
2aacef
-PAMName=
2aacef
-PassEnvironment=
2aacef
-Personality=
2aacef
-Priority=
2aacef
-PrivateDevices=
2aacef
-PrivateIPC=
2aacef
-PrivateMounts=
2aacef
-PrivateNetwork=
2aacef
-PrivateTmp=
2aacef
-PrivateUsers=
2aacef
-ProcSubset=
2aacef
-ProtectClock=
2aacef
-ProtectControlGroups=
2aacef
-ProtectHome=
2aacef
-ProtectHostname=
2aacef
-ProtectKernelLogs=
2aacef
-ProtectKernelModules=
2aacef
-ProtectKernelTunables=
2aacef
-ProtectProc=
2aacef
-ProtectSystem=
2aacef
-ReadOnlyDirectories=
2aacef
-ReadOnlyPaths=
2aacef
-ReadWriteDirectories=
2aacef
-ReadWritePaths=
2aacef
-RemoveIPC=
2aacef
-RestartKillSignal=
2aacef
-RestrictAddressFamilies=
2aacef
-RestrictFileSystems=
2aacef
-RestrictNamespaces=
2aacef
-RestrictNetworkInterfaces=
2aacef
-RestrictRealtime=
2aacef
-RestrictSUIDSGID=
2aacef
-RootDirectory=
2aacef
-RootHash=
2aacef
-RootHashSignature=
2aacef
-RootImage=
2aacef
-RootImageOptions=
2aacef
-RootVerity=
2aacef
-RuntimeDirectory=
2aacef
-RuntimeDirectoryMode=
2aacef
-RuntimeDirectoryPreserve=
2aacef
-SELinuxContext=
2aacef
-SecureBits=
2aacef
-SendSIGHUP=
2aacef
-SendSIGKILL=
2aacef
-SetCredential=
2aacef
-SetCredentialEncrypted=
2aacef
-Slice=
2aacef
-SmackProcessLabel=
2aacef
-SocketBindAllow=
2aacef
-SocketBindDeny=
2aacef
-StandardError=
2aacef
-StandardInput=
2aacef
-StandardInputData=
2aacef
-StandardInputText=
2aacef
-StandardOutput=
2aacef
-StartupAllowedCPUs=
2aacef
-StartupAllowedMemoryNodes=
2aacef
-StartupBlockIOWeight=
2aacef
-StartupCPUShares=
2aacef
-StartupCPUWeight=
2aacef
-StartupIOWeight=
2aacef
-StateDirectory=
2aacef
-StateDirectoryMode=
2aacef
-SupplementaryGroups=
2aacef
-SyslogFacility=
2aacef
-SyslogIdentifier=
2aacef
-SyslogLevel=
2aacef
-SyslogLevelPrefix=
2aacef
-SystemCallArchitectures=
2aacef
-SystemCallErrorNumber=
2aacef
-SystemCallFilter=
2aacef
-SystemCallLog=
2aacef
-TTYPath=
2aacef
-TTYReset=
2aacef
-TTYVHangup=
2aacef
-TTYVTDisallocate=
2aacef
-TTYRows=
2aacef
-TTYColumns=
2aacef
-TasksAccounting=
2aacef
-TasksMax=
2aacef
-TemporaryFileSystem=
2aacef
-TimeoutCleanSec=
2aacef
-TimeoutSec=
2aacef
-TimerSlackNSec=
2aacef
-UMask=
2aacef
-UnsetEnvironment=
2aacef
-User=
2aacef
-UtmpIdentifier=
2aacef
-UtmpMode=
2aacef
-WatchdogSignal=
2aacef
-What=
2aacef
-WorkingDirectory=
2aacef
diff --git a/test/fuzz/fuzz-unit-file/directives.timer b/test/fuzz/fuzz-unit-file/directives.timer
2aacef
deleted file mode 100644
2aacef
index 40075cf3e7..0000000000
2aacef
--- a/test/fuzz/fuzz-unit-file/directives.timer
2aacef
+++ /dev/null
2aacef
@@ -1,17 +0,0 @@
2aacef
-timer
2aacef
-[Timer]
2aacef
-AccuracySec=
2aacef
-FixedRandomDelay=
2aacef
-OnActiveSec=
2aacef
-OnBootSec=
2aacef
-OnCalendar=
2aacef
-OnClockChange=
2aacef
-OnStartupSec=
2aacef
-OnTimezoneChange=
2aacef
-OnUnitActiveSec=
2aacef
-OnUnitInactiveSec=
2aacef
-Persistent=
2aacef
-RandomizedDelaySec=
2aacef
-RemainAfterElapse=
2aacef
-Unit=
2aacef
-WakeSystem=
2aacef
diff --git a/test/fuzz/generate-directives.py b/test/fuzz/generate-directives.py
2aacef
new file mode 100644
2aacef
index 0000000000..d05108962f
2aacef
--- /dev/null
2aacef
+++ b/test/fuzz/generate-directives.py
2aacef
@@ -0,0 +1,26 @@
2aacef
+#!/usr/bin/env python3
2aacef
+# SPDX-License-Identifier: LGPL-2.1-or-later
2aacef
+
2aacef
+import sys
2aacef
+import collections, re
2aacef
+
2aacef
+d = collections.defaultdict(list)
2aacef
+for line in open(sys.argv[1]):
2aacef
+    m = re.match(r'^([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+),', line)
2aacef
+    if m:
2aacef
+        d[m.group(1)] += [m.group(2)]
2aacef
+
2aacef
+sec_rx = sys.argv[2] if len(sys.argv) > 2 else '.'
2aacef
+sec_rx = re.compile(sec_rx)
2aacef
+unit_type = sys.argv[3] if len(sys.argv) > 3 else None
2aacef
+
2aacef
+if unit_type:
2aacef
+    print(unit_type)
2aacef
+
2aacef
+for section, items in d.items():
2aacef
+    if not sec_rx.match(section):
2aacef
+        continue
2aacef
+    print(f'[{section}]')
2aacef
+    for item in items:
2aacef
+        print(f'{item}=')
2aacef
+    print()
2aacef
diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build
2aacef
index 82738fd1b7..f7f0a6111c 100644
2aacef
--- a/test/fuzz/meson.build
2aacef
+++ b/test/fuzz/meson.build
2aacef
@@ -1,5 +1,36 @@
2aacef
 # SPDX-License-Identifier: LGPL-2.1-or-later
2aacef
 
2aacef
+generate_directives_py = find_program('generate-directives.py')
2aacef
+fuzz_generated_in_dir = meson.current_build_dir()
2aacef
+
2aacef
+fuzz_generated_directives = []
2aacef
+
2aacef
+directives = [['fuzz-network-parser_directives',        'src/network/networkd-network-gperf.gperf'],
2aacef
+              ['fuzz-netdev-parser_directives.netdev',  'src/network/netdev/netdev-gperf.gperf'],
2aacef
+              ['fuzz-link-parser_directives.link',      'src/udev/net/link-config-gperf.gperf'],
2aacef
+             ]
2aacef
+
2aacef
+foreach tuple : directives
2aacef
+        fuzz_generated_directives += custom_target(
2aacef
+                tuple[0],
2aacef
+                output: tuple[0],
2aacef
+                command: [generate_directives_py, files(project_source_root / tuple[1])],
2aacef
+                capture: true)
2aacef
+endforeach
2aacef
+
2aacef
+foreach section : ['Automount', 'Mount', 'Path', 'Scope', 'Service', 'Slice', 'Socket', 'Swap', 'Timer']
2aacef
+        unit_type = section.to_lower()
2aacef
+        sec_rx = section == 'Service' ? '(Service|Unit|Install)' : section
2aacef
+        fuzz_generated_directives += custom_target(
2aacef
+                'fuzz-unit-file_directives.@0@'.format(unit_type),
2aacef
+                output: 'fuzz-unit-file_directives.@0@'.format(unit_type),
2aacef
+                command: [generate_directives_py, load_fragment_gperf_gperf, sec_rx, unit_type],
2aacef
+                capture: true)
2aacef
+endforeach
2aacef
+
2aacef
+
2aacef
+############################################################
2aacef
+
2aacef
 sanitize_address_undefined = custom_target(
2aacef
         'sanitize-address-undefined-fuzzers',
2aacef
         output : 'sanitize-address-undefined-fuzzers',
2aacef
@@ -28,7 +59,22 @@ else
2aacef
         out = run_command(sh, '-c', 'cd "@0@"; echo @1@/*/*'.format(project_source_root, fuzz_testsdir), check: true)
2aacef
 endif
2aacef
 
2aacef
-fuzz_regression_tests = {}
2aacef
+# Fuzz inputs that we generate (see above fuzz_generated_directives)
2aacef
+fuzz_regression_tests = {
2aacef
+        'fuzz-link-parser':    [['', 'directives.link']],
2aacef
+        'fuzz-netdev-parser':  [['', 'directives.netdev']],
2aacef
+        'fuzz-network-parser': [['', 'directives']],
2aacef
+        'fuzz-unit-file':      [['', 'directives.automount'],
2aacef
+                                ['', 'directives.mount'],
2aacef
+                                ['', 'directives.path'],
2aacef
+                                ['', 'directives.scope'],
2aacef
+                                ['', 'directives.service'],
2aacef
+                                ['', 'directives.slice'],
2aacef
+                                ['', 'directives.socket'],
2aacef
+                                ['', 'directives.swap'],
2aacef
+                                ['', 'directives.timer']]}
2aacef
+
2aacef
+# Add crafted fuzz inputs we have in the repo
2aacef
 foreach p : out.stdout().split()
2aacef
         # Remove the last entry which is ''.
2aacef
         #
2aacef
@@ -44,6 +90,6 @@ foreach p : out.stdout().split()
2aacef
         endif
2aacef
         # Meson parser provision for: fuzz_regression_tests[fuzzer] += [fuzz_in]
2aacef
         l = fuzz_regression_tests[fuzzer]
2aacef
-        l += [fuzz_in]
2aacef
+        l += [[fuzz_testsdir, fuzz_in]]
2aacef
         fuzz_regression_tests += {fuzzer: l}
2aacef
 endforeach
2aacef
diff --git a/tools/check-directives.sh b/tools/check-directives.sh
2aacef
deleted file mode 100755
2aacef
index 767833285b..0000000000
2aacef
--- a/tools/check-directives.sh
2aacef
+++ /dev/null
2aacef
@@ -1,72 +0,0 @@
2aacef
-#!/usr/bin/env bash
2aacef
-# SPDX-License-Identifier: LGPL-2.1-or-later
2aacef
-set -eu
2aacef
-set -o pipefail
2aacef
-
2aacef
-SOURCE_ROOT="${1:?}"
2aacef
-BUILD_ROOT="${2:?}"
2aacef
-
2aacef
-command -v gawk &>/dev/null || exit 77
2aacef
-
2aacef
-function generate_directives() {
2aacef
-    gawk -v sec_rx="${2:-""}" -v unit_type="${3:-""}" '
2aacef
-    match($0, /^([^ \t\.]+)\.([^ \t\.,]+)/, m) {
2aacef
-        # res[section][directive] = 1
2aacef
-        res[m[1]][m[2]] = 1;
2aacef
-    }
2aacef
-    END {
2aacef
-        if (unit_type)
2aacef
-            print unit_type
2aacef
-
2aacef
-        for (section in res) {
2aacef
-            if (sec_rx && section !~ sec_rx)
2aacef
-                continue
2aacef
-
2aacef
-            print "[" section "]";
2aacef
-            for (directive in res[section]) {
2aacef
-                print directive "=";
2aacef
-            }
2aacef
-        }
2aacef
-    }
2aacef
-    ' "$1"
2aacef
-}
2aacef
-
2aacef
-ret=0
2aacef
-if ! diff \
2aacef
-     <(generate_directives "$SOURCE_ROOT"/src/network/networkd-network-gperf.gperf | sort) \
2aacef
-     <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-network-parser/directives); then
2aacef
-    echo "Looks like test/fuzz/fuzz-network-parser/directives hasn't been updated"
2aacef
-    ret=1
2aacef
-fi
2aacef
-
2aacef
-if ! diff \
2aacef
-     <(generate_directives "$SOURCE_ROOT"/src/network/netdev/netdev-gperf.gperf | sort) \
2aacef
-     <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-netdev-parser/directives.netdev); then
2aacef
-    echo "Looks like test/fuzz/fuzz-netdev-parser/directives.netdev hasn't been updated"
2aacef
-    ret=1
2aacef
-fi
2aacef
-
2aacef
-if ! diff \
2aacef
-     <(generate_directives "$SOURCE_ROOT"/src/udev/net/link-config-gperf.gperf | sort) \
2aacef
-     <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-link-parser/directives.link) ; then
2aacef
-    echo "Looks like test/fuzz/fuzz-link-parser/directives.link hasn't been updated"
2aacef
-    ret=1
2aacef
-fi
2aacef
-
2aacef
-for section in Automount Mount Path Scope Slice Socket Swap Timer; do
2aacef
-    if ! diff \
2aacef
-         <(generate_directives "$BUILD_ROOT"/src/core/load-fragment-gperf.gperf "$section" "${section,,}" | sort) \
2aacef
-         <(sort "$SOURCE_ROOT/test/fuzz/fuzz-unit-file/directives.${section,,}") ; then
2aacef
-        echo "Looks like test/fuzz/fuzz-unit-file/directives.${section,,} hasn't been updated"
2aacef
-        ret=1
2aacef
-    fi
2aacef
-done
2aacef
-
2aacef
-if ! diff \
2aacef
-     <(generate_directives "$BUILD_ROOT"/src/core/load-fragment-gperf.gperf "(Service|Unit|Install)" "service" | sort) \
2aacef
-     <(sort "$SOURCE_ROOT/test/fuzz/fuzz-unit-file/directives.service") ; then
2aacef
-    echo "Looks like test/fuzz/fuzz-unit-file/directives.service hasn't been updated"
2aacef
-    ret=1
2aacef
-fi
2aacef
-
2aacef
-exit $ret