From 0cfdc66de043a89d2ae2167a624e7d0b56c122eb Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Mon, 16 Nov 2009 09:25:22 -0500 Subject: gssd: handle new client upcall Add support for handling the new client-side upcall. The kernel, beginning with 2.6.29, will attempt to use a new pipe, "gssd", which can be used for upcalls for all gss mechanisms. The new upcall is text-based with an = format. Attribute/value pairs are separated by a space, and terminated with a new-line character. The intial version has two required attributes, mech= and uid=, and two optional attributes, target= and service=. Future kernels may add new attribute/value pairs. Signed-off-by: Olga Kornievskaia Signed-off-by: Kevin Coffman Signed-off-by: Steve Dickson --- utils/gssd/gssd_main_loop.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'utils/gssd/gssd_main_loop.c') diff --git a/utils/gssd/gssd_main_loop.c b/utils/gssd/gssd_main_loop.c index b5117c5..f1a68d3 100644 --- a/utils/gssd/gssd_main_loop.c +++ b/utils/gssd/gssd_main_loop.c @@ -74,6 +74,17 @@ scan_poll_results(int ret) for (clp = clnt_list.tqh_first; clp != NULL; clp = clp->list.tqe_next) { + i = clp->gssd_poll_index; + if (i >= 0 && pollarray[i].revents) { + if (pollarray[i].revents & POLLHUP) + dir_changed = 1; + if (pollarray[i].revents & POLLIN) + handle_gssd_upcall(clp); + pollarray[clp->gssd_poll_index].revents = 0; + ret--; + if (!ret) + break; + } i = clp->krb5_poll_index; if (i >= 0 && pollarray[i].revents) { if (pollarray[i].revents & POLLHUP) -- cgit