support kgetcred

This commit is contained in:
Love Hornquist Astrand
2011-12-22 13:45:45 +01:00
parent a372712fd0
commit 9b0bc022f1

View File

@@ -110,13 +110,13 @@ perf_stop(struct perf *perf)
if (perf->as_req) {
double as_ps = 0.0;
as_ps = (perf->as_req * USEC_PER_SEC) / (double)((perf->stop.tv_sec * USEC_PER_SEC) + perf->stop.tv_usec);
printf("as-req/s %.2lf\n", as_ps);
printf("as-req/s %.2lf (total %lu requests)\n", as_ps, perf->as_req);
}
if (perf->tgs_req) {
double tgs_ps = 0.0;
tgs_ps = (perf->tgs_req * USEC_PER_SEC) / (double)((perf->stop.tv_sec * USEC_PER_SEC) + perf->stop.tv_usec);
printf("tgs-req/s %.2lf\n", tgs_ps);
printf("tgs-req/s %.2lf (total %lu requests)\n", tgs_ps, perf->tgs_req);
}
}
@@ -265,6 +265,53 @@ eval_kinit(heim_dict_t o)
krb5_cc_close(kdc_context, fast_cc);
}
/*
*
*/
static void
eval_kgetcred(heim_dict_t o)
{
heim_string_t server, ccache;
krb5_get_creds_opt opt;
krb5_error_code ret;
krb5_ccache cc = NULL;
krb5_principal s;
krb5_creds *out = NULL;
if (ptop)
ptop->tgs_req++;
server = heim_dict_get_value(o, HSTR("server"));
if (server == NULL)
krb5_errx(kdc_context, 1, "no server");
ccache = heim_dict_get_value(o, HSTR("ccache"));
if (ccache == NULL)
krb5_errx(kdc_context, 1, "no ccache");
ret = krb5_cc_resolve(kdc_context, heim_string_get_utf8(ccache), &cc);
if (ret)
krb5_err(kdc_context, 1, ret, "krb5_cc_resolve");
ret = krb5_parse_name(kdc_context, heim_string_get_utf8(server), &s);
if (ret)
krb5_err(kdc_context, 1, ret, "krb5_parse_name");
ret = krb5_get_creds_opt_alloc(kdc_context, &opt);
if (ret)
krb5_err(kdc_context, 1, ret, "krb5_get_creds_opt_alloc");
ret = krb5_get_creds(kdc_context, opt, cc, s, &out);
if (ret)
krb5_err(kdc_context, 1, ret, "krb5_get_creds");
krb5_free_creds(kdc_context, out);
krb5_free_principal(kdc_context, s);
krb5_get_creds_opt_free(kdc_context, opt);
krb5_cc_close(kdc_context, cc);
}
/*
*
@@ -316,6 +363,8 @@ eval_object(heim_object_t o)
eval_repeat(o);
} else if (strcmp(op, "kinit") == 0) {
eval_kinit(o);
} else if (strcmp(op, "kgetcred") == 0) {
eval_kgetcred(o);
} else if (strcmp(op, "kdestroy") == 0) {
eval_kdestroy(o);
} else {