Add callback path from wpa_supplicant core to AidlManager::listAliases.
Order of calls is: 1. wpas_list_aliases (notify.c) 2. wpas_aidl_list_aliases (aidl.cpp) 3. listAliases (aidl_manager.cpp) Bug: 281566895 Test: m Change-Id: If9b97f8cf1088ac001891e1722871761601c61a7
This commit is contained in:
committed by
Gabriel Biren
parent
70ff123549
commit
1629ad8e9f
@@ -1074,6 +1074,17 @@ ssize_t wpas_aidl_get_certificate(const char* alias, uint8_t** value)
|
|||||||
return aidl_manager->getCertificate(alias, value);
|
return aidl_manager->getCertificate(alias, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t wpas_aidl_list_aliases(const char *prefix, char ***aliases)
|
||||||
|
{
|
||||||
|
AidlManager *aidl_manager = AidlManager::getInstance();
|
||||||
|
if (!aidl_manager)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
wpa_printf(MSG_INFO, "Requesting aliases from framework");
|
||||||
|
|
||||||
|
return aidl_manager->listAliases(prefix, aliases);
|
||||||
|
}
|
||||||
|
|
||||||
void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
||||||
unsigned int count, int **scs_resp)
|
unsigned int count, int **scs_resp)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ extern "C"
|
|||||||
void wpas_aidl_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
|
void wpas_aidl_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
|
||||||
struct dscp_policy_data *policies, int num_policies);
|
struct dscp_policy_data *policies, int num_policies);
|
||||||
ssize_t wpas_aidl_get_certificate(const char* alias, uint8_t** value);
|
ssize_t wpas_aidl_get_certificate(const char* alias, uint8_t** value);
|
||||||
|
ssize_t wpas_aidl_list_aliases(const char *prefix, char ***aliases);
|
||||||
void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
||||||
unsigned int count, int **scs_resp);
|
unsigned int count, int **scs_resp);
|
||||||
#else // CONFIG_CTRL_IFACE_AIDL
|
#else // CONFIG_CTRL_IFACE_AIDL
|
||||||
@@ -334,6 +335,10 @@ static ssize_t wpas_aidl_get_certificate(const char* alias, uint8_t** value)
|
|||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
static ssize_t wpas_aidl_list_aliases(const char *prefix, char ***aliases)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
static void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
static void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
|
||||||
unsigned int count, int **scs_resp) {}
|
unsigned int count, int **scs_resp) {}
|
||||||
#endif // CONFIG_CTRL_IFACE_AIDL
|
#endif // CONFIG_CTRL_IFACE_AIDL
|
||||||
|
|||||||
@@ -2607,6 +2607,41 @@ ssize_t AidlManager::getCertificate(const char* alias, uint8_t** value) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t AidlManager::listAliases(const char *prefix, char ***aliases) {
|
||||||
|
if (prefix == nullptr || aliases == nullptr) {
|
||||||
|
wpa_printf(MSG_ERROR, "Null pointer argument was passed to listAliases");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (auto results =
|
||||||
|
certificate_utils::listAliases(prefix, non_standard_cert_callback_)) {
|
||||||
|
int count = results->size();
|
||||||
|
*aliases = (char **) os_malloc(sizeof(char *) * count);
|
||||||
|
if (*aliases == nullptr) {
|
||||||
|
wpa_printf(MSG_ERROR, "listAliases: os_malloc alias array error");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
os_memset(*aliases, 0, sizeof(char *) * count);
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (auto it = results->begin(); it != results->end(); ++it) {
|
||||||
|
int alias_len = it->length();
|
||||||
|
char *alias = (char *) os_malloc(alias_len + 1);
|
||||||
|
if (alias == nullptr) {
|
||||||
|
wpa_printf(MSG_ERROR, "listAliases: os_malloc alias string error");
|
||||||
|
for (int i = 0; i < index; ++i) os_free((*aliases)[i]);
|
||||||
|
os_free(*aliases);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
os_memcpy(alias, it->data(), alias_len + 1);
|
||||||
|
(*aliases)[index] = alias;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
QosPolicyScsResponseStatusCode getQosPolicyScsResponseStatusCode(int scsResponseCode)
|
QosPolicyScsResponseStatusCode getQosPolicyScsResponseStatusCode(int scsResponseCode)
|
||||||
{
|
{
|
||||||
QosPolicyScsResponseStatusCode status = QosPolicyScsResponseStatusCode::TIMEOUT;
|
QosPolicyScsResponseStatusCode status = QosPolicyScsResponseStatusCode::TIMEOUT;
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ public:
|
|||||||
struct dscp_policy_data *policies,
|
struct dscp_policy_data *policies,
|
||||||
int num_policies);
|
int num_policies);
|
||||||
ssize_t getCertificate(const char* alias, uint8_t** value);
|
ssize_t getCertificate(const char* alias, uint8_t** value);
|
||||||
|
ssize_t listAliases(const char *prefix, char ***aliases);
|
||||||
void notifyQosPolicyScsResponse(struct wpa_supplicant *wpa_s,
|
void notifyQosPolicyScsResponse(struct wpa_supplicant *wpa_s,
|
||||||
unsigned int count, int **scs_resp);
|
unsigned int count, int **scs_resp);
|
||||||
|
|
||||||
|
|||||||
@@ -1372,6 +1372,10 @@ ssize_t wpas_get_certificate(const char *alias, uint8_t** value)
|
|||||||
return wpas_aidl_get_certificate(alias, value);
|
return wpas_aidl_get_certificate(alias, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t wpas_list_aliases(const char *prefix, char ***aliases)
|
||||||
|
{
|
||||||
|
return wpas_aidl_list_aliases(prefix, aliases);
|
||||||
|
}
|
||||||
|
|
||||||
void wpas_notify_signal_change(struct wpa_supplicant *wpa_s)
|
void wpas_notify_signal_change(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ void wpas_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
|
|||||||
struct dscp_policy_data *policies, int num_policies);
|
struct dscp_policy_data *policies, int num_policies);
|
||||||
void wpas_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency);
|
void wpas_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency);
|
||||||
ssize_t wpas_get_certificate(const char *alias, uint8_t** value);
|
ssize_t wpas_get_certificate(const char *alias, uint8_t** value);
|
||||||
|
ssize_t wpas_list_aliases(const char *prefix, char ***aliases);
|
||||||
void wpas_notify_pmk_cache_added(struct wpa_supplicant *wpa_s,
|
void wpas_notify_pmk_cache_added(struct wpa_supplicant *wpa_s,
|
||||||
struct rsn_pmksa_cache_entry *entry);
|
struct rsn_pmksa_cache_entry *entry);
|
||||||
void wpas_notify_signal_change(struct wpa_supplicant *wpa_s);
|
void wpas_notify_signal_change(struct wpa_supplicant *wpa_s);
|
||||||
|
|||||||
Reference in New Issue
Block a user