Я хочу использовать hostapd (на виртуальном сетевом устройстве) совместно с приложением, которое управляет сетью (eth0, wlan0) с помощью connman.
Проблема в том, что мне нужно сохранить определенную последовательность операций.Запуск модулей systemd вручную работает, но мне нужно делать это программно из моего приложения.
Что я делаю:
connmanctl enable wifi
systemctl start ap
connmanctl disable wifi
systemctl start hostapd
connmanctl enable wifi
Что я пробовал: я добавил эти зависимости в ap.serviceпотому что я должен создать виртуальный интерфейс после того, как wlan0 активен (я не нашел хорошего определения, что означает "UP"):
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device
Wants=network-online.target
After=network-online.target
Служба ap.service:
[Unit]
Requires=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iw dev wlan0 interface add uap0 type __ap
ExecStart=/sbin/ip link set uap0 up
ExecStart=/sbin/ip addr add 192.168.4.1/24 broadcast 192.168.4.255 dev uap0
[Install]
WantedBy=multi-user.target
Одним из решений может быть запуск системных модулей с «system (....)» из приложения, но я не хочу, чтобы мое приложение работало с правами root.
Спасибо за вашу помощь, Майкл