Changes the service type and quality of protection for client-server communication.
Network Services Library (libnsl.a)
#include <rpc/rpcsec_gss.h>
 bool_t rpc_gss_set_defaults(auth_t, s_type, qop)
AUTH *auth_t;
rpc_gss_service_t s_type;
char *qop;
While creating security context, you can specify the s_type and qop parameters for the transfer sessions. You can change the two parameters for next transfer sessions using the rpc_gss_set_defaults subroutine.
| Item | Description | 
|---|---|
| auth_t | Represents an authentication handle returned by the rpc_gss_seccreate subroutine. | 
| s_type | Represents the type of service for the session that basically offers a level of protection. (for example, integrity and privacy). | 
| qop | Represents the quality of protection. You can specify the parameter to select cryptographic algorithm. | 
| Item | Description | 
|---|---|
| TRUE | successful | 
| FALSE | unsuccessful | 
You can use the rpc_gss_get_error subroutine to retrieve the error number.
The following example uses the rpc_gss_set_defaults subroutine to set service type and quality of protection after security context creation.
#include <stdlib.h>
#include <rpc/rpc.h>
#include <rpc/rpcsec_gss.h>
main()
{
    CLIENT *client;
    rpc_gss_service_t service_type;
    char *qop;          
    rpc_gss_error_t gss_error;
    /* Create client handle using any of the client handle creation routines*/
   
    /* Create security context using rpc_gss_seccreate */
          
    /* Set service_type and quality of protection */
    if(rpc_gss_set_defaults(client->cl_auth,service_type,qop) == FALSE)
    {
        fprintf(stderr,"\nError in rpc_gss_set_defaults:\n");                    
        rpc_gss_get_error(&gss_error);
        fprintf(stderr,"rpc_gss_error: %d \nSystem_error: %d \n",
                gss_error.rpc_gss_error,gss_error.system_error);
        exit(EXIT_FAILURE);
    }
    /* Make a call to server */
}