# SASL support

## SYNOPSIS

#include <libmemcached/memcached.h>

  Compile and link with -lmemcached

void memcached_set_sasl_callbacks(memcached_st *ptr, const sasl_callback_t *callbacks)
  Parameters:

    - ptr -- pointer to initialized `memcached_st` struct

    - callbacks -- pointer to `sasl_callbacks_t` holding the callbacks to use

const sasl_callback_t *memcached_get_sasl_callbacks(memcached_st *ptr)
  Parameters:

    ptr -- pointer to initialized `memcached_st` struct

  Returns:

    pointer to `sasl_callbacks_t` holding the callbacks currently used

memcached_return_t memcached_set_sasl_auth_data(memcached_st *ptr, const char *username, const char *password)
  Parameters:

    - ptr -- pointer to initialized `memcached_st` struct

    - username --

    - password --

  Returns:

    `memcached_return_t` indicating success

memcached_return_t memcached_destroy_sasl_auth_data(memcached_st *ptr)
  Parameters:

    ptr -- pointer to initialized `memcached_st` struct

  Returns:

    `memcached_return_t` indicating success

## DESCRIPTION

`libmemcached` allows you to plug in your own callbacks function used by libsasl to perform SASL authentication.

Please note that SASL requires the memcached binary protocol, and you have to specify the callbacks before you connect to the server.

`memcached_set_sasl_auth_data()` is a helper function defining the basic functionality for you, but it will store the username and password in memory. If you choose to use this method you have to call `memcached_destroy_sasl_auth_data()` before calling `memcached_free()` to avoid a memory leak. You should NOT call `memcached_destroy_sasl_auth_data()` if you specify your own callback function with `memcached_set_sasl_callbacks()`.

## RETURN VALUE

`memcached_get_sasl_callbacks()` returns the callbacks currently used by this memcached handle. `memcached_set_sasl_auth_data()` returns `MEMCACHED_SUCCESS` upon success.

## SEE ALSO

- memcached(1)

- C/C++ Client Library for memcached

- Converting Error Codes to Messages

- sasl_client_new(3)

- sasl_callbacks(3)