#include <netlink/genl/genl.h>
#include <netlink/genl/family.h>
#include <netlink/genl/ctrl.h>
+#include <netpacket/packet.h>
+#include <linux/filter.h>
#include "nl80211_copy.h"
#include "common.h"
-#include "driver.h"
-#include "eloop.h"
-#include "common/ieee802_11_defs.h"
-
-#if defined(CONFIG_AP) || defined(HOSTAPD)
-#include <netpacket/packet.h>
-#include <linux/filter.h>
#include "radiotap.h"
#include "radiotap_iter.h"
-#endif /* CONFIG_AP || HOSTAPD */
+#include "eloop.h"
+#include "common/ieee802_11_defs.h"
+#include "driver.h"
#ifdef CONFIG_LIBNL20
/* libnl 2.0 compatibility code */
wpa_driver_nl80211_finish_drv_init(struct wpa_driver_nl80211_data *drv);
static int wpa_driver_nl80211_mlme(struct wpa_driver_nl80211_data *drv,
const u8 *addr, int cmd, u16 reason_code);
-
-#if defined(CONFIG_AP) || defined(HOSTAPD)
static void nl80211_remove_monitor_interface(
struct wpa_driver_nl80211_data *drv);
-#endif /* CONFIG_AP || HOSTAPD */
-
-#ifdef CONFIG_AP
-static void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv,
- int ifidx);
-#endif /* CONFIG_AP */
#ifdef HOSTAPD
static void add_ifidx(struct wpa_driver_nl80211_data *drv, int ifidx);
static void del_ifidx(struct wpa_driver_nl80211_data *drv, int ifidx);
static struct i802_bss * get_bss(struct wpa_driver_nl80211_data *drv,
int ifindex);
-static void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv,
- int ifidx);
static int i802_set_freq(void *priv, struct hostapd_freq_params *freq);
#endif /* HOSTAPD */
}
-#ifndef HOSTAPD
-
static void wpa_driver_nl80211_event_link(struct wpa_driver_nl80211_data *drv,
void *ctx, char *buf, size_t len,
int del)
}
}
-#endif /* HOSTAPD */
-
static void mlme_event_auth(struct wpa_driver_nl80211_data *drv,
const u8 *frame, size_t len)
static int wpa_driver_nl80211_init_link_events(
struct wpa_driver_nl80211_data *drv)
{
-#ifdef HOSTAPD
- return 0;
-#else /* HOSTAPD */
int s;
struct sockaddr_nl local;
drv->link_event_sock = s;
return 0;
-#endif /* HOSTAPD */
}
#endif /* HOSTAPD */
-#if defined(CONFIG_AP) || defined(HOSTAPD)
static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
{
struct nl_msg *msg;
nla_put_failure:
return -ENOBUFS;
}
-#endif /* CONFIG_AP || HOSTAPD */
/**
{
struct wpa_driver_nl80211_data *drv = priv;
-#if defined(CONFIG_AP) || defined(HOSTAPD)
nl80211_remove_monitor_interface(drv);
if (drv->monitor_sock >= 0) {
eloop_unregister_read_sock(drv->monitor_sock);
if (drv->nlmode == NL80211_IFTYPE_AP)
wpa_driver_nl80211_del_beacon(drv);
-#endif /* CONFIG_AP || HOSTAPD */
#ifdef HOSTAPD
if (drv->last_freq_ht) {
os_free(drv->if_indices);
wpa_driver_nl80211_free_bss(drv);
-#else /* HOSTAPD */
+#endif /* HOSTAPD */
wpa_driver_nl80211_send_oper_ifla(priv, 0, IF_OPER_UP);
eloop_unregister_read_sock(drv->link_event_sock);
close(drv->link_event_sock);
}
-#endif /* HOSTAPD */
eloop_cancel_timeout(wpa_driver_nl80211_scan_timeout, drv, drv->ctx);
}
-#if defined(CONFIG_AP) || defined(HOSTAPD)
-
struct phy_info_arg {
u16 *num_modes;
struct hostapd_hw_modes *modes;
return wpa_driver_nl80211_send_frame(drv, data, data_len, encrypt);
}
-#endif /* CONFIG_AP || HOSTAPD */
-
static int wpa_driver_nl80211_set_beacon(const char *ifname, void *priv,
const u8 *head, size_t head_len,
}
-#if defined(CONFIG_AP) || defined(HOSTAPD)
-
static int wpa_driver_nl80211_set_freq(struct wpa_driver_nl80211_data *drv,
int freq, int ht_enabled,
int sec_channel_offset)
return -ENOBUFS;
}
-#endif /* CONFIG_AP || HOSTAPD */
-
static void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv,
int ifidx)
#endif /* CONFIG_AP */
-#if defined(CONFIG_AP) || defined(HOSTAPD)
static void handle_tx_callback(void *ctx, u8 *buf, size_t len, int ok)
{
ok ? "ACK" : "fail");
#ifdef HOSTAPD
hostapd_mgmt_tx_cb(ctx, buf, len, stype, ok);
-#else /* HOSTAPD */
+#elif CONFIG_AP
ap_mgmt_tx_cb(ctx, buf, len, stype, ok);
-#endif /* HOSTAPD */
+#endif
break;
case WLAN_FC_TYPE_CTRL:
wpa_printf(MSG_DEBUG, "CTRL (TX callback) %s",
case WLAN_FC_TYPE_DATA:
#ifdef HOSTAPD
hostapd_tx_status(ctx, hdr->addr1, buf, len, ok);
-#else /* HOSTAPD */
+#elif CONFIG_AP
ap_tx_status(ctx, hdr->addr1, buf, len, ok);
-#endif /* HOSTAPD */
+#endif
break;
default:
wpa_printf(MSG_DEBUG, "unknown TX callback frame type %d",
{
#ifdef HOSTAPD
hostapd_rx_from_unknown_sta(drv->ctx, hdr, len);
-#else /* HOSTAPD */
+#elif CONFIG_AP
ap_rx_from_unknown_sta(drv->ctx, hdr, len);
-#endif /* HOSTAPD */
+#endif
}
wpa_printf(MSG_MSGDUMP, "MGMT");
#ifdef HOSTAPD
hostapd_mgmt_rx(drv->ctx, buf, len, stype, hfi);
-#else /* HOSTAPD */
+#elif CONFIG_AP
ap_mgmt_rx(drv->ctx, buf, len, stype, hfi);
-#endif /* HOSTAPD */
+#endif
break;
case WLAN_FC_TYPE_CTRL:
/* can only get here with PS-Poll frames */
return -ENOBUFS;
}
-#endif /* CONFIG_AP || HOSTAPD */
-
-#ifdef CONFIG_AP
static int wpa_driver_nl80211_ap(struct wpa_driver_nl80211_data *drv,
struct wpa_driver_associate_params *params)
return 0;
}
-#endif /* CONFIG_AP */
static int nl80211_leave_ibss(struct wpa_driver_nl80211_data *drv)
int ret = -1;
struct nl_msg *msg;
-#ifdef CONFIG_AP
if (params->mode == IEEE80211_MODE_AP)
return wpa_driver_nl80211_ap(drv, params);
-#endif /* CONFIG_AP */
if (params->mode == IEEE80211_MODE_IBSS)
return wpa_driver_nl80211_ibss(drv, params);
drv->nlmode = nlmode;
done:
-#if defined(CONFIG_AP) || defined(HOSTAPD)
if (!ret && nlmode == NL80211_IFTYPE_AP) {
/* Setup additional AP mode functionality if needed */
if (drv->monitor_ifidx < 0 &&
/* Remove additional AP mode functionality */
nl80211_remove_monitor_interface(drv);
}
-#endif /* CONFIG_AP || HOSTAPD */
return ret;
}
.set_beacon = wpa_driver_nl80211_set_beacon,
.if_add = wpa_driver_nl80211_if_add,
.if_remove = wpa_driver_nl80211_if_remove,
-#if defined(CONFIG_AP) || defined(HOSTAPD)
.send_mlme = wpa_driver_nl80211_send_mlme,
.get_hw_feature_data = wpa_driver_nl80211_get_hw_feature_data,
.sta_add = wpa_driver_nl80211_sta_add,
.sta_remove = wpa_driver_nl80211_sta_remove,
.hapd_send_eapol = wpa_driver_nl80211_hapd_send_eapol,
.sta_set_flags = wpa_driver_nl80211_sta_set_flags,
-#endif /* CONFIG_AP || HOSTAPD */
#ifdef HOSTAPD
.hapd_init = i802_init,
.hapd_deinit = i802_deinit,