Ejemplo n.º 1
0
int api_reply(PCONN_HND phnd, char *data, char *params,
	      int tdscnt, int tpscnt,
	      int mdrcnt, int mprcnt,
	      uint8 **rdata, uint8 **rparam,
	      uint16 *rdata_len, uint16 *rparam_len)
{
	int api_command;
	uint32 reply;
	int i;
	char *str1 = params + 2;
	char *str2 = skip_string(str1, 1);
	char *p = skip_string(str2, 1);

	*rdata = NULL;
	*rparam = NULL;
	*rdata_len = 0;
	*rparam_len = 0;

	if (!params)
	{
		DEBUG(0, ("ERROR: NULL params in api_reply()\n"));
		return NT_STATUS_INVALID_PARAMETER;
	}

	api_command = SVAL(params, 0);

	DEBUG(3,
	      ("Got API command %d of form <%s> <%s> (tdscnt=%d,tpscnt=%d,mdrcnt=%d,mprcnt=%d)\n",
	       api_command, str1, str2, tdscnt, tpscnt, mdrcnt, mprcnt));

	for (i = 0; api_commands[i].name; i++)
	{
		if (api_commands[i].id == api_command && api_commands[i].fn)
		{
			DEBUG(3, ("Doing %s\n", api_commands[i].name));
			break;
		}
	}

	if (api_commands[i].fn == NULL)
		return NT_STATUS_NOT_SUPPORTED;

	reply = api_commands[i].fn(phnd, params, data,
				   tdscnt, tpscnt, mdrcnt,
				   mprcnt, rdata, rparam, rdata_len,
				   rparam_len);


	/* if we get False back then it's actually unsupported */
	if (reply == NT_STATUS_NOPROBLEMO)
		trans_dump(api_commands[i].name, str2, 0, *rdata, *rdata_len);
	trans_dump(api_commands[i].name, str1, 1, p,
		   tpscnt - PTR_DIFF(p, params));

	return NT_STATUS_NOPROBLEMO;
}
Ejemplo n.º 2
0
int packet_dump(u_char *buffer){
    printf("\n");
    ip_dump(buffer);
    trans_dump(buffer);
    printf("\n");
}