⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clirap2.c

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	    p++; /* pad byte */	    GETSTRINGF(p, notifyname, RAP_MACHNAME_LEN);	    GETSTRINGF(p, datatype, RAP_DATATYPE_LEN);	    GETSTRINGP(p, jparms, rdata, converter);	    GETWORD(p, pos);	    GETWORD(p, fsstatus);	    GETSTRINGP(p, jstatus, rdata, converter);	    GETDWORD(p, submitted);	    GETDWORD(p, jsize);	    GETSTRINGP(p, jcomment, rdata, converter);	  	    jfn(jid, ownername, notifyname, datatype, jparms, pos, fsstatus,		jstatus, submitted, jsize, jcomment);	  }	}      }    } else {      DEBUG(4,("NetPrintQEnum res=%d\n", res));    }  } else {    DEBUG(4,("NetPrintQEnum no data returned\n"));  }      SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;  }int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer,	void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16),	void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint,uint,const char*)){  char param[WORDSIZE                         /* api number    */	    +sizeof(RAP_NetPrintQGetInfo_REQ) /* req string    */	    +sizeof(RAP_PRINTQ_INFO_L2)       /* return string */ 	    +RAP_SHARENAME_LEN                /* printer name  */	    +WORDSIZE                         /* info level    */	    +WORDSIZE                         /* buffer size   */	    +sizeof(RAP_SMB_PRINT_JOB_L1)];   /* more ret data */  char *p;  char *rparam = NULL;  char *rdata = NULL;   unsigned int rprcnt, rdrcnt;  int res = -1;    memset(param, '\0',sizeof(param));  p = make_header(param, RAP_WPrintQGetInfo,		  RAP_NetPrintQGetInfo_REQ, RAP_PRINTQ_INFO_L2);  PUTSTRING(p, printer, RAP_SHARENAME_LEN-1);  PUTWORD(p, 2);     /* Info level 2 */  PUTWORD(p,0xFFE0); /* Return buffer size */  PUTSTRING(p, RAP_SMB_PRINT_JOB_L1, 0);  if (cli_api(cli,	      param, PTR_DIFF(p,param),1024,	      NULL, 0, CLI_BUFFER_SIZE,	      &rparam, &rprcnt,	      &rdata, &rdrcnt)) {    res = GETRES(rparam);    cli->rap_error = res;    if (res != 0) {      DEBUG(1,("NetPrintQGetInfo gave error %d\n", res));    }  }  if (rdata) {    if (res == 0 || res == ERRmoredata) {      int rsize, converter;      pstring qname, sep_file, print_proc, dest, parms, comment;      uint16 jobcount, priority, start_time, until_time, status;            p = rparam + WORDSIZE;      GETWORD(p, converter);      GETWORD(p, rsize);      p = rdata;      GETSTRINGF(p, qname, RAP_SHARENAME_LEN);      p++; /* pad */      GETWORD(p, priority);      GETWORD(p, start_time);      GETWORD(p, until_time);      GETSTRINGP(p, sep_file, rdata, converter);      GETSTRINGP(p, print_proc, rdata, converter);      GETSTRINGP(p, dest, rdata, converter);      GETSTRINGP(p, parms, rdata, converter);      GETSTRINGP(p, comment, rdata, converter);      GETWORD(p, status);      GETWORD(p, jobcount);      qfn(qname, priority, start_time, until_time, sep_file, print_proc,	  dest, parms, comment, status, jobcount);      if (jobcount) {	int j;	for (j=0;(j<jobcount)&&(PTR_DIFF(p,rdata)< rsize);j++) {	  uint16 jid, pos, fsstatus;	  pstring ownername, notifyname, datatype, jparms, jstatus, jcomment;	  unsigned int submitted, jsize;	  GETWORD(p, jid);	  GETSTRINGF(p, ownername, RAP_USERNAME_LEN);	  p++; /* pad byte */	  GETSTRINGF(p, notifyname, RAP_MACHNAME_LEN);	  GETSTRINGF(p, datatype, RAP_DATATYPE_LEN);	  GETSTRINGP(p, jparms, rdata, converter);	  GETWORD(p, pos);	  GETWORD(p, fsstatus);	  GETSTRINGP(p, jstatus, rdata, converter);	  GETDWORD(p, submitted);	  GETDWORD(p, jsize);	  GETSTRINGP(p, jcomment, rdata, converter);	  	  jfn(jid, ownername, notifyname, datatype, jparms, pos, fsstatus,	      jstatus, submitted, jsize, jcomment);	}      }    } else {      DEBUG(4,("NetPrintQGetInfo res=%d\n", res));    }  } else {    DEBUG(4,("NetPrintQGetInfo no data returned\n"));  }      SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;  }/****************************************************************************call a NetServiceEnum - list running services on a different host****************************************************************************/int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state){  char param[WORDSIZE                     /* api number    */	    +sizeof(RAP_NetServiceEnum_REQ) /* parm string   */	    +sizeof(RAP_SERVICE_INFO_L2)    /* return string */	    +WORDSIZE                     /* info level    */	    +WORDSIZE];                   /* buffer size   */  char *p;  char *rparam = NULL;  char *rdata = NULL;   unsigned int rprcnt, rdrcnt;  int res = -1;      memset(param, '\0', sizeof(param));  p = make_header(param, RAP_WServiceEnum,		  RAP_NetServiceEnum_REQ, RAP_SERVICE_INFO_L2);  PUTWORD(p,2); /* Info level 2 */    PUTWORD(p,0xFFE0); /* Return buffer size */  if (cli_api(cli,	      param, PTR_DIFF(p,param),8,	      NULL, 0, 0xFFE0 /* data area size */,	      &rparam, &rprcnt,	      &rdata, &rdrcnt)) {    res = GETRES(rparam);    cli->rap_error = res;    if(cli->rap_error == 234)         DEBUG(1,("Not all service names were returned (such as those longer than 15 characters)\n"));    else if (cli->rap_error != 0) {      DEBUG(1,("NetServiceEnum gave error %d\n", cli->rap_error));    }  }  if (rdata) {    if (res == 0 || res == ERRmoredata) {      int i, count;      p = rparam + WORDSIZE + WORDSIZE; /* skip result and converter */      GETWORD(p, count);      for (i=0,p=rdata;i<count;i++) {	    pstring comment;	    char servicename[RAP_SRVCNAME_LEN];	    GETSTRINGF(p, servicename, RAP_SRVCNAME_LEN);	    p+=8; /* pass status words */	    GETSTRINGF(p, comment, RAP_SRVCCMNT_LEN);	    fn(servicename, comment, cli);  /* BB add status too */      }	    } else {      DEBUG(4,("NetServiceEnum res=%d\n", res));    }  } else {    DEBUG(4,("NetServiceEnum no data returned\n"));  }      SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;}/****************************************************************************call a NetSessionEnum - list workstations with sessions to an SMB server****************************************************************************/int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16, uint16, uint16, uint, uint, uint, char *)){  char param[WORDSIZE                       /* api number    */	    +sizeof(RAP_NetSessionEnum_REQ) /* parm string   */	    +sizeof(RAP_SESSION_INFO_L2)    /* return string */	    +WORDSIZE                       /* info level    */	    +WORDSIZE];                     /* buffer size   */  char *p;  char *rparam = NULL;  char *rdata = NULL;   unsigned int rprcnt, rdrcnt;  int res = -1;    memset(param, '\0', sizeof(param));  p = make_header(param, RAP_WsessionEnum, 		  RAP_NetSessionEnum_REQ, RAP_SESSION_INFO_L2);  PUTWORD(p,2);    /* Info level 2 */  PUTWORD(p,0xFF); /* Return buffer size */  if (cli_api(cli,	      param, PTR_DIFF(p,param),8,	      NULL, 0, CLI_BUFFER_SIZE,	      &rparam, &rprcnt,	      &rdata, &rdrcnt)) {    res = GETRES(rparam);    cli->rap_error = res;    if (res != 0) {      DEBUG(1,("NetSessionEnum gave error %d\n", res));    }  }  if (rdata) {    if (res == 0 || res == ERRmoredata) {      int i, converter, count;            p = rparam + WORDSIZE;      GETWORD(p, converter);      GETWORD(p, count);      for (i=0,p=rdata;i<count;i++) {	pstring wsname, username, clitype_name;	uint16  num_conns, num_opens, num_users;	unsigned int    sess_time, idle_time, user_flags;	GETSTRINGP(p, wsname, rdata, converter);	GETSTRINGP(p, username, rdata, converter);	GETWORD(p, num_conns);	GETWORD(p, num_opens);	GETWORD(p, num_users);	GETDWORD(p, sess_time);	GETDWORD(p, idle_time);	GETDWORD(p, user_flags);	GETSTRINGP(p, clitype_name, rdata, converter);	fn(wsname, username, num_conns, num_opens, num_users, sess_time,	   idle_time, user_flags, clitype_name);      }	    } else {      DEBUG(4,("NetSessionEnum res=%d\n", res));    }  } else {    DEBUG(4,("NetSesssionEnum no data returned\n"));  }      SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;}/**************************************************************************** Call a NetSessionGetInfo - get information about other session to an SMB server.****************************************************************************/int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation, void (*fn)(const char *, const char *, uint16, uint16, uint16, uint, uint, uint, const char *)){  char param[WORDSIZE                          /* api number    */	    +sizeof(RAP_NetSessionGetInfo_REQ) /* req string    */	    +sizeof(RAP_SESSION_INFO_L2)       /* return string */ 	    +RAP_MACHNAME_LEN                  /* wksta name    */	    +WORDSIZE                          /* info level    */	    +WORDSIZE];                        /* buffer size   */  char *p;  char *rparam = NULL;  char *rdata = NULL;   unsigned int rprcnt, rdrcnt;  int res = -1;    memset(param, '\0', sizeof(param));  p = make_header(param, RAP_WsessionGetInfo, 		  RAP_NetSessionGetInfo_REQ, RAP_SESSION_INFO_L2);  PUTSTRING(p, workstation, RAP_MACHNAME_LEN-1);  PUTWORD(p,2); /* Info level 2 */  PUTWORD(p,0xFF); /* Return buffer size */  if (cli_api(cli,	      param, PTR_DIFF(p,param),PTR_DIFF(p,param),	      NULL, 0, CLI_BUFFER_SIZE,	      &rparam, &rprcnt,	      &rdata, &rdrcnt)) {    cli->rap_error = SVAL(rparam,0);    if (cli->rap_error != 0) {      DEBUG(1,("NetSessionGetInfo gave error %d\n", cli->rap_error));    }  }  if (rdata) {    res = GETRES(rparam);        if (res == 0 || res == ERRmoredata) {      int converter;      pstring wsname, username, clitype_name;      uint16  num_conns, num_opens, num_users;      unsigned int    sess_time, idle_time, user_flags;      p = rparam + WORDSIZE;      GETWORD(p, converter);      p += WORDSIZE;            /* skip rsize */      p = rdata;      GETSTRINGP(p, wsname, rdata, converter);      GETSTRINGP(p, username, rdata, converter);      GETWORD(p, num_conns);      GETWORD(p, num_opens);      GETWORD(p, num_users);      GETDWORD(p, sess_time);      GETDWORD(p, idle_time);      GETDWORD(p, user_flags);      GETSTRINGP(p, clitype_name, rdata, converter);            fn(wsname, username, num_conns, num_opens, num_users, sess_time,	 idle_time, user_flags, clitype_name);    } else {      DEBUG(4,("NetSessionGetInfo res=%d\n", res));    }  } else {    DEBUG(4,("NetSessionGetInfo no data returned\n"));  }      SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;  }/****************************************************************************call a NetSessionDel - close a session to an SMB server****************************************************************************/int cli_NetSessionDel(struct cli_state *cli, const char *workstation){  char param[WORDSIZE                      /* api number       */	    +sizeof(RAP_NetSessionDel_REQ) /* req string       */	    +1                             /* no return string */	    +RAP_MACHNAME_LEN              /* workstation name */	    +WORDSIZE];                    /* reserved (0)     */  char *p;  char *rparam = NULL;  char *rdata = NULL;  unsigned int rprcnt, rdrcnt;  int res;  memset(param, '\0', sizeof(param));  p = make_header(param, RAP_WsessionDel, RAP_NetSessionDel_REQ, NULL);  PUTSTRING(p, workstation, RAP_MACHNAME_LEN-1);  PUTWORD(p,0); /* reserved word of 0 */  if (cli_api(cli, 	      param, PTR_DIFF(p,param), 1024, /* Param, length, maxlen */	      NULL, 0, 200,       /* data, length, maxlen */	      &rparam, &rprcnt,   /* return params, length */	      &rdata, &rdrcnt))   /* return data, length */    {      res = GETRES(rparam);      cli->rap_error = res;            if (res == 0) {	/* nothing to do */		      }      else {	DEBUG(4,("NetFileClose2 res=%d\n", res));      }          } else {      res = -1;      DEBUG(4,("NetFileClose2 failed\n"));    }    SAFE_FREE(rparam);  SAFE_FREE(rdata);  return res;}  int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier, void (*fn)(uint16 conid, uint16 contype, uint16 numopens, uint16 numusers, uint32 contime, const char *username, const char *netname)){  char param[WORDSIZE                          /* api number    */	    +sizeof(RAP_NetConnectionEnum_REQ) /* req string    */	    +sizeof(RAP_CONNECTION_INFO_L1)    /* return string */ 	    +RAP_MACHNAME_LEN                  /* wksta name    */	    +WORDSIZE                          /* info level    */	    +WORDSIZE];                        /* buffer size   */  char *p;  char *rparam = NULL;  char *rdata = NULL;   unsigned int

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -