mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-25 00:38:24 -05:00
Move generic definitions away from hostapd.h
This is an initial step in trying to make hostapd.h not needed to be included in so many files.
This commit is contained in:
parent
bfddd95c9e
commit
8d06da09a4
@ -30,6 +30,7 @@
|
|||||||
#include "sta_info.h"
|
#include "sta_info.h"
|
||||||
#include "accounting.h"
|
#include "accounting.h"
|
||||||
#include "wps_hostapd.h"
|
#include "wps_hostapd.h"
|
||||||
|
#include "driver.h"
|
||||||
|
|
||||||
|
|
||||||
struct wpa_ctrl_dst {
|
struct wpa_ctrl_dst {
|
||||||
|
@ -16,6 +16,20 @@
|
|||||||
#ifndef DRIVER_H
|
#ifndef DRIVER_H
|
||||||
#define DRIVER_H
|
#define DRIVER_H
|
||||||
|
|
||||||
|
struct hostapd_data;
|
||||||
|
|
||||||
|
struct hostap_sta_driver_data {
|
||||||
|
unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes;
|
||||||
|
unsigned long current_tx_rate;
|
||||||
|
unsigned long inactive_msec;
|
||||||
|
unsigned long flags;
|
||||||
|
unsigned long num_ps_buf_frames;
|
||||||
|
unsigned long tx_retry_failed;
|
||||||
|
unsigned long tx_retry_count;
|
||||||
|
int last_rssi;
|
||||||
|
int last_ack_rssi;
|
||||||
|
};
|
||||||
|
|
||||||
struct hostapd_sta_add_params {
|
struct hostapd_sta_add_params {
|
||||||
const u8 *addr;
|
const u8 *addr;
|
||||||
u16 aid;
|
u16 aid;
|
||||||
@ -197,4 +211,7 @@ struct wpa_driver_ops {
|
|||||||
const u8 *ie, size_t len);
|
const u8 *ie, size_t len);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
|
int reassoc);
|
||||||
|
|
||||||
#endif /* DRIVER_H */
|
#endif /* DRIVER_H */
|
||||||
|
@ -529,7 +529,7 @@ static int i802_set_rts(void *priv, int rts)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
iwr.u.rts.value = rts;
|
iwr.u.rts.value = rts;
|
||||||
iwr.u.rts.fixed = 1;
|
iwr.u.rts.fixed = 1;
|
||||||
|
|
||||||
@ -548,7 +548,7 @@ static int i802_get_rts(void *priv, int *rts)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
|
|
||||||
if (ioctl(drv->ioctl_sock, SIOCGIWRTS, &iwr) < 0) {
|
if (ioctl(drv->ioctl_sock, SIOCGIWRTS, &iwr) < 0) {
|
||||||
perror("ioctl[SIOCGIWRTS]");
|
perror("ioctl[SIOCGIWRTS]");
|
||||||
@ -567,7 +567,7 @@ static int i802_set_frag(void *priv, int frag)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
iwr.u.frag.value = frag;
|
iwr.u.frag.value = frag;
|
||||||
iwr.u.frag.fixed = 1;
|
iwr.u.frag.fixed = 1;
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ static int i802_get_frag(void *priv, int *frag)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
|
|
||||||
if (ioctl(drv->ioctl_sock, SIOCGIWFRAG, &iwr) < 0) {
|
if (ioctl(drv->ioctl_sock, SIOCGIWFRAG, &iwr) < 0) {
|
||||||
perror("ioctl[SIOCGIWFRAG]");
|
perror("ioctl[SIOCGIWFRAG]");
|
||||||
@ -605,7 +605,7 @@ static int i802_set_retry(void *priv, int short_retry, int long_retry)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
|
|
||||||
iwr.u.retry.value = short_retry;
|
iwr.u.retry.value = short_retry;
|
||||||
iwr.u.retry.flags = IW_RETRY_LIMIT | IW_RETRY_MIN;
|
iwr.u.retry.flags = IW_RETRY_LIMIT | IW_RETRY_MIN;
|
||||||
@ -631,7 +631,7 @@ static int i802_get_retry(void *priv, int *short_retry, int *long_retry)
|
|||||||
struct iwreq iwr;
|
struct iwreq iwr;
|
||||||
|
|
||||||
memset(&iwr, 0, sizeof(iwr));
|
memset(&iwr, 0, sizeof(iwr));
|
||||||
os_strlcpy(iwr.ifr_name, drv->hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(iwr.ifr_name, drv->iface, IFNAMSIZ);
|
||||||
|
|
||||||
iwr.u.retry.flags = IW_RETRY_LIMIT | IW_RETRY_MIN;
|
iwr.u.retry.flags = IW_RETRY_LIMIT | IW_RETRY_MIN;
|
||||||
if (ioctl(drv->ioctl_sock, SIOCGIWRETRY, &iwr) < 0) {
|
if (ioctl(drv->ioctl_sock, SIOCGIWRETRY, &iwr) < 0) {
|
||||||
@ -1009,8 +1009,7 @@ static int nl80211_create_iface(struct i802_driver_data *drv,
|
|||||||
|
|
||||||
genlmsg_put(msg, 0, 0, genl_family_get_id(drv->nl80211), 0,
|
genlmsg_put(msg, 0, 0, genl_family_get_id(drv->nl80211), 0,
|
||||||
0, NL80211_CMD_NEW_INTERFACE, 0);
|
0, NL80211_CMD_NEW_INTERFACE, 0);
|
||||||
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX,
|
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, if_nametoindex(drv->iface));
|
||||||
if_nametoindex(drv->hapd->conf->iface));
|
|
||||||
NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, ifname);
|
NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, ifname);
|
||||||
NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, iftype);
|
NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, iftype);
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
struct wired_driver_data {
|
struct wired_driver_data {
|
||||||
struct hostapd_data *hapd;
|
struct hostapd_data *hapd;
|
||||||
|
char iface[IFNAMSIZ + 1];
|
||||||
|
|
||||||
int sock; /* raw packet socket for driver access */
|
int sock; /* raw packet socket for driver access */
|
||||||
int dhcp_sock; /* socket for dhcp packets */
|
int dhcp_sock; /* socket for dhcp packets */
|
||||||
@ -197,7 +198,7 @@ static int wired_init_sockets(struct wired_driver_data *drv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&ifr, 0, sizeof(ifr));
|
memset(&ifr, 0, sizeof(ifr));
|
||||||
os_strlcpy(ifr.ifr_name, hapd->conf->iface, sizeof(ifr.ifr_name));
|
os_strlcpy(ifr.ifr_name, drv->iface, sizeof(ifr.ifr_name));
|
||||||
if (ioctl(drv->sock, SIOCGIFINDEX, &ifr) != 0) {
|
if (ioctl(drv->sock, SIOCGIFINDEX, &ifr) != 0) {
|
||||||
perror("ioctl(SIOCGIFINDEX)");
|
perror("ioctl(SIOCGIFINDEX)");
|
||||||
return -1;
|
return -1;
|
||||||
@ -229,7 +230,7 @@ static int wired_init_sockets(struct wired_driver_data *drv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&ifr, 0, sizeof(ifr));
|
memset(&ifr, 0, sizeof(ifr));
|
||||||
os_strlcpy(ifr.ifr_name, hapd->conf->iface, sizeof(ifr.ifr_name));
|
os_strlcpy(ifr.ifr_name, drv->iface, sizeof(ifr.ifr_name));
|
||||||
if (ioctl(drv->sock, SIOCGIFHWADDR, &ifr) != 0) {
|
if (ioctl(drv->sock, SIOCGIFHWADDR, &ifr) != 0) {
|
||||||
perror("ioctl(SIOCGIFHWADDR)");
|
perror("ioctl(SIOCGIFHWADDR)");
|
||||||
return -1;
|
return -1;
|
||||||
@ -271,7 +272,7 @@ static int wired_init_sockets(struct wired_driver_data *drv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&ifr, 0, sizeof(ifr));
|
memset(&ifr, 0, sizeof(ifr));
|
||||||
os_strlcpy(ifr.ifr_ifrn.ifrn_name, hapd->conf->iface, IFNAMSIZ);
|
os_strlcpy(ifr.ifr_ifrn.ifrn_name, drv->iface, IFNAMSIZ);
|
||||||
if (setsockopt(drv->dhcp_sock, SOL_SOCKET, SO_BINDTODEVICE,
|
if (setsockopt(drv->dhcp_sock, SOL_SOCKET, SO_BINDTODEVICE,
|
||||||
(char *) &ifr, sizeof(ifr)) < 0) {
|
(char *) &ifr, sizeof(ifr)) < 0) {
|
||||||
perror("setsockopt[SOL_SOCKET,SO_BINDTODEVICE]");
|
perror("setsockopt[SOL_SOCKET,SO_BINDTODEVICE]");
|
||||||
@ -339,6 +340,7 @@ static void * wired_driver_init(struct hostapd_data *hapd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
drv->hapd = hapd;
|
drv->hapd = hapd;
|
||||||
|
os_strlcpy(drv->iface, hapd->conf->iface, sizeof(drv->iface));
|
||||||
drv->use_pae_group_addr = hapd->conf->use_pae_group_addr;
|
drv->use_pae_group_addr = hapd->conf->use_pae_group_addr;
|
||||||
|
|
||||||
if (wired_init_sockets(drv)) {
|
if (wired_init_sockets(drv)) {
|
||||||
|
@ -19,84 +19,11 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "ap.h"
|
#include "ap.h"
|
||||||
|
#include "hostapd_defs.h"
|
||||||
#ifndef ETH_ALEN
|
|
||||||
#define ETH_ALEN 6
|
|
||||||
#endif
|
|
||||||
#ifndef IFNAMSIZ
|
|
||||||
#define IFNAMSIZ 16
|
|
||||||
#endif
|
|
||||||
#ifndef ETH_P_ALL
|
|
||||||
#define ETH_P_ALL 0x0003
|
|
||||||
#endif
|
|
||||||
#ifndef ETH_P_PAE
|
|
||||||
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
|
||||||
#endif /* ETH_P_PAE */
|
|
||||||
#ifndef ETH_P_EAPOL
|
|
||||||
#define ETH_P_EAPOL ETH_P_PAE
|
|
||||||
#endif /* ETH_P_EAPOL */
|
|
||||||
|
|
||||||
#ifndef ETH_P_RRB
|
|
||||||
#define ETH_P_RRB 0x890D
|
|
||||||
#endif /* ETH_P_RRB */
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
#endif /* _MSC_VER */
|
|
||||||
|
|
||||||
#define MAX_VLAN_ID 4094
|
|
||||||
|
|
||||||
struct ieee8023_hdr {
|
|
||||||
u8 dest[6];
|
|
||||||
u8 src[6];
|
|
||||||
u16 ethertype;
|
|
||||||
} STRUCT_PACKED;
|
|
||||||
|
|
||||||
|
|
||||||
struct ieee80211_hdr {
|
|
||||||
le16 frame_control;
|
|
||||||
le16 duration_id;
|
|
||||||
u8 addr1[6];
|
|
||||||
u8 addr2[6];
|
|
||||||
u8 addr3[6];
|
|
||||||
le16 seq_ctrl;
|
|
||||||
/* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame
|
|
||||||
*/
|
|
||||||
} STRUCT_PACKED;
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma pack(pop)
|
|
||||||
#endif /* _MSC_VER */
|
|
||||||
|
|
||||||
#define IEEE80211_DA_FROMDS addr1
|
|
||||||
#define IEEE80211_BSSID_FROMDS addr2
|
|
||||||
#define IEEE80211_SA_FROMDS addr3
|
|
||||||
|
|
||||||
#define IEEE80211_HDRLEN (sizeof(struct ieee80211_hdr))
|
|
||||||
|
|
||||||
#define IEEE80211_FC(type, stype) host_to_le16((type << 2) | (stype << 4))
|
|
||||||
|
|
||||||
/* MTU to be set for the wlan#ap device; this is mainly needed for IEEE 802.1X
|
|
||||||
* frames that might be longer than normal default MTU and they are not
|
|
||||||
* fragmented */
|
|
||||||
#define HOSTAPD_MTU 2290
|
|
||||||
|
|
||||||
extern unsigned char rfc1042_header[6];
|
extern unsigned char rfc1042_header[6];
|
||||||
|
|
||||||
struct hostap_sta_driver_data {
|
|
||||||
unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes;
|
|
||||||
unsigned long current_tx_rate;
|
|
||||||
unsigned long inactive_msec;
|
|
||||||
unsigned long flags;
|
|
||||||
unsigned long num_ps_buf_frames;
|
|
||||||
unsigned long tx_retry_failed;
|
|
||||||
unsigned long tx_retry_count;
|
|
||||||
int last_rssi;
|
|
||||||
int last_ack_rssi;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct wpa_driver_ops;
|
struct wpa_driver_ops;
|
||||||
struct wpa_ctrl_dst;
|
struct wpa_ctrl_dst;
|
||||||
struct radius_server_data;
|
struct radius_server_data;
|
||||||
@ -228,8 +155,6 @@ struct hostapd_iface {
|
|||||||
#endif /* CONFIG_IEEE80211N */
|
#endif /* CONFIG_IEEE80211N */
|
||||||
};
|
};
|
||||||
|
|
||||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
|
||||||
int reassoc);
|
|
||||||
int hostapd_reload_config(struct hostapd_iface *iface);
|
int hostapd_reload_config(struct hostapd_iface *iface);
|
||||||
|
|
||||||
#endif /* HOSTAPD_H */
|
#endif /* HOSTAPD_H */
|
||||||
|
80
hostapd/hostapd_defs.h
Normal file
80
hostapd/hostapd_defs.h
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* hostapd / Initialization and configuration
|
||||||
|
* Host AP kernel driver
|
||||||
|
* Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* Alternatively, this software may be distributed under the terms of BSD
|
||||||
|
* license.
|
||||||
|
*
|
||||||
|
* See README and COPYING for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HOSTAPD_DEFS_H
|
||||||
|
#define HOSTAPD_DEFS_H
|
||||||
|
|
||||||
|
#ifndef ETH_ALEN
|
||||||
|
#define ETH_ALEN 6
|
||||||
|
#endif
|
||||||
|
#ifndef IFNAMSIZ
|
||||||
|
#define IFNAMSIZ 16
|
||||||
|
#endif
|
||||||
|
#ifndef ETH_P_ALL
|
||||||
|
#define ETH_P_ALL 0x0003
|
||||||
|
#endif
|
||||||
|
#ifndef ETH_P_PAE
|
||||||
|
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
||||||
|
#endif /* ETH_P_PAE */
|
||||||
|
#ifndef ETH_P_EAPOL
|
||||||
|
#define ETH_P_EAPOL ETH_P_PAE
|
||||||
|
#endif /* ETH_P_EAPOL */
|
||||||
|
|
||||||
|
#ifndef ETH_P_RRB
|
||||||
|
#define ETH_P_RRB 0x890D
|
||||||
|
#endif /* ETH_P_RRB */
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
#endif /* _MSC_VER */
|
||||||
|
|
||||||
|
#define MAX_VLAN_ID 4094
|
||||||
|
|
||||||
|
struct ieee8023_hdr {
|
||||||
|
u8 dest[6];
|
||||||
|
u8 src[6];
|
||||||
|
u16 ethertype;
|
||||||
|
} STRUCT_PACKED;
|
||||||
|
|
||||||
|
|
||||||
|
struct ieee80211_hdr {
|
||||||
|
le16 frame_control;
|
||||||
|
le16 duration_id;
|
||||||
|
u8 addr1[6];
|
||||||
|
u8 addr2[6];
|
||||||
|
u8 addr3[6];
|
||||||
|
le16 seq_ctrl;
|
||||||
|
/* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame
|
||||||
|
*/
|
||||||
|
} STRUCT_PACKED;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(pop)
|
||||||
|
#endif /* _MSC_VER */
|
||||||
|
|
||||||
|
#define IEEE80211_DA_FROMDS addr1
|
||||||
|
#define IEEE80211_BSSID_FROMDS addr2
|
||||||
|
#define IEEE80211_SA_FROMDS addr3
|
||||||
|
|
||||||
|
#define IEEE80211_HDRLEN (sizeof(struct ieee80211_hdr))
|
||||||
|
|
||||||
|
#define IEEE80211_FC(type, stype) host_to_le16((type << 2) | (stype << 4))
|
||||||
|
|
||||||
|
/* MTU to be set for the wlan#ap device; this is mainly needed for IEEE 802.1X
|
||||||
|
* frames that might be longer than normal default MTU and they are not
|
||||||
|
* fragmented */
|
||||||
|
#define HOSTAPD_MTU 2290
|
||||||
|
|
||||||
|
#endif /* HOSTAPD_DEFS_H */
|
Loading…
Reference in New Issue
Block a user