Merge branch 'master' into jennifer/trp-devel
[trust_router.git] / gsscon / gsscon_active.c
index f8946b9..1f4d91f 100755 (executable)
  * or implied warranty.
  */
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <netdb.h>
+
 #include <gsscon.h>
 
-/* --------------------------------------------------------------------------- */
+/* ---------------------------------------------------------------------------
+*/
 
-int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, int *outFD, gss_ctx_id_t *outGSSContext)
+int gsscon_connect (const char *inHost, unsigned int inPort, const char *inServiceName, int *outFD, gss_ctx_id_t *outGSSContext)
 {
     int err = 0;
     int fd = -1;
@@ -81,7 +86,7 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
     
     if (!err) {
         hp = gethostbyname (inHost);
-        if (hp == NULL) { err = errno; }
+        if (hp == NULL) { err = h_errno; }
     }
     
     if (!err) {
@@ -94,16 +99,16 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
     }
     
     if (!err) {
+        fprintf (stderr, "gss_connect: Connecting to host '%s' on port %d\n", inHost, inPort);
         err = connect (fd, (struct sockaddr *) &saddr, sizeof (saddr));
         if (err < 0) { err = errno; }
     }
     
     if (!err) {
-        printf ("connecting to host '%s' on port %d\n", inHost, inPort);
         *outFD = fd;
         fd = -1; /* takes ownership */
     } else {
-         gsscon_print_error (err, "OpenConnection failed");
+        gsscon_print_error (err, "OpenConnection failed");
     }
     
     if (fd >= 0) { close (fd); }
@@ -169,7 +174,7 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
       nameBuffer.length = asprintf(&name, "%s@%s", inServiceName, inHost);
       nameBuffer.value = name;
 
-      majorStatus = gss_import_name (&minorStatus, &nameBuffer, (gss_OID) GSS_KRB5_NT_PRINCIPAL_NAME, &serviceName); 
+      majorStatus = gss_import_name (&minorStatus, &nameBuffer, (gss_OID) GSS_C_NT_HOSTBASED_SERVICE, &serviceName); 
       if (majorStatus != GSS_S_COMPLETE) { 
        gsscon_print_gss_errors ("gss_import_name(inServiceName)", majorStatus, minorStatus);
        err = minorStatus ? minorStatus : majorStatus; 
@@ -195,7 +200,6 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
         OM_uint32 requestedFlags = (GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG | 
                                     GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG);
         
-       // printf ("Calling gss_init_sec_context...\n");
         majorStatus = gss_init_sec_context (&minorStatus, 
                                             clientCredentials, 
                                             &gssContext,