diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index 299c56df0a..c5c2e48ac7 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -3027,6 +3027,36 @@ IPv6Token=prefixstable:2002:da8:1::
+
+ Loopback=
+
+ Takes a boolean. When yes, loopback mode is enabled. When the
+ loopback mode is enabled, the interface treats messages transmitted by itself as received
+ messages. The loopback mode is important to debug CAN networks. When unset, the kernel's
+ default will be used.
+
+
+
+ OneShot=
+
+ Takes a boolean. When yes, one-shot mode is enabled. When unset,
+ the kernel's default will be used.
+
+
+
+ PresumeAck=
+
+ Takes a boolean. When yes, the interface will ignore missing CAN
+ ACKs. When unset, the kernel's default will be used.
+
+
+
+ ClassicDataLengthCode=
+
+ Takes a boolean. When yes, the interface will handle the 4bit data
+ length code (DLC). When unset, the kernel's default will be used.
+
+
diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf
index 9ba910f903..489d048056 100644
--- a/src/network/networkd-network-gperf.gperf
+++ b/src/network/networkd-network-gperf.gperf
@@ -349,11 +349,15 @@ CAN.SamplePoint, config_parse_permille,
CAN.DataBitRate, config_parse_can_bitrate, 0, offsetof(Network, can_data_bitrate)
CAN.DataSamplePoint, config_parse_permille, 0, offsetof(Network, can_data_sample_point)
CAN.RestartSec, config_parse_can_restart_usec, 0, offsetof(Network, can_restart_us)
+CAN.Loopback, config_parse_can_control_mode, CAN_CTRLMODE_LOOPBACK, 0
CAN.ListenOnly, config_parse_can_control_mode, CAN_CTRLMODE_LISTENONLY, 0
CAN.TripleSampling, config_parse_can_control_mode, CAN_CTRLMODE_3_SAMPLES, 0
+CAN.OneShot, config_parse_can_control_mode, CAN_CTRLMODE_ONE_SHOT, 0
CAN.BusErrorReporting, config_parse_can_control_mode, CAN_CTRLMODE_BERR_REPORTING, 0
CAN.FDMode, config_parse_can_control_mode, CAN_CTRLMODE_FD, 0
+CAN.PresumeACK, config_parse_can_control_mode, CAN_CTRLMODE_PRESUME_ACK, 0
CAN.FDNonISO, config_parse_can_control_mode, CAN_CTRLMODE_FD_NON_ISO, 0
+CAN.ClassicDataLengthCode, config_parse_can_control_mode, CAN_CTRLMODE_CC_LEN8_DLC, 0
CAN.Termination, config_parse_tristate, 0, offsetof(Network, can_termination)
QDisc.Parent, config_parse_qdisc_parent, _QDISC_KIND_INVALID, 0
QDisc.Handle, config_parse_qdisc_handle, _QDISC_KIND_INVALID, 0
diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network
index 2dca1cda3a..2f96bb8db9 100644
--- a/test/fuzz/fuzz-network-parser/directives.network
+++ b/test/fuzz/fuzz-network-parser/directives.network
@@ -266,6 +266,10 @@ TripleSampling=
BusErrorReporting=
Termination=
ListenOnly=
+Loopback=
+OneShot=
+PresumeACK=
+ClassicDataLengthCode=
[Address]
DuplicateAddressDetection=
AutoJoin=