Working on nl driver... more testing.
FossilOrigin-Name: ebb74d0b26abb33cff11c8eeb3f3ba264b900f5a02b377ffc0d9c90085739fa8
This commit is contained in:
parent
f5e9417bd5
commit
e341d7ec4c
@ -94,6 +94,7 @@ OBJS += wtp_main.o
|
|||||||
OBJS += discovery.o
|
OBJS += discovery.o
|
||||||
OBJS += wtp_interface.o
|
OBJS += wtp_interface.o
|
||||||
OBJS += wtpdrv.o
|
OBJS += wtpdrv.o
|
||||||
|
OBJS += dot11.o
|
||||||
OBJS += join.o
|
OBJS += join.o
|
||||||
OBJS += run.o
|
OBJS += run.o
|
||||||
OBJS += sulking.o
|
OBJS += sulking.o
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
#ifndef __DOT11_H
|
||||||
|
#define __DOT11_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
struct dot11_mgmt_head {
|
struct dot11_mgmt_head {
|
||||||
uint16_t frame_control;
|
uint16_t frame_control;
|
||||||
uint16_t duration;
|
uint16_t duration;
|
||||||
@ -7,6 +14,13 @@ struct dot11_mgmt_head {
|
|||||||
uint16_t seq_ctrl;
|
uint16_t seq_ctrl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct dot11_mgmt_beacon{
|
||||||
|
uint8_t timestamp[8];
|
||||||
|
uint16_t beacon_int;
|
||||||
|
uint16_t capab_info;
|
||||||
|
};
|
||||||
|
|
||||||
#define ETH_ALEN 6
|
#define ETH_ALEN 6
|
||||||
/* SA Query Action frame (IEEE 802.11w/D8.0, 7.4.9) */
|
/* SA Query Action frame (IEEE 802.11w/D8.0, 7.4.9) */
|
||||||
#define WLAN_SA_QUERY_REQUEST 0
|
#define WLAN_SA_QUERY_REQUEST 0
|
||||||
@ -262,3 +276,52 @@ struct dot11_mgmt {
|
|||||||
#define WLAN_EID_IBSS_DFS 41
|
#define WLAN_EID_IBSS_DFS 41
|
||||||
/* EIDs defined by IEEE 802.11h - END */
|
/* EIDs defined by IEEE 802.11h - END */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* capability bits */
|
||||||
|
#define WLAN_CAPAB_ESS 0x001
|
||||||
|
#define WLAN_CAPAB_IBSS 0x002
|
||||||
|
#define WLAN_CAPAB_CF_POLLABLE 0x004
|
||||||
|
#define WLAN_CAPAB_CF_POLL_REQUEST 0x008
|
||||||
|
#define WLAN_CAPAB_PRIVACY 0x010
|
||||||
|
#define WLAN_CAPAB_SHORT_PREAMBLE 0x020
|
||||||
|
#define WLAN_CAPAB_PBCC 0x040
|
||||||
|
#define WLAN_CAPAB_CHANNEL_AGILITY 0x080
|
||||||
|
#define WLAN_CAPAB_SPECTRUM_MGMT BIT 0x100
|
||||||
|
#define WLAN_CAPAB_SHORT_SLOT_TIME BIT 0x200
|
||||||
|
#define WLAN_CAPAB_DSSS_OFDM 0x400
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct apdata {
|
||||||
|
int phy;
|
||||||
|
uint32_t idx;
|
||||||
|
uint8_t mac[6];
|
||||||
|
const char * ssid;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct beacon_data{
|
||||||
|
uint8_t * head;
|
||||||
|
int head_len;
|
||||||
|
uint8_t * tail;
|
||||||
|
int tail_len;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
dot11_get_beacon_data(struct apdata *ap,struct beacon_data *bd);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -56,14 +56,8 @@ typedef __le16 le16
|
|||||||
struct radioinfo radioinfos[31];
|
struct radioinfo radioinfos[31];
|
||||||
static struct nl_sock * sk;
|
static struct nl_sock * sk;
|
||||||
|
|
||||||
struct rd {
|
|
||||||
int phy;
|
|
||||||
uint32_t idx;
|
|
||||||
uint8_t mac[6];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
static struct apdata rd;
|
||||||
static struct rd rd;
|
|
||||||
|
|
||||||
|
|
||||||
struct wiphydata {
|
struct wiphydata {
|
||||||
@ -141,6 +135,10 @@ struct hostapd_freq_params {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int nlt_put_freq_params(struct nl_msg *msg,
|
static int nlt_put_freq_params(struct nl_msg *msg,
|
||||||
struct hostapd_freq_params *freq)
|
struct hostapd_freq_params *freq)
|
||||||
{
|
{
|
||||||
@ -718,6 +716,8 @@ int start_ap(struct nl_sock *sk)
|
|||||||
// NL80211_CMD_SET_BEACON, 0);
|
// NL80211_CMD_SET_BEACON, 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
struct dot11_mgmt *head = NULL;
|
struct dot11_mgmt *head = NULL;
|
||||||
|
|
||||||
head = malloc(256);
|
head = malloc(256);
|
||||||
@ -725,8 +725,8 @@ int start_ap(struct nl_sock *sk)
|
|||||||
|
|
||||||
head->frame_control = htole16 (DOT11_FTYPE_MGMT | DOT11_STYPE_BEACON) ;
|
head->frame_control = htole16 (DOT11_FTYPE_MGMT | DOT11_STYPE_BEACON) ;
|
||||||
|
|
||||||
head->duration = htons(0);
|
head->duration = htole16(0);
|
||||||
/* destination address */
|
|
||||||
memset(head->da, 0xff, sizeof(head->da));
|
memset(head->da, 0xff, sizeof(head->da));
|
||||||
memcpy (head->sa , rd.mac,6);
|
memcpy (head->sa , rd.mac,6);
|
||||||
memcpy (head->bssid , rd.mac,6);
|
memcpy (head->bssid , rd.mac,6);
|
||||||
@ -742,17 +742,28 @@ int start_ap(struct nl_sock *sk)
|
|||||||
|
|
||||||
hs += sizeof( head->u.beacon);
|
hs += sizeof( head->u.beacon);
|
||||||
printf("Head size is now %d\n",hs);
|
printf("Head size is now %d\n",hs);
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct beacon_data bd;
|
||||||
|
|
||||||
NLA_PUT(msg, NL80211_ATTR_BEACON_HEAD, hs, head);
|
const char *ssid = "HelloWorld";
|
||||||
|
|
||||||
|
struct apdata * ap = &rd;
|
||||||
|
ap->ssid=ssid;
|
||||||
|
|
||||||
|
printf("Get Beacon Data \n");
|
||||||
|
dot11_get_beacon_data(ap,&bd);
|
||||||
|
printf("Got Beaqcon Fata\n");
|
||||||
|
|
||||||
|
NLA_PUT(msg, NL80211_ATTR_BEACON_HEAD, bd.head_len, bd.head);
|
||||||
|
|
||||||
printf("Put message 1\n");
|
printf("Put message 1\n");
|
||||||
|
|
||||||
|
/*
|
||||||
tail = (uint8_t*)(head)+hs;
|
tail = (uint8_t*)(head)+hs;
|
||||||
uint8_t * pos = tail;
|
uint8_t * pos = tail;
|
||||||
printf("Put message 1 posss\n");
|
printf("Put message 1 posss\n");
|
||||||
|
|
||||||
const char *ssid = "HelloWorld";
|
|
||||||
*pos = WLAN_EID_SSID;
|
*pos = WLAN_EID_SSID;
|
||||||
pos++;
|
pos++;
|
||||||
|
|
||||||
@ -769,7 +780,7 @@ printf ("Memcoy done\n");
|
|||||||
printf ("Tail len %d\n",tl);
|
printf ("Tail len %d\n",tl);
|
||||||
|
|
||||||
NLA_PUT(msg, NL80211_ATTR_BEACON_TAIL, tl, tail);
|
NLA_PUT(msg, NL80211_ATTR_BEACON_TAIL, tl, tail);
|
||||||
|
*/
|
||||||
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, rd.idx);
|
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, rd.idx);
|
||||||
NLA_PUT_U16(msg, NL80211_ATTR_BEACON_INTERVAL, 100);
|
NLA_PUT_U16(msg, NL80211_ATTR_BEACON_INTERVAL, 100);
|
||||||
NLA_PUT_U32(msg, NL80211_ATTR_HIDDEN_SSID, NL80211_HIDDEN_SSID_NOT_IN_USE);
|
NLA_PUT_U32(msg, NL80211_ATTR_HIDDEN_SSID, NL80211_HIDDEN_SSID_NOT_IN_USE);
|
||||||
@ -916,8 +927,13 @@ int gr()
|
|||||||
|
|
||||||
del_if("wlan0");
|
del_if("wlan0");
|
||||||
make_if("wlan0");
|
make_if("wlan0");
|
||||||
|
|
||||||
|
printf("Now starting the AP\n");
|
||||||
|
|
||||||
start_ap(sk);
|
start_ap(sk);
|
||||||
|
|
||||||
|
printf("Started the AP\n");
|
||||||
|
|
||||||
sleep(1000);
|
sleep(1000);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user