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; }
int packet_dump(u_char *buffer){ printf("\n"); ip_dump(buffer); trans_dump(buffer); printf("\n"); }