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:
# create access point and share network connection on wlan0
- name: MyHomeWiFi
id: MyHomeWiFi
uuid: 222b4580-3e08-4a2c-ae5e-316bb45d44f0
type: 802-11-wireless
interface: wlan0
ssid: MyHomeWiFi

View File

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

View File

@@ -248,21 +248,6 @@ func AddConnectionWithConfig(conn *dbus.Conn, cfg *ConnectionConfig) (dbus.Objec
"/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{
"connection": {
"type": dbus.MakeVariant(cfg.Type),
@@ -270,11 +255,6 @@ func AddConnectionWithConfig(conn *dbus.Conn, cfg *ConnectionConfig) (dbus.Objec
"id": dbus.MakeVariant(cfg.ID),
"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": {
"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
err := settingsObj.
Call("org.freedesktop.NetworkManager.Settings.AddConnection", 0, settingsMap).