#![allow(dead_code)]
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]
use pam::PamError;
use std::option::Option;
use std::os::raw::{c_char, c_int, c_void};
use std::ptr::NonNull;
pub type PamHandle = *const c_void;
#[repr(C)]
pub enum PamMsgStyle {
PROMPT_ECHO_OFF = 1,
PROMPT_ECHO_ON = 2,
ERROR_MSG = 3,
TEXT_INFO = 4,
PAM_MAX_NUM_MSG = 32,
PAM_RADIO_TYPE = 5,
PAM_BINARY_PROMPT = 7,
}
#[repr(C)]
pub struct PamMessage {
pub msg_style: PamMsgStyle,
pub msg: *const c_char,
}
#[repr(C)]
pub struct PamResponse {
pub resp: Option<NonNull<c_char>>,
pub resp_retcode: PamError,
}
pub(crate) type PamConvCallback = extern "C" fn(
num_msg: c_int,
msg: *mut *const PamMessage,
resp: *mut *mut PamResponse,
appdata_ptr: *mut c_void,
) -> c_int;
#[repr(C)]
pub(crate) struct PamConv {
pub(crate) cb: Option<PamConvCallback>,
pub(crate) appdata_ptr: *mut c_void,
}
#[repr(C)]
pub enum LogLvl {
EMERG = 0,
ALERT = 1,
CRIT = 2,
ERR = 3,
WARNING = 4,
NOTICE = 5,
INFO = 6,
DEBUG = 7,
}
#[repr(C)]
pub enum PamItemType {
SERVICE = 1,
USER = 2,
TTY = 3,
RHOST = 4,
CONV = 5,
AUTHTOK = 6,
OLDAUTHTOK = 7,
RUSER = 8,
USER_PROMPT = 9,
FAIL_DELAY = 10,
XDISPLAY = 11,
XAUTHDATA = 12,
AUTHTOK_TYPE = 13,
}