mirror of
https://github.com/aaru-dps/aaruremote.git
synced 2025-12-16 19:24:37 +00:00
Implement Get FireWire Data packet, and support for Linux.
This commit is contained in:
41
main.c
41
main.c
@@ -66,6 +66,7 @@ int main()
|
||||
char* ocr;
|
||||
char* scr;
|
||||
DicPacketResGetUsbData* pkt_res_usb;
|
||||
DicPacketResGetFireWireData* pkt_res_firewire;
|
||||
|
||||
printf("DiscImageChef Remote Server %s\n", DICMOTE_VERSION);
|
||||
printf("Copyright (C) 2019 Natalia Portillo\n");
|
||||
@@ -660,11 +661,49 @@ int main()
|
||||
write(cli_sock, pkt_res_usb, pkt_res_usb->hdr.len);
|
||||
free(pkt_res_usb);
|
||||
continue;
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_GET_FIREWIRE_DATA:
|
||||
// Packet only contains header so, dummy
|
||||
in_buf = malloc(pkt_hdr->len);
|
||||
|
||||
if(!in_buf)
|
||||
{
|
||||
printf("Fatal error %d allocating memory for packet, closing connection...\n", errno);
|
||||
free(pkt_hdr);
|
||||
close(cli_sock);
|
||||
continue;
|
||||
}
|
||||
|
||||
recv(cli_sock, in_buf, pkt_hdr->len, 0);
|
||||
free(in_buf);
|
||||
|
||||
pkt_res_firewire = malloc(sizeof(DicPacketResGetFireWireData));
|
||||
if(!pkt_res_firewire)
|
||||
{
|
||||
printf("Fatal error %d allocating memory for packet, closing connection...\n", errno);
|
||||
free(pkt_hdr);
|
||||
close(cli_sock);
|
||||
continue;
|
||||
}
|
||||
|
||||
memset(pkt_res_firewire, 0, sizeof(DicPacketResGetFireWireData));
|
||||
pkt_res_firewire->hdr.id = DICMOTE_PACKET_ID;
|
||||
pkt_res_firewire->hdr.version = DICMOTE_PACKET_VERSION;
|
||||
pkt_res_firewire->hdr.packet_type = DICMOTE_PACKET_TYPE_RESPONSE_GET_FIREWIRE_DATA;
|
||||
pkt_res_firewire->hdr.len = sizeof(DicPacketResGetFireWireData);
|
||||
pkt_res_firewire->isFireWire = GetFireWireData(device_path,
|
||||
&pkt_res_firewire->idModel,
|
||||
&pkt_res_firewire->idVendor,
|
||||
&pkt_res_firewire->guid,
|
||||
pkt_res_firewire->vendor,
|
||||
pkt_res_firewire->model);
|
||||
|
||||
write(cli_sock, pkt_res_firewire, pkt_res_firewire->hdr.len);
|
||||
free(pkt_res_firewire);
|
||||
continue;
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_ATA_CHS:
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_ATA_LBA28:
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_ATA_LBA48:
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_SDHCI:
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_GET_FIREWIRE_DATA:
|
||||
case DICMOTE_PACKET_TYPE_COMMAND_GET_PCMCIA_DATA:
|
||||
pkt_nop->reason_code = DICMOTE_PACKET_NOP_REASON_NOT_IMPLEMENTED;
|
||||
memset(&pkt_nop->reason, 0, 256);
|
||||
|
||||
Reference in New Issue
Block a user