Lines Matching full:das
2 * RADIUS Dynamic Authorization Server (DAS) (RFC 5176)
34 static struct radius_msg * radius_das_disconnect(struct radius_das_data *das, in radius_das_disconnect() argument
69 wpa_printf(MSG_INFO, "DAS: Unsupported attribute %u in " in radius_das_disconnect()
81 wpa_printf(MSG_INFO, "DAS: Invalid NAS-IP-Address from %s:%d", in radius_das_disconnect()
93 wpa_printf(MSG_INFO, "DAS: Invalid NAS-IPv6-Address from %s:%d", in radius_das_disconnect()
115 wpa_printf(MSG_INFO, "DAS: Invalid Calling-Station-Id " in radius_das_disconnect()
147 res = das->disconnect(das->ctx, &attrs); in radius_das_disconnect()
150 wpa_printf(MSG_INFO, "DAS: NAS mismatch from %s:%d", in radius_das_disconnect()
155 wpa_printf(MSG_INFO, "DAS: Session not found for request from " in radius_das_disconnect()
161 "DAS: Multiple sessions match for request from %s:%d", in radius_das_disconnect()
197 static struct radius_msg * radius_das_coa(struct radius_das_data *das, in radius_das_coa() argument
232 if (!das->coa) { in radius_das_coa()
233 wpa_printf(MSG_INFO, "DAS: CoA not supported"); in radius_das_coa()
240 "DAS: Unsupported attribute %u in CoA-Request from %s:%d", in radius_das_coa()
251 wpa_printf(MSG_INFO, "DAS: Invalid NAS-IP-Address from %s:%d", in radius_das_coa()
263 wpa_printf(MSG_INFO, "DAS: Invalid NAS-IPv6-Address from %s:%d", in radius_das_coa()
285 wpa_printf(MSG_INFO, "DAS: Invalid Calling-Station-Id " in radius_das_coa()
324 "DAS: Unsupported attribute %u in CoA-Request from %s:%d", in radius_das_coa()
334 "DAS: No supported authorization change attribute in CoA-Request from %s:%d", in radius_das_coa()
341 res = das->coa(das->ctx, &attrs); in radius_das_coa()
344 wpa_printf(MSG_INFO, "DAS: NAS mismatch from %s:%d", in radius_das_coa()
350 "DAS: Session not found for request from %s:%d", in radius_das_coa()
356 "DAS: Multiple sessions match for request from %s:%d", in radius_das_coa()
361 wpa_printf(MSG_INFO, "DAS: CoA failed for request from %s:%d", in radius_das_coa()
393 struct radius_das_data *das = eloop_ctx; in radius_das_receive() local
417 wpa_printf(MSG_ERROR, "DAS: recvfrom: %s", strerror(errno)); in radius_das_receive()
424 wpa_printf(MSG_DEBUG, "DAS: Received %d bytes from %s:%d", in radius_das_receive()
426 if (das->client_addr.u.v4.s_addr && in radius_das_receive()
427 das->client_addr.u.v4.s_addr != from.sin.sin_addr.s_addr) { in radius_das_receive()
428 wpa_printf(MSG_DEBUG, "DAS: Drop message from unknown client"); in radius_das_receive()
434 wpa_printf(MSG_DEBUG, "DAS: Parsing incoming RADIUS packet " in radius_das_receive()
442 if (radius_msg_verify_das_req(msg, das->shared_secret, in radius_das_receive()
443 das->shared_secret_len, in radius_das_receive()
444 das->require_message_authenticator)) { in radius_das_receive()
446 "DAS: Invalid authenticator or Message-Authenticator in packet from %s:%d - drop", in radius_das_receive()
457 das->time_window) { in radius_das_receive()
458 wpa_printf(MSG_DEBUG, "DAS: Unacceptable " in radius_das_receive()
465 } else if (das->require_event_timestamp) { in radius_das_receive()
466 wpa_printf(MSG_DEBUG, "DAS: Missing Event-Timestamp in packet " in radius_das_receive()
475 reply = radius_das_disconnect(das, msg, abuf, from_port); in radius_das_receive()
478 reply = radius_das_coa(das, msg, abuf, from_port); in radius_das_receive()
481 wpa_printf(MSG_DEBUG, "DAS: Unexpected RADIUS code %u in " in radius_das_receive()
487 wpa_printf(MSG_DEBUG, "DAS: Reply to %s:%d", abuf, from_port); in radius_das_receive()
492 wpa_printf(MSG_DEBUG, "DAS: Failed to add " in radius_das_receive()
496 if (radius_msg_finish_das_resp(reply, das->shared_secret, in radius_das_receive()
497 das->shared_secret_len, hdr) < in radius_das_receive()
499 wpa_printf(MSG_DEBUG, "DAS: Failed to add " in radius_das_receive()
507 res = sendto(das->sock, wpabuf_head(rbuf), in radius_das_receive()
511 wpa_printf(MSG_ERROR, "DAS: sendto(to %s:%d): %s", in radius_das_receive()
529 wpa_printf(MSG_INFO, "RADIUS DAS: socket: %s", strerror(errno)); in radius_das_open_socket()
537 wpa_printf(MSG_INFO, "RADIUS DAS: bind: %s", strerror(errno)); in radius_das_open_socket()
549 struct radius_das_data *das; in radius_das_init() local
555 das = os_zalloc(sizeof(*das)); in radius_das_init()
556 if (das == NULL) in radius_das_init()
559 das->time_window = conf->time_window; in radius_das_init()
560 das->require_event_timestamp = conf->require_event_timestamp; in radius_das_init()
561 das->require_message_authenticator = in radius_das_init()
563 das->ctx = conf->ctx; in radius_das_init()
564 das->disconnect = conf->disconnect; in radius_das_init()
565 das->coa = conf->coa; in radius_das_init()
567 os_memcpy(&das->client_addr, conf->client_addr, in radius_das_init()
568 sizeof(das->client_addr)); in radius_das_init()
570 das->shared_secret = os_memdup(conf->shared_secret, in radius_das_init()
572 if (das->shared_secret == NULL) { in radius_das_init()
573 radius_das_deinit(das); in radius_das_init()
576 das->shared_secret_len = conf->shared_secret_len; in radius_das_init()
578 das->sock = radius_das_open_socket(conf->port); in radius_das_init()
579 if (das->sock < 0) { in radius_das_init()
581 "DAS"); in radius_das_init()
582 radius_das_deinit(das); in radius_das_init()
586 if (eloop_register_read_sock(das->sock, radius_das_receive, das, NULL)) in radius_das_init()
588 radius_das_deinit(das); in radius_das_init()
592 return das; in radius_das_init()
596 void radius_das_deinit(struct radius_das_data *das) in radius_das_deinit() argument
598 if (das == NULL) in radius_das_deinit()
601 if (das->sock >= 0) { in radius_das_deinit()
602 eloop_unregister_read_sock(das->sock); in radius_das_deinit()
603 close(das->sock); in radius_das_deinit()
606 os_free(das->shared_secret); in radius_das_deinit()
607 os_free(das); in radius_das_deinit()