Lines Matching refs:hapd
30 static void accounting_sta_interim(struct hostapd_data *hapd,
34 static struct radius_msg * accounting_msg(struct hostapd_data *hapd, in accounting_msg() argument
46 radius_client_get_id(hapd->radius)); in accounting_msg()
55 if ((hapd->conf->wpa & 2) && in accounting_msg()
56 !hapd->conf->disable_pmksa_caching && in accounting_msg()
70 radius_msg_make_authenticator(msg, (u8 *) hapd, sizeof(*hapd)); in accounting_msg()
79 if (!hostapd_config_get_radius_attr(hapd->conf->radius_acct_req_attr, in accounting_msg()
82 hapd->conf->ieee802_1x ? in accounting_msg()
115 if (add_common_radius_attr(hapd, hapd->conf->radius_acct_req_attr, sta, in accounting_msg()
160 static int accounting_sta_update_stats(struct hostapd_data *hapd, in accounting_sta_update_stats() argument
164 if (hostapd_drv_read_sta_data(hapd, data, sta->addr)) in accounting_sta_update_stats()
174 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS, in accounting_sta_update_stats()
187 struct hostapd_data *hapd = eloop_ctx; in accounting_interim_update() local
192 accounting_sta_interim(hapd, sta); in accounting_interim_update()
196 accounting_sta_update_stats(hapd, sta, &data); in accounting_interim_update()
201 hapd, sta); in accounting_interim_update()
210 void accounting_sta_start(struct hostapd_data *hapd, struct sta_info *sta) in accounting_sta_start() argument
218 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS, in accounting_sta_start()
226 hostapd_drv_sta_clear_stats(hapd, sta->addr); in accounting_sta_start()
228 if (!hapd->conf->radius->acct_server) in accounting_sta_start()
236 hapd, sta); in accounting_sta_start()
238 msg = accounting_msg(hapd, sta, RADIUS_ACCT_STATUS_TYPE_START); in accounting_sta_start()
240 radius_client_send(hapd->radius, msg, RADIUS_ACCT, sta->addr) < 0) in accounting_sta_start()
247 static void accounting_sta_report(struct hostapd_data *hapd, in accounting_sta_report() argument
257 if (!hapd->conf->radius->acct_server) in accounting_sta_report()
260 msg = accounting_msg(hapd, sta, in accounting_sta_report()
277 if (accounting_sta_update_stats(hapd, sta, &data) == 0) { in accounting_sta_report()
342 if (radius_client_send(hapd->radius, msg, in accounting_sta_report()
358 static void accounting_sta_interim(struct hostapd_data *hapd, in accounting_sta_interim() argument
362 accounting_sta_report(hapd, sta, 0); in accounting_sta_interim()
371 void accounting_sta_stop(struct hostapd_data *hapd, struct sta_info *sta) in accounting_sta_stop() argument
374 accounting_sta_report(hapd, sta, 1); in accounting_sta_stop()
375 eloop_cancel_timeout(accounting_interim_update, hapd, sta); in accounting_sta_stop()
376 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS, in accounting_sta_stop()
386 void accounting_sta_get_id(struct hostapd_data *hapd, in accounting_sta_get_id() argument
389 sta->acct_session_id_lo = hapd->acct_session_id_lo++; in accounting_sta_get_id()
390 if (hapd->acct_session_id_lo == 0) { in accounting_sta_get_id()
391 hapd->acct_session_id_hi++; in accounting_sta_get_id()
393 sta->acct_session_id_hi = hapd->acct_session_id_hi; in accounting_sta_get_id()
425 static void accounting_report_state(struct hostapd_data *hapd, int on) in accounting_report_state() argument
429 if (!hapd->conf->radius->acct_server || hapd->radius == NULL) in accounting_report_state()
434 msg = accounting_msg(hapd, NULL, in accounting_report_state()
448 if (radius_client_send(hapd->radius, msg, RADIUS_ACCT, NULL) < 0) in accounting_report_state()
458 int accounting_init(struct hostapd_data *hapd) in accounting_init() argument
466 if (os_get_random((u8 *) &hapd->acct_session_id_hi, in accounting_init()
467 sizeof(hapd->acct_session_id_hi)) < 0) in accounting_init()
468 hapd->acct_session_id_hi = now.sec; in accounting_init()
469 hapd->acct_session_id_hi ^= now.usec; in accounting_init()
471 if (radius_client_register(hapd->radius, RADIUS_ACCT, in accounting_init()
472 accounting_receive, hapd)) in accounting_init()
475 accounting_report_state(hapd, 1); in accounting_init()
485 void accounting_deinit(struct hostapd_data *hapd) in accounting_deinit() argument
487 accounting_report_state(hapd, 0); in accounting_deinit()