IF(TIZEN_WLAN_CONCURRENT_ENABLE)
ADD_DEFINITIONS(-DTIZEN_WLAN_CONCURRENT_ENABLE)
ENDIF(TIZEN_WLAN_CONCURRENT_ENABLE)
+IF(TIZEN_FEATURE_IP_OVER_EAPOL)
+ ADD_DEFINITIONS(-DTIZEN_FEATURE_IP_OVER_EAPOL)
+ENDIF(TIZEN_FEATURE_IP_OVER_EAPOL)
IF(TIZEN_ARCH_64)
ADD_DEFINITIONS(-DTIZEN_ARCH_64)
typedef enum {
WFD_IP_TYPE_DYNAMIC = 0x0,
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
WFD_IP_TYPE_OVER_EAPOL = 0x1,
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
} wfd_ip_type_e;
#ifdef TIZEN_FEATURE_WIFI_DISPLAY
int wfd_util_wifi_direct_activatable();
#if 0
int wfd_util_get_wifi_direct_state();
-unsigned int wfd_util_static_ip_convert_order(unsigned int net_ip);
#endif
int wfd_util_set_wifi_direct_state(int state);
int wfd_util_get_local_dev_mac(unsigned char *dev_mac);
int wfd_util_dhcpc_stop();
int wfd_util_dhcpc_get_ip(char *ifname, unsigned char *ip_addr, int is_IPv6);
int wfd_util_dhcpc_get_server_ip(unsigned char* ip_addr);
-int wfd_util_get_local_ip(unsigned char* ip_addr);
-
-#ifdef CTRL_IFACE_DBUS
+int wfd_util_local_get_ip(char *ifname, unsigned char *ip_addr, int is_IPv6);
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+int wfd_util_ip_over_eap_assign(wfd_device_s *peer, const char *ifname);
#ifdef TIZEN_WLAN_BOARD_SPRD
int wfd_util_static_ip_unset(const char *ifname);
#endif /* TIZEN_WLAN_BOARD_SPRD */
-/*TODO: ODROID Image does not have support libnl-2.0*/
-int wfd_util_ip_over_eap_assign(wfd_device_s *peer, const char *ifname);
-int wfd_util_ip_over_eap_lease(wfd_device_s *peer);
-#endif /* CTRL_IFACE_DBUS */
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
#endif /* __WIFI_DIRECT_UTIL_H__ */
#include <stdio.h>
#include <glib.h>
+
#include "wifi-direct-oem.h"
int wfd_oem_init(wfd_oem_ops_s *ops, wfd_oem_event_cb event_callback, void *user_data)
return ops->generate_pin(pin);
}
+
int wfd_oem_get_supported_wps_mode(wfd_oem_ops_s *ops, int *wps_mode)
{
if (!ops || !ops->get_supported_wps_mode) {
#define OEM_QUERY_ID_LEN 15
#define OEM_SERVICE_MAX_LEN 1024
+#define OEM_MAX_PEER_NUM 8
+
typedef enum {
WFD_OEM_SC_SUCCESS = 0,
WFD_OEM_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE = 1,
int freq;
char pass[OEM_PASS_PHRASE_LEN+1];
unsigned char go_dev_addr[OEM_MACADDR_LEN];
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
unsigned char ip_addr[OEM_IPADDR_LEN];
unsigned char ip_addr_mask[OEM_IPADDR_LEN];
unsigned char ip_addr_go[OEM_IPADDR_LEN];
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
} wfd_oem_group_data_s;
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
int event_id;
unsigned char dev_addr[OEM_MACADDR_LEN]; // device address
unsigned char intf_addr[OEM_MACADDR_LEN];
- unsigned char ip_addr_peer[OEM_IPADDR_LEN];
int wps_mode;
char wps_pin[OEM_PINSTR_LEN+1]; // just for DISPLAY
char ifname[OEM_IFACE_NAME_LEN+1];
int dev_role;
+ unsigned char ip_addr_peer[OEM_IPADDR_LEN];
int edata_type;
void *edata;
} wfd_oem_event_s;
-DTIZEN_WLAN_CONCURRENT_ENABLE=1 \
-DTIZEN_FEATURE_WIFI_DISPLAY=1 \
-DTIZEN_FEATURE_DEFAULT_CONNECTION_AGENT=0 \
+ -DTIZEN_FEATURE_IP_OVER_EAPOL=1 \
-DCTRL_IFACE_DBUS=1 \
-DTIZEN_MOBILE=1 \
%else
-DTIZEN_FEATURE_SERVICE_DISCOVERY=1 \
-DTIZEN_WLAN_CONCURRENT_ENABLE=0 \
-DTIZEN_FEATURE_WIFI_DISPLAY=1 \
+ -DTIZEN_FEATURE_IP_OVER_EAPOL=1 \
-DCTRL_IFACE_DBUS=1 \
-DTIZEN_WIFI_MODULE_BUNDLE=0 \
-DTIZEN_TV=1 \
#define DEFAULT_NO_GROUP_IFACE 1
#endif
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
#define DEFAULT_IP_GO "\xc0\xa8\x31\x01"
#define DEFAULT_IP_MASK "\xff\xff\xff\x00"
#define DEFAULT_IP_START "\xc0\xa8\x31\x33"
#define DEFAULT_IP_END "\xc0\xa8\x31\x64"
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
#define WS_POLL_TIMEOUT 5000
#define WS_CONN_RETRY_COUNT 10
return;
}
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
wfd_oem_group_data_s *group = (wfd_oem_group_data_s *)event->edata;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
#if defined (TIZEN_DEBUG_DBUS_VALUE)
CHECK_KEY_VALUE(key, value);
#endif /* TIZEN_DEBUG_DBUS_VALUE */
event->dev_role = WFD_OEM_DEV_ROLE_GO;
else if (!strncmp(role, "client", 6))
event->dev_role = WFD_OEM_DEV_ROLE_GC;
-
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
} else if (g_strcmp0(key, "IpAddr") == 0) {
if (__ws_unpack_ay(group->ip_addr, value, OEM_IPADDR_LEN))
if (__ws_unpack_ay(group->ip_addr_go, value, OEM_IPADDR_LEN))
WDP_LOGD("GO IP address [" IPSTR "]", IP2STR(group->ip_addr_go));
-
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
} else if (g_strcmp0(key, "group_object") == 0) {
static char group_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
const char *g_path;
static unsigned char peer_dev[WS_MACSTR_LEN] = {'\0',};
const char *path = NULL;
char *loc = NULL;
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
int i = 0;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
g_variant_get(parameter, "(&oay)", &path, &iter);
g_strlcpy(peer_path, path, DBUS_OBJECT_PATH_MAX);
__ws_mac_compact_to_normal(loc + 1, peer_dev);
__ws_txt_to_mac(peer_dev, dev_addr);
WDP_LOGD("peer mac [" MACSTR "]", MAC2STR(dev_addr));
-
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
for(i = 0; i < OEM_IPADDR_LEN; i++)
g_variant_iter_loop (iter, "y", &ip_addr[i]);
WDP_LOGD("peer ip [" IPSTR "]", IP2STR(ip_addr));
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
__WDP_LOG_FUNC_EXIT__;
return;
dbus_method_param_s params;
const char *primary_device_type = PRIMARY_DEVICE_TYPE;
+
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
const char *ip_addr_go = DEFAULT_IP_GO;
const char *ip_addr_mask = DEFAULT_IP_MASK;
const char *ip_addr_start = DEFAULT_IP_START;
const char *ip_addr_end = DEFAULT_IP_END;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
int i = 0;
int res = 0;
g_variant_builder_add (builder, "{sv}", "PrimaryDeviceType",
g_variant_new ("ay", type_builder));
g_variant_builder_unref (type_builder);
-
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
type_builder = g_variant_builder_new (G_VARIANT_TYPE ("ay"));
for(i = 0; i < OEM_IPADDR_LEN; i++)
g_variant_builder_add(type_builder, "y", ip_addr_go[i]);
g_variant_builder_add (builder, "{sv}", "IpAddrEnd",
g_variant_new ("ay", type_builder));
g_variant_builder_unref (type_builder);
-
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
value = g_variant_new ("a{sv}", builder);
g_variant_builder_unref (builder);
--- /dev/null
+/*
+ * Network Configuration Module
+ *
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/**
+ * This file declares wifi direct wpasupplicant plugin functions and structures.
+ *
+ * @file wfd-plugin-log.h
+ * @author Gibyoung Kim (lastkgb.kim@samsung.com)
+ * @version 0.7
+ */
+
+#ifndef __WFD_PLUGIN_LOG_H_
+#define __WFD_PLUGIN_LOG_H_
+
+#ifdef USE_DLOG
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "WIFI_DIRECT_PLUGIN"
+
+#define WDP_LOGV(format, args...) LOGV(format, ##args)
+#define WDP_LOGD(format, args...) LOGD(format, ##args)
+#define WDP_LOGI(format, args...) LOGI(format, ##args)
+#define WDP_LOGW(format, args...) LOGW(format, ##args)
+#define WDP_LOGE(format, args...) LOGE(format, ##args)
+#define WDP_LOGF(format, args...) LOGF(format, ##args)
+
+#define __WDP_LOG_FUNC_ENTER__ LOGD("Enter")
+#define __WDP_LOG_FUNC_EXIT__ LOGD("Quit")
+
+#define WDP_SECLOGI(format, args...) SECURE_LOG(LOG_INFO, LOG_TAG, format, ##args)
+#define WDP_SECLOGD(format, args...) SECURE_LOG(LOG_DEBUG, LOG_TAG, format, ##args)
+
+#else /* USE_DLOG */
+
+#define WDP_LOGV(format, args...)
+#define WDP_LOGD(format, args...)
+#define WDP_LOGI(format, args...)
+#define WDP_LOGW(format, args...)
+#define WDP_LOGE(format, args...)
+#define WDP_LOGF(format, args...)
+
+#define __WDP_LOG_FUNC_ENTER__
+#define __WDP_LOG_FUNC_EXIT__
+
+#define WDP_SECLOGI(format, args...)
+#define WDP_SECLOGD(format, args...)
+
+#endif /* USE_DLOG */
+
+#endif /* __WFD_PLUGIN_LOG_H_ */
#define __WFD_PLUGIN_WPASUPPLICANT_H__
-#ifdef USE_DLOG
-#include <dlog.h>
-
-#undef LOG_TAG
-#define LOG_TAG "WIFI_DIRECT_PLUGIN"
-
-#define WDP_LOGV(format, args...) LOGV(format, ##args)
-#define WDP_LOGD(format, args...) LOGD(format, ##args)
-#define WDP_LOGI(format, args...) LOGI(format, ##args)
-#define WDP_LOGW(format, args...) LOGW(format, ##args)
-#define WDP_LOGE(format, args...) LOGE(format, ##args)
-#define WDP_LOGF(format, args...) LOGF(format, ##args)
-
-#define __WDP_LOG_FUNC_ENTER__ LOGD("Enter")
-#define __WDP_LOG_FUNC_EXIT__ LOGD("Quit")
-
-#define WDP_SECLOGI(format, args...) SECURE_LOG(LOG_INFO, LOG_TAG, format, ##args)
-#define WDP_SECLOGD(format, args...) SECURE_LOG(LOG_DEBUG, LOG_TAG, format, ##args)
-
-#else /* USE_DLOG */
-
-#define WDP_LOGV(format, args...)
-#define WDP_LOGD(format, args...)
-#define WDP_LOGI(format, args...)
-#define WDP_LOGW(format, args...)
-#define WDP_LOGE(format, args...)
-#define WDP_LOGF(format, args...)
-
-#define __WDP_LOG_FUNC_ENTER__
-#define __WDP_LOG_FUNC_EXIT__
-
-#define WDP_SECLOGI(format, args...)
-#define WDP_SECLOGD(format, args...)
-
-#endif /* USE_DLOG */
-
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
#define IP2STR(a) (a)[0], (a)[1], (a)[2], (a)[3]
#define IPSTR "%d.%d.%d.%d"
#define MAC2SECSTR(a) (a)[0], (a)[4], (a)[5]
#define MACSECSTR "%02x:%02x:%02x"
+#define ISZEROMACADDR(a) !(a[0] | a[1] | a[2] | a[3] | a[4] | a[5])
#define IP2SECSTR(a) (a)[0], (a)[3]
#define IPSECSTR "%d..%d"
#define GROUP_IFACE_PREFIX "p2p"
#endif
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+#define DEFAULT_IP_GO "192.168.49.1"
+#define DEFAULT_IP_MASK "255.255.255.0"
+#define DEFAULT_IP_START "192.168.49.51"
+#define DEFAULT_IP_END "192.168.49.100"
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+
#define WS_POLL_TIMEOUT 5000
#define WS_CONN_RETRY_COUNT 10
#define WS_PINSTR_LEN 8
#define WS_NETFLAG_LEN 32
#define WS_MAX_PERSISTENT_COUNT 20
#define WS_SCAN_RETRY_COUNT 10
+#define WS_IP_LEN 4
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
#ifdef TIZEN_FEATURE_WIFI_DISPLAY
#define WS_WFD_INFO_PRIMARY_SINK 0x01
#define WS_WFD_INFO_SECONDARY_SINK 0x02
-#define WS_WFD_INFO_AVAILABILITY 0x10
+#define WS_WFD_INFO_AVAILABLITY 0x10
#define WS_WFD_INFO_WSD_SUPPORT 0x40
#define WS_WFD_INFO_TDLS_SUPPORT 0x80
#define WS_WFD_INFO_HDCP_SUPPORT 0x100
WS_GROUP_INFO_PASS, // passphrase=
WS_GROUP_INFO_GO_DEV_ADDR, // go_dev_addr=
WS_GROUP_INFO_STATUS, // status=
-
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ WS_GROUP_INFO_IP_ADDR, //ip_addr=
+ WS_GROUP_INFO_IP_MASK, //ip_mask=
+ WS_GROUP_INFO_GO_IP_ADDR, //go_ip_addr=
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
WS_GROUP_INFO_LIMIT,
} ws_group_info_id_e;
#include <errno.h>
#include <sys/ioctl.h>
#include <net/if.h>
+#include <arpa/inet.h>
#include <glib.h>
#include <gio/gio.h>
#include "wifi-direct-oem.h"
+#include "wfd-plugin-log.h"
#include "wfd-plugin-wpasupplicant.h"
#define NETCONFIG_SERVICE "net.netconfig"
{"passphrase", WS_GROUP_INFO_PASS},
{"go_dev_addr", WS_GROUP_INFO_GO_DEV_ADDR},
{"status", WS_GROUP_INFO_STATUS},
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ {"ip_addr", WS_GROUP_INFO_IP_ADDR},
+ {"ip_mask", WS_GROUP_INFO_IP_MASK},
+ {"go_ip_addr", WS_GROUP_INFO_GO_IP_ADDR},
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
{"", WS_GROUP_INFO_LIMIT},
};
if (wfd_info & WS_WFD_INFO_SECONDARY_SINK)
display->type |= WS_WFD_INFO_SECONDARY_SINK;
- display->availability = (wfd_info & WS_WFD_INFO_AVAILABILITY) >> 4;
+ display->availability = (wfd_info & WS_WFD_INFO_AVAILABLITY) >> 4;
display->hdcp_support = (wfd_info & WS_WFD_INFO_HDCP_SUPPORT) >> 8;
strncpy(ctrl_port_msg, msg+4, 4);
int info_cnt = 0;
ws_string_s infos[WS_GROUP_INFO_LIMIT];
wfd_oem_group_data_s *edata = NULL;
- int res = 0;
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ unsigned int addr = 0;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+ int res = 0;
if (!msg) {
WDP_LOGE("Invalid parameter");
return NULL;
if (res < 0)
memset(edata->go_dev_addr, 0x00, OEM_MACADDR_LEN);
break;
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ case WS_GROUP_INFO_IP_ADDR:
+ WDP_LOGD("Extracted peer ip = %s", infos[i].string);
+ res = inet_aton(infos[i].string, (struct in_addr *)&addr);
+ if(res == 1)
+ memcpy(&(edata->ip_addr), &addr, sizeof(edata->ip_addr));
+ break;
+ case WS_GROUP_INFO_IP_MASK:
+ WDP_LOGD("Extracted ip mask= %s", infos[i].string);
+ res = inet_aton(infos[i].string, (struct in_addr *)&addr);
+ if(res == 1)
+ memcpy(&(edata->ip_addr_mask), &addr, sizeof(edata->ip_addr_mask));
+ break;
+ case WS_GROUP_INFO_GO_IP_ADDR:
+ WDP_LOGD("Extracted peer go ip = %s", infos[i].string);
+ res = inet_aton(infos[i].string, (struct in_addr *)&addr);
+ if(res == 1)
+ memcpy(&(edata->ip_addr_go), &addr, sizeof(edata->ip_addr_go));
+ break;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
default:
WDP_LOGE("Unknown parameter [%d:%s]", infos[i].index, infos[i].string);
break;
/* Interface address of connected peer will come up */
_ws_txt_to_mac(info_str, data->intf_addr);
- char *temp_mac = NULL;
- res = _extract_value_str(info_str, "p2p_dev_addr", &temp_mac);
+ char *temp = NULL;
+ res = _extract_value_str(info_str, "p2p_dev_addr", &temp);
if (res < 0) {
WDP_LOGE("Failed to extract interface address");
break;
}
- _ws_txt_to_mac(temp_mac, data->dev_addr);
- if (temp_mac)
- g_free(temp_mac);
+ _ws_txt_to_mac(temp, data->dev_addr);
+ if (temp)
+ free(temp);
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ res = _extract_value_str(info_str, "ip_addr", &temp);
+ if(res > 0 && temp) {
+ unsigned int addr = 0;
+ WDP_LOGD("Extracted peer ip = %s", temp);
+ res = inet_aton(temp, (struct in_addr *)&addr);
+ if(res == 1)
+ memcpy(&(data->ip_addr_peer), &addr, sizeof(data->ip_addr_peer));
+ }
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
data->edata_type = WFD_OEM_EDATA_TYPE_NONE;
}
break;
return 1;
}
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+int _ws_set_default_eapol_over_ip()
+{
+ __WDP_LOG_FUNC_ENTER__;
+
+ ws_sock_data_s *sock = g_pd->common;
+ char cmd[80] = {0, };
+ char reply[1024]={0,};
+ int res;
+
+ if (!sock) {
+ WDP_LOGE("Socket is NULL");
+ return -1;
+ }
+
+ g_snprintf(cmd, sizeof(cmd), WS_CMD_SET "ip_addr_go %s",
+ DEFAULT_IP_GO);
+
+ res = _ws_send_cmd(sock->ctrl_sock, cmd, (char*) reply, sizeof(reply));
+ if (res < 0) {
+ WDP_LOGE("Failed to send command to wpa_supplicant");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ if (strstr(reply, "FAIL")) {
+ WDP_LOGE("Failed to set go intent");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ g_snprintf(cmd, sizeof(cmd), WS_CMD_SET "ip_addr_mask %s",
+ DEFAULT_IP_MASK);
+
+ res = _ws_send_cmd(sock->ctrl_sock, cmd, (char*) reply, sizeof(reply));
+ if (res < 0) {
+ WDP_LOGE("Failed to send command to wpa_supplicant");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ if (strstr(reply, "FAIL")) {
+ WDP_LOGE("Failed to set go intent");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ g_snprintf(cmd, sizeof(cmd), WS_CMD_SET "ip_addr_start %s",
+ DEFAULT_IP_START);
+
+ res = _ws_send_cmd(sock->ctrl_sock, cmd, (char*) reply, sizeof(reply));
+ if (res < 0) {
+ WDP_LOGE("Failed to send command to wpa_supplicant");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ if (strstr(reply, "FAIL")) {
+ WDP_LOGE("Failed to set go intent");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ g_snprintf(cmd, sizeof(cmd), WS_CMD_SET "ip_addr_end %s",
+ DEFAULT_IP_END);
+
+ res = _ws_send_cmd(sock->ctrl_sock, cmd, (char*) reply, sizeof(reply));
+ if (res < 0) {
+ WDP_LOGE("Failed to send command to wpa_supplicant");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ if (strstr(reply, "FAIL")) {
+ WDP_LOGE("Failed to set go intent");
+ __WDP_LOG_FUNC_EXIT__;
+ return -1;
+ }
+ WDP_LOGD("Succeeded to set default EAPol over IP");
+
+ __WDP_LOG_FUNC_EXIT__;
+ return 0;
+}
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+
int ws_activate(int concurrent)
{
__WDP_LOG_FUNC_ENTER__;
g_pd->activated = TRUE;
_ws_update_local_dev_addr();
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ _ws_set_default_eapol_over_ip();
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
__WDP_LOG_FUNC_EXIT__;
return 0;
break;
}
- unsigned char ip_addr[IPADDR_LEN] = {0,};
-
- res = wfd_util_get_local_ip(ip_addr);
+ res = wfd_local_get_ip_addr(rsp.param2);
if (res < 0) {
WDS_LOGE("Failed to get local IP address");
rsp.result = WIFI_DIRECT_ERROR_OPERATION_FAILED;
}
- g_snprintf(rsp.param2, IPSTR_LEN, IPSTR, IP2STR(ip_addr));
- WDS_LOGI("IP addr : [%s]", rsp.param2);
break;
case WIFI_DIRECT_CMD_GET_GO_INTENT: // manager (sync)
res = wfd_manager_get_go_intent(&rsp.param1);
return G_SOURCE_REMOVE;
}
- static void __wfd_process_deactivated(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
+static void __wfd_process_deactivated(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
__WDS_LOG_FUNC_ENTER__;
wifi_direct_client_noti_s noti;
wfd_util_stop_wifi_direct_popup();
#endif /* TIZEN_FEATURE_DEFAULT_CONNECTION_AGENT */
__WDS_LOG_FUNC_EXIT__;
- return;
- }
+ return;
+}
- static void __wfd_process_peer_found(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_peer_found(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_oem_dev_data_s *edata = NULL;
wifi_direct_client_noti_s noti;
}
__WDS_LOG_FUNC_EXIT__;
- return;
- }
+ return;
+}
- static void __wfd_process_peer_disappeared(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
+static void __wfd_process_peer_disappeared(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
__WDS_LOG_FUNC_ENTER__;
wifi_direct_client_noti_s noti;
__WDS_LOG_FUNC_EXIT__;
return;
- }
+}
- static void __wfd_process_discovery_finished(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
+static void __wfd_process_discovery_finished(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
__WDS_LOG_FUNC_ENTER__;
wifi_direct_client_noti_s noti;
noti.error = WIFI_DIRECT_ERROR_NONE;
wfd_client_send_event(manager, ¬i);
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_prov_disc_req(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
+static void __wfd_process_prov_disc_req(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
__WDS_LOG_FUNC_ENTER__;
- wfd_device_s *peer = NULL;
+ wfd_device_s *peer = NULL;
int res = 0;
if (event == NULL || manager == NULL) {
if (res < 0)
WDS_LOGE("Failed to process event of session");
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_prov_disc_resp(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
+static void __wfd_process_prov_disc_resp(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
__WDS_LOG_FUNC_ENTER__;
wfd_device_s *peer = NULL;
if (res < 0)
WDS_LOGE("Failed to process event of session");
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_prov_disc_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_prov_disc_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
wifi_direct_client_noti_s noti;
wfd_oem_start_scan(manager->oem_ops, ¶m);
manager->scan_mode = WFD_SCAN_MODE_ACTIVE;
#endif
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_go_neg_req(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_go_neg_req(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
wifi_direct_client_noti_s noti;
#ifdef CTRL_IFACE_DBUS
wfd_oem_dev_data_s *edata = NULL;
+ int res = 0;
edata = (wfd_oem_dev_data_s*) event->edata;
if (!edata || event->edata_type != WFD_OEM_EDATA_TYPE_DEVICE) {
return;
}
- if (_wfd_event_update_peer(manager, edata) < 0) {
+ res = _wfd_event_update_peer(manager, edata);
+ if (res < 0) {
WDS_LOGE("Failed to update peer data");
__WDS_LOG_FUNC_EXIT__;
return;
} else {
wfd_session_process_event(manager, event);
}
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
static void __wfd_process_go_neg_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
{
- __WDS_LOG_FUNC_ENTER__;
+ __WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
wfd_oem_conn_data_s *edata = NULL;
WDS_LOGE("Invalid p2p connection data");
__WDS_LOG_FUNC_EXIT__;
return;
- }
+ }
if (edata->status < 0 && session->connecting_120) {
if (session->retry_gsrc) {
wfd_destroy_group(manager, GROUP_IFNAME);
wfd_destroy_session(manager);
manager->local->dev_role = WFD_DEV_ROLE_NONE;
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
-
- static void __wfd_process_go_neg_done(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_go_neg_done(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
#ifdef CTRL_IFACE_DBUS
wfd_session_s *session = NULL;
manager->local->dev_role = event->dev_role;
wfd_session_process_event(manager, event);
#endif /* CTRL_IFACE_DBUS */
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_wps_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_wps_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
wifi_direct_client_noti_s noti;
wfd_oem_start_scan(manager->oem_ops, ¶m);
manager->scan_mode = WFD_SCAN_MODE_ACTIVE;
#endif
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
static void __wfd_process_wps_done(wfd_manager_s *manager, wfd_oem_event_s *event)
{
wfd_session_process_event(manager, event);
__WDS_LOG_FUNC_EXIT__;
- return;
+ return;
}
- static void __wfd_process_key_neg_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_key_neg_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
wifi_direct_client_noti_s noti;
wfd_oem_start_scan(manager->oem_ops, ¶m);
manager->scan_mode = WFD_SCAN_MODE_ACTIVE;
#endif
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_key_neg_done(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_key_neg_done(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_conn_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_conn_fail(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_conn_done(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_conn_done(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_group_created(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_group_created(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_group_s *group = NULL;
wfd_session_s *session = NULL;
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
if (group->role == WFD_DEV_ROLE_GC && session) {
-#ifdef CTRL_IFACE_DBUS
- if(session->peer && session->peer->ip_type == WFD_IP_TYPE_OVER_EAPOL)
- wfd_util_ip_over_eap_assign(session->peer, event->ifname);
-#else /* CTRL_IFACE_DBUS */
- wfd_destroy_session(manager);
-#endif /* CTRL_IFACE_DBUS */
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ wfd_device_s *peer = session->peer;
+ if(peer == NULL) {
+ WDS_LOGE("Unexpected event. Peer doesn't exist");
+ return;
+ }
+
+ wfd_update_peer(manager, peer);
+
+ if(peer->ip_type == WFD_IP_TYPE_OVER_EAPOL) {
+
+ wfd_util_ip_over_eap_assign(peer, event->ifname);
+
+ noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP;
+ noti.error = WIFI_DIRECT_ERROR_NONE;
+ snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
+ wfd_client_send_event(manager, ¬i);
+
+ wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTED);
+ wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTED);
+
+ wfd_destroy_session(manager);
+ }
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
wfd_peer_clear_all(manager);
} else {
if (group->flags & WFD_GROUP_FLAG_AUTONOMOUS) {
wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_GROUP_OWNER);
}
}
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
-
- static void __wfd_process_group_destroyed(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_group_destroyed(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wifi_direct_client_noti_s noti;
wfd_destroy_session(manager);
manager->local->dev_role = WFD_DEV_ROLE_NONE;
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_invitation_req(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_invitation_req(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_device_s *peer = NULL;
wfd_session_s *session = NULL;
snprintf(noti.param1, sizeof(noti.param1), MACSTR, MAC2STR(event->dev_addr));
wfd_client_send_event(manager, ¬i);
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_invitation_res(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_invitation_res(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
__WDS_LOG_FUNC_EXIT__;
- return;
- }
+ return;
+}
- static void __wfd_process_sta_connected(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_sta_connected(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
- wfd_session_s *session = NULL;
- wfd_device_s *peer = NULL;
- wfd_group_s *group = NULL;
- wifi_direct_client_noti_s noti;
+ wfd_session_s *session = NULL;
+ wfd_device_s *peer = NULL;
+ wfd_group_s *group = NULL;
+ wifi_direct_client_noti_s noti;
if (event == NULL || manager == NULL) {
WDS_LOGE("Invalid parameter");
wfd_client_send_event(manager, ¬i);
#ifdef CTRL_IFACE_DBUS
wfd_update_peer(manager, peer);
+#endif /* CTRL_IFACE_DBUS */
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
if (event->ip_addr_peer[3]) {
peer->ip_type = WFD_IP_TYPE_OVER_EAPOL;
memcpy(peer->client_ip_addr, event->ip_addr_peer, IPADDR_LEN);
memcpy(peer->go_ip_addr, manager->local->ip_addr, IPADDR_LEN);
WDS_LOGE("Peer's GO IP [" IPSTR "]", IP2STR((char*) &peer->go_ip_addr));
}
- if(peer->ip_type == WFD_IP_TYPE_OVER_EAPOL)
- wfd_util_ip_over_eap_lease(peer);
- else
-#endif /* CTRL_IFACE_DBUS */
+ if(peer->ip_type == WFD_IP_TYPE_OVER_EAPOL) {
+ memcpy(peer->ip_addr, peer->client_ip_addr, IPADDR_LEN);
+
+ wifi_direct_client_noti_s noti;
+ memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
+ noti.event = WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND;
+ noti.error = WIFI_DIRECT_ERROR_NONE;
+ snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
+ snprintf(noti.param2, IPSTR_LEN, IPSTR, IP2STR(peer->ip_addr));
+ wfd_client_send_event(manager, ¬i);
+ } else
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
wfd_util_dhcps_wait_ip_leased(peer);
wfd_destroy_session(manager);
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_sta_disconnected(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_sta_disconnected(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wfd_group_s *group = NULL;
wfd_device_s *peer = NULL;
static void __wfd_process_terminating(wfd_manager_s *manager, wfd_oem_event_s *event)
{
- __WDS_LOG_FUNC_ENTER__;
+ __WDS_LOG_FUNC_ENTER__;
- __WDS_LOG_FUNC_EXIT__;
- return;
+ __WDS_LOG_FUNC_EXIT__;
+ return;
}
+
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
- static void __wfd_process_serv_disc_resp(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_serv_disc_resp(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
wifi_direct_client_noti_s noti;
wfd_client_send_event(manager, ¬i);
}
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
- static void __wfd_process_serv_disc_started(wfd_manager_s *manager, wfd_oem_event_s *event)
- {
- __WDS_LOG_FUNC_ENTER__;
+static void __wfd_process_serv_disc_started(wfd_manager_s *manager, wfd_oem_event_s *event)
+{
+ __WDS_LOG_FUNC_ENTER__;
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
#endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
static struct {
wfd_util_dhcps_start();
WDS_LOGD("Role is Group Owner. DHCP Server started");
} else {
-#ifdef CTRL_IFACE_DBUS
+ if(!peer) {
+ WDS_LOGE("Peer is not in the session");
+ return -1;
+ }
WDS_LOGD("Role is Group Client.complete session and add peer to member");
- if (peer) {
- memcpy(peer->intf_addr, group->go_dev_addr, MACADDR_LEN);
- wfd_group_add_member(group, peer->dev_addr);
- session->state = SESSION_STATE_COMPLETED;
- /* memcpy(peer->intf_addr, event->intf_addr, MACADDR_LEN); */
- peer->state = WFD_PEER_STATE_CONNECTED;
- if(edata->ip_addr[3] && edata->ip_addr_go[3]) {
- peer->ip_type = WFD_IP_TYPE_OVER_EAPOL;
- memcpy(peer->client_ip_addr, edata->ip_addr, IPADDR_LEN);
- WDS_LOGE("Peer's client IP [" IPSTR "]", IP2STR((char*) &peer->client_ip_addr));
- memcpy(peer->go_ip_addr, edata->ip_addr_go, IPADDR_LEN);
- WDS_LOGE("Peer's GO IP [" IPSTR "]", IP2STR((char*) &peer->go_ip_addr));
- }
+ memcpy(peer->intf_addr, group->go_dev_addr, MACADDR_LEN);
+ wfd_group_add_member(group, peer->dev_addr);
+ session->state = SESSION_STATE_COMPLETED;
+ /* memcpy(peer->intf_addr, event->intf_addr, MACADDR_LEN); */
+ peer->state = WFD_PEER_STATE_CONNECTED;
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ if(edata->ip_addr[3] && edata->ip_addr_go[3]) {
+ peer->ip_type = WFD_IP_TYPE_OVER_EAPOL;
+ memcpy(peer->client_ip_addr, edata->ip_addr, IPADDR_LEN);
+ WDS_LOGE("Peer's client IP [" IPSTR "]", IP2STR((char*) &peer->client_ip_addr));
+ memcpy(peer->go_ip_addr, edata->ip_addr_go, IPADDR_LEN);
+ WDS_LOGE("Peer's GO IP [" IPSTR "]", IP2STR((char*) &peer->go_ip_addr));
}
- if(peer && peer->ip_type != WFD_IP_TYPE_OVER_EAPOL)
-#endif /* CTRL_IFACE_DBUS */
+ if(peer->ip_type != WFD_IP_TYPE_OVER_EAPOL)
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
wfd_util_dhcpc_start(peer);
}
#include <glib.h>
#include <glib-object.h>
+
#include <wifi-direct.h>
#include "wifi-direct-ipc.h"
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
+
#include <glib.h>
+
#include <wifi-direct.h>
#include "wifi-direct-ipc.h"
#include "wifi-direct-session.h"
#endif /* CTRL_IFACE_DBUS */
-#ifdef CTRL_IFACE_DBUS
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
#include <linux/unistd.h>
#include <asm/types.h>
#include <linux/netlink.h>
#include <netlink/netlink.h>
#include <netlink/socket.h>
#include <netlink/route/neighbour.h>
-#endif /* CTRL_IFACE_DBUS */
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+
+#define TIZEN_P2P_GO_IPADDR "192.168.49.1"
+#define MAX_SIZE_ERROR_BUFFER 256
static int _txt_to_mac(char *txt, unsigned char *mac)
{
const char *path = "/usr/bin/wifi-direct-dhcp.sh";
char *const args[] = { "/usr/bin/wifi-direct-dhcp.sh", "server", NULL };
char *const envs[] = { NULL };
+ wfd_manager_s *manager = wfd_get_manager();
vconf_set_int(VCONFKEY_DHCPS_IP_LEASE, 0);
WDS_LOGD("Successfully started wifi-direct-dhcp.sh server");
+ _txt_to_ip(TIZEN_P2P_GO_IPADDR, manager->local->ip_addr);
+
__WDS_LOG_FUNC_EXIT__;
return 0;
}
return 0;
}
-int wfd_util_get_local_ip(unsigned char* ip_addr)
-{
- __WDS_LOG_FUNC_ENTER__;
- char* get_str = NULL;
- int count = 0;
-
- if (!ip_addr) {
- WDS_LOGE("Invalid parameter");
- __WDS_LOG_FUNC_EXIT__;
- return -1;
- }
-
- while(count < 10) {
- get_str = vconf_get_str(VCONFKEY_LOCAL_IP);
- if (!get_str) {
- WDS_LOGE("Failed to get vconf value[%s]", VCONFKEY_LOCAL_IP);
- __WDS_LOG_FUNC_EXIT__;
- return -1;
- }
-
- if(strcmp(get_str, ZEROIP) == 0) {
- WDS_LOGE("Failed to get vconf value[%s]", VCONFKEY_LOCAL_IP);
- g_free(get_str);
- __WDS_LOG_FUNC_EXIT__;
- return -1;
- }
-
- WDS_LOGD("VCONFKEY_DHCPC_SERVER_IP(%s) : %s\n", VCONFKEY_LOCAL_IP, get_str);
- _txt_to_ip(get_str, ip_addr);
- g_free(get_str);
- if (*ip_addr)
- break;
- count++;
- }
-
- __WDS_LOG_FUNC_EXIT__;
- return 0;
-}
-
-#ifdef CTRL_IFACE_DBUS
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
static int _wfd_util_set_vconf_for_static_ip(const char *ifname, char *static_ip)
{
__WDS_LOG_FUNC_ENTER__;
return res;
}
-#ifdef TIZEN_VENDOR_ATH
+int wfd_util_ip_over_eap_assign(wfd_device_s *peer, const char *ifname)
+{
+ __WDS_LOG_FUNC_ENTER__;
+
+ char ip_str[IPSTR_LEN] = {0, };
+
+ if (!peer) {
+ WDS_LOGE("Invalid paramater");
+ return -1;
+ }
+
+ _wfd_util_static_ip_set(ifname, peer->client_ip_addr);
+ memcpy(peer->ip_addr, peer->go_ip_addr, IPADDR_LEN);
+
+ g_snprintf(ip_str, IPSTR_LEN, IPSTR, IP2STR(peer->ip_addr));
+ _connect_remote_device(ip_str);
+
+ __WDS_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+#ifdef TIZEN_WLAN_BOARD_SPRD
int wfd_util_static_ip_unset(const char *ifname)
{
__WDS_LOG_FUNC_ENTER__;
return -1;
}
- res = wfd_util_dhcpc_get_ip(ifname, ip_addr, 0);
+ res = wfd_util_dhcpc_get_ip((char *)ifname, ip_addr, 0);
if (res < 0) {
WDS_LOGE("Failed to get local IP for interface %s", ifname);
__WDS_LOG_FUNC_EXIT__;
__WDS_LOG_FUNC_EXIT__;
return res;
}
-#endif /* TIZEN_VENDOR_ATH */
-
-int wfd_util_ip_over_eap_assign(wfd_device_s *peer, const char *ifname)
-{
- __WDS_LOG_FUNC_ENTER__;
- wfd_manager_s *manager = wfd_get_manager();
- char ip_str[IPSTR_LEN] = {0, };
- if (!peer) {
- WDS_LOGE("Invalid paramater");
- return -1;
- }
-
- _wfd_util_static_ip_set(ifname, peer->client_ip_addr);
- memcpy(peer->ip_addr, peer->go_ip_addr, IPADDR_LEN);
-
- wfd_destroy_session(manager);
-
- g_snprintf(ip_str, IPSTR_LEN, IPSTR, IP2STR(peer->ip_addr));
- _connect_remote_device(ip_str);
-
- wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTED);
- wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTED);
-
- wifi_direct_client_noti_s noti;
- memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
- noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP;
- noti.error = WIFI_DIRECT_ERROR_NONE;
- snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- wfd_client_send_event(manager, ¬i);
-
- __WDS_LOG_FUNC_EXIT__;
- return 0;
-}
-
-int wfd_util_ip_over_eap_lease(wfd_device_s *peer)
-{
- __WDS_LOG_FUNC_ENTER__;
- wfd_manager_s *manager = wfd_get_manager();
- wfd_group_s *group = (wfd_group_s*)manager->group;
-
- if (!peer || !group) {
- WDS_LOGE("Invalid paramater");
- return -1;
- }
-
- memcpy(peer->ip_addr, peer->client_ip_addr, IPADDR_LEN);
-
- wifi_direct_client_noti_s noti;
- memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
- noti.event = WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND;
- noti.error = WIFI_DIRECT_ERROR_NONE;
- snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- snprintf(noti.param2, IPSTR_LEN, IPSTR, IP2STR(peer->ip_addr));
- wfd_client_send_event(manager, ¬i);
-
- __WDS_LOG_FUNC_EXIT__;
- return 0;
-}
-#endif /* CTRL_IFACE_DBUS */
+#endif /* TIZEN_WLAN_BOARD_SPRD */
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */