* Handle UDP response from main thread * @private
(msg)
| 136 | * @private |
| 137 | */ |
| 138 | _handleUdpResponse(msg) { |
| 139 | const { data, srcIP, srcPort, dstIP, dstPort } = msg; |
| 140 | |
| 141 | // Build UDP response packet |
| 142 | const udpHeader = Buffer.alloc(8); |
| 143 | udpHeader.writeUInt16BE(dstPort, 0); // src port (from external server) |
| 144 | udpHeader.writeUInt16BE(srcPort, 2); // dst port (back to VM) |
| 145 | udpHeader.writeUInt16BE(8 + data.length, 4); // length |
| 146 | udpHeader.writeUInt16BE(0, 6); // checksum (optional) |
| 147 | |
| 148 | const payload = Buffer.concat([udpHeader, Buffer.from(data)]); |
| 149 | |
| 150 | // Send IP packet back to VM |
| 151 | const dstIPBuf = Buffer.from(dstIP.split('.').map(Number)); |
| 152 | const srcIPBuf = Buffer.from(srcIP.split('.').map(Number)); |
| 153 | |
| 154 | this.sendIP(payload, IP_PROTO_UDP, dstIPBuf, srcIPBuf); |
| 155 | } |
| 156 | |
| 157 | /** |
| 158 | * Handle TCP connected event from main thread |
no test coverage detected