about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libwifi/gen/management/beacon.c9
-rw-r--r--src/libwifi/gen/management/beacon.h9
2 files changed, 14 insertions, 4 deletions
diff --git a/src/libwifi/gen/management/beacon.c b/src/libwifi/gen/management/beacon.c index 8703205..f884c6e 100644 --- a/src/libwifi/gen/management/beacon.c +++ b/src/libwifi/gen/management/beacon.c
@@ -77,14 +77,19 @@ int libwifi_set_beacon_channel(struct libwifi_beacon *beacon, uint8_t channel) {
77 * The generated beacon frame is made with sane defaults defined in common.h. 77 * The generated beacon frame is made with sane defaults defined in common.h.
78 * Three tagged parameters are also added to the beacon: SSID, Channel and Supported Rates. 78 * Three tagged parameters are also added to the beacon: SSID, Channel and Supported Rates.
79 */ 79 */
80int libwifi_create_beacon(struct libwifi_beacon *beacon, const unsigned char receiver[6], 80int libwifi_create_beacon(struct libwifi_beacon *beacon,
81 const unsigned char transmitter[6], const char *ssid, uint8_t channel) { 81 const unsigned char receiver[6],
82 const unsigned char transmitter[6],
83 const unsigned char bssid[6],
84 const char *ssid,
85 uint8_t channel) {
82 memset(beacon, 0, sizeof(struct libwifi_beacon)); 86 memset(beacon, 0, sizeof(struct libwifi_beacon));
83 87
84 beacon->frame_header.frame_control.type = TYPE_MANAGEMENT; 88 beacon->frame_header.frame_control.type = TYPE_MANAGEMENT;
85 beacon->frame_header.frame_control.subtype = SUBTYPE_BEACON; 89 beacon->frame_header.frame_control.subtype = SUBTYPE_BEACON;
86 memcpy(&beacon->frame_header.addr1, receiver, 6); 90 memcpy(&beacon->frame_header.addr1, receiver, 6);
87 memcpy(&beacon->frame_header.addr2, transmitter, 6); 91 memcpy(&beacon->frame_header.addr2, transmitter, 6);
92 memcpy(&beacon->frame_header.addr3, bssid, 6);
88 beacon->frame_header.seq_control.sequence_number = (rand() % 4096); 93 beacon->frame_header.seq_control.sequence_number = (rand() % 4096);
89 94
90 beacon->fixed_parameters.timestamp = BYTESWAP64(libwifi_get_epoch()); 95 beacon->fixed_parameters.timestamp = BYTESWAP64(libwifi_get_epoch());
diff --git a/src/libwifi/gen/management/beacon.h b/src/libwifi/gen/management/beacon.h index 971df88..943be55 100644 --- a/src/libwifi/gen/management/beacon.h +++ b/src/libwifi/gen/management/beacon.h
@@ -51,12 +51,17 @@ size_t libwifi_get_beacon_length(struct libwifi_beacon *beacon);
51 * @param beacon A struct libwifi_beacon 51 * @param beacon A struct libwifi_beacon
52 * @param receiver The receiver MAC address, aka address 1 52 * @param receiver The receiver MAC address, aka address 1
53 * @param transmitter The source MAC address, aka address 2 53 * @param transmitter The source MAC address, aka address 2
54 * @param bssid The BSSID MAC address, aka address 3
54 * @param ssid The SSID of the beacon. Maximum length is 32 characters 55 * @param ssid The SSID of the beacon. Maximum length is 32 characters
55 * @param channel The desired channel of the beacon 56 * @param channel The desired channel of the beacon
56 * 57 *
57 */ 58 */
58int libwifi_create_beacon(struct libwifi_beacon *beacon, const unsigned char receiver[6], 59int libwifi_create_beacon(struct libwifi_beacon *beacon,
59 const unsigned char transmitter[6], const char *ssid, uint8_t channel); 60 const unsigned char receiver[6],
61 const unsigned char transmitter[6],
62 const unsigned char bssid[6],
63 const char *ssid,
64 uint8_t channel);
60 65
61/** 66/**
62 * Dump a struct libwifi_beacon into a raw format for packet injection. 67 * Dump a struct libwifi_beacon into a raw format for packet injection.