1 1.1 christos /* 2 1.1 christos * WPA Supplicant - auto scan periodic module 3 1.1 christos * Copyright (c) 2012, Intel Corporation. All rights reserved. 4 1.1 christos * 5 1.1 christos * This software may be distributed under the terms of the BSD license. 6 1.1 christos * See README for more details. 7 1.1 christos */ 8 1.1 christos 9 1.1 christos #include "includes.h" 10 1.1 christos 11 1.1 christos #include "common.h" 12 1.1 christos #include "wpa_supplicant_i.h" 13 1.1 christos #include "autoscan.h" 14 1.1 christos 15 1.1 christos 16 1.1 christos struct autoscan_periodic_data { 17 1.1 christos int periodic_interval; 18 1.1 christos }; 19 1.1 christos 20 1.1 christos 21 1.1 christos static int autoscan_periodic_get_params(struct autoscan_periodic_data *data, 22 1.1 christos const char *params) 23 1.1 christos { 24 1.1 christos int interval; 25 1.1 christos 26 1.1 christos if (params == NULL) 27 1.1 christos return -1; 28 1.1 christos 29 1.1 christos interval = atoi(params); 30 1.1 christos 31 1.1 christos if (interval < 0) 32 1.1 christos return -1; 33 1.1 christos 34 1.1 christos data->periodic_interval = interval; 35 1.1 christos 36 1.1 christos return 0; 37 1.1 christos } 38 1.1 christos 39 1.1 christos 40 1.1 christos static void * autoscan_periodic_init(struct wpa_supplicant *wpa_s, 41 1.1 christos const char *params) 42 1.1 christos { 43 1.1 christos struct autoscan_periodic_data *data; 44 1.1 christos 45 1.1 christos data = os_zalloc(sizeof(struct autoscan_periodic_data)); 46 1.1 christos if (data == NULL) 47 1.1 christos return NULL; 48 1.1 christos 49 1.1 christos if (autoscan_periodic_get_params(data, params) < 0) { 50 1.1 christos os_free(data); 51 1.1 christos return NULL; 52 1.1 christos } 53 1.1 christos 54 1.1 christos wpa_printf(MSG_DEBUG, "autoscan periodic: interval is %d", 55 1.1 christos data->periodic_interval); 56 1.1 christos 57 1.1 christos return data; 58 1.1 christos } 59 1.1 christos 60 1.1 christos 61 1.1 christos static void autoscan_periodic_deinit(void *priv) 62 1.1 christos { 63 1.1 christos struct autoscan_periodic_data *data = priv; 64 1.1 christos 65 1.1 christos os_free(data); 66 1.1 christos } 67 1.1 christos 68 1.1 christos 69 1.1 christos static int autoscan_periodic_notify_scan(void *priv, 70 1.1 christos struct wpa_scan_results *scan_res) 71 1.1 christos { 72 1.1 christos struct autoscan_periodic_data *data = priv; 73 1.1 christos 74 1.1 christos wpa_printf(MSG_DEBUG, "autoscan periodic: scan result notification"); 75 1.1 christos 76 1.1 christos return data->periodic_interval; 77 1.1 christos } 78 1.1 christos 79 1.1 christos 80 1.1 christos const struct autoscan_ops autoscan_periodic_ops = { 81 1.1 christos .name = "periodic", 82 1.1 christos .init = autoscan_periodic_init, 83 1.1 christos .deinit = autoscan_periodic_deinit, 84 1.1 christos .notify_scan = autoscan_periodic_notify_scan, 85 1.1 christos }; 86