internal static AGDnsApi.ag_upstream_options ToNativeObject( UpstreamOptions upstreamOptions, Queue <IntPtr> allocatedPointers) { AGDnsApi.ag_list bootstrapC = MarshalUtils.ListToAgList( upstreamOptions.Bootstrap, MarshalUtils.StringToPtr, allocatedPointers); byte[] addressBytes = null; if (upstreamOptions.ResolvedIpAddress != null) { addressBytes = upstreamOptions.ResolvedIpAddress.GetAddressBytes(); } AGDnsApi.ag_buffer addressC = MarshalUtils.BytesToAgBuffer(addressBytes, allocatedPointers); AGDnsApi.ag_upstream_options upstreamOptionsC = new AGDnsApi.ag_upstream_options { bootstrap = bootstrapC, resolved_ip_address = addressC }; MarshalUtils.CopyPropertiesToFields(upstreamOptions, ref upstreamOptionsC); MarshalUtils.AllStringsToPtrs(upstreamOptions, ref upstreamOptionsC, allocatedPointers); return(upstreamOptionsC); }
public static AGDnsApi.ag_dns_stamp ToNativeObject( DnsStamp dnsStamp, Queue <IntPtr> allocatedPointers) { MarshalUtils.ag_buffer publicKeyC = MarshalUtils.BytesToAgBuffer(dnsStamp.PublicKey); MarshalUtils.ag_list hashesC = MarshalUtils.ListToAgList( dnsStamp.Hashes, (x, y) => MarshalUtils.BytesToAgBuffer(x), allocatedPointers); AGDnsApi.ag_dns_stamp dnsStampС = new AGDnsApi.ag_dns_stamp { ProtoType = dnsStamp.ProtoType, ServerAddress = MarshalUtils.StringToPtr(dnsStamp.ServerAddress), ProviderName = MarshalUtils.StringToPtr(dnsStamp.ProviderName), DoHPath = MarshalUtils.StringToPtr(dnsStamp.DoHPath), server_public_key = publicKeyC, hashes = hashesC, Properties = dnsStamp.Properties }; return(dnsStampС); }