Lines Matching refs:th

122 	struct ceph_x_ticket_handler *th;
128 th = rb_entry(parent, struct ceph_x_ticket_handler, node);
129 if (service < th->service)
131 else if (service > th->service)
134 return th;
138 th = kzalloc(sizeof(*th), GFP_NOFS);
139 if (!th)
141 th->service = service;
142 rb_link_node(&th->node, parent, p);
143 rb_insert_color(&th->node, &xi->ticket_handlers);
144 return th;
148 struct ceph_x_ticket_handler *th)
152 dout("remove_ticket_handler %p %d\n", th, th->service);
153 rb_erase(&th->node, &xi->ticket_handlers);
154 ceph_crypto_key_destroy(&th->session_key);
155 if (th->ticket_blob)
156 ceph_buffer_put(th->ticket_blob);
157 kfree(th);
167 struct ceph_x_ticket_handler *th;
189 th = get_ticket_handler(ac, type);
190 if (IS_ERR(th)) {
191 ret = PTR_ERR(th);
224 ret = ceph_x_decrypt(&th->session_key, p, end);
248 ceph_crypto_key_destroy(&th->session_key);
249 if (th->ticket_blob)
250 ceph_buffer_put(th->ticket_blob);
251 th->session_key = new_session_key;
252 th->ticket_blob = new_ticket_blob;
253 th->secret_id = new_secret_id;
254 th->expires = new_expires;
255 th->renew_after = new_renew_after;
256 th->have_key = true;
258 type, ceph_entity_type_name(type), th->secret_id,
259 (int)th->ticket_blob->vec.iov_len);
260 xi->have_keys |= th->service;
352 struct ceph_x_ticket_handler *th,
360 (th->ticket_blob ? th->ticket_blob->vec.iov_len : 0);
363 ceph_entity_type_name(th->service), au);
366 ret = ceph_crypto_key_clone(&au->session_key, &th->session_key);
384 au->service = th->service;
385 WARN_ON(!th->secret_id);
386 au->secret_id = th->secret_id;
391 msg_a->service_id = cpu_to_le32(th->service);
393 msg_a->ticket_blob.secret_id = cpu_to_le64(th->secret_id);
396 memcpy(msg_a->ticket_blob.blob, th->ticket_blob->vec.iov_base,
397 th->ticket_blob->vec.iov_len);
399 dout(" th %p secret_id %lld %lld\n", th, th->secret_id,
418 static int ceph_x_encode_ticket(struct ceph_x_ticket_handler *th,
423 ceph_encode_64(p, th->secret_id);
424 if (th->ticket_blob) {
425 const char *buf = th->ticket_blob->vec.iov_base;
426 u32 len = th->ticket_blob->vec.iov_len;
439 static bool need_key(struct ceph_x_ticket_handler *th)
441 if (!th->have_key)
444 return ktime_get_real_seconds() >= th->renew_after;
447 static bool have_key(struct ceph_x_ticket_handler *th)
449 if (th->have_key && ktime_get_real_seconds() >= th->expires) {
450 dout("ticket %d (%s) secret_id %llu expired\n", th->service,
451 ceph_entity_type_name(th->service), th->secret_id);
452 th->have_key = false;
455 return th->have_key;
467 struct ceph_x_ticket_handler *th;
475 th = get_ticket_handler(ac, service);
476 if (IS_ERR(th)) {
481 if (need_key(th))
483 if (!have_key(th))
496 struct ceph_x_ticket_handler *th =
499 if (IS_ERR(th))
500 return PTR_ERR(th);
538 ret = ceph_x_encode_ticket(th, &p, end);
551 ret = ceph_x_build_authorizer(ac, th, &xi->auth_authorizer);
606 struct ceph_x_ticket_handler *th;
623 th = get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
624 if (IS_ERR(th))
625 return PTR_ERR(th);
628 memcpy(session_key, th->session_key.key, th->session_key.len);
629 *session_key_len = th->session_key.len;
637 ret = ceph_x_decrypt(&th->session_key, p, *p + len);
653 ret = ceph_x_proc_ticket_reply(ac, &th->session_key,
671 struct ceph_x_ticket_handler *th;
705 th = get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
706 if (IS_ERR(th))
707 return PTR_ERR(th);
710 ret = ceph_x_proc_ticket_reply(ac, &th->session_key, &p, end);
739 struct ceph_x_ticket_handler *th;
742 th = get_ticket_handler(ac, peer_type);
743 if (IS_ERR(th))
744 return PTR_ERR(th);
752 ret = ceph_x_build_authorizer(ac, th, au);
774 struct ceph_x_ticket_handler *th;
776 th = get_ticket_handler(ac, peer_type);
777 if (IS_ERR(th))
778 return PTR_ERR(th);
781 if (au->secret_id < th->secret_id) {
783 au->service, au->secret_id, th->secret_id);
784 return ceph_x_build_authorizer(ac, th, au);
922 struct ceph_x_ticket_handler *th =
924 remove_ticket_handler(ac, th);
935 struct ceph_x_ticket_handler *th;
937 th = get_ticket_handler(ac, peer_type);
938 if (IS_ERR(th))
941 if (th->have_key) {
943 th->service, ceph_entity_type_name(th->service),
944 th->secret_id);
945 th->have_key = false;