| 217 | } |
| 218 | } |
| 219 | void VpnPlugin::Decapsulate(VpnChannel const& channel, [[maybe_unused]] VpnPacketBuffer const& encapBuffer, VpnPacketBufferList const& decapsulatedPackets, VpnPacketBufferList const&) |
| 220 | { |
| 221 | std::lock_guard _guard{ VpnPluginInstance->m_decapQueueLock }; |
| 222 | auto& q = VpnPluginInstance->m_decapQueue; |
| 223 | while (!q.empty()) { |
| 224 | auto&& incomingBuffer = q.front(); |
| 225 | const auto outBuffer = channel.GetVpnReceivePacketBuffer(); |
| 226 | decapsulatedPackets.Append(outBuffer); |
| 227 | const auto outBuf = outBuffer.Buffer(); |
| 228 | const auto size = incomingBuffer.size(); |
| 229 | if (memcpy_s(outBuf.data(), outBuf.Capacity(), incomingBuffer.data(), size)) { |
| 230 | return; |
| 231 | } |
| 232 | outBuf.Length(static_cast<uint32_t>(size)); |
| 233 | q.pop(); |
| 234 | } |
| 235 | } |
| 236 | } |