public void Connect(VpnChannel channel) { List <HostName> hosts = new List <HostName>(); hosts.Add(new HostName("216.58.208.46")); StreamSocket streamsock = new StreamSocket(); VpnRouteAssignment vpr = new VpnRouteAssignment(); vpr.ExcludeLocalSubnets = true; VpnNamespaceAssignment na = new VpnNamespaceAssignment(); VpnInterfaceId id = new VpnInterfaceId(Encoding.ASCII.GetBytes("1")); channel.AssociateTransport(streamsock, null); //channel.TerminateConnection("FUCKU"); try { channel.Start(null, null, id, vpr, na, 512, 512, true, streamsock, null); VpnPacketBuffer buf = channel.GetVpnReceivePacketBuffer(); } catch (Exception e) { return; } }
public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapBuffer, VpnPacketBufferList decapsulatedPackets, VpnPacketBufferList controlPacketsToSend) { var context = channel.PlugInContext as VpnContext; while (context.PendingPackets.TryDequeue(out byte[] originBuffer)) { var buf = channel.GetVpnReceivePacketBuffer(); if (encapBuffer.Buffer.Length > buf.Buffer.Capacity) { LogLine("Dropped one packet", channel); //Drop larger packets. return; } originBuffer.CopyTo(0, buf.Buffer, 0, originBuffer.Length); buf.Buffer.Length = (uint)originBuffer.Length; LogLine("Added one packet" + buf.Buffer.Length, channel); decapsulatedPackets.Append(buf); } //var buf = channel.GetVpnReceivePacketBuffer(); // LogLine("Decapsulating one packet", channel); //if (encapBuffer.Buffer.Length > buf.Buffer.Capacity) //{ // LogLine("Dropped one packet", channel); // //Drop larger packets. // return; //} //encapBuffer.Buffer.CopyTo(buf.Buffer); //buf.Buffer.Length = encapBuffer.Buffer.Length; //decapsulatedPackets.Append(buf); // LogLine("Decapsulated one packet", channel); }
public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapBuffer, VpnPacketBufferList decapsulatedPackets, VpnPacketBufferList controlPacketsToSend) { var buf = channel.GetVpnReceivePacketBuffer(); // LogLine("Decapsulating one packet", channel); if (encapBuffer.Buffer.Length > buf.Buffer.Capacity) { //Drop larger packets. return; } encapBuffer.Buffer.CopyTo(buf.Buffer); buf.Buffer.Length = encapBuffer.Buffer.Length; decapsulatedPackets.Append(buf); }
public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapPacketBuffer, VpnPacketBufferList decapsulatedPackets, VpnPacketBufferList controlPacketsToSend) { try { var reader = context.outPackets?.Reader; if (reader == null) { return; } while (reader.TryRead(out var bytes)) { var encapBuffer = channel.GetVpnReceivePacketBuffer(); var encapBuf = encapBuffer.Buffer; bytes.CopyTo(encapBuf); encapBuf.Length = (uint)bytes.Length; decapsulatedPackets.Append(encapBuffer); } } catch (Exception ex) { DebugLogger.Log("Error decapsulating packets: " + ex.ToString()); } }