- return resp;
-}
-
-static void tids_destroy_response(TIDS_INSTANCE *tids, TID_RESP *resp)
-{
- if (resp) {
- if (resp->err_msg)
- tr_free_name(resp->err_msg);
- if (resp->rp_realm)
- tr_free_name(resp->rp_realm);
- if (resp->realm)
- tr_free_name(resp->realm);
- if (resp->comm)
- tr_free_name(resp->comm);
- if (resp->orig_coi)
- tr_free_name(resp->orig_coi);
- free (resp);
- }
-}
-
-static int tids_listen (TIDS_INSTANCE *tids, int port)
-{
- int rc = 0;
- int conn = -1;
- union {
- struct sockaddr_storage storage;
- struct sockaddr_in in4;
- } addr;
- struct sockaddr_in *saddr = (struct sockaddr_in *) &addr.in4;
-
- saddr->sin_port = htons (port);
- saddr->sin_family = AF_INET;
- saddr->sin_addr.s_addr = INADDR_ANY;
-
- if (0 > (conn = socket (AF_INET, SOCK_STREAM, 0)))
- return conn;
-
- if (0 > (rc = bind (conn, (struct sockaddr *) saddr, sizeof(struct sockaddr_in))))
- return rc;
-
- if (0 > (rc = listen(conn, 512)))
- return rc;
-
- fprintf (stdout, "tids_listen: TID Server listening on port %d\n", port);
- return conn;
-}
-
-static int tids_auth_connection (int conn, gss_ctx_id_t *gssctx)
-{
- int rc = 0;
- int auth, autherr = 0;
-
- if (rc = gsscon_passive_authenticate(conn, gssctx)) {
- fprintf(stderr, "tids_auth_connection: Error from gsscon_passive_authenticate(), rc = %d.\n", rc);
- return -1;
- }
-
- if (rc = gsscon_authorize(*gssctx, &auth, &autherr)) {
- fprintf(stderr, "tids_auth_connection: Error from gsscon_authorize, rc = %d, autherr = %d.\n",
- rc, autherr);
- return -1;
- }