本文整理汇总了C++中os_strcmp函数的典型用法代码示例。如果您正苦于以下问题:C++ os_strcmp函数的具体用法?C++ os_strcmp怎么用?C++ os_strcmp使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了os_strcmp函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: wpa_supplicant_ctrl_iface_ctrl_rsp
static int wpa_supplicant_ctrl_iface_ctrl_rsp(struct wpa_supplicant *wpa_s,
char *rsp)
{
#ifdef IEEE8021X_EAPOL
char *pos, *id_pos;
int id;
struct wpa_ssid *ssid;
pos = os_strchr(rsp, '-');
if (pos == NULL)
return -1;
*pos++ = '\0';
id_pos = pos;
pos = os_strchr(pos, ':');
if (pos == NULL)
return -1;
*pos++ = '\0';
id = atoi(id_pos);
wpa_printf(MSG_DEBUG, "CTRL_IFACE: field=%s id=%d", rsp, id);
wpa_hexdump_ascii_key(MSG_DEBUG, "CTRL_IFACE: value",
(u8 *) pos, os_strlen(pos));
ssid = wpa_config_get_network(wpa_s->conf, id);
if (ssid == NULL) {
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Could not find SSID id=%d "
"to update", id);
return -1;
}
if (os_strcmp(rsp, "IDENTITY") == 0) {
os_free(ssid->identity);
ssid->identity = (u8 *) os_strdup(pos);
ssid->identity_len = os_strlen(pos);
ssid->pending_req_identity = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
} else if (os_strcmp(rsp, "PASSWORD") == 0) {
os_free(ssid->password);
ssid->password = (u8 *) os_strdup(pos);
ssid->password_len = os_strlen(pos);
ssid->pending_req_password = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
} else if (os_strcmp(rsp, "NEW_PASSWORD") == 0) {
os_free(ssid->new_password);
ssid->new_password = (u8 *) os_strdup(pos);
ssid->new_password_len = os_strlen(pos);
ssid->pending_req_new_password = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
} else if (os_strcmp(rsp, "PIN") == 0) {
os_free(ssid->pin);
ssid->pin = os_strdup(pos);
ssid->pending_req_pin = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
} else if (os_strcmp(rsp, "OTP") == 0) {
os_free(ssid->otp);
ssid->otp = (u8 *) os_strdup(pos);
ssid->otp_len = os_strlen(pos);
os_free(ssid->pending_req_otp);
ssid->pending_req_otp = NULL;
ssid->pending_req_otp_len = 0;
} else if (os_strcmp(rsp, "PASSPHRASE") == 0) {
os_free(ssid->private_key_passwd);
ssid->private_key_passwd = (u8 *) os_strdup(pos);
ssid->pending_req_passphrase = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
} else {
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Unknown field '%s'", rsp);
return -1;
}
return 0;
#else /* IEEE8021X_EAPOL */
wpa_printf(MSG_DEBUG, "CTRL_IFACE: 802.1X not included");
return -1;
#endif /* IEEE8021X_EAPOL */
}
示例2: wpas_dbus_iface_set_network
/**
* wpas_dbus_iface_set_network - Set options for a configured network
* @message: Pointer to incoming dbus message
* @wpa_s: wpa_supplicant structure for a network interface
* @ssid: wpa_ssid structure for a configured network
* Returns: a dbus message containing a UINT32 indicating success (1) or
* failure (0)
*
* Handler function for "set" method call of a configured network.
*/
DBusMessage * wpas_dbus_iface_set_network(DBusMessage *message,
struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid)
{
DBusMessage *reply = NULL;
struct wpa_dbus_dict_entry entry = { .type = DBUS_TYPE_STRING };
DBusMessageIter iter, iter_dict;
dbus_message_iter_init(message, &iter);
if (!wpa_dbus_dict_open_read(&iter, &iter_dict)) {
reply = wpas_dbus_new_invalid_opts_error(message, NULL);
goto out;
}
while (wpa_dbus_dict_has_dict_entry(&iter_dict)) {
char *value = NULL;
size_t size = 50;
int ret;
if (!wpa_dbus_dict_get_entry(&iter_dict, &entry)) {
reply = wpas_dbus_new_invalid_opts_error(message,
NULL);
goto out;
}
/* Type conversions, since wpa_supplicant wants strings */
if (entry.type == DBUS_TYPE_ARRAY &&
entry.array_type == DBUS_TYPE_BYTE) {
if (entry.array_len <= 0)
goto error;
size = entry.array_len * 2 + 1;
value = os_zalloc(size);
if (value == NULL)
goto error;
ret = wpa_snprintf_hex(value, size,
(u8 *) entry.bytearray_value,
entry.array_len);
if (ret <= 0)
goto error;
} else if (entry.type == DBUS_TYPE_STRING) {
if (should_quote_opt(entry.key)) {
size = os_strlen(entry.str_value);
/* Zero-length option check */
if (size <= 0)
goto error;
size += 3; /* For quotes and terminator */
value = os_zalloc(size);
if (value == NULL)
goto error;
ret = os_snprintf(value, size, "\"%s\"",
entry.str_value);
if (ret < 0 || (size_t) ret != (size - 1))
goto error;
} else {
value = os_strdup(entry.str_value);
if (value == NULL)
goto error;
}
} else if (entry.type == DBUS_TYPE_UINT32) {
value = os_zalloc(size);
if (value == NULL)
goto error;
ret = os_snprintf(value, size, "%u",
entry.uint32_value);
if (ret <= 0)
goto error;
} else if (entry.type == DBUS_TYPE_INT32) {
value = os_zalloc(size);
if (value == NULL)
goto error;
ret = os_snprintf(value, size, "%d",
entry.int32_value);
if (ret <= 0)
goto error;
} else
goto error;
if (wpa_config_set(ssid, entry.key, value, 0) < 0)
goto error;
if ((os_strcmp(entry.key, "psk") == 0 &&
value[0] == '"' && ssid->ssid_len) ||
(os_strcmp(entry.key, "ssid") == 0 && ssid->passphrase))
wpa_config_update_psk(ssid);
else if (os_strcmp(entry.key, "priority") == 0)
wpa_config_update_prio_list(wpa_s->conf);
os_free(value);
//.........这里部分代码省略.........
示例3: wpa_config_write_global
static void wpa_config_write_global(FILE *f, struct wpa_config *config)
{
#ifdef CONFIG_CTRL_IFACE
if (config->ctrl_interface)
fprintf(f, "ctrl_interface=%s\n", config->ctrl_interface);
if (config->ctrl_interface_group)
fprintf(f, "ctrl_interface_group=%s\n",
config->ctrl_interface_group);
#endif /* CONFIG_CTRL_IFACE */
if (config->eapol_version != DEFAULT_EAPOL_VERSION)
fprintf(f, "eapol_version=%d\n", config->eapol_version);
if (config->ap_scan != DEFAULT_AP_SCAN)
fprintf(f, "ap_scan=%d\n", config->ap_scan);
if (config->disable_scan_offload)
fprintf(f, "disable_scan_offload=%d\n",
config->disable_scan_offload);
if (config->fast_reauth != DEFAULT_FAST_REAUTH)
fprintf(f, "fast_reauth=%d\n", config->fast_reauth);
if (config->opensc_engine_path)
fprintf(f, "opensc_engine_path=%s\n",
config->opensc_engine_path);
if (config->pkcs11_engine_path)
fprintf(f, "pkcs11_engine_path=%s\n",
config->pkcs11_engine_path);
if (config->pkcs11_module_path)
fprintf(f, "pkcs11_module_path=%s\n",
config->pkcs11_module_path);
if (config->pcsc_reader)
fprintf(f, "pcsc_reader=%s\n", config->pcsc_reader);
if (config->pcsc_pin)
fprintf(f, "pcsc_pin=%s\n", config->pcsc_pin);
if (config->driver_param)
fprintf(f, "driver_param=%s\n", config->driver_param);
if (config->dot11RSNAConfigPMKLifetime)
fprintf(f, "dot11RSNAConfigPMKLifetime=%d\n",
config->dot11RSNAConfigPMKLifetime);
if (config->dot11RSNAConfigPMKReauthThreshold)
fprintf(f, "dot11RSNAConfigPMKReauthThreshold=%d\n",
config->dot11RSNAConfigPMKReauthThreshold);
if (config->dot11RSNAConfigSATimeout)
fprintf(f, "dot11RSNAConfigSATimeout=%d\n",
config->dot11RSNAConfigSATimeout);
if (config->update_config)
fprintf(f, "update_config=%d\n", config->update_config);
#ifdef CONFIG_WPS
if (!is_nil_uuid(config->uuid)) {
char buf[40];
uuid_bin2str(config->uuid, buf, sizeof(buf));
fprintf(f, "uuid=%s\n", buf);
}
if (config->device_name)
fprintf(f, "device_name=%s\n", config->device_name);
if (config->manufacturer)
fprintf(f, "manufacturer=%s\n", config->manufacturer);
if (config->model_name)
fprintf(f, "model_name=%s\n", config->model_name);
if (config->model_number)
fprintf(f, "model_number=%s\n", config->model_number);
if (config->serial_number)
fprintf(f, "serial_number=%s\n", config->serial_number);
{
char _buf[WPS_DEV_TYPE_BUFSIZE], *buf;
buf = wps_dev_type_bin2str(config->device_type,
_buf, sizeof(_buf));
if (os_strcmp(buf, "0-00000000-0") != 0)
fprintf(f, "device_type=%s\n", buf);
}
if (WPA_GET_BE32(config->os_version))
fprintf(f, "os_version=%08x\n",
WPA_GET_BE32(config->os_version));
if (config->config_methods)
fprintf(f, "config_methods=%s\n", config->config_methods);
if (config->wps_cred_processing)
fprintf(f, "wps_cred_processing=%d\n",
config->wps_cred_processing);
if (config->wps_vendor_ext_m1) {
int i, len = wpabuf_len(config->wps_vendor_ext_m1);
const u8 *p = wpabuf_head_u8(config->wps_vendor_ext_m1);
if (len > 0) {
fprintf(f, "wps_vendor_ext_m1=");
for (i = 0; i < len; i++)
fprintf(f, "%02x", *p++);
fprintf(f, "\n");
}
}
#endif /* CONFIG_WPS */
#ifdef CONFIG_P2P
if (config->p2p_listen_reg_class)
fprintf(f, "p2p_listen_reg_class=%u\n",
config->p2p_listen_reg_class);
if (config->p2p_listen_channel)
fprintf(f, "p2p_listen_channel=%u\n",
config->p2p_listen_channel);
if (config->p2p_oper_reg_class)
fprintf(f, "p2p_oper_reg_class=%u\n",
config->p2p_oper_reg_class);
if (config->p2p_oper_channel)
fprintf(f, "p2p_oper_channel=%u\n", config->p2p_oper_channel);
if (config->p2p_go_intent != DEFAULT_P2P_GO_INTENT)
fprintf(f, "p2p_go_intent=%u\n", config->p2p_go_intent);
//.........这里部分代码省略.........
示例4: testing_test_fail
int testing_test_fail(void)
{
const char *func[WPA_TRACE_LEN];
size_t i, res, len;
char *pos, *next;
int match;
if (!wpa_trace_test_fail_after)
return 0;
res = wpa_trace_calling_func(func, WPA_TRACE_LEN);
i = 0;
if (i < res && os_strcmp(func[i], __func__) == 0)
i++;
pos = wpa_trace_test_fail_func;
match = 0;
while (i < res) {
int allow_skip = 1;
int maybe = 0;
if (*pos == '=') {
allow_skip = 0;
pos++;
} else if (*pos == '?') {
maybe = 1;
pos++;
}
next = os_strchr(pos, ';');
if (next)
len = next - pos;
else
len = os_strlen(pos);
if (os_memcmp(pos, func[i], len) != 0) {
if (maybe && next) {
pos = next + 1;
continue;
}
if (allow_skip) {
i++;
continue;
}
return 0;
}
if (!next) {
match = 1;
break;
}
pos = next + 1;
i++;
}
if (!match)
return 0;
wpa_trace_test_fail_after--;
if (wpa_trace_test_fail_after == 0) {
wpa_printf(MSG_INFO, "TESTING: fail at %s",
wpa_trace_test_fail_func);
for (i = 0; i < res; i++)
wpa_printf(MSG_INFO, "backtrace[%d] = %s",
(int) i, func[i]);
return 1;
}
return 0;
}
示例5: ap_handle_timer
/**
* ap_handle_timer - Per STA timer handler
* @eloop_ctx: struct hostapd_data *
* @timeout_ctx: struct sta_info *
*
* This function is called to check station activity and to remove inactive
* stations.
*/
void ap_handle_timer(void *eloop_ctx, void *timeout_ctx)
{
struct hostapd_data *hapd = eloop_ctx;
struct sta_info *sta = timeout_ctx;
unsigned long next_time = 0;
if (sta->timeout_next == STA_REMOVE) {
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_INFO, "deauthenticated due to "
"local deauth request");
ap_free_sta(hapd, sta);
return;
}
if ((sta->flags & WLAN_STA_ASSOC) &&
(sta->timeout_next == STA_NULLFUNC ||
sta->timeout_next == STA_DISASSOC)) {
int inactive_sec;
wpa_printf(MSG_DEBUG, "Checking STA " MACSTR " inactivity:",
MAC2STR(sta->addr));
inactive_sec = hostapd_drv_get_inact_sec(hapd, sta->addr);
if (inactive_sec == -1) {
wpa_printf(MSG_DEBUG, "Could not get station info "
"from kernel driver for " MACSTR ".",
MAC2STR(sta->addr));
} else if (inactive_sec < hapd->conf->ap_max_inactivity &&
sta->flags & WLAN_STA_ASSOC) {
/* station activity detected; reset timeout state */
wpa_printf(MSG_DEBUG, " Station has been active");
sta->timeout_next = STA_NULLFUNC;
next_time = hapd->conf->ap_max_inactivity -
inactive_sec;
}
}
if ((sta->flags & WLAN_STA_ASSOC) &&
sta->timeout_next == STA_DISASSOC &&
!(sta->flags & WLAN_STA_PENDING_POLL)) {
wpa_printf(MSG_DEBUG, " Station has ACKed data poll");
/* data nullfunc frame poll did not produce TX errors; assume
* station ACKed it */
sta->timeout_next = STA_NULLFUNC;
next_time = hapd->conf->ap_max_inactivity;
}
if (next_time) {
eloop_register_timeout(next_time, 0, ap_handle_timer, hapd,
sta);
return;
}
if (sta->timeout_next == STA_NULLFUNC &&
(sta->flags & WLAN_STA_ASSOC)) {
#ifndef CONFIG_NATIVE_WINDOWS
/* send data frame to poll STA and check whether this frame
* is ACKed */
struct ieee80211_hdr hdr;
wpa_printf(MSG_DEBUG, " Polling STA with data frame");
sta->flags |= WLAN_STA_PENDING_POLL;
os_memset(&hdr, 0, sizeof(hdr));
if (hapd->driver &&
os_strcmp(hapd->driver->name, "hostap") == 0) {
/*
* WLAN_FC_STYPE_NULLFUNC would be more appropriate,
* but it is apparently not retried so TX Exc events
* are not received for it.
*/
hdr.frame_control =
IEEE80211_FC(WLAN_FC_TYPE_DATA,
WLAN_FC_STYPE_DATA);
} else {
hdr.frame_control =
IEEE80211_FC(WLAN_FC_TYPE_DATA,
WLAN_FC_STYPE_NULLFUNC);
}
hdr.frame_control |= host_to_le16(WLAN_FC_FROMDS);
os_memcpy(hdr.IEEE80211_DA_FROMDS, sta->addr, ETH_ALEN);
os_memcpy(hdr.IEEE80211_BSSID_FROMDS, hapd->own_addr,
ETH_ALEN);
os_memcpy(hdr.IEEE80211_SA_FROMDS, hapd->own_addr, ETH_ALEN);
if (hostapd_drv_send_mlme(hapd, &hdr, sizeof(hdr)) < 0)
perror("ap_handle_timer: send");
#endif /* CONFIG_NATIVE_WINDOWS */
} else if (sta->timeout_next != STA_REMOVE) {
int deauth = sta->timeout_next == STA_DEAUTH;
wpa_printf(MSG_DEBUG, "Sending %s info to STA " MACSTR,
deauth ? "deauthentication" : "disassociation",
//.........这里部分代码省略.........
示例6: os
/**
*
* @param params
* @param req_id
* @return
*/
int ICACHE_FLASH_ATTR dispatcher_t::mqttPublish(JVal* params, int32_t req_id)
{
// {"jsonrpc": "2.0", "method": "mqtt_publish", "params": {"id": 0, "topic": "fabric/esp8266/test1", "payload": "data 1234", "qos": 0, "retain": false}, "id": 3}
if(m_Wifi->isConnected() == false) {
os()->jsonRpc()->errorReply(EWIFI_NOT_CONNECTED, req_id, "wifi not connected");
return EWIFI_NOT_CONNECTED;
}
uint16_t flag = 0;
/******************************************************************************************************************
* extract data from JSON-RPC request
*
*/
int slot = -1;
const char* topic = 0;
const char* payload = 0;
int qos = 0;
BaBool retain = false;
m_Err->reset();
JVal* jv = params;
// extract all data
while(jv != 0) {
const char* name = jv->getName();
if(os_strcmp("id", name) == 0) {
slot = jv->getInt(m_Err);
flag |= _PUB_SLOT;
DTXT("%lu dispatcher_t::mqttPublish(): slot = %d\n", millis(), slot);
}
else if(os_strcmp("topic", name) == 0) {
topic = jv->getString(m_Err);
flag |= _PUB_TOPIC;
DTXT("%lu dispatcher_t::mqttPublish(): topic = %s\n", millis(), topic);
}
else if(os_strcmp("payload", name) == 0) {
payload = jv->getString(m_Err);
flag |= _PUB_PAYLOAD;
DTXT("%lu dispatcher_t::mqttPublisht(): payload = %s\n", millis(), payload);
}
else if(os_strcmp("qos", name) == 0) {
qos = jv->getInt(m_Err);
flag |= _PUB_QOS;
DTXT("%lu dispatcher_t::mqttPublish(): qos = %d\n", millis(), qos);
}
else if(os_strcmp("retain", name) == 0) {
retain = jv->getBoolean(m_Err);
flag |= _PUB_RETAIN;
DTXT("%lu dispatcher_t::mqttPublish(): retain = %s\n", millis(), retain ? "True" : "False");
}
else {
DTXT("%lu dispatcher_t::mqttPublish(): unknown = %s\n", millis(), name);
}
// check for errors
if(m_Err->isError()) {
os()->jsonRpc()->errorReply(EJSON_DECODER, req_id, "JSON decoder error; %s", m_Err->msg);
return EJSON_DECODER;
}
jv = jv->getNextElem();
}
/******************************************************************************************************************
* start publish
*
*/
int ret = EOK;
if(((flag & _PUB_SLOT) == _PUB_SLOT) && ((flag & _PUB_TOPIC) == _PUB_TOPIC) && ((flag & _PUB_PAYLOAD) == _PUB_PAYLOAD)) {
if(slot >= 0 && slot < m_MqttClient.getMaxConnections()) {
ret = m_MqttClient.publish(slot, topic, payload, os_strlen(payload), qos, retain);
if(ret == EOK) {
os()->jsonRpc()->successReply(req_id, "%d", slot);
}
else {
os()->jsonRpc()->errorReply(ret, req_id, "publish error");
}
}
else {
ret = EID;
os()->jsonRpc()->errorReply(ret, req_id, "invalid id");
}
}
else {
ret = EMISSING_PARAMETER;
os()->jsonRpc()->errorReply(ret, req_id, "no id and/or topic and/or payload specified");
}
return ret;
//.........这里部分代码省略.........
示例7: main
//.........这里部分代码省略.........
p1 = os_zalloc(sizeof(p1));
if (p1 == NULL)
break;
if (!p)
eapol_test.extra_attrs = p1;
else
p->next = p1;
p = p1;
p->type = atoi(optarg);
pos = os_strchr(optarg, ':');
if (pos == NULL) {
p->syntax = 'n';
p->data = NULL;
break;
}
pos++;
if (pos[0] == '\0' || pos[1] != ':') {
printf("Incorrect format of attribute "
"specification\n");
break;
}
p->syntax = pos[0];
p->data = pos + 2;
break;
default:
usage();
return -1;
}
}
if (argc > optind && os_strcmp(argv[optind], "scard") == 0) {
return scard_test();
}
if (argc > optind && os_strcmp(argv[optind], "sim") == 0) {
return scard_get_triplets(argc - optind - 1,
&argv[optind + 1]);
}
if (conf == NULL) {
usage();
printf("Configuration file is required.\n");
return -1;
}
if (eap_peer_register_methods()) {
wpa_printf(MSG_ERROR, "Failed to register EAP methods");
return -1;
}
if (eloop_init(&wpa_s)) {
wpa_printf(MSG_ERROR, "Failed to initialize event loop");
return -1;
}
os_memset(&wpa_s, 0, sizeof(wpa_s));
eapol_test.wpa_s = &wpa_s;
wpa_s.conf = wpa_config_read(conf);
if (wpa_s.conf == NULL) {
printf("Failed to parse configuration file '%s'.\n", conf);
return -1;
}
if (wpa_s.conf->ssid == NULL) {
示例8: JVMNativeMethodBind
/*!
*@brief NativeMethodBind接口回调函数
*@author zhaohm3
*@param[in] jvmti_env
*@param[in] jni_env
*@param[in] thread
*@param[in] method
*@param[in] address
*@param[in] new_address_ptr
*@retval
*@note
*
*@since 2014-9-15 17:59
*@attention
*
*/
GPrivate void JNICALL JVMNativeMethodBind(jvmtiEnv *jvmti_env,
JNIEnv* jni_env,
jthread thread,
jmethodID method,
void* address,
void** new_address_ptr)
{
GCMON_PRINT_FUNC();
//! 获取Perf_Attach的地址
if (NULL == gfnPerf_Attach)
{
String_t szName = NULL;
String_t szSig = NULL;
String_t szGsig = NULL;
jvmtiError error = JVMTI_ERROR_NONE;
GASSERT(gpJvmtiEnv == jvmti_env);
error = gcmon_monitor_enter();
if (JVMTI_ERROR_NONE == error && NULL == gfnPerf_Attach)
{
error = gJvmtiEnv->GetMethodName(gpJvmtiEnv, method, &szName, &szSig, &szGsig);
if (JVMTI_ERROR_NONE == error
&& address != NULL
&& new_address_ptr != NULL
&& address == *new_address_ptr
&& szName != NULL
&& szSig != NULL
&& NULL == szGsig
&& 0 == os_strcmp(szName, "attach")
&& 0 == os_strcmp(szSig, "(Ljava/lang/String;II)Ljava/nio/ByteBuffer;"))
{
gfnPerf_Attach = (Perf_Attach_t)address;
//! 通过Perf_Attach接口,Attach到JVM,获取PerfMemory地址
gcmon_get_perf_address(jvmti_env, jni_env);
}
/*
gcmon_debug_msg("%s --> method = 0x%p "
"\t address = 0x%p "
"\t new_address_ptr = 0x%p "
"\t *new_address_ptr = 0x%p "
"\t name = %s "
"\t sig = %s "
"\t gsig = %s \n",
__FUNCTION__,
method,
address,
new_address_ptr,
*new_address_ptr,
szName,
szSig,
szGsig);
*/
gJvmtiEnv->Deallocate(gpJvmtiEnv, szName);
gJvmtiEnv->Deallocate(gpJvmtiEnv, szSig);
gJvmtiEnv->Deallocate(gpJvmtiEnv, szGsig);
}
error = gcmon_monitor_exit();
}
}
示例9: hostapd_config_wmm_ac
int hostapd_config_wmm_ac(struct hostapd_wmm_ac_params wmm_ac_params[],
const char *name, const char *val)
{
int num, v;
const char *pos;
struct hostapd_wmm_ac_params *ac;
/* skip 'wme_ac_' or 'wmm_ac_' prefix */
pos = name + 7;
if (os_strncmp(pos, "be_", 3) == 0) {
num = 0;
pos += 3;
} else if (os_strncmp(pos, "bk_", 3) == 0) {
num = 1;
pos += 3;
} else if (os_strncmp(pos, "vi_", 3) == 0) {
num = 2;
pos += 3;
} else if (os_strncmp(pos, "vo_", 3) == 0) {
num = 3;
pos += 3;
} else {
wpa_printf(MSG_ERROR, "Unknown WMM name '%s'", pos);
return -1;
}
ac = &wmm_ac_params[num];
if (os_strcmp(pos, "aifs") == 0) {
v = atoi(val);
if (v < 1 || v > 255) {
wpa_printf(MSG_ERROR, "Invalid AIFS value %d", v);
return -1;
}
ac->aifs = v;
} else if (os_strcmp(pos, "cwmin") == 0) {
v = atoi(val);
if (v < 0 || v > 12) {
wpa_printf(MSG_ERROR, "Invalid cwMin value %d", v);
return -1;
}
ac->cwmin = v;
} else if (os_strcmp(pos, "cwmax") == 0) {
v = atoi(val);
if (v < 0 || v > 12) {
wpa_printf(MSG_ERROR, "Invalid cwMax value %d", v);
return -1;
}
ac->cwmax = v;
} else if (os_strcmp(pos, "txop_limit") == 0) {
v = atoi(val);
if (v < 0 || v > 0xffff) {
wpa_printf(MSG_ERROR, "Invalid txop value %d", v);
return -1;
}
ac->txop_limit = v;
} else if (os_strcmp(pos, "acm") == 0) {
v = atoi(val);
if (v < 0 || v > 1) {
wpa_printf(MSG_ERROR, "Invalid acm value %d", v);
return -1;
}
ac->admission_control_mandatory = v;
} else {
wpa_printf(MSG_ERROR, "Unknown wmm_ac_ field '%s'", pos);
return -1;
}
return 0;
}
示例10: wpa_supplicant_ctrl_iface_receive
static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx,
void *sock_ctx)
{
struct wpa_supplicant *wpa_s = eloop_ctx;
struct ctrl_iface_priv *priv = sock_ctx;
char buf[256], *pos;
int res;
struct sockaddr_in from;
socklen_t fromlen = sizeof(from);
char *reply = NULL;
size_t reply_len = 0;
int new_attached = 0;
u8 cookie[COOKIE_LEN];
res = recvfrom(sock, buf, sizeof(buf) - 1, 0,
(struct sockaddr *) &from, &fromlen);
if (res < 0) {
perror("recvfrom(ctrl_iface)");
return;
}
#ifndef CONFIG_CTRL_IFACE_UDP_REMOTE
if (from.sin_addr.s_addr != htonl((127 << 24) | 1)) {
/*
* The OS networking stack is expected to drop this kind of
* frames since the socket is bound to only localhost address.
* Just in case, drop the frame if it is coming from any other
* address.
*/
wpa_printf(MSG_DEBUG, "CTRL: Drop packet from unexpected "
"source %s", inet_ntoa(from.sin_addr));
return;
}
#endif /* CONFIG_CTRL_IFACE_UDP_REMOTE */
buf[res] = '\0';
if (os_strcmp(buf, "GET_COOKIE") == 0) {
reply = wpa_supplicant_ctrl_iface_get_cookie(priv, &reply_len);
goto done;
}
/*
* Require that the client includes a prefix with the 'cookie' value
* fetched with GET_COOKIE command. This is used to verify that the
* client has access to a bidirectional link over UDP in order to
* avoid attacks using forged localhost IP address even if the OS does
* not block such frames from remote destinations.
*/
if (os_strncmp(buf, "COOKIE=", 7) != 0) {
wpa_printf(MSG_DEBUG, "CTLR: No cookie in the request - "
"drop request");
return;
}
if (hexstr2bin(buf + 7, cookie, COOKIE_LEN) < 0) {
wpa_printf(MSG_DEBUG, "CTLR: Invalid cookie format in the "
"request - drop request");
return;
}
if (os_memcmp(cookie, priv->cookie, COOKIE_LEN) != 0) {
wpa_printf(MSG_DEBUG, "CTLR: Invalid cookie in the request - "
"drop request");
return;
}
pos = buf + 7 + 2 * COOKIE_LEN;
while (*pos == ' ')
pos++;
if (os_strcmp(pos, "ATTACH") == 0) {
if (wpa_supplicant_ctrl_iface_attach(priv, &from, fromlen))
reply_len = 1;
else {
new_attached = 1;
reply_len = 2;
}
} else if (os_strcmp(pos, "DETACH") == 0) {
if (wpa_supplicant_ctrl_iface_detach(priv, &from, fromlen))
reply_len = 1;
else
reply_len = 2;
} else if (os_strncmp(pos, "LEVEL ", 6) == 0) {
if (wpa_supplicant_ctrl_iface_level(priv, &from, fromlen,
pos + 6))
reply_len = 1;
else
reply_len = 2;
} else {
reply = wpa_supplicant_ctrl_iface_process(wpa_s, pos,
&reply_len);
}
done:
if (reply) {
sendto(sock, reply, reply_len, 0, (struct sockaddr *) &from,
fromlen);
os_free(reply);
} else if (reply_len == 1) {
//.........这里部分代码省略.........
示例11: wpa_supplicant_global_ctrl_iface_receive
static void wpa_supplicant_global_ctrl_iface_receive(int sock, void *eloop_ctx,
void *sock_ctx)
{
struct wpa_global *global = eloop_ctx;
struct ctrl_iface_global_priv *priv = sock_ctx;
char buf[256], *pos;
int res;
struct sockaddr_in from;
socklen_t fromlen = sizeof(from);
char *reply;
size_t reply_len;
u8 cookie[COOKIE_LEN];
res = recvfrom(sock, buf, sizeof(buf) - 1, 0,
(struct sockaddr *) &from, &fromlen);
if (res < 0) {
perror("recvfrom(ctrl_iface)");
return;
}
#ifndef CONFIG_CTRL_IFACE_UDP_REMOTE
if (from.sin_addr.s_addr != htonl((127 << 24) | 1)) {
/*
* The OS networking stack is expected to drop this kind of
* frames since the socket is bound to only localhost address.
* Just in case, drop the frame if it is coming from any other
* address.
*/
wpa_printf(MSG_DEBUG, "CTRL: Drop packet from unexpected "
"source %s", inet_ntoa(from.sin_addr));
return;
}
#endif /* CONFIG_CTRL_IFACE_UDP_REMOTE */
buf[res] = '\0';
if (os_strcmp(buf, "GET_COOKIE") == 0) {
reply = wpa_supplicant_global_get_cookie(priv, &reply_len);
goto done;
}
if (os_strncmp(buf, "COOKIE=", 7) != 0) {
wpa_printf(MSG_DEBUG, "CTLR: No cookie in the request - "
"drop request");
return;
}
if (hexstr2bin(buf + 7, cookie, COOKIE_LEN) < 0) {
wpa_printf(MSG_DEBUG, "CTLR: Invalid cookie format in the "
"request - drop request");
return;
}
if (os_memcmp(cookie, priv->cookie, COOKIE_LEN) != 0) {
wpa_printf(MSG_DEBUG, "CTLR: Invalid cookie in the request - "
"drop request");
return;
}
pos = buf + 7 + 2 * COOKIE_LEN;
while (*pos == ' ')
pos++;
reply = wpa_supplicant_global_ctrl_iface_process(global, pos,
&reply_len);
done:
if (reply) {
sendto(sock, reply, reply_len, 0, (struct sockaddr *) &from,
fromlen);
os_free(reply);
} else if (reply_len) {
sendto(sock, "FAIL\n", 5, 0, (struct sockaddr *) &from,
fromlen);
}
}
示例12: wpa_supplicant_ctrl_iface_get_capability
static int wpa_supplicant_ctrl_iface_get_capability(
struct wpa_supplicant *wpa_s, const char *_field, char *buf,
size_t buflen)
{
struct wpa_driver_capa capa;
int res, first = 1, ret;
char *pos, *end, *strict;
char field[30];
/* Determine whether or not strict checking was requested */
os_snprintf(field, sizeof(field), "%s", _field);
field[sizeof(field) - 1] = '\0';
strict = os_strchr(field, ' ');
if (strict != NULL) {
*strict++ = '\0';
if (os_strcmp(strict, "strict") != 0)
return -1;
}
wpa_printf(MSG_DEBUG, "CTRL_IFACE: GET_CAPABILITY '%s' %s",
field, strict ? strict : "");
if (os_strcmp(field, "eap") == 0) {
return eap_get_names(buf, buflen);
}
res = wpa_drv_get_capa(wpa_s, &capa);
pos = buf;
end = pos + buflen;
if (os_strcmp(field, "pairwise") == 0) {
if (res < 0) {
if (strict)
return 0;
ret = os_snprintf(buf, buflen, "CCMP TKIP NONE");
if (ret < 0 || (size_t) ret >= buflen)
return -1;
return ret;
}
if (capa.enc & WPA_DRIVER_CAPA_ENC_CCMP) {
ret = os_snprintf(pos, end - pos, "%sCCMP",
first ? "" : " ");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
first = 0;
}
if (capa.enc & WPA_DRIVER_CAPA_ENC_TKIP) {
ret = os_snprintf(pos, end - pos, "%sTKIP",
first ? "" : " ");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
first = 0;
}
if (capa.key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_WPA_NONE) {
ret = os_snprintf(pos, end - pos, "%sNONE",
first ? "" : " ");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
first = 0;
}
return pos - buf;
}
if (os_strcmp(field, "group") == 0) {
if (res < 0) {
if (strict)
return 0;
ret = os_snprintf(buf, buflen,
"CCMP TKIP WEP104 WEP40");
if (ret < 0 || (size_t) ret >= buflen)
return -1;
return ret;
}
if (capa.enc & WPA_DRIVER_CAPA_ENC_CCMP) {
ret = os_snprintf(pos, end - pos, "%sCCMP",
first ? "" : " ");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
first = 0;
}
if (capa.enc & WPA_DRIVER_CAPA_ENC_TKIP) {
ret = os_snprintf(pos, end - pos, "%sTKIP",
first ? "" : " ");
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
first = 0;
}
//.........这里部分代码省略.........
示例13: wpa_supplicant_ctrl_iface_set_network
static int wpa_supplicant_ctrl_iface_set_network(
struct wpa_supplicant *wpa_s, char *cmd)
{
int id;
struct wpa_ssid *ssid;
char *name, *value;
/* cmd: "<network id> <variable name> <value>" */
name = os_strchr(cmd, ' ');
if (name == NULL)
return -1;
*name++ = '\0';
value = os_strchr(name, ' ');
if (value == NULL)
return -1;
*value++ = '\0';
id = atoi(cmd);
wpa_printf(MSG_DEBUG, "CTRL_IFACE: SET_NETWORK id=%d name='%s'",
id, name);
wpa_hexdump_ascii_key(MSG_DEBUG, "CTRL_IFACE: value",
(u8 *) value, os_strlen(value));
ssid = wpa_config_get_network(wpa_s->conf, id);
if (ssid == NULL) {
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Could not find network "
"id=%d", id);
return -1;
}
#ifdef ANDROID_IBSS_HACK
if (os_strcmp(name, "ssid") == 0) {
// check prefix
if ((value[0] == '"') && (os_strncmp(value+1, ANDROID_IBSS_PREFIX,
ANDROID_IBSS_PREFIX_LEN) == 0)) {
if (wpa_config_set(ssid, "mode", "1", 0) < 0) {
wpa_printf(MSG_DEBUG, "CTRL_IFACE: failed to set IBSS on '%s'",
value);
return -1;
}
value += ANDROID_IBSS_PREFIX_LEN;
value[0] = '"';
}
}
#endif
if (wpa_config_set(ssid, name, value, 0) < 0) {
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Failed to set network "
"variable '%s'", name);
return -1;
} else {
if (os_strcmp(name, "priority") == 0) {
wpa_config_update_prio_list(wpa_s->conf);
}
}
if (wpa_s->current_ssid == ssid) {
/*
* Invalidate the EAP session cache if anything in the current
* configuration changes.
*/
eapol_sm_invalidate_cached_session(wpa_s->eapol);
}
if ((os_strcmp(name, "psk") == 0 &&
value[0] == '"' && ssid->ssid_len) ||
(os_strcmp(name, "ssid") == 0 && ssid->passphrase))
wpa_config_update_psk(ssid);
return 0;
}
示例14: wpa_supplicant_ctrl_iface_status
static int wpa_supplicant_ctrl_iface_status(struct wpa_supplicant *wpa_s,
const char *params,
char *buf, size_t buflen)
{
char *pos, *end, tmp[30];
int res, verbose, ret;
verbose = os_strcmp(params, "-VERBOSE") == 0;
pos = buf;
end = buf + buflen;
if (wpa_s->wpa_state >= WPA_ASSOCIATED) {
struct wpa_ssid *ssid = wpa_s->current_ssid;
ret = os_snprintf(pos, end - pos, "bssid=" MACSTR "\n",
MAC2STR(wpa_s->bssid));
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
if (ssid) {
u8 *_ssid = ssid->ssid;
size_t ssid_len = ssid->ssid_len;
u8 ssid_buf[MAX_SSID_LEN];
if (ssid_len == 0) {
int _res = wpa_drv_get_ssid(wpa_s, ssid_buf);
if (_res < 0)
ssid_len = 0;
else
ssid_len = _res;
_ssid = ssid_buf;
}
#ifdef ANDROID_IBSS_HACK
if (ssid->mode == IEEE80211_MODE_IBSS)
ret = os_snprintf(pos, end - pos, "ssid=%s%s\nid=%d\n",
ANDROID_IBSS_PREFIX, wpa_ssid_txt(_ssid, ssid_len),
ssid->id);
else
#endif
ret = os_snprintf(pos, end - pos, "ssid=%s\nid=%d\n",
wpa_ssid_txt(_ssid, ssid_len),
ssid->id);
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
if (ssid->id_str) {
ret = os_snprintf(pos, end - pos,
"id_str=%s\n",
ssid->id_str);
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
}
}
pos += wpa_sm_get_status(wpa_s->wpa, pos, end - pos, verbose);
}
ret = os_snprintf(pos, end - pos, "wpa_state=%s\n",
wpa_supplicant_state_txt(wpa_s->wpa_state));
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
if (wpa_s->l2 &&
l2_packet_get_ip_addr(wpa_s->l2, tmp, sizeof(tmp)) >= 0) {
ret = os_snprintf(pos, end - pos, "ip_address=%s\n", tmp);
if (ret < 0 || ret >= end - pos)
return pos - buf;
pos += ret;
}
if (wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X ||
wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X_NO_WPA) {
res = eapol_sm_get_status(wpa_s->eapol, pos, end - pos,
verbose);
if (res >= 0)
pos += res;
}
res = rsn_preauth_get_status(wpa_s->wpa, pos, end - pos, verbose);
if (res >= 0)
pos += res;
return pos - buf;
}
示例15: while
/**
*
* @param params
* @param req_id
* @return
*/
int ICACHE_FLASH_ATTR dispatcher_t::wifiConnect(JVal* params, int32_t req_id)
{
// {"jsonrpc": "2.0", "method": "wifi_connect", "params": {"ssid": "MySSID", "password": "MyPaswd"}, "id": 100}
uint16_t flag = 0;
/******************************************************************************************************************
* extract data from JSON-RPC request
*
*/
const char* ssid = 0;
const char* password = 0;
m_Err->reset();
JVal* jv = params;
// extract all data
while(jv != 0) {
const char* name = jv->getName();
if(os_strcmp("ssid", name) == 0) {
DTXT("%lu dispatcher_t::wifiConnect(): ssid\n", millis());
ssid = jv->getString(m_Err);
flag |= _WIFI_SSID;
}
else if(os_strcmp("password", name) == 0) {
DTXT("%lu dispatcher_t::wifiConnect(): password\n", millis());
password = jv->getString(m_Err);
flag |= _WIFI_PSW;
}
else {
DTXT("%lu dispatcher_t::mqttConnect(): unknown = %s\n", millis(), name);
}
// check for errors
if(m_Err->isError()) {
os()->jsonRpc()->errorReply(EJSON_DECODER, req_id, "JSON decoder error; %s", m_Err->msg);
return EJSON_DECODER;
}
jv = jv->getNextElem();
}
/******************************************************************************************************************
* start connection
*
*/
int ret = EOK;
if((flag & _WIFI_SSID) == _WIFI_SSID) {
m_Wifi->connect(ssid, password);
os()->jsonRpc()->successReply(req_id, "0");
}
else {
ret = EWIFI_SSID;
os()->jsonRpc()->errorReply(ret, req_id, "no ssid specified");
}
return ret;
}