Greetings all, I can almost talk with my NKE from userland but I'm having socket problems. I can't get any data from the NKE. I'm using the AF_SYSTEM domain from <sys/kern_control.h>. It essentially is registering a protocol handler as a SOCK_DGRAM type. Then from userland I do this (I've deleted the error checking code below for brevity): struct sockaddr_ctl sf; memset(&sf, 0, sizeof(sf)); m_rpcSock = socket(AF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL); sf.sc_len = sizeof(sf); sf.sc_family = AF_SYSTEM; sf.ss_sysaddr = AF_SYS_CONTROL; sf.sc_id = A1_DARWIN_NKE_SIG; sf.sc_unit = A1_NKE_UNIT_RPC; connect(m_rpcSock, (struct sockaddr *)&sf, sizeof(sf); This all works. I also successfully send one byte of data to the NKE via: char dummy = 0; error = send(m_rpcSock, &dummy, 1, 0); But then when the userland code call recv() with zero flags it blocks forever. I then added this diagnostic loop just to verify and recv() always returns -1 and EAGAIN: do { sleep(2); error = recv(m_rpcSock, ver, sizeof(ver), MSG_DONTWAIT | MSG_PEEK); printf("version MSG_PEEK returned %08X, error %d\n", error, errno); } while (error != sizeof(ver)); But the log shows that the NKE does receive the one zero byte and in response does this: unsigned short ver[2]; ver[0] = IPC_VERSION; ver[1] = IPC_MIN_SUPPORTED_VERSION; error = ctl_enqueuedata(ctlref, ver, sizeof(ver), 0); printf("RPC version send result = %d\n", error); The log also shows that the ctl_enqueuedata() call returns zero. (I've also verified that ctlref is the same one the NKE registered.) So it should have written data to the socket. I can't figure out why the userland code cannot receive anything. I've done this sort of thing in the past using SOCK_RAW but the infrastructure is forcing me to use SOCK_DGRAM. I expect this to raise some issues in terms of how I read data from the socket but I can handle that with MSG_PEEK. But only if I can get data to arrive. If anyone's done this sort of socket code and could assist I'd appreciate it. Thanks, Mike _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored.