#ifndef _NS_H
#define _NS_H
#ifdef __cplusplus
extern "C" {
#endif
#define NS_KEY_BSDADDR "bsdaddr"
#define NS_KEY_USE "use"
#define NS_KEY_ALL "all"
#define NS_KEY_GROUP "group"
#define NS_KEY_LIST "list"
#define NS_KEY_PRINTER_TYPE "printer-type"
#define NS_KEY_DESCRIPTION "description"
#define NS_NAME_DEFAULT "_default"
#define NS_NAME_ALL "_all"
#define NS_SVC_USER "user"
#define NS_SVC_PRINTCAP "printcap"
#define NS_SVC_ETC "etc"
#define NS_SVC_NIS "nis"
#define NS_SVC_LDAP "ldap"
#define NS_EXT_SOLARIS "solaris"
#define NS_EXT_GENERIC "extensions"
#define NS_EXT_HPUX "hpux"
#define NS_EXT_DEC "dec"
#define NOTUNIQUE 0
#define UNIQUE 1
#define LOCAL_UNIQUE 2
struct ns_bsd_addr {
char *server;
char *printer;
char *extension;
char *pname;
};
typedef struct ns_bsd_addr ns_bsd_addr_t;
struct ns_kvp {
char *key;
char *value;
};
typedef struct ns_kvp ns_kvp_t;
typedef enum NSL_RESULT
{
NSL_OK = 0,
NSL_ERR_INTERNAL = 1,
NSL_ERR_ADD_FAILED = 2,
NSL_ERR_MOD_FAILED = 3,
NSL_ERR_DEL_FAILED = 4,
NSL_ERR_UNKNOWN_PRINTER = 5,
NSL_ERR_CREDENTIALS = 6,
NSL_ERR_CONNECT = 7,
NSL_ERR_BIND = 8,
NSL_ERR_RENAME = 9,
NSL_ERR_KVP = 10,
NSL_ERR_BSDADDR = 11,
NSL_ERR_PNAME = 12,
NSL_ERR_MEMORY = 13,
NSL_ERR_MULTIOP = 14,
NSL_ERR_NOTALLOWED = 15,
NSL_ERROR = -1
} NSL_RESULT;
typedef enum NS_PASSWD_TYPE {
NS_PW_INSECURE = 0,
NS_PW_SECURE = 1
} NS_PASSWD_TYPE;
struct ns_cred {
char *binddn;
char *passwd;
char *host;
int port;
NS_PASSWD_TYPE passwdType;
uchar_t *domainDN;
};
typedef struct ns_cred ns_cred_t;
typedef struct NS_LDAPDATA {
char **attrList;
} NS_LDAPDATA;
struct ns_printer {
char *name;
char **aliases;
char *source;
ns_kvp_t **attributes;
ns_cred_t *cred;
void *nsdata;
};
typedef struct ns_printer ns_printer_t;
extern ns_printer_t *ns_printer_create(char *, char **, char *, ns_kvp_t **);
extern ns_printer_t *ns_printer_get_name(const char *, const char *);
extern ns_printer_t **ns_printer_get_list(const char *);
extern int ns_printer_put(const ns_printer_t *);
extern void ns_printer_destroy(ns_printer_t *);
extern int setprinterentry(int, char *);
extern int endprinterentry();
extern int getprinterentry(char *, int, char *);
extern int getprinterbyname(char *, char *, int, char *);
extern char *_cvt_printer_to_entry(ns_printer_t *, char *, int);
extern ns_printer_t *_cvt_nss_entry_to_printer(char *, char *);
extern ns_printer_t *posix_name(const char *);
extern void *ns_get_value(const char *, const ns_printer_t *);
extern char *ns_get_value_string(const char *, const ns_printer_t *);
extern int ns_set_value(const char *, const void *, ns_printer_t *);
extern int ns_set_value_from_string(const char *, const char *,
ns_printer_t *);
extern ns_kvp_t *ns_kvp_create(const char *, const char *);
extern int ns_kvp_destroy(void *, __va_list);
extern ns_bsd_addr_t *ns_bsd_addr_get_default();
extern ns_bsd_addr_t *ns_bsd_addr_get_name(char *name);
extern ns_bsd_addr_t **ns_bsd_addr_get_all(int);
extern ns_bsd_addr_t **ns_bsd_addr_get_list(int);
extern int ns_printer_match_name(ns_printer_t *, const char *);
extern char *ns_printer_name_list(const ns_printer_t *);
extern char *value_to_string(const char *, void *);
extern void *string_to_value(const char *, char *);
extern char *normalize_ns_name(char *);
extern char *strncat_escaped(char *, char *, int, char *);
#ifdef __cplusplus
}
#endif
#endif