feat: map wireless settings separately, add missing properties

This commit is contained in:
2025-05-18 19:11:57 +02:00
parent d950b3627d
commit e1fdf51ed0
3 changed files with 31 additions and 20 deletions

View File

@@ -8,6 +8,8 @@ network:
connections: connections:
# create access point and share network connection on wlan0 # create access point and share network connection on wlan0
- name: MyHomeWiFi - name: MyHomeWiFi
id: MyHomeWiFi
uuid: 222b4580-3e08-4a2c-ae5e-316bb45d44f0
type: 802-11-wireless type: 802-11-wireless
interface: wlan0 interface: wlan0
ssid: MyHomeWiFi ssid: MyHomeWiFi

View File

@@ -8,6 +8,8 @@ network:
connections: connections:
# connect to MyHomeWifi on wlan0 # connect to MyHomeWifi on wlan0
- name: MyHomeWiFi - name: MyHomeWiFi
id: MyHomeWiFi
uuid: f09c9d1a-af3f-4726-82dd-0dd9d3358a4e
type: 802-11-wireless type: 802-11-wireless
interface: wlan0 interface: wlan0
ssid: MyHomeWiFi ssid: MyHomeWiFi
@@ -20,6 +22,8 @@ network:
# TODO # TODO
# provide DHCP on eth0 # provide DHCP on eth0
#- name: MyThingsNetwork #- name: MyThingsNetwork
# id: MyThingsNetwork
# uuid: 12df0b71-73ca-4ca2-a5f6-be20983a311d
# type: 802-3-ethernet # type: 802-3-ethernet
# interface: eth0 # interface: eth0
# method: shared # method: shared

View File

@@ -248,21 +248,6 @@ func AddConnectionWithConfig(conn *dbus.Conn, cfg *ConnectionConfig) (dbus.Objec
"/org/freedesktop/NetworkManager/Settings", "/org/freedesktop/NetworkManager/Settings",
) )
var wirelessMap map[string]dbus.Variant
if cfg.Mode == "ap" {
wirelessMap = map[string]dbus.Variant{
"ssid": dbus.MakeVariant([]byte(cfg.SSID)),
"mode": dbus.MakeVariant(cfg.Mode),
"band": dbus.MakeVariant(cfg.Band),
"channel": dbus.MakeVariant(cfg.Channel),
}
} else {
wirelessMap = map[string]dbus.Variant{
"ssid": dbus.MakeVariant([]byte(cfg.SSID)),
"mode": dbus.MakeVariant(cfg.Mode),
}
}
settingsMap := map[string]map[string]dbus.Variant{ settingsMap := map[string]map[string]dbus.Variant{
"connection": { "connection": {
"type": dbus.MakeVariant(cfg.Type), "type": dbus.MakeVariant(cfg.Type),
@@ -270,11 +255,6 @@ func AddConnectionWithConfig(conn *dbus.Conn, cfg *ConnectionConfig) (dbus.Objec
"id": dbus.MakeVariant(cfg.ID), "id": dbus.MakeVariant(cfg.ID),
"autoconnect": dbus.MakeVariant(cfg.AutoConnect), "autoconnect": dbus.MakeVariant(cfg.AutoConnect),
}, },
"802-11-wireless": wirelessMap,
"802-11-wireless-security": {
"key-mgmt": dbus.MakeVariant(cfg.KeyMgmt),
"psk": dbus.MakeVariant(cfg.PSK),
},
"ipv4": { "ipv4": {
"method": dbus.MakeVariant(cfg.IPv4Method), "method": dbus.MakeVariant(cfg.IPv4Method),
}, },
@@ -283,6 +263,31 @@ func AddConnectionWithConfig(conn *dbus.Conn, cfg *ConnectionConfig) (dbus.Objec
}, },
} }
// configure wireless
if cfg.Type == "802-11-wireless" {
var wirelessMap map[string]dbus.Variant
if cfg.Mode == "ap" {
// Access Point mode
wirelessMap = map[string]dbus.Variant{
"ssid": dbus.MakeVariant([]byte(cfg.SSID)),
"mode": dbus.MakeVariant(cfg.Mode),
"band": dbus.MakeVariant(cfg.Band),
"channel": dbus.MakeVariant(cfg.Channel),
}
} else {
// Station / Infrastructure mode
wirelessMap = map[string]dbus.Variant{
"ssid": dbus.MakeVariant([]byte(cfg.SSID)),
"mode": dbus.MakeVariant(cfg.Mode),
}
}
settingsMap["802-11-wireless"] = wirelessMap
settingsMap["802-11-wireless-security"] = map[string]dbus.Variant{
"key-mgmt": dbus.MakeVariant(cfg.KeyMgmt),
"psk": dbus.MakeVariant(cfg.PSK),
}
}
var connPath dbus.ObjectPath var connPath dbus.ObjectPath
err := settingsObj. err := settingsObj.
Call("org.freedesktop.NetworkManager.Settings.AddConnection", 0, settingsMap). Call("org.freedesktop.NetworkManager.Settings.AddConnection", 0, settingsMap).