dbus: Add generic properties getter and setter

This commit is contained in:
Witold Sowa 2010-01-01 11:56:56 +02:00 committed by Jouni Malinen
parent 1fa5995b51
commit fcea0b7d1d
3 changed files with 367 additions and 661 deletions

File diff suppressed because it is too large Load diff

View file

@ -25,6 +25,18 @@ struct bss_handler_args {
unsigned int id; unsigned int id;
}; };
DBusMessage * wpas_dbus_simple_property_getter(DBusMessage *message,
const int type,
const void *val);
DBusMessage * wpas_dbus_simple_property_setter(DBusMessage *message,
const int type, void *val);
DBusMessage * wpas_dbus_simple_array_property_getter(DBusMessage *message,
const int type,
const void *array,
size_t array_len);
DBusMessage * wpas_dbus_handler_create_interface(DBusMessage *message, DBusMessage * wpas_dbus_handler_create_interface(DBusMessage *message,
struct wpa_global *global); struct wpa_global *global);

View file

@ -254,39 +254,9 @@ out:
DBusMessage * wpas_dbus_getter_process_credentials( DBusMessage * wpas_dbus_getter_process_credentials(
DBusMessage *message, struct wpa_supplicant *wpa_s) DBusMessage *message, struct wpa_supplicant *wpa_s)
{ {
DBusMessage *reply = NULL;
DBusMessageIter iter, variant_iter;
dbus_bool_t process = (wpa_s->conf->wps_cred_processing != 1); dbus_bool_t process = (wpa_s->conf->wps_cred_processing != 1);
return wpas_dbus_simple_property_getter(message, DBUS_TYPE_BOOLEAN,
if (message == NULL) &process);
reply = dbus_message_new(DBUS_MESSAGE_TYPE_SIGNAL);
else
reply = dbus_message_new_method_return(message);
if (reply != NULL) {
dbus_message_iter_init_append(reply, &iter);
if (!dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
"b", &variant_iter) ||
!dbus_message_iter_append_basic(&variant_iter,
DBUS_TYPE_BOOLEAN,
&process) ||
!dbus_message_iter_close_container(&iter, &variant_iter)) {
perror("wpas_dbus_getter_process_credentials[dbus]: "
"out of memory to put value into message.");
dbus_message_unref(reply);
reply = dbus_message_new_error(message,
DBUS_ERROR_NO_MEMORY,
NULL);
}
} else {
perror("wpas_dbus_getter_process_credentials[dbus]: out of "
"memory to create reply message.");
reply = dbus_message_new_error(message, DBUS_ERROR_NO_MEMORY,
NULL);
}
return reply;
} }
@ -303,29 +273,12 @@ DBusMessage * wpas_dbus_setter_process_credentials(
DBusMessage *message, struct wpa_supplicant *wpa_s) DBusMessage *message, struct wpa_supplicant *wpa_s)
{ {
DBusMessage *reply = NULL; DBusMessage *reply = NULL;
DBusMessageIter iter, variant_iter;
dbus_bool_t process_credentials, old_pc; dbus_bool_t process_credentials, old_pc;
if (!dbus_message_iter_init(message, &iter)) { reply = wpas_dbus_simple_property_setter(message, DBUS_TYPE_UINT32,
perror("wpas_dbus_getter_ap_scan[dbus]: out of " &process_credentials);
"memory to return scanning state."); if (reply)
reply = dbus_message_new_error(message, DBUS_ERROR_NO_MEMORY, return reply;
NULL);
goto out;
}
/* omit first and second argument and get value from third*/
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_recurse(&iter, &variant_iter);
if (dbus_message_iter_get_arg_type(&variant_iter) != DBUS_TYPE_BOOLEAN)
{
reply = wpas_dbus_error_invald_args(message,
"BOOLEAN required");
goto out;
}
dbus_message_iter_get_basic(&variant_iter, &process_credentials);
old_pc = (wpa_s->conf->wps_cred_processing != 1); old_pc = (wpa_s->conf->wps_cred_processing != 1);
wpa_s->conf->wps_cred_processing = (process_credentials ? 2 : 1); wpa_s->conf->wps_cred_processing = (process_credentials ? 2 : 1);
@ -339,6 +292,5 @@ DBusMessage * wpas_dbus_setter_process_credentials(
WPAS_DBUS_NEW_IFACE_WPS, WPAS_DBUS_NEW_IFACE_WPS,
"ProcessCredentials"); "ProcessCredentials");
out: return NULL;
return reply;
} }