2 * hostapd - Driver operations
3 * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
12 enum wpa_driver_if_type
;
13 struct wpa_bss_params
;
14 struct wpa_driver_scan_params
;
15 struct ieee80211_ht_capabilities
;
17 u32
hostapd_sta_flags_to_drv(u32 flags
);
18 int hostapd_build_ap_extra_ies(struct hostapd_data
*hapd
,
19 struct wpabuf
**beacon
,
20 struct wpabuf
**proberesp
,
21 struct wpabuf
**assocresp
);
22 void hostapd_free_ap_extra_ies(struct hostapd_data
*hapd
, struct wpabuf
*beacon
,
23 struct wpabuf
*proberesp
,
24 struct wpabuf
*assocresp
);
25 int hostapd_set_ap_wps_ie(struct hostapd_data
*hapd
);
26 int hostapd_set_authorized(struct hostapd_data
*hapd
,
27 struct sta_info
*sta
, int authorized
);
28 int hostapd_set_sta_flags(struct hostapd_data
*hapd
, struct sta_info
*sta
);
29 int hostapd_set_drv_ieee8021x(struct hostapd_data
*hapd
, const char *ifname
,
31 int hostapd_vlan_if_add(struct hostapd_data
*hapd
, const char *ifname
);
32 int hostapd_vlan_if_remove(struct hostapd_data
*hapd
, const char *ifname
);
33 int hostapd_set_wds_sta(struct hostapd_data
*hapd
, const u8
*addr
, int aid
,
35 int hostapd_sta_add(struct hostapd_data
*hapd
,
36 const u8
*addr
, u16 aid
, u16 capability
,
37 const u8
*supp_rates
, size_t supp_rates_len
,
39 const struct ieee80211_ht_capabilities
*ht_capab
,
40 u32 flags
, u8 qosinfo
);
41 int hostapd_set_privacy(struct hostapd_data
*hapd
, int enabled
);
42 int hostapd_set_generic_elem(struct hostapd_data
*hapd
, const u8
*elem
,
44 int hostapd_get_ssid(struct hostapd_data
*hapd
, u8
*buf
, size_t len
);
45 int hostapd_set_ssid(struct hostapd_data
*hapd
, const u8
*buf
, size_t len
);
46 int hostapd_if_add(struct hostapd_data
*hapd
, enum wpa_driver_if_type type
,
47 const char *ifname
, const u8
*addr
, void *bss_ctx
,
48 void **drv_priv
, char *force_ifname
, u8
*if_addr
,
50 int hostapd_if_remove(struct hostapd_data
*hapd
, enum wpa_driver_if_type type
,
52 int hostapd_set_ieee8021x(struct hostapd_data
*hapd
,
53 struct wpa_bss_params
*params
);
54 int hostapd_get_seqnum(const char *ifname
, struct hostapd_data
*hapd
,
55 const u8
*addr
, int idx
, u8
*seq
);
56 int hostapd_flush(struct hostapd_data
*hapd
);
57 int hostapd_set_freq(struct hostapd_data
*hapd
, int mode
, int freq
,
58 int channel
, int ht_enabled
, int sec_channel_offset
);
59 int hostapd_set_rts(struct hostapd_data
*hapd
, int rts
);
60 int hostapd_set_frag(struct hostapd_data
*hapd
, int frag
);
61 int hostapd_sta_set_flags(struct hostapd_data
*hapd
, u8
*addr
,
62 int total_flags
, int flags_or
, int flags_and
);
63 int hostapd_set_country(struct hostapd_data
*hapd
, const char *country
);
64 int hostapd_set_tx_queue_params(struct hostapd_data
*hapd
, int queue
, int aifs
,
65 int cw_min
, int cw_max
, int burst_time
);
66 struct hostapd_hw_modes
*
67 hostapd_get_hw_feature_data(struct hostapd_data
*hapd
, u16
*num_modes
,
69 int hostapd_driver_commit(struct hostapd_data
*hapd
);
70 int hostapd_drv_none(struct hostapd_data
*hapd
);
71 int hostapd_driver_scan(struct hostapd_data
*hapd
,
72 struct wpa_driver_scan_params
*params
);
73 struct wpa_scan_results
* hostapd_driver_get_scan_results(
74 struct hostapd_data
*hapd
);
75 int hostapd_driver_set_noa(struct hostapd_data
*hapd
, u8 count
, int start
,
77 int hostapd_drv_set_key(const char *ifname
,
78 struct hostapd_data
*hapd
,
79 enum wpa_alg alg
, const u8
*addr
,
80 int key_idx
, int set_tx
,
81 const u8
*seq
, size_t seq_len
,
82 const u8
*key
, size_t key_len
);
83 int hostapd_drv_send_mlme(struct hostapd_data
*hapd
,
84 const void *msg
, size_t len
, int noack
);
85 int hostapd_drv_sta_deauth(struct hostapd_data
*hapd
,
86 const u8
*addr
, int reason
);
87 int hostapd_drv_sta_disassoc(struct hostapd_data
*hapd
,
88 const u8
*addr
, int reason
);
89 int hostapd_add_sta_node(struct hostapd_data
*hapd
, const u8
*addr
,
91 int hostapd_sta_auth(struct hostapd_data
*hapd
, const u8
*addr
,
92 u16 seq
, u16 status
, const u8
*ie
, size_t len
);
93 int hostapd_sta_assoc(struct hostapd_data
*hapd
, const u8
*addr
,
94 int reassoc
, u16 status
, const u8
*ie
, size_t len
);
95 int hostapd_add_tspec(struct hostapd_data
*hapd
, const u8
*addr
,
96 u8
*tspec_ie
, size_t tspec_ielen
);
99 #include "drivers/driver.h"
101 static inline int hostapd_drv_set_countermeasures(struct hostapd_data
*hapd
,
104 if (hapd
->driver
== NULL
||
105 hapd
->driver
->hapd_set_countermeasures
== NULL
)
107 return hapd
->driver
->hapd_set_countermeasures(hapd
->drv_priv
, enabled
);
110 static inline int hostapd_drv_set_sta_vlan(const char *ifname
,
111 struct hostapd_data
*hapd
,
112 const u8
*addr
, int vlan_id
)
114 if (hapd
->driver
== NULL
|| hapd
->driver
->set_sta_vlan
== NULL
)
116 return hapd
->driver
->set_sta_vlan(hapd
->drv_priv
, addr
, ifname
,
120 static inline int hostapd_drv_get_inact_sec(struct hostapd_data
*hapd
,
123 if (hapd
->driver
== NULL
|| hapd
->driver
->get_inact_sec
== NULL
)
125 return hapd
->driver
->get_inact_sec(hapd
->drv_priv
, addr
);
128 static inline int hostapd_drv_sta_remove(struct hostapd_data
*hapd
,
131 if (hapd
->driver
== NULL
|| hapd
->driver
->sta_remove
== NULL
)
133 return hapd
->driver
->sta_remove(hapd
->drv_priv
, addr
);
136 static inline int hostapd_drv_hapd_send_eapol(struct hostapd_data
*hapd
,
137 const u8
*addr
, const u8
*data
,
138 size_t data_len
, int encrypt
,
141 if (hapd
->driver
== NULL
|| hapd
->driver
->hapd_send_eapol
== NULL
)
143 return hapd
->driver
->hapd_send_eapol(hapd
->drv_priv
, addr
, data
,
145 hapd
->own_addr
, flags
);
148 static inline int hostapd_drv_read_sta_data(
149 struct hostapd_data
*hapd
, struct hostap_sta_driver_data
*data
,
152 if (hapd
->driver
== NULL
|| hapd
->driver
->read_sta_data
== NULL
)
154 return hapd
->driver
->read_sta_data(hapd
->drv_priv
, data
, addr
);
157 static inline int hostapd_drv_sta_clear_stats(struct hostapd_data
*hapd
,
160 if (hapd
->driver
== NULL
|| hapd
->driver
->sta_clear_stats
== NULL
)
162 return hapd
->driver
->sta_clear_stats(hapd
->drv_priv
, addr
);
165 static inline int hostapd_drv_set_ap(struct hostapd_data
*hapd
,
166 struct wpa_driver_ap_params
*params
)
168 if (hapd
->driver
== NULL
|| hapd
->driver
->set_ap
== NULL
)
170 return hapd
->driver
->set_ap(hapd
->drv_priv
, params
);
173 static inline int hostapd_drv_set_radius_acl_auth(struct hostapd_data
*hapd
,
174 const u8
*mac
, int accepted
,
177 if (hapd
->driver
== NULL
|| hapd
->driver
->set_radius_acl_auth
== NULL
)
179 return hapd
->driver
->set_radius_acl_auth(hapd
->drv_priv
, mac
, accepted
,
183 static inline int hostapd_drv_set_radius_acl_expire(struct hostapd_data
*hapd
,
186 if (hapd
->driver
== NULL
||
187 hapd
->driver
->set_radius_acl_expire
== NULL
)
189 return hapd
->driver
->set_radius_acl_expire(hapd
->drv_priv
, mac
);
192 static inline int hostapd_drv_set_authmode(struct hostapd_data
*hapd
,
195 if (hapd
->driver
== NULL
|| hapd
->driver
->set_authmode
== NULL
)
197 return hapd
->driver
->set_authmode(hapd
->drv_priv
, auth_algs
);
200 static inline void hostapd_drv_poll_client(struct hostapd_data
*hapd
,
201 const u8
*own_addr
, const u8
*addr
,
204 if (hapd
->driver
== NULL
|| hapd
->driver
->poll_client
== NULL
)
206 hapd
->driver
->poll_client(hapd
->drv_priv
, own_addr
, addr
, qos
);
209 #endif /* AP_DRV_OPS */