3.4. Session management

To be correctly initialized, PAM_SM_SESSION must be #define'd prior to including <security/pam_modules.h>. This will ensure that the prototypes for static modules are properly declared.

3.4.1. Service function to start session management

#define PAM_SM_SESSION
#include <security/pam_modules.h>
PAM_EXTERN int pam_sm_open_session(pamh,  
 flags,  
 argc,  
 argv); 
pam_handle_t * pamh;
int  flags;
int  argc;
const char ** argv;

3.4.1.1. DESCRIPTION

The pam_sm_open_session function is the service module's implementation of the pam_open_session(3) interface.

This function is called to commence a session. The only valid value for flags is zero or:

PAM_SILENT

Do not emit any messages.

3.4.1.2. RETURN VALUES

PAM_SESSION_ERR

Cannot make/remove an entry for the specified session.

PAM_SUCCESS

The session was successfully started.

3.4.2. Service function to terminate session management

#define PAM_SM_SESSION
#include <security/pam_modules.h>
PAM_EXTERN int pam_sm_close_session(pamh,  
 flags,  
 argc,  
 argv); 
pam_handle_t * pamh;
int  flags;
int  argc;
const char ** argv;

3.4.2.1. DESCRIPTION

The pam_sm_close_session function is the service module's implementation of the pam_close_session(3) interface.

This function is called to terminate a session. The only valid value for flags is zero or:

PAM_SILENT

Do not emit any messages.

3.4.2.2. RETURN VALUES

PAM_SESSION_ERR

Cannot make/remove an entry for the specified session.

PAM_SUCCESS

The session was successfully terminated.