web-dev-qa-db-fra.com

NetworkManager via D-Bus: Ajouter un pont réseau

J'essaie d'utiliser l'interface Interface D-Bus de NetworkManager pour ajouter et activer une connexion de pont de réseau. Fondamentalement, j'essaie d'imiter cette commande:

nmcli connection add type bridge ifname br0 stp no

Cette doublure crée et active une nouvelle connexion, mais elle crée également un nouveau périphérique virtuel br0.

L'API D-BUS Référence pour le /org/freedesktop/NetworkManager énumère les méthodes suivantes:

Les deux ont une signature similaire et nécessitent un périphérique comme entrée, donc un périphérique existant pouvant être récupéré via la méthode D-Bus getDevices . Cependant, un pont réseau nécessite un périphérique virtuel (ou un périphérique virtuel est créé pour le pont de réseau?). Naturellement, j'ai d'abord examiné la création d'un nouvel appareil, puis la transmettant à l'une des méthodes énumérées ci-dessus, mais le référence n'offre aucune méthode de création de nouveaux appareils.

Je pense que la Mise en œuvre NMCLI utilise l'interface D-BUS sous la hotte. Il doit donc être possible d'une manière ou d'une autre?

1
codepearlex

nmcli con add n'utilise pas API AddAndActivate. Il ne (elle-même) pas (lui-même) crée l'appareil. Ce qui se passe est seulement qu'il ajoute un nouveau profil de connexion avec AutoConnect Activé, que le NetworkManager sera automatiquement activé et crée ainsi le périphérique.

Vous devez comprendre ce qu'un profil est: C'est un tas de paramètres de configuration d'un périphérique réseau. Et ce profil peut être "activé", ce qui signifie d'utiliser les paramètres (et de créer le périphérique). Vous pouvez toujours activer manuellement un profil ou NetworkManager peut le faire automatiquement si les conditions sont correctes. L'API à "Créer" un périphérique active un profil. Dans le cas d'un périphérique logiciel (pont pont), NetworkManager le crée automatiquement lorsque vous activez le profil.

Addandactivate est appelé (dans certains cas) par nmcli device connect et nmcli device wifi connect. Il est différent en ce que cela fait deux étapes dans une seule et une chose supplémentaire: l'utilisateur peut passer un profil de connexion incomplet que NetworkManager essaie de remplir avant de l'ajouter. En tant que tel, c'est plus que AddConnection + Activer la connexion seule. Habituellement, ce n'est pas ce que vous voulez. Meilleur exemple consiste à spécifier uniquement le SSID dans un profil Wi-Fi et AddAndractivate remplit automatiquement les paramètres supplémentaires en fonction des résultats de numérisation Wi-Fi. Avec AddConnection API, le profil est entièrement déterminé par l'appelant et est effectué uniquement avec les paramètres par défaut, indépendamment d'un périphérique (ou point d'accès Wi-Fi).

L'argument de périphérique sur D-bus peut être facultatif. Au moins pour l'API d'activationConnection. Dans ce cas, NetworkManager trouvera automatiquement ou créera un périphérique approprié. En outre, l'argument de profil de connexion peut être facultatif (si vous fournissez uniquement le périphérique).

Oui, la plupart des outils clients de NetworkManager utiliseront la même API D-BUS sous-jacente, y compris NMCLI. Cela vous permet d'écrire votre propre application qui fait quelles autres applications s'intégrent et intégrent ainsi à ces outils. Il y a aussi libnm, une bibliothèque basée sur les glib qui enveloppe D-Bus et plusieurs applications client utilisent cela au lieu de parler du bus D-bus directement.

Voir aussi les exemples à https://gitlab.freedesktop.org/networkmanager/networkmanager/tree/ce59e749fbc99152d379fb22563d6fd3295C7085A/Examples

NetworkManager API consiste à créer des profils (connexions) et de les activer.

1
thaller