Skip to content

Commit 25d6726

Browse files
committed
Add loopback device type from NetworkManager 1.42
There is actually no methods or properties that it defines.
1 parent 9b4904f commit 25d6726

File tree

9 files changed

+92
-0
lines changed

9 files changed

+92
-0
lines changed

docs/device_interfaces.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,6 @@ Contains interfaces for most types of devices.
7777

7878
.. autoclass:: sdbus_async.networkmanager.NetworkManagerPPPInterfaceAsync
7979
:members:
80+
81+
.. autoclass:: sdbus_async.networkmanager.NetworkManagerLoopbackInterfaceAsync
82+
:members:

docs/objects.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ Device objects
9797
.. autoclass:: sdbus_async.networkmanager.NetworkDevicePPP
9898
:members:
9999

100+
.. autoclass:: sdbus_async.networkmanager.NetworkDeviceLoopback
101+
:members:
102+
100103
Connection configuration objects
101104
--------------------------------
102105

sdbus_async/networkmanager/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
NetworkManagerDeviceWiredInterfaceAsync,
137137
NetworkManagerDeviceWireGuardInterfaceAsync,
138138
NetworkManagerDeviceWirelessInterfaceAsync,
139+
NetworkManagerLoopbackInterfaceAsync,
139140
NetworkManagerPPPInterfaceAsync,
140141
)
141142
from .interfaces_other import (
@@ -171,6 +172,7 @@
171172
NetworkDeviceBridge,
172173
NetworkDeviceGeneric,
173174
NetworkDeviceIpTunnel,
175+
NetworkDeviceLoopback,
174176
NetworkDeviceMacsec,
175177
NetworkDeviceMacvlan,
176178
NetworkDeviceModem,
@@ -330,6 +332,7 @@
330332
'NetworkManagerDeviceWiredInterfaceAsync',
331333
'NetworkManagerDeviceWireGuardInterfaceAsync',
332334
'NetworkManagerDeviceWirelessInterfaceAsync',
335+
'NetworkManagerLoopbackInterfaceAsync',
333336
'NetworkManagerPPPInterfaceAsync',
334337
# .interfaces_other
335338
'NetworkManagerAccessPointInterfaceAsync',
@@ -363,6 +366,7 @@
363366
'NetworkDeviceBridge',
364367
'NetworkDeviceGeneric',
365368
'NetworkDeviceIpTunnel',
369+
'NetworkDeviceLoopback',
366370
'NetworkDeviceMacsec',
367371
'NetworkDeviceMacvlan',
368372
'NetworkDeviceModem',

sdbus_async/networkmanager/enums.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ class ConnectionType(str, Enum):
529529
* WIREGUARD
530530
* WIFI
531531
* WPAN
532+
* LOOPBACK
532533
"""
533534
ADSL = "adsl"
534535
BLUETOOTH = "bluetooth"
@@ -559,6 +560,7 @@ class ConnectionType(str, Enum):
559560
WIREGUARD = "wireguard"
560561
WIFI = "802-11-wireless"
561562
WPAN = "wpan"
563+
LOOPBACK = "loopback"
562564

563565

564566
class DeviceType(IntEnum):
@@ -596,6 +598,7 @@ class DeviceType(IntEnum):
596598
* WIREGUARD
597599
* WIFI_P2P
598600
* VRF
601+
* LOOPBACK
599602
"""
600603
UNKNOWN = 0
601604
ETHERNET = 1
@@ -629,6 +632,7 @@ class DeviceType(IntEnum):
629632
WIREGUARD = 29
630633
WIFI_P2P = 30
631634
VRF = 31
635+
LOOPBACK = 32
632636

633637

634638
class DeviceMetered(IntEnum):

sdbus_async/networkmanager/interfaces_devices.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,3 +1112,10 @@ async def set_ifindex(
11121112
Not documented upstream.
11131113
"""
11141114
raise NotImplementedError
1115+
1116+
1117+
class NetworkManagerLoopbackInterfaceAsync(
1118+
DbusInterfaceCommonAsync,
1119+
interface_name='org.freedesktop.NetworkManager.Device.Loopback',
1120+
):
1121+
...

sdbus_async/networkmanager/objects.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
NetworkManagerDeviceWiredInterfaceAsync,
5050
NetworkManagerDeviceWireGuardInterfaceAsync,
5151
NetworkManagerDeviceWirelessInterfaceAsync,
52+
NetworkManagerLoopbackInterfaceAsync,
5253
NetworkManagerPPPInterfaceAsync,
5354
)
5455
from .interfaces_other import (
@@ -862,6 +863,36 @@ def __init__(self, device_path: str, bus: Optional[SdBus] = None) -> None:
862863
bus)
863864

864865

866+
class NetworkDeviceLoopback(
867+
NetworkManagerDeviceInterfaceAsync,
868+
NetworkManagerDeviceStatisticsInterfaceAsync,
869+
NetworkManagerLoopbackInterfaceAsync,
870+
):
871+
"""Loopback device
872+
873+
Implements :py:class:`NetworkManagerDeviceInterfaceAsync`, \
874+
:py:class:`NetworkManagerDeviceStatisticsInterfaceAsync` and \
875+
:py:class:`NetworkManagerLoopbackInterfaceAsync`
876+
"""
877+
878+
def __init__(self, device_path: str, bus: Optional[SdBus] = None) -> None:
879+
"""
880+
881+
:param device_path: D-Bus path to device object. \
882+
Obtained from \
883+
:py:meth:`NetworkManagerInterface.get_devices` or \
884+
:py:meth:`NetworkManagerInterface.get_device_by_ip_iface`.
885+
886+
:param bus: You probably want to set default bus to system bus \
887+
or pass system bus directly.
888+
"""
889+
super().__init__()
890+
self._connect(
891+
NETWORK_MANAGER_SERVICE_NAME,
892+
device_path,
893+
bus)
894+
895+
865896
class ActiveConnection(NetworkManagerConnectionActiveInterfaceAsync):
866897
"""Active connection object
867898

sdbus_block/networkmanager/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
NetworkManagerDeviceWiredInterface,
137137
NetworkManagerDeviceWireGuardInterface,
138138
NetworkManagerDeviceWirelessInterface,
139+
NetworkManagerLoopbackInterface,
139140
NetworkManagerPPPInterface,
140141
)
141142
from .interfaces_other import (
@@ -171,6 +172,7 @@
171172
NetworkDeviceBridge,
172173
NetworkDeviceGeneric,
173174
NetworkDeviceIpTunnel,
175+
NetworkDeviceLoopback,
174176
NetworkDeviceMacsec,
175177
NetworkDeviceMacvlan,
176178
NetworkDeviceModem,
@@ -330,6 +332,7 @@
330332
'NetworkManagerDeviceWiredInterface',
331333
'NetworkManagerDeviceWireGuardInterface',
332334
'NetworkManagerDeviceWirelessInterface',
335+
'NetworkManagerLoopbackInterface',
333336
'NetworkManagerPPPInterface',
334337
# .interfaces_other
335338
'NetworkManagerAccessPointInterface',
@@ -363,6 +366,7 @@
363366
'NetworkDeviceBridge',
364367
'NetworkDeviceGeneric',
365368
'NetworkDeviceIpTunnel',
369+
'NetworkDeviceLoopback',
366370
'NetworkDeviceMacsec',
367371
'NetworkDeviceMacvlan',
368372
'NetworkDeviceModem',

sdbus_block/networkmanager/interfaces_devices.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,3 +1077,10 @@ def set_ifindex(
10771077
Not documented upstream.
10781078
"""
10791079
raise NotImplementedError
1080+
1081+
1082+
class NetworkManagerLoopbackInterface(
1083+
DbusInterfaceCommon,
1084+
interface_name='org.freedesktop.NetworkManager.Device.Loopback',
1085+
):
1086+
...

sdbus_block/networkmanager/objects.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
NetworkManagerDeviceWiredInterface,
5050
NetworkManagerDeviceWireGuardInterface,
5151
NetworkManagerDeviceWirelessInterface,
52+
NetworkManagerLoopbackInterface,
5253
NetworkManagerPPPInterface,
5354
)
5455
from .interfaces_other import (
@@ -829,6 +830,34 @@ def __init__(self, device_path: str, bus: Optional[SdBus] = None) -> None:
829830
bus)
830831

831832

833+
class NetworkDeviceLoopback(
834+
NetworkManagerDeviceInterface,
835+
NetworkManagerDeviceStatisticsInterface,
836+
NetworkManagerLoopbackInterface):
837+
"""Loopback device
838+
839+
Implements :py:class:`NetworkManagerDeviceInterface`, \
840+
:py:class:`NetworkManagerDeviceStatisticsInterface` and \
841+
:py:class:`NetworkManagerLoopbackInterface`
842+
"""
843+
844+
def __init__(self, device_path: str, bus: Optional[SdBus] = None) -> None:
845+
"""
846+
847+
:param device_path: D-Bus path to device object. \
848+
Obtained from \
849+
:py:meth:`NetworkManagerInterface.get_devices` or \
850+
:py:meth:`NetworkManagerInterface.get_device_by_ip_iface`.
851+
852+
:param bus: You probably want to set default bus to system bus \
853+
or pass system bus directly.
854+
"""
855+
super().__init__(
856+
NETWORK_MANAGER_SERVICE_NAME,
857+
device_path,
858+
bus)
859+
860+
832861
class ActiveConnection(NetworkManagerConnectionActiveInterface):
833862
"""Active connection object
834863

0 commit comments

Comments
 (0)