int CTCPSocket::Recv(char *buff, int buffsize, int isec, int iusec) { if ( buff == NULL || buffsize < 1 || isec < 0 || iusec < 0 ) { return K_E_SIGNATURE_ERROR; } struct timeval timeout; timeout.tv_sec = isec; timeout.tv_usec = iusec; fd_set fds; FD_ZERO(&fds); FD_SET(m_s, &fds); int Ret = select( m_s + 1, &fds, NULL, NULL, &timeout); #ifdef DEBUG cerr << "AGENT Recv select : " << Ret << " socket : " << m_s << endl; #endif if ( Ret <= 0 ) // || FD_ISSET(m_s + 1, &fds) == 0 ) { return K_E_SELECT_TIMEOUT; } int iRet = recv(m_s, buff, buffsize, 0); #ifdef DEBUG cerr << "AGENT Recv iRet : " << iRet << " socket : " << m_s << endl; if ( iRet > 0 ) DUMP_MEM((unsigned char*)buff, iRet); #endif return iRet; }
static void smbsim_serial_dev_read_handler(SMBSIM_SERIAL_PORT * port, const void *buf, size_t len) { SMBSIM_SERIAL_DEV *dev = container_of(port, SMBSIM_SERIAL_DEV, port); DUMP_MEM(buf, len); if (len == 0) tty_insert_flip_char(&dev->tty_port, 0, TTY_NORMAL); else tty_insert_flip_string(&dev->tty_port, buf, len); tty_flip_buffer_push(&dev->tty_port); }
void link_send_pkt(LINK_DATA * link, CLIENT_DATA * src, const char *buf, int len) { PKT_INFO info; TRACE_MSG(TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "Forward %d bytes\n", len); DUMP_MEM(buf, len); info.src = src; info.buf = buf; info.len = len; xpcf_list_proc(&link->clients, send_pkt_to_client, &info); }
XPCF_CB(void)PortReceive(void *ctx, CSF_PKT * pkt) { BASE_FILE *File = (BASE_FILE *) ctx; CSFBR_FILE_DATA *FileData = (CSFBR_FILE_DATA *) BaseFileGetPrivate(File); TRACE_MSG(TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "%u bytes received\n", csf_pkt_get_len(pkt)); DUMP_MEM(csf_pkt_get_buf(pkt), csf_pkt_get_len(pkt)); csf_pktq_insert(FileData->rxq, pkt); NotifyReceivedPacket(File); }
static int smbsim_serial_write(struct tty_struct *tty, const unsigned char *buf, int count) { SMBSIM_SERIAL_DEV *dev = smbsim_serial_devs + tty->index; int ret; TRACE_MSG(TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "0x%p - count=%d\n", dev, count); DUMP_MEM(buf, count); if (count == 0) { TRACE_MSG(TRACE_LEVEL_ERROR, TRACE_FLAG_DEFAULT, "Invalid count=%u\n", count); return 0; } if (dev->write_size == 0) { if (buf[0] > WRITE_BUF_SZ) { TRACE_MSG(TRACE_LEVEL_ERROR, TRACE_FLAG_DEFAULT, "Invalid size=%u\n", buf[0]); return -EINVAL; } dev->write_size = buf[0]; dev->cur_size = count - 1; if (dev->cur_size) memcpy(dev->write_data, buf + 1, dev->cur_size); } else { memcpy(dev->write_data + dev->cur_size, buf, count); dev->cur_size += count; } if (dev->cur_size < dev->write_size) { TRACE_MSG(TRACE_LEVEL_WARN, TRACE_FLAG_DEFAULT, "Need more data (cur=%u, total=%u)\n", dev->cur_size, dev->write_size); return count; } TRACE_MSG(TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "Write %u bytes\n", dev->write_size); ret = smbsim_serial_port_write(&dev->port, dev->write_data, dev->write_size); dev->write_size = 0; if (ret) return ret; return count; }
int CTCPSocket::Send(char *buff, int buffsize) { if ( buff == NULL || buffsize < 1 ) { return K_E_SIGNATURE_ERROR; } int iRet = send(m_s, buff, buffsize, 0); #ifdef DEBUG cerr << "AGENT Send Request Size : " << buffsize << endl; cerr << "AGENT Send iRet : " << iRet << " socket : " << m_s << endl; if ( iRet > 0 ) DUMP_MEM((unsigned char*)buff, iRet); #endif return iRet; }
void DumpBufferList(__in BASE_FILE * File) { BASE_DEVICE *Device = BaseFileGetDevice(File); DEVICE_DATA *DeviceData = (DEVICE_DATA *) BaseDeviceGetPrivate(Device); KIRQL OldIrql; PLIST_ENTRY ListHead, ListEntry; BUFFER_DATA *BufferData; KeAcquireSpinLock(&DeviceData->BufferListLock, &OldIrql); ListHead = &DeviceData->BufferList; for (ListEntry = ListHead->Flink; ListEntry != ListHead; ListEntry = ListEntry->Flink) { BufferData = CONTAINING_RECORD(ListEntry, BUFFER_DATA, ListEntry); TRACE_MSG(TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "Buffer 0x%p, Length %u\n", BufferData, BufferData->Length); DUMP_MEM(BufferData->Data, BufferData->Length); } KeReleaseSpinLock(&DeviceData->BufferListLock, OldIrql); }
HRESULT CUSBSimEndpoint::OnDeviceRequest (USBSETUPREQUEST * pSetupRequest, ULONG * RequestHandle, BYTE * pbRequestData, ULONG cbRequestData, BYTE ** ppbResponseData, ULONG * pcbResponseData, BYTE * pbSetupStatus) { PBYTE pBuf = pbRequestData; USHORT BytesTransferred; BOOL bRead = (pSetupRequest->bmRequestType.Bits.Direction == DIR_DEVICE_TO_HOST); USBSIM_XACT_STS sts; HRESULT hr = S_OK; UNREFERENCED_PARAMETER (RequestHandle); UNREFERENCED_PARAMETER (cbRequestData); TRACE_MSG (TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "Setup - %02X %02X %04X %04X %04X\n", pSetupRequest->bmRequestType.Byte, pSetupRequest->bRequest, pSetupRequest->sSetupValue, pSetupRequest->sSetupIndex, pSetupRequest->sSetupLength); // Return error for set address request so that it will be handled by DSF if (pSetupRequest->bmRequestType.Byte == 0 && pSetupRequest->bRequest == SET_ADDRESS) { return E_NOTIMPL; } if (bRead && pSetupRequest->sSetupLength > 0) { pBuf = (PBYTE) CoTaskMemAlloc (pSetupRequest->sSetupLength); if (pBuf == NULL) { return E_OUTOFMEMORY; } } sts = usbsim_pipe_request (m_Pipe, pSetupRequest->bmRequestType.Byte, pSetupRequest->bRequest, pSetupRequest->sSetupValue, pSetupRequest->sSetupIndex, pSetupRequest->sSetupLength, pBuf, 0, &BytesTransferred); if (sts != USBSIM_XACT_STS_OK) { if (bRead && pBuf) { CoTaskMemFree (pBuf); } switch (sts) { case USBSIM_XACT_STS_NAK: TRACE_MSG (TRACE_LEVEL_ERROR, TRACE_FLAG_DEFAULT, "NAK received\n"); *pbSetupStatus = USB_NAK; break; case USBSIM_XACT_STS_STALL: TRACE_MSG (TRACE_LEVEL_ERROR, TRACE_FLAG_DEFAULT, "STALL received\n"); *pbSetupStatus = USB_STALL; break; default: TRACE_MSG (TRACE_LEVEL_ERROR, TRACE_FLAG_DEFAULT, "Unexpected transaction status=0x%X\n", sts); hr = E_FAIL; } return hr; } // // Return error for set configuration request so that it will be handled by DSF // Note that the request is passed to DSF after device simulator processes it. // if (pSetupRequest->bmRequestType.Byte == 0 && pSetupRequest->bRequest == SET_CONFIGURATION) { return E_NOTIMPL; } if (bRead && pBuf && BytesTransferred) { TRACE_MSG (TRACE_LEVEL_INFO, TRACE_FLAG_DEFAULT, "Read %u bytes\n", BytesTransferred); DUMP_MEM (pBuf, BytesTransferred); *ppbResponseData = pBuf; *pcbResponseData = BytesTransferred; } *pbSetupStatus = USB_ACK; return S_OK; }