Skip to content

Commit 64f95b4

Browse files
authored
Merge pull request #11 from 0xced/Linux
Add support for Linux (libdns_sd.so.1 from libavahi-compat-libdnssd1)
2 parents da400d7 + a8db442 commit 64f95b4

File tree

9 files changed

+387
-360
lines changed

9 files changed

+387
-360
lines changed

Arkane.Zeroconf/Providers/Bonjour/BrowseService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private void OnResolveReply (ServiceRef sdRef,
119119
this.resolvePending = false ;
120120

121121
this.InterfaceIndex = interfaceIndex ;
122-
this.FullName = Native.Utf8toString (fullname) ;
122+
this.FullName = Marshal.PtrToStringUTF8 (fullname) ;
123123
this.port = (ushort) IPAddress.NetworkToHostOrder ((short) port) ;
124124
this.TxtRecord = new TxtRecord (txtLen, txtRecord) ;
125125
this.hosttarget = hosttarget ;

Arkane.Zeroconf/Providers/Bonjour/Native.cs

Lines changed: 126 additions & 227 deletions
Large diffs are not rendered by default.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#region header
2+
3+
// Arkane.ZeroConf - NativeLinux.cs
4+
//
5+
6+
#endregion
7+
8+
#region using
9+
10+
using System ;
11+
using System.Runtime.InteropServices ;
12+
13+
using static ArkaneSystems.Arkane.Zeroconf.Providers.Bonjour.Native ;
14+
15+
#endregion
16+
17+
namespace ArkaneSystems.Arkane.Zeroconf.Providers.Bonjour ;
18+
19+
internal static class NativeLinux
20+
{
21+
private const string dllName = "libdns_sd.so.1" ;
22+
23+
[DllImport (dllName)]
24+
public static extern void DNSServiceRefDeallocate (IntPtr sdRef) ;
25+
26+
[DllImport (dllName)]
27+
public static extern ServiceError DNSServiceProcessResult (IntPtr sdRef) ;
28+
29+
[DllImport (dllName)]
30+
public static extern int DNSServiceRefSockFD (IntPtr sdRef) ;
31+
32+
[DllImport (dllName)]
33+
public static extern ServiceError DNSServiceCreateConnection (out ServiceRef sdRef) ;
34+
35+
[DllImport (dllName)]
36+
public static extern ServiceError DNSServiceBrowse (out ServiceRef sdRef,
37+
ServiceFlags flags,
38+
uint interfaceIndex,
39+
string regtype,
40+
string domain,
41+
DNSServiceBrowseReply callBack,
42+
IntPtr context) ;
43+
44+
[DllImport (dllName)]
45+
public static extern ServiceError DNSServiceResolve (out ServiceRef sdRef,
46+
ServiceFlags flags,
47+
uint interfaceIndex,
48+
byte[] name,
49+
string regtype,
50+
string domain,
51+
DNSServiceResolveReply callBack,
52+
IntPtr context) ;
53+
54+
[DllImport (dllName)]
55+
public static extern ServiceError DNSServiceRegister (out ServiceRef sdRef,
56+
ServiceFlags flags,
57+
uint interfaceIndex,
58+
byte[] name,
59+
string regtype,
60+
string domain,
61+
string host,
62+
ushort port,
63+
ushort txtLen,
64+
byte[] txtRecord,
65+
DNSServiceRegisterReply callBack,
66+
IntPtr context) ;
67+
68+
[DllImport (dllName)]
69+
public static extern ServiceError DNSServiceQueryRecord (out ServiceRef sdRef,
70+
ServiceFlags flags,
71+
uint interfaceIndex,
72+
string fullname,
73+
ServiceType rrtype,
74+
ServiceClass rrclass,
75+
DNSServiceQueryRecordReply callBack,
76+
IntPtr context) ;
77+
78+
// TXT Record Handling
79+
80+
[DllImport (dllName)]
81+
public static extern void TXTRecordCreate (IntPtr txtRecord, ushort bufferLen, IntPtr buffer) ;
82+
83+
[DllImport (dllName)]
84+
public static extern void TXTRecordDeallocate (IntPtr txtRecord) ;
85+
86+
[DllImport (dllName)]
87+
public static extern ServiceError TXTRecordGetItemAtIndex (ushort txtLen,
88+
IntPtr txtRecord,
89+
ushort index,
90+
ushort keyBufLen,
91+
byte[] key,
92+
out byte valueLen,
93+
out IntPtr value) ;
94+
95+
[DllImport (dllName)]
96+
public static extern ServiceError TXTRecordSetValue (IntPtr txtRecord,
97+
byte[] key,
98+
sbyte valueSize,
99+
byte[] value) ;
100+
101+
[DllImport (dllName)]
102+
public static extern ServiceError TXTRecordRemoveValue (IntPtr txtRecord, byte[] key) ;
103+
104+
[DllImport (dllName)]
105+
public static extern ushort TXTRecordGetLength (IntPtr txtRecord) ;
106+
107+
[DllImport (dllName)]
108+
public static extern IntPtr TXTRecordGetBytesPtr (IntPtr txtRecord) ;
109+
110+
[DllImport (dllName)]
111+
public static extern ushort TXTRecordGetCount (ushort txtLen, IntPtr txtRecord) ;
112+
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#region header
2+
3+
// Arkane.ZeroConf - NativeMacOS.cs
4+
//
5+
6+
#endregion
7+
8+
#region using
9+
10+
using System ;
11+
using System.Runtime.InteropServices ;
12+
13+
using static ArkaneSystems.Arkane.Zeroconf.Providers.Bonjour.Native ;
14+
15+
#endregion
16+
17+
namespace ArkaneSystems.Arkane.Zeroconf.Providers.Bonjour ;
18+
19+
internal static class NativeMacOS
20+
{
21+
private const string dllName = "libc.dylib" ;
22+
23+
[DllImport (dllName)]
24+
public static extern void DNSServiceRefDeallocate (IntPtr sdRef) ;
25+
26+
[DllImport (dllName)]
27+
public static extern ServiceError DNSServiceProcessResult (IntPtr sdRef) ;
28+
29+
[DllImport (dllName)]
30+
public static extern int DNSServiceRefSockFD (IntPtr sdRef) ;
31+
32+
[DllImport (dllName)]
33+
public static extern ServiceError DNSServiceCreateConnection (out ServiceRef sdRef) ;
34+
35+
[DllImport (dllName)]
36+
public static extern ServiceError DNSServiceBrowse (out ServiceRef sdRef,
37+
ServiceFlags flags,
38+
uint interfaceIndex,
39+
string regtype,
40+
string domain,
41+
DNSServiceBrowseReply callBack,
42+
IntPtr context) ;
43+
44+
[DllImport (dllName)]
45+
public static extern ServiceError DNSServiceResolve (out ServiceRef sdRef,
46+
ServiceFlags flags,
47+
uint interfaceIndex,
48+
byte[] name,
49+
string regtype,
50+
string domain,
51+
DNSServiceResolveReply callBack,
52+
IntPtr context) ;
53+
54+
[DllImport (dllName)]
55+
public static extern ServiceError DNSServiceRegister (out ServiceRef sdRef,
56+
ServiceFlags flags,
57+
uint interfaceIndex,
58+
byte[] name,
59+
string regtype,
60+
string domain,
61+
string host,
62+
ushort port,
63+
ushort txtLen,
64+
byte[] txtRecord,
65+
DNSServiceRegisterReply callBack,
66+
IntPtr context) ;
67+
68+
[DllImport (dllName)]
69+
public static extern ServiceError DNSServiceQueryRecord (out ServiceRef sdRef,
70+
ServiceFlags flags,
71+
uint interfaceIndex,
72+
string fullname,
73+
ServiceType rrtype,
74+
ServiceClass rrclass,
75+
DNSServiceQueryRecordReply callBack,
76+
IntPtr context) ;
77+
78+
// TXT Record Handling
79+
80+
[DllImport (dllName)]
81+
public static extern void TXTRecordCreate (IntPtr txtRecord, ushort bufferLen, IntPtr buffer) ;
82+
83+
[DllImport (dllName)]
84+
public static extern void TXTRecordDeallocate (IntPtr txtRecord) ;
85+
86+
[DllImport (dllName)]
87+
public static extern ServiceError TXTRecordGetItemAtIndex (ushort txtLen,
88+
IntPtr txtRecord,
89+
ushort index,
90+
ushort keyBufLen,
91+
byte[] key,
92+
out byte valueLen,
93+
out IntPtr value) ;
94+
95+
[DllImport (dllName)]
96+
public static extern ServiceError TXTRecordSetValue (IntPtr txtRecord,
97+
byte[] key,
98+
sbyte valueSize,
99+
byte[] value) ;
100+
101+
[DllImport (dllName)]
102+
public static extern ServiceError TXTRecordRemoveValue (IntPtr txtRecord, byte[] key) ;
103+
104+
[DllImport (dllName)]
105+
public static extern ushort TXTRecordGetLength (IntPtr txtRecord) ;
106+
107+
[DllImport (dllName)]
108+
public static extern IntPtr TXTRecordGetBytesPtr (IntPtr txtRecord) ;
109+
110+
[DllImport (dllName)]
111+
public static extern ushort TXTRecordGetCount (ushort txtLen, IntPtr txtRecord) ;
112+
}

Arkane.Zeroconf/Providers/Bonjour/NativeOSX.cs

Lines changed: 0 additions & 112 deletions
This file was deleted.

0 commit comments

Comments
 (0)