Lines Matching refs:th

119 	struct ceph_x_ticket_handler *th;
125 th = rb_entry(parent, struct ceph_x_ticket_handler, node);
126 if (service < th->service)
128 else if (service > th->service)
131 return th;
135 th = kzalloc(sizeof(*th), GFP_NOFS);
136 if (!th)
138 th->service = service;
139 rb_link_node(&th->node, parent, p);
140 rb_insert_color(&th->node, &xi->ticket_handlers);
141 return th;
145 struct ceph_x_ticket_handler *th)
149 dout("remove_ticket_handler %p %d\n", th, th->service);
150 rb_erase(&th->node, &xi->ticket_handlers);
151 ceph_crypto_key_destroy(&th->session_key);
152 if (th->ticket_blob)
153 ceph_buffer_put(th->ticket_blob);
154 kfree(th);
164 struct ceph_x_ticket_handler *th;
186 th = get_ticket_handler(ac, type);
187 if (IS_ERR(th)) {
188 ret = PTR_ERR(th);
220 ret = ceph_x_decrypt(&th->session_key, p, end);
244 ceph_crypto_key_destroy(&th->session_key);
245 if (th->ticket_blob)
246 ceph_buffer_put(th->ticket_blob);
247 th->session_key = new_session_key;
248 th->ticket_blob = new_ticket_blob;
249 th->secret_id = new_secret_id;
250 th->expires = new_expires;
251 th->renew_after = new_renew_after;
252 th->have_key = true;
254 type, ceph_entity_type_name(type), th->secret_id,
255 (int)th->ticket_blob->vec.iov_len);
256 xi->have_keys |= th->service;
349 struct ceph_x_ticket_handler *th,
357 (th->ticket_blob ? th->ticket_blob->vec.iov_len : 0);
360 ceph_entity_type_name(th->service), au);
363 ret = ceph_crypto_key_clone(&au->session_key, &th->session_key);
381 au->service = th->service;
382 au->secret_id = th->secret_id;
387 msg_a->service_id = cpu_to_le32(th->service);
389 msg_a->ticket_blob.secret_id = cpu_to_le64(th->secret_id);
392 memcpy(msg_a->ticket_blob.blob, th->ticket_blob->vec.iov_base,
393 th->ticket_blob->vec.iov_len);
395 dout(" th %p secret_id %lld %lld\n", th, th->secret_id,
414 static int ceph_x_encode_ticket(struct ceph_x_ticket_handler *th,
419 ceph_encode_64(p, th->secret_id);
420 if (th->ticket_blob) {
421 const char *buf = th->ticket_blob->vec.iov_base;
422 u32 len = th->ticket_blob->vec.iov_len;
435 static bool need_key(struct ceph_x_ticket_handler *th)
437 if (!th->have_key)
440 return ktime_get_real_seconds() >= th->renew_after;
443 static bool have_key(struct ceph_x_ticket_handler *th)
445 if (th->have_key) {
446 if (ktime_get_real_seconds() >= th->expires)
447 th->have_key = false;
450 return th->have_key;
462 struct ceph_x_ticket_handler *th;
470 th = get_ticket_handler(ac, service);
471 if (IS_ERR(th)) {
476 if (need_key(th))
478 if (!have_key(th))
490 struct ceph_x_ticket_handler *th =
493 if (IS_ERR(th))
494 return PTR_ERR(th);
533 ret = ceph_x_encode_ticket(th, &p, end);
548 ret = ceph_x_build_authorizer(ac, th, &xi->auth_authorizer);
568 struct ceph_x_ticket_handler *th;
601 th = get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
602 if (IS_ERR(th))
603 return PTR_ERR(th);
604 ret = ceph_x_proc_ticket_reply(ac, &th->session_key,
631 struct ceph_x_ticket_handler *th;
634 th = get_ticket_handler(ac, peer_type);
635 if (IS_ERR(th))
636 return PTR_ERR(th);
644 ret = ceph_x_build_authorizer(ac, th, au);
666 struct ceph_x_ticket_handler *th;
668 th = get_ticket_handler(ac, peer_type);
669 if (IS_ERR(th))
670 return PTR_ERR(th);
673 if (au->secret_id < th->secret_id) {
675 au->service, au->secret_id, th->secret_id);
676 return ceph_x_build_authorizer(ac, th, au);
772 struct ceph_x_ticket_handler *th =
774 remove_ticket_handler(ac, th);
785 struct ceph_x_ticket_handler *th;
787 th = get_ticket_handler(ac, peer_type);
788 if (!IS_ERR(th))
789 th->have_key = false;