mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-24 07:06:39 +00:00
.. | ||
Common.c | ||
Common.h | ||
intercept | ||
Intercept.c | ||
Intercept.h | ||
libintercept.so.1.0 | ||
LWIPStack.hpp | ||
make-intercept.mk | ||
make-liblwip.mk | ||
NetconEthernetTap.cpp | ||
NetconEthernetTap.hpp | ||
NetconService.hpp | ||
NetconUtilities.cpp | ||
NetconUtilities.hpp | ||
README.md | ||
Sendfd.c | ||
Sendfd.h |
20151021 Added Node.js support
Notes:
- syscall(long number, ...) is now intercepted and re-directs the __NR_accept4 call to our intercepted accept4() function
- accept() now returns -EAGAIN in the case that we cannot read a signal byte from the descriptor linked to the service. This is because the uv__server_io() function in libuv used by Node.js looks for this return value upon failure, without it we were observing an innfinite loop in the I/O polling code in libuv.
- accept4() now correctly sets given flags for descriptor returned by accept()
- setsockopt() was modified to return success on any call with the following conditions: level == IPPROTO_TCP || (level == SOL_SOCKET && option_name == SO_KEEPALIVE) This might be unnecessary or might need a better workaround
- Careful attention should be given to how arguments are passed in the intercepted syscall() function, this differs for 32/64-bit systems