From a7aa5c28c01e1f333bb59a35cc7ebe65fa7b2fb2 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Mon, 20 Jun 2016 16:21:28 -0700 Subject: [PATCH] Fully operational prototype plugin. Fixed RX issues --- .../UserInterfaceState.xcuserstate | Bin 48782 -> 64679 bytes integrations/Unity3D/Assets/MainScene.unity | Bin 102504 -> 77472 bytes integrations/Unity3D/Assets/WorldMain.cs | 4 +- .../Unity3D/Assets/ZeroTierSockets.cs | 32 +++------------- .../Unity3D/Assets/ZeroTierSockets_Demo.cs | 17 +++++++-- src/SDK.h | 2 +- src/SDK_RPC.c | 35 +++++++++++++++--- src/SDK_Sockets.c | 17 +++++++-- tests/client.c | 8 +++- 9 files changed, 72 insertions(+), 43 deletions(-) diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate index 64301bd26f98e26c4862e92802ea43227b555418..6f99ced8760d2cbeb850b4ddc498fb9649d51b9f 100644 GIT binary patch literal 64679 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 literal 48782 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 E2g!mX$p8QV delta 12913 zcmbVS3s_XwwcckKa70j|2s*wXz7SvF6Hy}wC@4e>h?<8m;wZ?|0hRay^CS@k-BIuv zd?Zz?Q9HSX*j$5;o7zTOQf)t*Hg=kt8}*tLbCXtWa=riBXKy^r$!)*y9=^?-v;MW$ zT6^!c)?R1NG=6Hm+2}Wfv0F!&R+q;Z>xTOle6sPQ#*P}lG@AX-!-o&GFc9vZ8j|Uw zeeGWBbHy6@-=Ovyy!!Yb!`DSm_>Uz!CN3D_ANpLY|1D=mbK|W0?;dO&dZ0Ht#WMGb zVKXfJg@|CD*e_yAQFcaN$?7ymS;0(~qckr+mwf|CTStdy=bw1_`^nKWPn4gieRX*1 zl^#R?lGOQEqeng5yYZX-yCKQr14*+i?()D2KWzm6vPXjNLCftgH$2 z(S66=)!?)B(_aSqunG zP(YKp3Qaf2PY4RZBN@6HO`kG9HVOs}(Aii;J6&TRK*nWh=<}ef>9}qg$k^8sSkn&p zFslz^JBlf%Y#17uSjj&HXBGdlXK3$@cvfc7 zJdKgkUf}&gLbVt9)ES}LOFS(kH05OjC#^sno@rpOps4{*L+>;x;Z>rG_3R|HFO=G= z`Ef{ojbEM-+WU2|=-NApRa!3lZsOlVZw(I&4b?XDkuyV6wiq}``zCOb_F6PudndLZ z^qrDkXQ0!#j!4N{h2(8QG8dBH0H?B{5uB&NNejH4B&5*2zL39=l6MeYc$`Jp{97rx zp8Qm6;3K<-YCCxv?sxH#vqrlM`+cibKIP0U&vZG8%a)e7ik@Ia*_qCw(n3eMlclGZ zyQU1vbXJrTIl)m{o?lW-j}l2Kax8NiAn^>&lyYa0VAF3EIm=PF(#hrsDT$79M{0gq zIV+l!ty9Vjh%f?b(4SPWL{~}al9JWMNvoX2M4eMivUpVVa=s>Pf8@7tvD-(xoOu3~ zi({<~ixO&{o$*}UoIkZCy>z?#l?m_sZvUA42_63|M~C<>MkU3i^^Z3Jz*h4mKzr8OP!VLt-!Q`upu2%BXh zZ1P0dRzSHX=a@H}Yej zp?8~<@F+ob6579$+RH@Pl#8%=lza5B36w6lN;vmw;oKF%xhab%=O*pQJYpF{5)s<< zu$dz1Yr(I=iNYpTN?s=L3Np=)3DRdGU9-5f%!VSU&_qyL>v&>)P#N(4IixxXwbCzb5J4?%0 zMy{)*u<-wI?7zWle(#xhYhhU9$f0Xq`_bNgu5jO{X4g9Rt^J?*Ss#zhzBA}_FW4SI z8}oDve>)>0^6%*L)w7#?-)Nfa7&m{def*#|Kd12-FG}zWw!h5fF>PGkrDv2>#Qbl8dd5Isnz8#ki9?Q~7>kHs@ZT0gWP!7u3Ds!}D;UjV$- zKWcdK>ii|F%;{R?bYi(Wv>#{3EyYJo;zRIdSaQ7H8 z&L{F87)IJVp?_<+6TJV>uUEZZ6aMa{zuvy%d!}Tb?bC{0=XQKh8A97YNqbHx_Zv)Z z7z(E*8=pf{+29_$Cqg>=B2hJ8EDCsntrw;oIjKd=1R%l$$*jvt(Peo^nO%zXpGWKo|OEGduqS_mKo(G z%a#>7#m<^9GQl!gB+G48z%yMXD@$n$6*nwX5cO6;x(HC#b{o?ZMyZh$9eerVof1ZC2p~$wm!>7--Xj6Gn zVnQWZIg|Vmjbc_$hPw5cl1?$J=oAmxcvLZ~;$c7N#ga}TtLP-3R)*wLj!|-mAG5`O zGpJ{H1IQ#VoN$qJHRLbGj-iqFJ}zQspop(QcvkU+3YuM%Jc9+#5WzFliw8CfIT3=fFAbNKgPV^B5I@um2=_9@9X_8KPQ_0B#tpbgFW;D^OStKUJ z!d?S$uLPoW0CXRA0<<%d9xZnKF=EFbD|Y;G?VNt>LvUS1qiGs1cKiuq$DfF2eVY74 z8vj&EixE5iB(dYiiXDHlfs+P&8=N%YDQNlt{McRUEhS7PdNnO*C!xKI4Du($jz3N8 z_;Fy-wd*^6U+~c2ET@4kwfpm+NI` za)~Q{4W1l@w5vN^<@vedHmzipvj{Ai&zI5$pH%251C(F>JRVYtiO+$%L}#wE(CKne zE_jN{Yg7bc^UrV=mmx!}5*;eDv+|v*OG{j;$kurlJ6x0{9$C;%23472r2PPAR(@Ij z;`~D0E>jaQy6|>OSE0mW{CMmpdu0wp zt_PWxUkM9{x!Q?XJ-{gcctq0`1xl;}92Do|x=M6ci5-TkM4%6x7ESNhz$b#rSS$W- z#i!JlE3Drs!Mx6lodoC+P4Bo%V!iws>xEu)CgWmY#I;*uQC(0V0sCHHa9Uh@Bo-II zk7As8$O1b-mU@NS;OAVF8<;JSu|xRuh^DLUDY28lY>@b!5Dgn}g-EQqn^|qB#4e&< zGt2>>w%NDx-d9U{QvWt!bVg#d<-Wvn9%Jl%U>?zQTOLR(tUEAtqGHV@(i&s)7XF#a zL+0txVP3`fvLsd!%vd^O1?++7DAs|^m*7Q!r4VpmV3S~0p^j5{Mlo>!tu!Nh4AY&eY8;ipr+3xRNUjh2l4HW^10+oM&)dnBw_R?M{NU1 zMrm*U{H2?jNyB){dI{g=+DnUMt}av=024J%+6er zQYCaX0P}X{Qi)v*Guzmu>sz8<8?e`43xON#6{Kl@3Ay<2_3=C0I3>kJ@6l93ISPZLwEI4Ka&p z3LH%DBJ3hC@3m}}7}@M?cAdRI^os!CM1SKvZIxIZFhlTl6Hc(Z_!HWtSl1kld+_fh3FW`B}C%nPzfDxo|{)C)@y=!G1k7YSr`*Hfq#X0^Gx9Wb@s|? zT6?dYyFqeRPcmz$lvo31)_b{A`#wIMjBEksz^8GzX%dS-oo5(srC9E`oWCYf$5w#b zy*kEAEDwdCce0)?u?P(8Fa|+q{4N|k(v_fOPBRZ8QDUArzNpS_vBmQ>G!^k?7m7MG zV+KhJ!@#^fKU!kR3FfI-Ir?rg^(zJDowZg;jNHZGvbyK5mS6)wZ_lrg*x@ApE12Dy z#Bamw1u)PcMoj3m`6p6HeH$=uDRB~GFwlDi=hc5F`b7ZSivGqG%#v6OFvAM!4m)3h zdFbw~aDl`sPzrl1TqvUq-fE96#e?@a&q@|ss#)zh ziS+K4Wp{geAfn=@sr~iCtX4Ux(A(iykAfpr_4KFjiv8&+z4M*egq)F&EFJqeGq*Rs-|4dWFQQ!Qs7+ zx+K=}oY^BktNlpGya~(@x%yuD7YSA@;`_GSvx2g*ZF`e!(M~`sP^s48&$0IWqeJ&J?rE$bLceQsapi~Y(bt`!+we7 zEH`U7AhFT{ejB123e0{pd+1|1Bs#3nytt_nYX;`M0BI6yE85V$Ef||4w^W zdO7L{FQ1B+EDb9=$QH@#%!*U+18lm$*5eah(e$x=AhEbre9KO|<>o4WbSE~9)#hFH zR+nrl8d)1K?-{u*vBnDXjQp3xBG#H`;Q$Ka`Wg8}CK8rmSShDv@NqT{N}Z=Aa%OY#fmA?=pf zf)~wdJ0)BdYO7x4Pwuu`*h_r*ZhK|JOXkACUvjp*Y?cyfwIYgk_Pvde9mssg5 z=7<;}G25#hUay9eEH+YtG1X>;Kd(N9_{2g~^D{8}W;Oq0x4mB#*2Ft2{8Dn(ajmh3 zf6AIIMbxkPbv|m3-Lha4pS8yxYpXH)NUG$l+hUfPCb7m^z7J9^*7DPkl3oWXko~pT zX*!V_cDU1VN_OlTFxpS<3e1N{?1;pow(_of?Uu%^JaVr+He#E3ni5a+K%5|2fO(HE zNn)*>Z-A70obQ5^iZ{$sdM}GYEI`6`^Wxei7PEtY1t~c@xc@%naeV)M6+Jwn>CxFG zME?$;wK0cy|3YUdnefUSq0rzIzng4#ewxM9p z^r0t{eb23(&KK*{nQu??f4?j-%KdfSgpkh;M)3jrck*-li#02cJ}^-8bIB3=3;Q^%IRc=ku5A4Y_wIu<(%`G&(YtaSdltu2J#Zi*bC zj>~8)kFKg|j8SWh1MLIs9A{A-w(z*-2+^4rHq%*Z^m_v|A3pcJ&;T3Q^q*6N#q<3~ z2I*Y;kA(5mrT}-#Th}zrw?2B5Hkn`j(X+|wlv0_mP8gN>>NHY4tCLF_4rx+96ya5e z!+71TFy8XE%}VE@G^htZi40e7GvH!yW&e9#^cM7q|sc=2HPr(So7L_9QimoHtKO7|W%4|W`)GH9)vL2Y=>U-C zb^vXtUh}7an>k#3@D=}-rfKlWf$n3+-nUrE1>A)vrpRz|drqyRIlJP{c5n2dnR4Iw zX{rv^KcU8_995kxs!3C)kThvs(L|gjOosOi9GSUjF_ zHR4mB7SUNPcjxVqI?j07vB^3l18jmixm0$l14(74I=v)2DLLss84>o;fvB|4N+*fi z+Jb{GUrL1!tIJ>yF)Mq7`w0T9aKHcF9fUaF_=kzy^Rs7p-2v+$j})NJCrNn#T1H|1 z5`3Q%7VmO8gon}LCYj)WJ~Bv+g!)qCZfhIR8MlpRsgbL=r@ViIG=-n39j{Iq)v(p! zp&GV2Xe7W2V__|9+0fZl!ZeIo*BL+R*4!R#tORpRQ>kmd1GcjOwdSJ9Sjg zdure0$J{q(D<30KY8BO{Vst3H40^|FyL~dTgsbC7^{kFANqrZzCGvNK@#!frA<0TdqGZB@pNO2=SJnPtWy-1P zo|c5)`12qPVfF>aPV>h`RrKdM$Af#TgY!TzfSO$< z6yO_ZzW-nke(dNtks|Pd@9hifCzr$3jo9~SyzS0F`<@_>GhF&mq=QozYp1E5Nv)DP zQB|v=wh&qss{TZ_p6Oq7)lfz?cEZ}Ih)6Lb=a zwqELh*yvSM5A!-i#mOVx-8CQG(c=yA=x(`uO>CI75x6}c_Z6iFJoG;D-Q6!Hx}&Zp z(>{tV!F}>~bnCuk&lWi+W-xO<|q2OSw>hlfN^90fULF$zIgpS zZKd^%k7*aBMQ9Df!A(+lpwLY|ReDaa;^`#Mz g5H?H;)_A}-cf@0T*l?|dOl-O_T%)p#ULs2V7k~%ZM*si- diff --git a/integrations/Unity3D/Assets/WorldMain.cs b/integrations/Unity3D/Assets/WorldMain.cs index f32e06f..14bf416 100755 --- a/integrations/Unity3D/Assets/WorldMain.cs +++ b/integrations/Unity3D/Assets/WorldMain.cs @@ -30,6 +30,8 @@ using System.Collections; using UnityEngine.UI; using System; + +// Handles the switching of APIs public class WorldMain : MonoBehaviour { void Start() { } @@ -40,6 +42,4 @@ public class WorldMain : MonoBehaviour { Dropdown dd = go.GetComponents () [0]; Debug.Log("API selected: " + dd.captionText.text); } - - } diff --git a/integrations/Unity3D/Assets/ZeroTierSockets.cs b/integrations/Unity3D/Assets/ZeroTierSockets.cs index cbc9a41..b8dae2b 100755 --- a/integrations/Unity3D/Assets/ZeroTierSockets.cs +++ b/integrations/Unity3D/Assets/ZeroTierSockets.cs @@ -113,7 +113,7 @@ public class ZeroTierNetworkInterface { // RX / TX [DllImport (DLL_PATH)] - unsafe protected static extern int zt_recv(int sockfd, IntPtr buf, int len); + unsafe protected static extern int zt_recv(int sockfd, [In, Out] IntPtr buf, int len); [DllImport (DLL_PATH)] unsafe protected static extern int zt_send(int sockfd, IntPtr buf, int len); [DllImport (DLL_PATH)] @@ -243,36 +243,14 @@ public class ZeroTierNetworkInterface { return zt_connect (fd, pSockAddr, addrlen); } - - /* - unsafe { - byte *ptr = (byte *)buffer.ToPointer(); - - int offset = 0; - for (int i=0; i { // Socket() - int sockfd = zt.Socket ((int)AddressFamily.InterNetwork, (int)SocketType.Stream, (int)ProtocolType.Unspecified); - Debug.Log ("sockfd = " + sockfd); + connection_socket = zt.Socket ((int)AddressFamily.InterNetwork, (int)SocketType.Stream, (int)ProtocolType.Unspecified); + Debug.Log ("sockfd = " + connection_socket); // Bind() int port_num; @@ -123,6 +123,17 @@ public class ZeroTierSockets_Demo : MonoBehaviour Debug.Log ("accept_res = " + accept_res); } + + char[] msg = new char[1024]; + int bytes_read = 0; + while(bytes_read >= 0) + { + //Debug.Log("reading from socket"); + bytes_read = zt.Read(accept_res, ref msg, 80); + + string msgstr = new string(msg); + Debug.Log("MSG (" + bytes_read + "):" + msgstr); + } }); connectThread.IsBackground = true; connectThread.Start(); @@ -169,7 +180,7 @@ public class ZeroTierSockets_Demo : MonoBehaviour input.text = "172.22.211.245"; go = GameObject.Find ("inputServerPort"); input = go.GetComponents () [0]; - input.text = "8887"; + input.text = "5555"; go = GameObject.Find ("inputMessage"); input = go.GetComponents () [0]; input.text = "Welcome to the machine"; diff --git a/src/SDK.h b/src/SDK.h index 78c2ff5..ff7eb31 100644 --- a/src/SDK.h +++ b/src/SDK.h @@ -83,7 +83,7 @@ int zt_socket(SOCKET_SIG); int zt_connect(CONNECT_SIG); int zt_bind(BIND_SIG); #if defined(__linux__) - int zt_accept(ACCEPT_SIG); + int zt_accept4(ACCEPT_SIG); #endif int zt_accept(ACCEPT_SIG); int zt_listen(LISTEN_SIG); diff --git a/src/SDK_RPC.c b/src/SDK_RPC.c index 49dee86..0f54b78 100644 --- a/src/SDK_RPC.c +++ b/src/SDK_RPC.c @@ -53,6 +53,9 @@ extern "C" { #define SERVICE_CONNECT_ATTEMPTS 30 +ssize_t sock_fd_write(int sock, int fd); +ssize_t sock_fd_read(int sock, void *buf, ssize_t bufsize, int *fd); + static int rpc_count; static pthread_mutex_t lock; @@ -111,10 +114,6 @@ int load_symbols_rpc() int rpc_join(char * sockname) { - - FILE *f = fopen("/Users/Joseph/utest2/_log.txt","a"); - fprintf(f, sockname); - if(sockname == NULL) { printf("Warning, rpc netpath is NULL\n"); } @@ -277,39 +276,65 @@ ssize_t sock_fd_write(int sock, int fd) */ ssize_t sock_fd_read(int sock, void *buf, ssize_t bufsize, int *fd) { + FILE *file = fopen("/Users/Joseph/code/__log","a"); + + ssize_t size; if (fd) { + + fprintf(file, "A"); + struct msghdr msg; struct iovec iov; union { struct cmsghdr cmsghdr; char control[CMSG_SPACE(sizeof (int))]; } cmsgu; + + fprintf(file, "B"); + struct cmsghdr *cmsg; iov.iov_base = buf; iov.iov_len = bufsize; msg.msg_name = NULL; msg.msg_namelen = 0; + + fprintf(file, "C"); + + msg.msg_iov = &iov; msg.msg_iovlen = 1; msg.msg_control = cmsgu.control; msg.msg_controllen = sizeof(cmsgu.control); size = recvmsg (sock, &msg, 0); + + fprintf(file, "D"); + if (size < 0) return -1; cmsg = CMSG_FIRSTHDR(&msg); if (cmsg && cmsg->cmsg_len == CMSG_LEN(sizeof(int))) { + fprintf(file, "E"); + if (cmsg->cmsg_level != SOL_SOCKET) { + fprintf(file, "F"); + fprintf (stderr, "invalid cmsg_level %d\n",cmsg->cmsg_level); return -1; } if (cmsg->cmsg_type != SCM_RIGHTS) { + fprintf(file, "G"); + fprintf (stderr, "invalid cmsg_type %d\n",cmsg->cmsg_type); return -1; } *fd = *((int *) CMSG_DATA(cmsg)); - } else *fd = -1; + } else { + fprintf(file, "H"); +*fd = -1;} } else { + fprintf(file, "I"); + size = read (sock, buf, bufsize); if (size < 0) { fprintf(stderr, "sock_fd_read(): read: Error\n"); diff --git a/src/SDK_Sockets.c b/src/SDK_Sockets.c index cbe8ce6..a6c9857 100644 --- a/src/SDK_Sockets.c +++ b/src/SDK_Sockets.c @@ -312,7 +312,14 @@ const char *get_netpath() { ssize_t zt_recv(int fd, void *buf, int len) { - return read(fd, buf, len); + dwr("zt_recv(%d): \n", fd); + + int bytes_read = read(fd, buf, len); + if(bytes_read >= 0) + { + dwr("zt_recv(): MSG(%d): %s\n", bytes_read, buf); + } + return bytes_read; } int zt_set_nonblock(int fd) @@ -470,11 +477,15 @@ const char *get_netpath() { int zt_accept(ACCEPT_SIG) { - //dwr(MSG_DEBUG,"zt_accept(%d):\n", sockfd); + dwr(MSG_DEBUG,"zt_accept(%d):\n", sockfd); +// FIXME: Find a better solution for this before production +#if !defined(__UNITY_3D__) if(addr) addr->sa_family = AF_INET; - +#endif int new_fd = get_new_fd(sockfd); + dwr(MSG_DEBUG,"newfd = %d\n", new_fd); + if(new_fd > 0) { errno = ERR_OK; return new_fd; diff --git a/tests/client.c b/tests/client.c index e79a829..c445a6a 100644 --- a/tests/client.c +++ b/tests/client.c @@ -13,7 +13,7 @@ int main(int argc , char *argv[]) return 1; } - int sock, port = atoi(argv[1]); + int sock, port = atoi(argv[2]); struct sockaddr_in server; char message[1000] , server_reply[2000]; @@ -40,11 +40,15 @@ int main(int argc , char *argv[]) scanf("%s" , message); //Send some data - if(send(sock , message , strlen(message) , 0) < 0) + if(send(sock , "welcome to the machine!" ,24 , 0) < 0) { puts("Send failed"); return 1; } + else + { + printf("len = %d\n", strlen(message)); + } //Receive a reply from the server if(recv(sock , server_reply , 2000 , 0) < 0)