private static AGDnsApi.ag_outbound_proxy_settings ToNativeObject( OutboundProxySettings outboundProxySettings, Queue <IntPtr> allocatedPointers) { IntPtr pOutboundProxyAuthInfoC = IntPtr.Zero; if (outboundProxySettings.AuthInfo != null) { AGDnsApi.ag_outbound_proxy_auth_info outboundProxyAuthInfoC = ToNativeObject( outboundProxySettings.AuthInfo, allocatedPointers); pOutboundProxyAuthInfoC = MarshalUtils.StructureToPtr( outboundProxyAuthInfoC, allocatedPointers); } AGDnsApi.ag_outbound_proxy_settings outboundProxySettingsC = new AGDnsApi.ag_outbound_proxy_settings { auth_info = pOutboundProxyAuthInfoC }; MarshalUtils.CopyPropertiesToFields(outboundProxySettings, ref outboundProxySettingsC); MarshalUtils.AllStringsToPtrs( outboundProxySettings, ref outboundProxySettingsC, allocatedPointers); return(outboundProxySettingsC); }
private static OutboundProxySettings FromNativeObject( AGDnsApi.ag_outbound_proxy_settings outboundProxySettingsC) { AGDnsApi.ag_outbound_proxy_auth_info outboundProxyAuthInfoC = MarshalUtils.PtrToStructure <AGDnsApi.ag_outbound_proxy_auth_info>( outboundProxySettingsC.auth_info); OutboundProxyAuthInfo authInfo = FromNativeObject(outboundProxyAuthInfoC); OutboundProxySettings outboundProxySettings = new OutboundProxySettings { AuthInfo = authInfo }; MarshalUtils.CopyFieldsToProperties(outboundProxySettingsC, outboundProxySettings); MarshalUtils.AllPtrsToStrings(outboundProxySettingsC, outboundProxySettings); return(outboundProxySettings); }
internal static DnsProxySettings FromNativeObject( AGDnsApi.ag_dnsproxy_settings dnsProxySettingsC) { List <UpstreamOptions> upstreams = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>( dnsProxySettingsC.upstreams, FromNativeObject); List <UpstreamOptions> fallbacks = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>( dnsProxySettingsC.fallbacks, FromNativeObject); List <string> fallbackDomains = MarshalUtils.AgListToList <IntPtr, string>( dnsProxySettingsC.fallbackDomains, MarshalUtils.PtrToString); AGDnsApi.ag_dns64_settings dns64C = MarshalUtils.PtrToStructure <AGDnsApi.ag_dns64_settings>(dnsProxySettingsC.pDns64); Dns64Settings dns64 = FromNativeObject(dns64C); EngineParams engineParams = FromNativeObject(dnsProxySettingsC.FilterParams); List <ListenerSettings> listeners = MarshalUtils.AgListToList <AGDnsApi.ag_listener_settings, ListenerSettings>( dnsProxySettingsC.listeners, FromNativeObject); AGDnsApi.ag_outbound_proxy_settings outboundProxySettingsC = MarshalUtils.PtrToStructure <AGDnsApi.ag_outbound_proxy_settings>(dnsProxySettingsC.outbound_proxy); OutboundProxySettings outboundProxySettings = FromNativeObject(outboundProxySettingsC); DnsProxySettings dnsProxySettings = new DnsProxySettings { Upstreams = upstreams, Fallbacks = fallbacks, FallbackDomains = fallbackDomains, Dns64 = dns64, EngineParams = engineParams, Listeners = listeners, OutboundProxySettings = outboundProxySettings }; MarshalUtils.CopyFieldsToProperties(dnsProxySettingsC, dnsProxySettings); MarshalUtils.AllPtrsToStrings(dnsProxySettingsC, dnsProxySettings); return(dnsProxySettings); }