Add Event-Timestamp to all Accounting-Request packets
Event-Timestamp should be sent for all Accounting-Request packets and only after the system clock has a sane value, not where there's a value close to the Unix time epoch. Signed-off-by: Nick Lowe <nick.lowe@lugatech.com>
This commit is contained in:
parent
d179089b6d
commit
9b6177a891
1 changed files with 9 additions and 8 deletions
|
@ -41,6 +41,7 @@ static struct radius_msg * accounting_msg(struct hostapd_data *hapd,
|
||||||
size_t len;
|
size_t len;
|
||||||
int i;
|
int i;
|
||||||
struct wpabuf *b;
|
struct wpabuf *b;
|
||||||
|
struct os_time now;
|
||||||
|
|
||||||
msg = radius_msg_new(RADIUS_CODE_ACCOUNTING_REQUEST,
|
msg = radius_msg_new(RADIUS_CODE_ACCOUNTING_REQUEST,
|
||||||
radius_client_get_id(hapd->radius));
|
radius_client_get_id(hapd->radius));
|
||||||
|
@ -159,6 +160,14 @@ static struct radius_msg * accounting_msg(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
os_get_time(&now);
|
||||||
|
if (now.sec > 1000000000 &&
|
||||||
|
!radius_msg_add_attr_int32(msg, RADIUS_ATTR_EVENT_TIMESTAMP,
|
||||||
|
now.sec)) {
|
||||||
|
wpa_printf(MSG_INFO, "Could not add Event-Timestamp");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
return msg;
|
return msg;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
@ -261,7 +270,6 @@ static void accounting_sta_report(struct hostapd_data *hapd,
|
||||||
int cause = sta->acct_terminate_cause;
|
int cause = sta->acct_terminate_cause;
|
||||||
struct hostap_sta_driver_data data;
|
struct hostap_sta_driver_data data;
|
||||||
struct os_reltime now_r, diff;
|
struct os_reltime now_r, diff;
|
||||||
struct os_time now;
|
|
||||||
u32 gigawords;
|
u32 gigawords;
|
||||||
|
|
||||||
if (!hapd->conf->radius->acct_server)
|
if (!hapd->conf->radius->acct_server)
|
||||||
|
@ -276,7 +284,6 @@ static void accounting_sta_report(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
|
|
||||||
os_get_reltime(&now_r);
|
os_get_reltime(&now_r);
|
||||||
os_get_time(&now);
|
|
||||||
os_reltime_sub(&now_r, &sta->acct_session_start, &diff);
|
os_reltime_sub(&now_r, &sta->acct_session_start, &diff);
|
||||||
if (!radius_msg_add_attr_int32(msg, RADIUS_ATTR_ACCT_SESSION_TIME,
|
if (!radius_msg_add_attr_int32(msg, RADIUS_ATTR_ACCT_SESSION_TIME,
|
||||||
diff.sec)) {
|
diff.sec)) {
|
||||||
|
@ -333,12 +340,6 @@ static void accounting_sta_report(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!radius_msg_add_attr_int32(msg, RADIUS_ATTR_EVENT_TIMESTAMP,
|
|
||||||
now.sec)) {
|
|
||||||
wpa_printf(MSG_INFO, "Could not add Event-Timestamp");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eloop_terminated())
|
if (eloop_terminated())
|
||||||
cause = RADIUS_ACCT_TERMINATE_CAUSE_ADMIN_REBOOT;
|
cause = RADIUS_ACCT_TERMINATE_CAUSE_ADMIN_REBOOT;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue