Phase 1: register iwd Agent for passphrase prompts

Export net.connman.iwd.Agent at /net/eiwd/agent and register it via
AgentManager. RequestPassphrase replies are deferred so the UI can
prompt asynchronously; the manager exposes
iwd_manager_set_passphrase_handler for the UI layer to plug in.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
nemunaire 2026-04-08 22:42:38 +07:00
commit 6ea19e2252
6 changed files with 211 additions and 3 deletions

View file

@ -1,4 +1,5 @@
#include "iwd_dbus.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -40,6 +41,7 @@ _emit_managed(Iwd_Dbus *d, Eldbus_Message_Iter *objects)
Eldbus_Message_Iter *props;
if (!eldbus_message_iter_arguments_get(iface_entry, "sa{sv}", &iface, &props))
continue;
fprintf(stderr, "e_iwd: %s :: %s\n", path, iface);
if (d->cbs.iface_added)
d->cbs.iface_added(d->data, path, iface, props);
}
@ -53,12 +55,16 @@ _on_get_managed(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending E
const char *errname, *errmsg;
if (eldbus_message_error_get(msg, &errname, &errmsg))
{
/* iwd not present yet — name watcher will retry. */
fprintf(stderr, "e_iwd: GetManagedObjects error: %s: %s\n", errname, errmsg);
return;
}
Eldbus_Message_Iter *objects;
if (!eldbus_message_arguments_get(msg, "a{oa{sa{sv}}}", &objects))
return;
{
fprintf(stderr, "e_iwd: GetManagedObjects: failed to parse top-level dict\n");
return;
}
fprintf(stderr, "e_iwd: GetManagedObjects reply received, walking objects\n");
_emit_managed(d, objects);
}