Put back the changes that Simo reverted and fix a speling mistak.
[tprouty/samba.git] / source / nsswitch / winbindd_nss.h
index 5c2db2ac2c0ab3234675c0ac8297b1060d32cf8c..41fecd2816cf8d6d715e1fb73beed2be77ab96ff 100644 (file)
 
 #define WINBINDD_SOCKET_NAME "pipe"            /* Name of PF_UNIX socket */
 #define WINBINDD_SOCKET_DIR  "/tmp/.winbindd"  /* Name of PF_UNIX dir */
-
+#define WINBINDD_PRIV_SOCKET_SUBDIR "winbindd_privileged" /* name of subdirectory of lp_lockdir() to hold the 'privileged' pipe */
 #define WINBINDD_DOMAIN_ENV  "WINBINDD_DOMAIN" /* Environment variables */
 #define WINBINDD_DONT_ENV    "_NO_WINBINDD"
 
 /* Update this when you change the interface.  */
 
-#define WINBIND_INTERFACE_VERSION 6
+#define WINBIND_INTERFACE_VERSION 8
 
 /* Socket commands */
 
@@ -99,19 +99,56 @@ enum winbindd_cmd {
        WINBINDD_WINS_BYIP,
        WINBINDD_WINS_BYNAME,
 
+       /* account management commands */
+
+       WINBINDD_CREATE_USER,
+       WINBINDD_CREATE_GROUP,
+       WINBINDD_ADD_USER_TO_GROUP,
+       WINBINDD_REMOVE_USER_FROM_GROUP,
+       WINBINDD_SET_USER_PRIMARY_GROUP,
+       WINBINDD_DELETE_USER,
+       WINBINDD_DELETE_GROUP,
+       
        /* this is like GETGRENT but gives an empty group list */
        WINBINDD_GETGRLST,
 
+       WINBINDD_NETBIOS_NAME,       /* The netbios name of the server */
        /* Placeholder for end of cmd list */
 
+       /* find the location of our privileged pipe */
+       WINBINDD_PRIV_PIPE_DIR,
+
        WINBINDD_NUM_CMDS
 };
 
-#define WINBIND_PAM_INFO3_NDR  0x0001
-#define WINBIND_PAM_INFO3_TEXT 0x0002
-#define WINBIND_PAM_NTKEY      0x0004
-#define WINBIND_PAM_LMKEY      0x0008
-#define WINBIND_PAM_CONTACT_TRUSTDOM 0x0010
+typedef struct winbindd_pw {
+       fstring pw_name;
+       fstring pw_passwd;
+       uid_t pw_uid;
+       gid_t pw_gid;
+       fstring pw_gecos;
+       fstring pw_dir;
+       fstring pw_shell;
+} WINBINDD_PW;
+
+
+typedef struct winbindd_gr {
+       fstring gr_name;
+       fstring gr_passwd;
+       gid_t gr_gid;
+       int num_gr_mem;
+       int gr_mem_ofs;   /* offset to group membership */
+       char **gr_mem;
+} WINBINDD_GR;
+
+
+#define WBFLAG_PAM_INFO3_NDR           0x0001
+#define WBFLAG_PAM_INFO3_TEXT          0x0002
+#define WBFLAG_PAM_NTKEY               0x0004
+#define WBFLAG_PAM_LMKEY               0x0008
+#define WBFLAG_PAM_CONTACT_TRUSTDOM    0x0010
+#define WBFLAG_QUERY_ONLY              0x0020
+#define WBFLAG_ALLOCATE_RID            0x0040
 
 /* Winbind request structure */
 
@@ -119,6 +156,8 @@ struct winbindd_request {
        uint32 length;
        enum winbindd_cmd cmd;   /* Winbindd command to execute */
        pid_t pid;               /* pid of calling process */
+       uint32 flags;            /* flags relavant to a given request */
+       fstring domain_name;    /* name of domain for which the request applies */
 
        union {
                fstring winsreq;     /* WINS request */
@@ -142,7 +181,6 @@ struct winbindd_request {
                         fstring nt_resp;
                         uint16 nt_resp_len;
                        fstring workstation;
-                       uint32 flags;
                 } auth_crap;
                 struct {
                     fstring user;
@@ -155,6 +193,10 @@ struct winbindd_request {
                        fstring name;       
                } name;
                uint32 num_entries;  /* getpwent, getgrent */
+               struct {
+                       fstring username;
+                       fstring groupname;
+               } acct_mgt;
        } data;
        char null_term;
 };
@@ -184,25 +226,11 @@ struct winbindd_response {
 
                /* getpwnam, getpwuid */
                
-               struct winbindd_pw {
-                       fstring pw_name;
-                       fstring pw_passwd;
-                       uid_t pw_uid;
-                       gid_t pw_gid;
-                       fstring pw_gecos;
-                       fstring pw_dir;
-                       fstring pw_shell;
-               } pw;
+               struct winbindd_pw pw;
 
                /* getgrnam, getgrgid */
 
-               struct winbindd_gr {
-                       fstring gr_name;
-                       fstring gr_passwd;
-                       gid_t gr_gid;
-                       int num_gr_mem;
-                       int gr_mem_ofs;   /* offset to group membership */
-               } gr;
+               struct winbindd_gr gr;
 
                uint32 num_entries; /* getpwent, getgrent */
                struct winbindd_sid {
@@ -221,6 +249,7 @@ struct winbindd_response {
                        fstring samba_version;
                } info;
                fstring domain_name;
+               fstring netbios_name;
 
                struct auth_reply {
                        uint32 nt_status;
@@ -230,6 +259,7 @@ struct winbindd_response {
                        char nt_session_key[16];
                        char first_8_lm_hash[8];
                } auth;
+               uint32 rid;     /* create user or group */
        } data;
 
        /* Variable length return data */