ForwardingLog Objects (.NET)

[C#]

public class ForwardingLog
{
  public enum Event;

  // Note:
  // - Examine the value of Event, then down cast to the appropriate ForwardingLog_Xxxx object
  public uint Event; // Event
  public string Desc;
};


public class ForwardingLog_X2Y : ForwardingLog
{
  public enum Type;

  public uint Type; // Type
  public string ListInterface;
  public uint ListPort;
  public string OrigAddress;
  public uint OrigPort;
  public string DestAddress;
  public uint DestPort;
};

using ForwardingLog_C2S = ForwardingLog_X2Y;
using ForwardingLog_S2C = ForwardingLog_X2Y;


public class ForwardingLog_X2YOpenFailed : ForwardingLog_X2Y
{
  public string AuxInfo;
};

using ForwardingLog_C2SOpenFailed = ForwardingLog_X2YOpenFailed;
using ForwardingLog_S2COpenFailed = ForwardingLog_X2YOpenFailed;


public class ForwardingLog_X2YClosed : ForwardingLog_X2Y
{
  public ulong BytesSent;
  public ulong BytesReceived;
};

using ForwardingLog_C2SClosed = ForwardingLog_X2YClosed;
using ForwardingLog_S2CClosed = ForwardingLog_X2YClosed;


public class ForwardingLog_ServerSideC2S : ForwardingLog
{
  public string ListInterface;
  public uint ListPort;
};


public class ForwardingLog_ServerSideC2SAddFailed : ForwardingLog_ServerSideC2S
{
  public enum ErrCode;

  public uint ErrCode; // ErrCode
  public string AuxInfo;
};


public class ForwardingLog_Proxy : ForwardingLog
{
  public string ProxyListInterface;
  public uint ProxyListPort;
  public string ProxyOrigAddress;
  public uint ProxyOrigPort;
};


public class ForwardingLog_ProxyDecodeFailed : ForwardingLog_Proxy
{
  public enum ErrCode;

  public uint ErrCode; // ErrCode
  public string AuxInfo;
};


public class ForwardingLog_ProxyStarted : ForwardingLog_Proxy
{
  public enum ProxyType;

  public uint ProxyType; // ProxyType
  public string ProxyReqAddress;
  public uint ProxyReqPort;
};


public class ForwardingLog_ProxyBindFailed : ForwardingLog_ProxyStarted
{
  public enum ErrCode;

  public uint ErrCode; // ErrCode
  public string AuxInfo;
};


public class ForwardingLog_ProxyBindStarted : ForwardingLog_ProxyStarted
{
  public string BindPublicAddress;
  public uint BindPublicPort;
  public string BindListInterface;
  public uint BindListPort;
};


public class ForwardingLog_ProxyBindAborted : ForwardingLog_ProxyBindStarted
{
  public enum AbrtCode;
    
  public uint AbrtCode; // AbrtCode
  public string AuxInfo;
};