Lines Matching full:rr
49 krad_remote *rr; member
92 request_new(krad_remote *rr, krad_packet *rqst, int timeout, size_t retries, in request_new() argument
101 tmp->rr = rr; in request_new()
118 K5_TAILQ_REMOVE(&req->rr->list, req, list); in request_finish()
145 remote_disconnect(krad_remote *rr) in remote_disconnect() argument
147 if (rr->fd >= 0) in remote_disconnect()
148 close(rr->fd); in remote_disconnect()
149 verto_del(rr->io); in remote_disconnect()
150 rr->fd = -1; in remote_disconnect()
151 rr->io = NULL; in remote_disconnect()
220 remote_shutdown(krad_remote *rr) in remote_shutdown() argument
225 remote_disconnect(rr); in remote_shutdown()
228 K5_TAILQ_FOREACH_SAFE(r, &rr->list, list, next) { in remote_shutdown()
230 retval = request_start_timer(r, rr->vctx); in remote_shutdown()
249 retval = remote_add_flags(req->rr, FLAGS_WRITE); in on_timeout()
259 on_io_write(krad_remote *rr) in on_io_write() argument
265 K5_TAILQ_FOREACH(r, &rr->list, list) { in on_io_write()
273 written = sendto(verto_get_fd(rr->io), tmp->data + r->sent, in on_io_write()
282 remote_shutdown(rr); in on_io_write()
289 if (request_start_timer(r, rr->vctx) != 0) { in on_io_write()
294 if (remote_add_flags(rr, FLAGS_READ) != 0) { in on_io_write()
295 remote_shutdown(rr); in on_io_write()
303 remote_del_flags(rr, FLAGS_WRITE); in on_io_write()
309 on_io_read(krad_remote *rr) in on_io_read() argument
318 pktlen = sizeof(rr->buffer_) - rr->buffer.length; in on_io_read()
319 if (rr->info->ai_socktype == SOCK_STREAM) { in on_io_read()
320 pktlen = krad_packet_bytes_needed(&rr->buffer); in on_io_read()
324 remote_shutdown(rr); in on_io_read()
330 i = recv(verto_get_fd(rr->io), rr->buffer.data + rr->buffer.length, in on_io_read()
339 remote_shutdown(rr); in on_io_read()
344 rr->buffer.length += i; in on_io_read()
345 pktlen = krad_packet_bytes_needed(&rr->buffer); in on_io_read()
346 if (rr->info->ai_socktype == SOCK_STREAM && pktlen > 0) in on_io_read()
350 tmp = K5_TAILQ_FIRST(&rr->list); in on_io_read()
351 retval = krad_packet_decode_response(rr->kctx, rr->secret, &rr->buffer, in on_io_read()
353 rr->buffer.length = 0; in on_io_read()
359 K5_TAILQ_FOREACH(r, &rr->list, list) { in on_io_read()
375 krad_remote *rr; in on_io() local
377 rr = verto_get_private(ev); in on_io()
380 on_io_write(rr); in on_io()
382 on_io_read(rr); in on_io()
387 const char *secret, krad_remote **rr) in kr_remote_new() argument
415 *rr = tmp; in kr_remote_new()
424 kr_remote_cancel_all(krad_remote *rr) in kr_remote_cancel_all() argument
426 while (!K5_TAILQ_EMPTY(&rr->list)) in kr_remote_cancel_all()
427 request_finish(K5_TAILQ_FIRST(&rr->list), ECANCELED, NULL); in kr_remote_cancel_all()
431 kr_remote_free(krad_remote *rr) in kr_remote_free() argument
433 if (rr == NULL) in kr_remote_free()
436 kr_remote_cancel_all(rr); in kr_remote_free()
437 free(rr->secret); in kr_remote_free()
438 if (rr->info != NULL) in kr_remote_free()
439 free(rr->info->ai_addr); in kr_remote_free()
440 free(rr->info); in kr_remote_free()
441 remote_disconnect(rr); in kr_remote_free()
442 free(rr); in kr_remote_free()
446 kr_remote_send(krad_remote *rr, krad_code code, krad_attrset *attrs, in kr_remote_send() argument
454 if (rr->info->ai_socktype == SOCK_STREAM) in kr_remote_send()
457 r = K5_TAILQ_FIRST(&rr->list); in kr_remote_send()
458 retval = krad_packet_new_request(rr->kctx, rr->secret, code, attrs, in kr_remote_send()
463 K5_TAILQ_FOREACH(r, &rr->list, list) { in kr_remote_send()
471 retval = request_new(rr, tmp, timeout, retries, cb, data, &new_request); in kr_remote_send()
475 retval = remote_add_flags(rr, FLAGS_WRITE); in kr_remote_send()
479 K5_TAILQ_INSERT_TAIL(&rr->list, new_request, list); in kr_remote_send()
491 kr_remote_cancel(krad_remote *rr, const krad_packet *pkt) in kr_remote_cancel() argument
495 K5_TAILQ_FOREACH(r, &rr->list, list) { in kr_remote_cancel()
504 kr_remote_equals(const krad_remote *rr, const struct addrinfo *info, in kr_remote_equals() argument
509 if (strcmp(rr->secret, secret) != 0) in kr_remote_equals()
512 if (info->ai_addrlen != rr->info->ai_addrlen) in kr_remote_equals()
515 if (info->ai_family != rr->info->ai_family) in kr_remote_equals()
518 if (info->ai_socktype != rr->info->ai_socktype) in kr_remote_equals()
521 if (info->ai_protocol != rr->info->ai_protocol) in kr_remote_equals()
524 if (info->ai_flags != rr->info->ai_flags) in kr_remote_equals()
527 if (memcmp(rr->info->ai_addr, info->ai_addr, info->ai_addrlen) != 0) { in kr_remote_equals()
534 b = (struct sockaddr_un *)rr->info->ai_addr; in kr_remote_equals()