about summary refs log tree commit diff stats
path: root/test/src
diff options
context:
space:
mode:
Diffstat (limited to 'test/src')
-rw-r--r--test/src/beacon_tests.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/test/src/beacon_tests.c b/test/src/beacon_tests.c index 1c4e17e..d152d5e 100644 --- a/test/src/beacon_tests.c +++ b/test/src/beacon_tests.c
@@ -9,6 +9,18 @@
9const unsigned char to[] = TO_MAC; 9const unsigned char to[] = TO_MAC;
10const unsigned char bcast[] = BCAST_MAC; 10const unsigned char bcast[] = BCAST_MAC;
11 11
12const unsigned char beacon[] = "\x00\x00\x18\x00\x8e\x58\x00\x00\x10\x02\x6c\x09\xa0\x00\x54\x00" \
13 "\x00\x2b\x00\x00\x9f\x61\xc9\x5c\x80\x00\x00\x00\xff\xff\xff\xff" \
14 "\xff\xff\x00\x0c\x41\x82\xb2\x55\x00\x0c\x41\x82\xb2\x55\x50\xf8" \
15 "\x89\xf1\xd4\x1b\x01\x00\x00\x00\x64\x00\x11\x04\x00\x07\x43\x6f" \
16 "\x68\x65\x72\x65\x72\x01\x08\x82\x84\x8b\x96\x24\x30\x48\x6c\x03" \
17 "\x01\x01\x05\x04\x00\x01\x00\x00\x2a\x01\x02\x2f\x01\x02\x30\x18" \
18 "\x01\x00\x00\x0f\xac\x02\x02\x00\x00\x0f\xac\x04\x00\x0f\xac\x02" \
19 "\x01\x00\x00\x0f\xac\x02\x00\x00\x32\x04\x0c\x12\x18\x60\xdd\x06" \
20 "\x00\x10\x18\x02\x00\x04\xdd\x1c\x00\x50\xf2\x01\x01\x00\x00\x50" \
21 "\xf2\x02\x02\x00\x00\x50\xf2\x04\x00\x50\xf2\x02\x01\x00\x00\x50" \
22 "\xf2\x02\x00\x00\x9f\x61\xc9\x5c";
23
12int test_beacon_gen_full() { 24int test_beacon_gen_full() {
13 struct libwifi_beacon beacon = {0}; 25 struct libwifi_beacon beacon = {0};
14 26
@@ -48,7 +60,10 @@ int test_beacon_add_tag() {
48 return ret; 60 return ret;
49 } 61 }
50 62
51 ret = libwifi_quick_add_tag(&beacon.tags, TAG_VENDOR_SPECIFIC, (const unsigned char *) "\x00\x11\x22\xAAHello World", 15); 63 ret = libwifi_quick_add_tag(&beacon.tags,
64 TAG_VENDOR_SPECIFIC,
65 (const unsigned char *) "\x00\x11\x22\xAAHello World",
66 15);
52 if (ret != 0) { 67 if (ret != 0) {
53 fprintf(stderr, "Failed to add beacon tagged parameter: %s\n", strerror(ret)); 68 fprintf(stderr, "Failed to add beacon tagged parameter: %s\n", strerror(ret));
54 return ret; 69 return ret;
@@ -75,6 +90,38 @@ int test_beacon_add_tag() {
75 return 0; 90 return 0;
76} 91}
77 92
93int test_beacon_parse() {
94 struct libwifi_frame frame = {0};
95 struct libwifi_bss bss = {0};
96
97 int ret = libwifi_get_wifi_frame(&frame, beacon, sizeof(beacon), 1);
98 if (ret != 0) {
99 return ret;
100 }
101
102 if (frame.frame_control.type != TYPE_MANAGEMENT || frame.frame_control.subtype != SUBTYPE_BEACON) {
103 return -1;
104 }
105
106 ret = libwifi_parse_beacon(&bss, &frame);
107 if (ret != 0) {
108 return ret;
109 }
110
111 if (strcmp(bss.ssid, "Coherer") != 0) {
112 return -2;
113 }
114
115 if (bss.channel != 1) {
116 return -3;
117 }
118
119 libwifi_free_bss(&bss);
120 libwifi_free_wifi_frame(&frame);
121
122 return 0;
123}
124
78int main(int argc, char **argv) { 125int main(int argc, char **argv) {
79 if (argc < 2) { 126 if (argc < 2) {
80 printf("Specify test\n"); 127 printf("Specify test\n");
@@ -85,6 +132,8 @@ int main(int argc, char **argv) {
85 return test_beacon_gen_full(); 132 return test_beacon_gen_full();
86 } else if (strcmp(argv[1], "--beacon-gen-tags") == 0) { 133 } else if (strcmp(argv[1], "--beacon-gen-tags") == 0) {
87 return test_beacon_add_tag(); 134 return test_beacon_add_tag();
135 } else if (strcmp(argv[1], "--beacon-parse") == 0) {
136 return test_beacon_parse();
88 } 137 }
89 138
90 return -1; 139 return -1;