static DBusMessage *create_request_oob_reply(DBusMessage *message) { DBusMessage *reply; DBusMessageIter iter; DBusMessageIter dict; const char *ssid, *psk; uint8_t *tlv_msg; int length; if (connman_technology_get_wifi_tethering(&ssid, &psk) == FALSE) return get_reply_on_error(message, ENOTSUP); tlv_msg = encode_to_tlv(ssid, psk, &length); if (tlv_msg == NULL) return get_reply_on_error(message, ENOTSUP); reply = dbus_message_new_method_return(message); if (reply == NULL) goto out; dbus_message_iter_init_append(reply, &iter); connman_dbus_dict_open(&iter, &dict); connman_dbus_dict_append_fixed_array(&dict, "WSC", DBUS_TYPE_BYTE, &tlv_msg, length); dbus_message_iter_close_container(&iter, &dict); out: g_free(tlv_msg); return reply; }
static void append_peer_service(DBusMessageIter *iter, struct _peer_service *service) { DBusMessageIter dict; connman_dbus_dict_open(iter, &dict); switch (service->type) { case CONNMAN_PEER_SERVICE_UNKNOWN: /* Should never happen */ break; case CONNMAN_PEER_SERVICE_WIFI_DISPLAY: connman_dbus_dict_append_fixed_array(&dict, "WiFiDisplayIEs", DBUS_TYPE_BYTE, &service->data, service->length); break; } connman_dbus_dict_close(iter, &dict); }