3.4. Session management
Prev | Chapter 3. What is expected of a module | Next

## 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.

Prev | Up | Next
3.3. Account management | Home | 3.5. Authentication token management