laag-libzmq 4.2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +57 -0
- data/LICENSE.txt +181 -0
- data/README.org +34 -0
- data/ext/laag/libzmq/extconf.rb +22 -0
- data/laag-libzmq.gemspec +21 -0
- data/lib/laag/libzmq.rb +31 -0
- data/vendor/github.com/zeromq/libzmq/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- data/vendor/github.com/zeromq/libzmq/.github/issue_template.md +22 -0
- data/vendor/github.com/zeromq/libzmq/.gitignore +180 -0
- data/vendor/github.com/zeromq/libzmq/.hgeol +2 -0
- data/vendor/github.com/zeromq/libzmq/.mailmap +81 -0
- data/vendor/github.com/zeromq/libzmq/.travis.yml +115 -0
- data/vendor/github.com/zeromq/libzmq/AUTHORS +151 -0
- data/vendor/github.com/zeromq/libzmq/CMakeLists.txt +1104 -0
- data/vendor/github.com/zeromq/libzmq/COPYING +674 -0
- data/vendor/github.com/zeromq/libzmq/COPYING.LESSER +181 -0
- data/vendor/github.com/zeromq/libzmq/Dockerfile +11 -0
- data/vendor/github.com/zeromq/libzmq/Doxygen.cfg +2320 -0
- data/vendor/github.com/zeromq/libzmq/FindSodium.cmake +40 -0
- data/vendor/github.com/zeromq/libzmq/INSTALL +311 -0
- data/vendor/github.com/zeromq/libzmq/Jenkinsfile +369 -0
- data/vendor/github.com/zeromq/libzmq/Makefile.am +908 -0
- data/vendor/github.com/zeromq/libzmq/NEWS +1582 -0
- data/vendor/github.com/zeromq/libzmq/README.cygwin.md +15 -0
- data/vendor/github.com/zeromq/libzmq/README.doxygen.md +48 -0
- data/vendor/github.com/zeromq/libzmq/README.md +102 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/AndreLouisCaron.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/Asmod4n.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/BerndPrager.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/Bklyn.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/BrianBuchanan.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/ChuckRemes.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/FrancoFichtner.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/GavinMcNiff.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/GhislainPutois.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/GiuseppeCorbelli.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/HaraldAchitz.md +17 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/Hugne.md +17 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/JimHague.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/JohanMabille.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/LeonardMichelet +14 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/LeonardoConsoni.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/LionelOrry.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/OsirisPedroso.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/README.md +23 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/RobGagnon.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/SebastienRombauts.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/StoianIvanov.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/SylvainCorlay.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/TimotheeBesset.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/VincentTellier.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/VolodymyrKorniichuk.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/abbradar.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/agronholm.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/amuraru.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/arsenm.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/aseering.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/bjorntopel.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/bjovke.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/brocade_communications_systems.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/brunobodin.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/c-rack.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/camachat.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/cdolan.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/chrisstaite.md +14 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/chugga_fan.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/cjuniet.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/ckamm.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/clkao.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/danielhtshih.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/danriegsecker.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/dfons.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/djelenc.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/drodri.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/eburkitt.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/egomotion.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/evoskuil.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/febeling.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/fidlej.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/flub.md +14 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/gena-moscow.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/gonzus.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/goodfella_ltd.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/google.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/ianbarber.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/imatix.md +23 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/jakecobb.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/jemc.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/jimklimov.md +17 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/jkryl.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/johntconklin.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/jruffin.md +14 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/kentzo.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/kevinsapper.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/kobolog.md +12 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/kurdybacha.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/linville.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/loachfish.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/lodagro.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/madebr.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/mattconnolly.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/mauri-melato.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/mditzel.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/meox.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/michael-fox.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/michicc.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/minrk.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/mipaaa.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/mkluwe.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/montoyaedu.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/naos_ltd.md +19 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/natano.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/olafmandel.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/pijyoi.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/ptroja.md +14 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/reunanen.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/reza-ebrahimi.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/rikvdh.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/rlenferink.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/roalz.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/rodgert.md +17 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/rotty.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/sabae.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/scemama.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/sheremetyev.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/shripchenko.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/sigiesec.md +17 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/soulik.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/swansontec.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/t-b.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/tSed.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/tabe.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/tailhook.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/taotetek.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/templates/relicense-template-mplv2-any-osi.txt +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/templates/relicense-template-mplv2-share-alike-osi.txt +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/templates/relicense-template-mplv2.txt +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/thompsa.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/torehalvorsen.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/twhittock.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/ulikoehler.md +16 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/vyskocilm.md +7 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/willstrang.md +15 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/xaqq.md +13 -0
- data/vendor/github.com/zeromq/libzmq/RELICENSE/yuvallanger.md +15 -0
- data/vendor/github.com/zeromq/libzmq/ZeroMQConfig.cmake.in +25 -0
- data/vendor/github.com/zeromq/libzmq/acinclude.m4 +1122 -0
- data/vendor/github.com/zeromq/libzmq/appveyor.yml +97 -0
- data/vendor/github.com/zeromq/libzmq/autogen.sh +49 -0
- data/vendor/github.com/zeromq/libzmq/branding.bmp +0 -0
- data/vendor/github.com/zeromq/libzmq/builds/Makefile.am +31 -0
- data/vendor/github.com/zeromq/libzmq/builds/README +4 -0
- data/vendor/github.com/zeromq/libzmq/builds/android/Dockerfile +22 -0
- data/vendor/github.com/zeromq/libzmq/builds/android/README.md +78 -0
- data/vendor/github.com/zeromq/libzmq/builds/android/android_build_helper.sh +316 -0
- data/vendor/github.com/zeromq/libzmq/builds/android/build.sh +70 -0
- data/vendor/github.com/zeromq/libzmq/builds/android/ci_build.sh +30 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/Modules/FindAsciiDoc.cmake +26 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/Modules/TestZMQVersion.cmake +8 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/Modules/ZMQSourceRunChecks.cmake +301 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/NSIS.template32.in +952 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/NSIS.template64.in +960 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/ci_build.sh +34 -0
- data/vendor/github.com/zeromq/libzmq/builds/cmake/platform.hpp.in +104 -0
- data/vendor/github.com/zeromq/libzmq/builds/coverage/ci_build.sh +32 -0
- data/vendor/github.com/zeromq/libzmq/builds/cygwin/Makefile.cygwin +48 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/.gitignore +5 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/build.bat +4 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/platform.hpp +80 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/project-tests.gsl +19 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/project-tests.gypi +895 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/project-tests.xml +83 -0
- data/vendor/github.com/zeromq/libzmq/builds/gyp/project.gyp +295 -0
- data/vendor/github.com/zeromq/libzmq/builds/mingw32/Makefile.mingw32 +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/mingw32/platform.hpp +43 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/.gitignore +256 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/Makefile.am +94 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/build/build.bat +33 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/build/buildall.bat +16 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/build/buildbase.bat +73 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/errno.cpp +32 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/errno.hpp +56 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/platform.hpp +14 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Common.props +21 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DLL.props +16 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Debug.props +29 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugDEXE.props +21 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugDLL.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugLEXE.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugLIB.props +21 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugLTCG.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/DebugSEXE.props +21 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/EXE.props +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/LIB.props +16 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/LTCG.props +13 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Link.props +21 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Messages.props +15 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Output.props +30 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Release.props +41 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseDEXE.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseDLL.props +19 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseLEXE.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseLIB.props +19 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseLTCG.props +19 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/ReleaseSEXE.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/Win32.props +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/properties/x64.props +23 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/readme.txt +27 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/resource.h +14 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/resource.rc +0 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/inproc_lat/inproc_lat.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/inproc_thr/inproc_thr.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/libzmq.sln +95 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/libzmq/libzmq.vcproj +338 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/local_lat/local_lat.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/local_thr/local_thr.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/remote_lat/remote_lat.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2008/remote_thr/remote_thr.vcproj +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/inproc_lat/inproc_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/inproc_lat/inproc_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/inproc_thr/inproc_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/inproc_thr/inproc_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libsodium.import.props +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libsodium.import.xml +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq.import.props +64 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq.import.xml +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq.sln +206 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq/libzmq.props +76 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq/libzmq.vcxproj +289 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq/libzmq.vcxproj.filters +627 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/libzmq/libzmq.xml +40 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/local_lat/local_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/local_lat/local_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/local_thr/local_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/local_thr/local_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/remote_lat/remote_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/remote_lat/remote_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/remote_thr/remote_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2010/remote_thr/remote_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/inproc_lat/inproc_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/inproc_lat/inproc_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/inproc_thr/inproc_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/inproc_thr/inproc_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libsodium.import.props +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libsodium.import.xml +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq.import.props +64 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq.import.xml +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq.sln +206 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq/libzmq.props +76 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq/libzmq.vcxproj +289 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq/libzmq.vcxproj.filters +627 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/libzmq/libzmq.xml +40 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/local_lat/local_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/local_lat/local_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/local_thr/local_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/local_thr/local_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/remote_lat/remote_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/remote_lat/remote_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/remote_thr/remote_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2012/remote_thr/remote_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/inproc_lat/inproc_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/inproc_lat/inproc_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/inproc_thr/inproc_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/inproc_thr/inproc_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libsodium.import.props +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libsodium.import.xml +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq.import.props +64 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq.import.xml +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq.sln +208 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq/libzmq.props +76 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq/libzmq.vcxproj +289 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq/libzmq.vcxproj.filters +627 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/libzmq/libzmq.xml +40 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/local_lat/local_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/local_lat/local_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/local_thr/local_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/local_thr/local_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/remote_lat/remote_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/remote_lat/remote_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/remote_thr/remote_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2013/remote_thr/remote_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/inproc_lat/inproc_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/inproc_lat/inproc_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/inproc_thr/inproc_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/inproc_thr/inproc_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libsodium.import.props +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libsodium.import.xml +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq.import.props +64 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq.import.xml +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq.sln +208 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq/libzmq.props +76 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq/libzmq.vcxproj +289 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters +627 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/libzmq/libzmq.xml +40 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/local_lat/local_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/local_lat/local_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/local_thr/local_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/local_thr/local_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/remote_lat/remote_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/remote_lat/remote_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/remote_thr/remote_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015/remote_thr/remote_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015_xp/libzmq.vcxproj +258 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015_xp/platform.hpp +15 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015_xp/test_zmq/test_multithread.cpp +229 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2015_xp/test_zmq/test_zmq.vcxproj +155 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/inproc_lat/inproc_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/inproc_lat/inproc_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/inproc_thr/inproc_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/inproc_thr/inproc_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libsodium.import.props +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libsodium.import.xml +17 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq.import.props +64 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq.import.xml +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq.sln +208 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq/libzmq.props +76 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq/libzmq.vcxproj +289 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq/libzmq.vcxproj.filters +627 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/libzmq/libzmq.xml +40 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/local_lat/local_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/local_lat/local_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/local_thr/local_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/local_thr/local_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/remote_lat/remote_lat.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/remote_lat/remote_lat.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/remote_thr/remote_thr.props +49 -0
- data/vendor/github.com/zeromq/libzmq/builds/msvc/vs2017/remote_thr/remote_thr.vcxproj +82 -0
- data/vendor/github.com/zeromq/libzmq/builds/nuget/libzmq.autopkg +52 -0
- data/vendor/github.com/zeromq/libzmq/builds/nuget/readme.nuget +20 -0
- data/vendor/github.com/zeromq/libzmq/builds/openwrt/Makefile +70 -0
- data/vendor/github.com/zeromq/libzmq/builds/valgrind/ci_build.sh +30 -0
- data/vendor/github.com/zeromq/libzmq/builds/valgrind/valgrind.supp +22 -0
- data/vendor/github.com/zeromq/libzmq/builds/valgrind/vg +1 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/README.md +463 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/cxxall +62 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/makeclean +36 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/makelibzmq +54 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/maketests +102 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/platform.hpp +300 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/runtests +188 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/test_fork.cpp +95 -0
- data/vendor/github.com/zeromq/libzmq/builds/zos/zc++ +42 -0
- data/vendor/github.com/zeromq/libzmq/ci_build.sh +66 -0
- data/vendor/github.com/zeromq/libzmq/ci_deploy.sh +34 -0
- data/vendor/github.com/zeromq/libzmq/configure.ac +827 -0
- data/vendor/github.com/zeromq/libzmq/doc/Makefile.am +64 -0
- data/vendor/github.com/zeromq/libzmq/doc/asciidoc.conf +56 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq.txt +276 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_dec.txt +62 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_destroy.txt +62 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_inc.txt +61 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_new.txt +62 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_set.txt +61 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_atomic_counter_value.txt +62 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_bind.txt +103 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_close.txt +56 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_connect.txt +101 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_destroy.txt +67 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_get.txt +105 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_new.txt +50 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_set.txt +184 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_shutdown.txt +52 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ctx_term.txt +68 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_curve.txt +92 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_curve_keypair.txt +56 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_curve_public.txt +62 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_disconnect.txt +75 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_errno.txt +50 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_getsockopt.txt +944 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_gssapi.txt +78 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_has.txt +44 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_init.txt +52 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_inproc.txt +88 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_ipc.txt +106 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_close.txt +56 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_copy.txt +72 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_data.txt +48 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_get.txt +83 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_gets.txt +81 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_init.txt +64 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_init_data.txt +89 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_init_size.txt +58 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_more.txt +65 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_move.txt +52 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_recv.txt +124 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_routing_id.txt +61 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_send.txt +127 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_set.txt +46 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_set_routing_id.txt +46 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_msg_size.txt +48 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_null.txt +27 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_pgm.txt +164 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_plain.txt +37 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_poll.txt +135 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_proxy.txt +99 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_proxy_steerable.txt +111 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_recv.txt +91 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_recvmsg.txt +121 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_send.txt +104 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_send_const.txt +103 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_sendmsg.txt +121 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_setsockopt.txt +1318 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_socket.txt +609 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_socket_monitor.txt +294 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_strerror.txt +56 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_tcp.txt +118 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_term.txt +66 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_tipc.txt +83 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_udp.txt +99 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_unbind.txt +90 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_version.txt +54 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_vmci.txt +97 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_z85_decode.txt +51 -0
- data/vendor/github.com/zeromq/libzmq/doc/zmq_z85_encode.txt +58 -0
- data/vendor/github.com/zeromq/libzmq/include/zmq.h +708 -0
- data/vendor/github.com/zeromq/libzmq/include/zmq_utils.h +48 -0
- data/vendor/github.com/zeromq/libzmq/installer.ico +0 -0
- data/vendor/github.com/zeromq/libzmq/m4/ax_check_compile_flag.m4 +74 -0
- data/vendor/github.com/zeromq/libzmq/m4/ax_code_coverage.m4 +264 -0
- data/vendor/github.com/zeromq/libzmq/m4/ax_cxx_compile_stdcxx.m4 +562 -0
- data/vendor/github.com/zeromq/libzmq/m4/ax_cxx_compile_stdcxx_11.m4 +40 -0
- data/vendor/github.com/zeromq/libzmq/m4/ax_valgrind_check.m4 +233 -0
- data/vendor/github.com/zeromq/libzmq/packaging/README +4 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/changelog +5 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/compat +1 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/control +64 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/copyright +93 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/libzmq3-dev.install +4 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/libzmq3-dev.manpages +2 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/libzmq5.docs +2 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/libzmq5.install +1 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/rules +67 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/source/format +1 -0
- data/vendor/github.com/zeromq/libzmq/packaging/debian/zeromq.dsc.obs +15 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.bat +14 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.config +6 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.gsl +264 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.nuspec +98 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.targets +129 -0
- data/vendor/github.com/zeromq/libzmq/packaging/nuget/package.xml +22 -0
- data/vendor/github.com/zeromq/libzmq/packaging/obs/_service +98 -0
- data/vendor/github.com/zeromq/libzmq/packaging/redhat/zeromq.spec +234 -0
- data/vendor/github.com/zeromq/libzmq/perf/inproc_lat.cpp +240 -0
- data/vendor/github.com/zeromq/libzmq/perf/inproc_thr.cpp +250 -0
- data/vendor/github.com/zeromq/libzmq/perf/local_lat.cpp +116 -0
- data/vendor/github.com/zeromq/libzmq/perf/local_thr.cpp +160 -0
- data/vendor/github.com/zeromq/libzmq/perf/remote_lat.cpp +129 -0
- data/vendor/github.com/zeromq/libzmq/perf/remote_thr.cpp +135 -0
- data/vendor/github.com/zeromq/libzmq/src/address.cpp +134 -0
- data/vendor/github.com/zeromq/libzmq/src/address.hpp +77 -0
- data/vendor/github.com/zeromq/libzmq/src/array.hpp +167 -0
- data/vendor/github.com/zeromq/libzmq/src/atomic_counter.hpp +249 -0
- data/vendor/github.com/zeromq/libzmq/src/atomic_ptr.hpp +227 -0
- data/vendor/github.com/zeromq/libzmq/src/blob.hpp +186 -0
- data/vendor/github.com/zeromq/libzmq/src/client.cpp +116 -0
- data/vendor/github.com/zeromq/libzmq/src/client.hpp +81 -0
- data/vendor/github.com/zeromq/libzmq/src/clock.cpp +253 -0
- data/vendor/github.com/zeromq/libzmq/src/clock.hpp +83 -0
- data/vendor/github.com/zeromq/libzmq/src/command.hpp +188 -0
- data/vendor/github.com/zeromq/libzmq/src/condition_variable.hpp +279 -0
- data/vendor/github.com/zeromq/libzmq/src/config.hpp +98 -0
- data/vendor/github.com/zeromq/libzmq/src/ctx.cpp +644 -0
- data/vendor/github.com/zeromq/libzmq/src/ctx.hpp +242 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_client.cpp +297 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_client.hpp +87 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_client_tools.hpp +307 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_mechanism_base.cpp +181 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_mechanism_base.hpp +79 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_server.cpp +492 -0
- data/vendor/github.com/zeromq/libzmq/src/curve_server.hpp +94 -0
- data/vendor/github.com/zeromq/libzmq/src/dbuffer.hpp +144 -0
- data/vendor/github.com/zeromq/libzmq/src/dealer.cpp +143 -0
- data/vendor/github.com/zeromq/libzmq/src/dealer.hpp +89 -0
- data/vendor/github.com/zeromq/libzmq/src/decoder.hpp +198 -0
- data/vendor/github.com/zeromq/libzmq/src/decoder_allocators.cpp +144 -0
- data/vendor/github.com/zeromq/libzmq/src/decoder_allocators.hpp +155 -0
- data/vendor/github.com/zeromq/libzmq/src/devpoll.cpp +205 -0
- data/vendor/github.com/zeromq/libzmq/src/devpoll.hpp +119 -0
- data/vendor/github.com/zeromq/libzmq/src/dgram.cpp +177 -0
- data/vendor/github.com/zeromq/libzmq/src/dgram.hpp +81 -0
- data/vendor/github.com/zeromq/libzmq/src/dish.cpp +360 -0
- data/vendor/github.com/zeromq/libzmq/src/dish.hpp +125 -0
- data/vendor/github.com/zeromq/libzmq/src/dist.cpp +235 -0
- data/vendor/github.com/zeromq/libzmq/src/dist.hpp +120 -0
- data/vendor/github.com/zeromq/libzmq/src/encoder.hpp +189 -0
- data/vendor/github.com/zeromq/libzmq/src/epoll.cpp +206 -0
- data/vendor/github.com/zeromq/libzmq/src/epoll.hpp +119 -0
- data/vendor/github.com/zeromq/libzmq/src/err.cpp +447 -0
- data/vendor/github.com/zeromq/libzmq/src/err.hpp +173 -0
- data/vendor/github.com/zeromq/libzmq/src/fd.hpp +52 -0
- data/vendor/github.com/zeromq/libzmq/src/fq.cpp +163 -0
- data/vendor/github.com/zeromq/libzmq/src/fq.hpp +92 -0
- data/vendor/github.com/zeromq/libzmq/src/gather.cpp +94 -0
- data/vendor/github.com/zeromq/libzmq/src/gather.hpp +75 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_client.cpp +237 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_client.hpp +94 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_mechanism_base.cpp +402 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_mechanism_base.hpp +134 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_server.cpp +249 -0
- data/vendor/github.com/zeromq/libzmq/src/gssapi_server.hpp +95 -0
- data/vendor/github.com/zeromq/libzmq/src/i_decoder.hpp +64 -0
- data/vendor/github.com/zeromq/libzmq/src/i_encoder.hpp +60 -0
- data/vendor/github.com/zeromq/libzmq/src/i_engine.hpp +68 -0
- data/vendor/github.com/zeromq/libzmq/src/i_mailbox.hpp +60 -0
- data/vendor/github.com/zeromq/libzmq/src/i_poll_events.hpp +55 -0
- data/vendor/github.com/zeromq/libzmq/src/io_object.cpp +117 -0
- data/vendor/github.com/zeromq/libzmq/src/io_object.hpp +89 -0
- data/vendor/github.com/zeromq/libzmq/src/io_thread.cpp +114 -0
- data/vendor/github.com/zeromq/libzmq/src/io_thread.hpp +99 -0
- data/vendor/github.com/zeromq/libzmq/src/ip.cpp +235 -0
- data/vendor/github.com/zeromq/libzmq/src/ip.hpp +64 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_address.cpp +106 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_address.hpp +74 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_connecter.cpp +278 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_connecter.hpp +135 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_listener.cpp +427 -0
- data/vendor/github.com/zeromq/libzmq/src/ipc_listener.hpp +123 -0
- data/vendor/github.com/zeromq/libzmq/src/kqueue.cpp +227 -0
- data/vendor/github.com/zeromq/libzmq/src/kqueue.hpp +127 -0
- data/vendor/github.com/zeromq/libzmq/src/lb.cpp +173 -0
- data/vendor/github.com/zeromq/libzmq/src/lb.hpp +88 -0
- data/vendor/github.com/zeromq/libzmq/src/libzmq.pc.cmake.in +11 -0
- data/vendor/github.com/zeromq/libzmq/src/libzmq.pc.in +11 -0
- data/vendor/github.com/zeromq/libzmq/src/libzmq.vers +4 -0
- data/vendor/github.com/zeromq/libzmq/src/likely.hpp +42 -0
- data/vendor/github.com/zeromq/libzmq/src/macros.hpp +12 -0
- data/vendor/github.com/zeromq/libzmq/src/mailbox.cpp +101 -0
- data/vendor/github.com/zeromq/libzmq/src/mailbox.hpp +90 -0
- data/vendor/github.com/zeromq/libzmq/src/mailbox_safe.cpp +117 -0
- data/vendor/github.com/zeromq/libzmq/src/mailbox_safe.hpp +94 -0
- data/vendor/github.com/zeromq/libzmq/src/mechanism.cpp +285 -0
- data/vendor/github.com/zeromq/libzmq/src/mechanism.hpp +152 -0
- data/vendor/github.com/zeromq/libzmq/src/mechanism_base.cpp +70 -0
- data/vendor/github.com/zeromq/libzmq/src/mechanism_base.hpp +53 -0
- data/vendor/github.com/zeromq/libzmq/src/metadata.cpp +62 -0
- data/vendor/github.com/zeromq/libzmq/src/metadata.hpp +70 -0
- data/vendor/github.com/zeromq/libzmq/src/msg.cpp +578 -0
- data/vendor/github.com/zeromq/libzmq/src/msg.hpp +268 -0
- data/vendor/github.com/zeromq/libzmq/src/mtrie.cpp +434 -0
- data/vendor/github.com/zeromq/libzmq/src/mtrie.hpp +102 -0
- data/vendor/github.com/zeromq/libzmq/src/mutex.hpp +213 -0
- data/vendor/github.com/zeromq/libzmq/src/norm_engine.cpp +736 -0
- data/vendor/github.com/zeromq/libzmq/src/norm_engine.hpp +190 -0
- data/vendor/github.com/zeromq/libzmq/src/null_mechanism.cpp +220 -0
- data/vendor/github.com/zeromq/libzmq/src/null_mechanism.hpp +77 -0
- data/vendor/github.com/zeromq/libzmq/src/object.cpp +476 -0
- data/vendor/github.com/zeromq/libzmq/src/object.hpp +156 -0
- data/vendor/github.com/zeromq/libzmq/src/options.cpp +1089 -0
- data/vendor/github.com/zeromq/libzmq/src/options.hpp +251 -0
- data/vendor/github.com/zeromq/libzmq/src/own.cpp +216 -0
- data/vendor/github.com/zeromq/libzmq/src/own.hpp +154 -0
- data/vendor/github.com/zeromq/libzmq/src/pair.cpp +142 -0
- data/vendor/github.com/zeromq/libzmq/src/pair.hpp +78 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_receiver.cpp +307 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_receiver.hpp +147 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_sender.cpp +257 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_sender.hpp +124 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_socket.cpp +712 -0
- data/vendor/github.com/zeromq/libzmq/src/pgm_socket.hpp +128 -0
- data/vendor/github.com/zeromq/libzmq/src/pipe.cpp +547 -0
- data/vendor/github.com/zeromq/libzmq/src/pipe.hpp +253 -0
- data/vendor/github.com/zeromq/libzmq/src/plain_client.cpp +220 -0
- data/vendor/github.com/zeromq/libzmq/src/plain_client.hpp +79 -0
- data/vendor/github.com/zeromq/libzmq/src/plain_server.cpp +253 -0
- data/vendor/github.com/zeromq/libzmq/src/plain_server.hpp +71 -0
- data/vendor/github.com/zeromq/libzmq/src/poll.cpp +193 -0
- data/vendor/github.com/zeromq/libzmq/src/poll.hpp +121 -0
- data/vendor/github.com/zeromq/libzmq/src/poller.hpp +64 -0
- data/vendor/github.com/zeromq/libzmq/src/poller_base.cpp +110 -0
- data/vendor/github.com/zeromq/libzmq/src/poller_base.hpp +95 -0
- data/vendor/github.com/zeromq/libzmq/src/pollset.cpp +254 -0
- data/vendor/github.com/zeromq/libzmq/src/pollset.hpp +121 -0
- data/vendor/github.com/zeromq/libzmq/src/precompiled.cpp +30 -0
- data/vendor/github.com/zeromq/libzmq/src/precompiled.hpp +120 -0
- data/vendor/github.com/zeromq/libzmq/src/proxy.cpp +622 -0
- data/vendor/github.com/zeromq/libzmq/src/proxy.hpp +42 -0
- data/vendor/github.com/zeromq/libzmq/src/pub.cpp +67 -0
- data/vendor/github.com/zeromq/libzmq/src/pub.hpp +63 -0
- data/vendor/github.com/zeromq/libzmq/src/pull.cpp +78 -0
- data/vendor/github.com/zeromq/libzmq/src/pull.hpp +75 -0
- data/vendor/github.com/zeromq/libzmq/src/push.cpp +77 -0
- data/vendor/github.com/zeromq/libzmq/src/push.hpp +73 -0
- data/vendor/github.com/zeromq/libzmq/src/radio.cpp +252 -0
- data/vendor/github.com/zeromq/libzmq/src/radio.hpp +112 -0
- data/vendor/github.com/zeromq/libzmq/src/random.cpp +118 -0
- data/vendor/github.com/zeromq/libzmq/src/random.hpp +52 -0
- data/vendor/github.com/zeromq/libzmq/src/raw_decoder.cpp +74 -0
- data/vendor/github.com/zeromq/libzmq/src/raw_decoder.hpp +74 -0
- data/vendor/github.com/zeromq/libzmq/src/raw_encoder.cpp +51 -0
- data/vendor/github.com/zeromq/libzmq/src/raw_encoder.hpp +64 -0
- data/vendor/github.com/zeromq/libzmq/src/reaper.cpp +142 -0
- data/vendor/github.com/zeromq/libzmq/src/reaper.hpp +94 -0
- data/vendor/github.com/zeromq/libzmq/src/rep.cpp +134 -0
- data/vendor/github.com/zeromq/libzmq/src/rep.hpp +73 -0
- data/vendor/github.com/zeromq/libzmq/src/req.cpp +323 -0
- data/vendor/github.com/zeromq/libzmq/src/req.hpp +121 -0
- data/vendor/github.com/zeromq/libzmq/src/router.cpp +551 -0
- data/vendor/github.com/zeromq/libzmq/src/router.hpp +147 -0
- data/vendor/github.com/zeromq/libzmq/src/scatter.cpp +83 -0
- data/vendor/github.com/zeromq/libzmq/src/scatter.hpp +73 -0
- data/vendor/github.com/zeromq/libzmq/src/select.cpp +567 -0
- data/vendor/github.com/zeromq/libzmq/src/select.hpp +184 -0
- data/vendor/github.com/zeromq/libzmq/src/server.cpp +184 -0
- data/vendor/github.com/zeromq/libzmq/src/server.hpp +96 -0
- data/vendor/github.com/zeromq/libzmq/src/session_base.cpp +716 -0
- data/vendor/github.com/zeromq/libzmq/src/session_base.hpp +173 -0
- data/vendor/github.com/zeromq/libzmq/src/signaler.cpp +682 -0
- data/vendor/github.com/zeromq/libzmq/src/signaler.hpp +91 -0
- data/vendor/github.com/zeromq/libzmq/src/socket_base.cpp +1778 -0
- data/vendor/github.com/zeromq/libzmq/src/socket_base.hpp +307 -0
- data/vendor/github.com/zeromq/libzmq/src/socket_poller.cpp +697 -0
- data/vendor/github.com/zeromq/libzmq/src/socket_poller.hpp +145 -0
- data/vendor/github.com/zeromq/libzmq/src/socks.cpp +286 -0
- data/vendor/github.com/zeromq/libzmq/src/socks.hpp +135 -0
- data/vendor/github.com/zeromq/libzmq/src/socks_connecter.cpp +482 -0
- data/vendor/github.com/zeromq/libzmq/src/socks_connecter.hpp +163 -0
- data/vendor/github.com/zeromq/libzmq/src/stdint.hpp +77 -0
- data/vendor/github.com/zeromq/libzmq/src/stream.cpp +321 -0
- data/vendor/github.com/zeromq/libzmq/src/stream.hpp +107 -0
- data/vendor/github.com/zeromq/libzmq/src/stream_engine.cpp +1110 -0
- data/vendor/github.com/zeromq/libzmq/src/stream_engine.hpp +233 -0
- data/vendor/github.com/zeromq/libzmq/src/sub.cpp +87 -0
- data/vendor/github.com/zeromq/libzmq/src/sub.hpp +64 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp.cpp +356 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp.hpp +69 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_address.cpp +897 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_address.hpp +117 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_connecter.cpp +426 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_connecter.hpp +134 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_listener.cpp +357 -0
- data/vendor/github.com/zeromq/libzmq/src/tcp_listener.hpp +98 -0
- data/vendor/github.com/zeromq/libzmq/src/thread.cpp +238 -0
- data/vendor/github.com/zeromq/libzmq/src/thread.hpp +102 -0
- data/vendor/github.com/zeromq/libzmq/src/timers.cpp +199 -0
- data/vendor/github.com/zeromq/libzmq/src/timers.hpp +110 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_address.cpp +124 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_address.hpp +75 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_connecter.cpp +268 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_connecter.hpp +137 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_listener.cpp +190 -0
- data/vendor/github.com/zeromq/libzmq/src/tipc_listener.hpp +107 -0
- data/vendor/github.com/zeromq/libzmq/src/trie.cpp +340 -0
- data/vendor/github.com/zeromq/libzmq/src/trie.hpp +86 -0
- data/vendor/github.com/zeromq/libzmq/src/tweetnacl.c +988 -0
- data/vendor/github.com/zeromq/libzmq/src/tweetnacl.h +75 -0
- data/vendor/github.com/zeromq/libzmq/src/udp_address.cpp +172 -0
- data/vendor/github.com/zeromq/libzmq/src/udp_address.hpp +78 -0
- data/vendor/github.com/zeromq/libzmq/src/udp_engine.cpp +394 -0
- data/vendor/github.com/zeromq/libzmq/src/udp_engine.hpp +73 -0
- data/vendor/github.com/zeromq/libzmq/src/v1_decoder.cpp +153 -0
- data/vendor/github.com/zeromq/libzmq/src/v1_decoder.hpp +69 -0
- data/vendor/github.com/zeromq/libzmq/src/v1_encoder.cpp +76 -0
- data/vendor/github.com/zeromq/libzmq/src/v1_encoder.hpp +59 -0
- data/vendor/github.com/zeromq/libzmq/src/v2_decoder.cpp +161 -0
- data/vendor/github.com/zeromq/libzmq/src/v2_decoder.hpp +74 -0
- data/vendor/github.com/zeromq/libzmq/src/v2_encoder.cpp +78 -0
- data/vendor/github.com/zeromq/libzmq/src/v2_encoder.hpp +59 -0
- data/vendor/github.com/zeromq/libzmq/src/v2_protocol.hpp +49 -0
- data/vendor/github.com/zeromq/libzmq/src/version.rc.in +93 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci.cpp +88 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci.hpp +60 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_address.cpp +170 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_address.hpp +71 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_connecter.cpp +307 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_connecter.hpp +136 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_listener.cpp +262 -0
- data/vendor/github.com/zeromq/libzmq/src/vmci_listener.hpp +102 -0
- data/vendor/github.com/zeromq/libzmq/src/windows.hpp +93 -0
- data/vendor/github.com/zeromq/libzmq/src/wire.hpp +108 -0
- data/vendor/github.com/zeromq/libzmq/src/xpub.cpp +340 -0
- data/vendor/github.com/zeromq/libzmq/src/xpub.hpp +126 -0
- data/vendor/github.com/zeromq/libzmq/src/xsub.cpp +251 -0
- data/vendor/github.com/zeromq/libzmq/src/xsub.hpp +103 -0
- data/vendor/github.com/zeromq/libzmq/src/ypipe.hpp +218 -0
- data/vendor/github.com/zeromq/libzmq/src/ypipe_base.hpp +54 -0
- data/vendor/github.com/zeromq/libzmq/src/ypipe_conflate.hpp +137 -0
- data/vendor/github.com/zeromq/libzmq/src/yqueue.hpp +225 -0
- data/vendor/github.com/zeromq/libzmq/src/zap_client.cpp +305 -0
- data/vendor/github.com/zeromq/libzmq/src/zap_client.hpp +100 -0
- data/vendor/github.com/zeromq/libzmq/src/zmq.cpp +1527 -0
- data/vendor/github.com/zeromq/libzmq/src/zmq_draft.h +178 -0
- data/vendor/github.com/zeromq/libzmq/src/zmq_utils.cpp +318 -0
- data/vendor/github.com/zeromq/libzmq/tests/CMakeLists.txt +218 -0
- data/vendor/github.com/zeromq/libzmq/tests/README.md +28 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_abstract_ipc.cpp +67 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_ancillaries.cpp +51 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_atomics.cpp +48 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_base85.cpp +162 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_bind_after_connect_tcp.cpp +97 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_bind_src_address.cpp +57 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_capabilities.cpp +82 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_client_server.cpp +106 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_conflate.cpp +86 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_connect_delay_tipc.cpp +238 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_connect_resolve.cpp +70 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_connect_rid.cpp +199 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_ctx_destroy.cpp +110 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_ctx_options.cpp +204 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_dgram.cpp +99 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_diffserv.cpp +85 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_disconnect_inproc.cpp +136 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_filter_ipc.cpp +166 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_fork.cpp +99 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_getsockopt_memset.cpp +64 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_heartbeats.cpp +341 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_hwm.cpp +312 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_hwm_pubsub.cpp +253 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_immediate.cpp +250 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_inproc_connect.cpp +536 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_invalid_rep.cpp +98 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_iov.cpp +157 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_ipc_wildcard.cpp +65 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_issue_566.cpp +99 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_last_endpoint.cpp +66 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_many_sockets.cpp +100 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_metadata.cpp +134 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_monitor.cpp +116 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_msg_ffn.cpp +145 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_msg_flags.cpp +127 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pair_inproc.cpp +81 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pair_ipc.cpp +60 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pair_tcp.cpp +64 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pair_tipc.cpp +62 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pair_vmci.cpp +68 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_poller.cpp +404 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_probe_router.cpp +86 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_proxy.cpp +486 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_proxy_single_socket.cpp +121 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_proxy_terminate.cpp +132 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_pub_invert_matching.cpp +136 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_radio_dish.cpp +191 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_rebind_ipc.cpp +84 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reconnect_ivl.cpp +149 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_req_correlate.cpp +140 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_req_relaxed.cpp +220 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_device.cpp +153 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_device_tipc.cpp +146 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_inproc.cpp +60 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_ipc.cpp +112 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_tcp.cpp +336 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_tipc.cpp +61 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_reqrep_vmci.cpp +68 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_router_handover.cpp +116 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_router_mandatory.cpp +292 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_router_mandatory_hwm.cpp +129 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_router_mandatory_tipc.cpp +70 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_scatter_gather.cpp +84 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_security_curve.cpp +792 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_security_gssapi.cpp +362 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_security_null.cpp +209 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_security_plain.cpp +212 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_security_zap.cpp +417 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_setsockopt.cpp +153 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_shutdown_stress.cpp +101 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_shutdown_stress_tipc.cpp +95 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_socket_null.cpp +82 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_sockopt_hwm.cpp +190 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_sodium.cpp +98 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_spec_dealer.cpp +266 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_spec_pushpull.cpp +304 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_spec_rep.cpp +169 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_spec_req.cpp +266 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_spec_router.cpp +217 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_srcfd.cpp +127 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_stream.cpp +342 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_stream_disconnect.cpp +295 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_stream_empty.cpp +74 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_stream_exceeds_buffer.cpp +124 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_stream_timeout.cpp +235 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_sub_forward.cpp +109 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_sub_forward_tipc.cpp +102 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_system.cpp +98 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_term_endpoint.cpp +226 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_term_endpoint_tipc.cpp +120 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_thread_safe.cpp +90 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_timeo.cpp +85 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_timers.cpp +226 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_udp.cpp +133 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_unbind_inproc.cpp +43 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_unbind_wildcard.cpp +216 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_use_fd_ipc.cpp +223 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_use_fd_tcp.cpp +238 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_xpub_manual.cpp +597 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_xpub_nodrop.cpp +118 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_xpub_welcome_msg.cpp +81 -0
- data/vendor/github.com/zeromq/libzmq/tests/test_zmq_poll_fd.cpp +98 -0
- data/vendor/github.com/zeromq/libzmq/tests/testutil.hpp +408 -0
- data/vendor/github.com/zeromq/libzmq/tests/testutil_security.hpp +684 -0
- data/vendor/github.com/zeromq/libzmq/tools/curve_keygen.cpp +58 -0
- data/vendor/github.com/zeromq/libzmq/version.sh +21 -0
- metadata +875 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2016 Contributors as noted in the AUTHORS file
|
3
|
+
|
4
|
+
This file is part of libzmq, the ZeroMQ core engine in C++.
|
5
|
+
|
6
|
+
libzmq is free software; you can redistribute it and/or modify it under
|
7
|
+
the terms of the GNU Lesser General Public License (LGPL) as published
|
8
|
+
by the Free Software Foundation; either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
As a special exception, the Contributors give you permission to link
|
12
|
+
this library with independent modules to produce an executable,
|
13
|
+
regardless of the license terms of these independent modules, and to
|
14
|
+
copy and distribute the resulting executable under terms of your choice,
|
15
|
+
provided that you also meet, for each linked independent module, the
|
16
|
+
terms and conditions of the license of that module. An independent
|
17
|
+
module is a module which is not derived from or based on this library.
|
18
|
+
If you modify this library, you must extend this exception to your
|
19
|
+
version of the library.
|
20
|
+
|
21
|
+
libzmq is distributed in the hope that it will be useful, but WITHOUT
|
22
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
24
|
+
License for more details.
|
25
|
+
|
26
|
+
You should have received a copy of the GNU Lesser General Public License
|
27
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
28
|
+
*/
|
29
|
+
|
30
|
+
#ifndef __ZMQ_TCP_HPP_INCLUDED__
|
31
|
+
#define __ZMQ_TCP_HPP_INCLUDED__
|
32
|
+
|
33
|
+
#include "fd.hpp"
|
34
|
+
|
35
|
+
namespace zmq
|
36
|
+
{
|
37
|
+
|
38
|
+
// Tunes the supplied TCP socket for the best latency.
|
39
|
+
int tune_tcp_socket (fd_t s_);
|
40
|
+
|
41
|
+
// Sets the socket send buffer size.
|
42
|
+
int set_tcp_send_buffer (fd_t sockfd_, int bufsize_);
|
43
|
+
|
44
|
+
// Sets the socket receive buffer size.
|
45
|
+
int set_tcp_receive_buffer (fd_t sockfd_, int bufsize_);
|
46
|
+
|
47
|
+
// Tunes TCP keep-alives
|
48
|
+
int tune_tcp_keepalives (fd_t s_, int keepalive_, int keepalive_cnt_,
|
49
|
+
int keepalive_idle_, int keepalive_intvl_);
|
50
|
+
|
51
|
+
// Tunes TCP max retransmit timeout
|
52
|
+
int tune_tcp_maxrt (fd_t sockfd_, int timeout_);
|
53
|
+
|
54
|
+
// Writes data to the socket. Returns the number of bytes actually
|
55
|
+
// written (even zero is to be considered to be a success). In case
|
56
|
+
// of error or orderly shutdown by the other peer -1 is returned.
|
57
|
+
int tcp_write (fd_t s_, const void *data_, size_t size_);
|
58
|
+
|
59
|
+
// Reads data from the socket (up to 'size' bytes).
|
60
|
+
// Returns the number of bytes actually read or -1 on error.
|
61
|
+
// Zero indicates the peer has closed the connection.
|
62
|
+
int tcp_read (fd_t s_, void *data_, size_t size_);
|
63
|
+
|
64
|
+
// Asserts that an internal error did not occur. Does not assert
|
65
|
+
// on network errors such as reset or aborted connections.
|
66
|
+
void tcp_assert_tuning_error (fd_t s_, int rc_);
|
67
|
+
}
|
68
|
+
|
69
|
+
#endif
|
@@ -0,0 +1,897 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2016 Contributors as noted in the AUTHORS file
|
3
|
+
|
4
|
+
This file is part of libzmq, the ZeroMQ core engine in C++.
|
5
|
+
|
6
|
+
libzmq is free software; you can redistribute it and/or modify it under
|
7
|
+
the terms of the GNU Lesser General Public License (LGPL) as published
|
8
|
+
by the Free Software Foundation; either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
As a special exception, the Contributors give you permission to link
|
12
|
+
this library with independent modules to produce an executable,
|
13
|
+
regardless of the license terms of these independent modules, and to
|
14
|
+
copy and distribute the resulting executable under terms of your choice,
|
15
|
+
provided that you also meet, for each linked independent module, the
|
16
|
+
terms and conditions of the license of that module. An independent
|
17
|
+
module is a module which is not derived from or based on this library.
|
18
|
+
If you modify this library, you must extend this exception to your
|
19
|
+
version of the library.
|
20
|
+
|
21
|
+
libzmq is distributed in the hope that it will be useful, but WITHOUT
|
22
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
24
|
+
License for more details.
|
25
|
+
|
26
|
+
You should have received a copy of the GNU Lesser General Public License
|
27
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
28
|
+
*/
|
29
|
+
|
30
|
+
#include "precompiled.hpp"
|
31
|
+
#include <string>
|
32
|
+
#include <sstream>
|
33
|
+
|
34
|
+
#include "macros.hpp"
|
35
|
+
#include "tcp_address.hpp"
|
36
|
+
#include "stdint.hpp"
|
37
|
+
#include "err.hpp"
|
38
|
+
#include "ip.hpp"
|
39
|
+
|
40
|
+
#ifndef ZMQ_HAVE_WINDOWS
|
41
|
+
#include <sys/types.h>
|
42
|
+
#include <arpa/inet.h>
|
43
|
+
#include <netinet/tcp.h>
|
44
|
+
#include <net/if.h>
|
45
|
+
#include <netdb.h>
|
46
|
+
#include <ctype.h>
|
47
|
+
#include <unistd.h>
|
48
|
+
#include <stdlib.h>
|
49
|
+
#endif
|
50
|
+
|
51
|
+
#ifdef ZMQ_HAVE_SOLARIS
|
52
|
+
#include <sys/sockio.h>
|
53
|
+
|
54
|
+
// On Solaris platform, network interface name can be queried by ioctl.
|
55
|
+
int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_src_)
|
56
|
+
{
|
57
|
+
// TODO: Unused parameter, IPv6 support not implemented for Solaris.
|
58
|
+
LIBZMQ_UNUSED (ipv6_);
|
59
|
+
|
60
|
+
// Create a socket.
|
61
|
+
const int fd = open_socket (AF_INET, SOCK_DGRAM, 0);
|
62
|
+
errno_assert (fd != -1);
|
63
|
+
|
64
|
+
// Retrieve number of interfaces.
|
65
|
+
lifnum ifn;
|
66
|
+
ifn.lifn_family = AF_INET;
|
67
|
+
ifn.lifn_flags = 0;
|
68
|
+
int rc = ioctl (fd, SIOCGLIFNUM, (char*) &ifn);
|
69
|
+
errno_assert (rc != -1);
|
70
|
+
|
71
|
+
// Allocate memory to get interface names.
|
72
|
+
const size_t ifr_size = sizeof (struct lifreq) * ifn.lifn_count;
|
73
|
+
char *ifr = (char*) malloc (ifr_size);
|
74
|
+
alloc_assert (ifr);
|
75
|
+
|
76
|
+
// Retrieve interface names.
|
77
|
+
lifconf ifc;
|
78
|
+
ifc.lifc_family = AF_INET;
|
79
|
+
ifc.lifc_flags = 0;
|
80
|
+
ifc.lifc_len = ifr_size;
|
81
|
+
ifc.lifc_buf = ifr;
|
82
|
+
rc = ioctl (fd, SIOCGLIFCONF, (char*) &ifc);
|
83
|
+
errno_assert (rc != -1);
|
84
|
+
|
85
|
+
// Find the interface with the specified name and AF_INET family.
|
86
|
+
bool found = false;
|
87
|
+
lifreq *ifrp = ifc.lifc_req;
|
88
|
+
for (int n = 0; n < (int) (ifc.lifc_len / sizeof (lifreq));
|
89
|
+
n ++, ifrp ++) {
|
90
|
+
if (!strcmp (nic_, ifrp->lifr_name)) {
|
91
|
+
rc = ioctl (fd, SIOCGLIFADDR, (char*) ifrp);
|
92
|
+
errno_assert (rc != -1);
|
93
|
+
if (ifrp->lifr_addr.ss_family == AF_INET) {
|
94
|
+
if (is_src_)
|
95
|
+
source_address.ipv4 = *(sockaddr_in*) &ifrp->lifr_addr;
|
96
|
+
else
|
97
|
+
address.ipv4 = *(sockaddr_in*) &ifrp->lifr_addr;
|
98
|
+
found = true;
|
99
|
+
break;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
// Clean-up.
|
105
|
+
free (ifr);
|
106
|
+
close (fd);
|
107
|
+
|
108
|
+
if (!found) {
|
109
|
+
errno = ENODEV;
|
110
|
+
return -1;
|
111
|
+
}
|
112
|
+
return 0;
|
113
|
+
}
|
114
|
+
|
115
|
+
#elif defined ZMQ_HAVE_AIX || defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_ANDROID
|
116
|
+
#include <sys/ioctl.h>
|
117
|
+
|
118
|
+
int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_src_)
|
119
|
+
{
|
120
|
+
#if defined ZMQ_HAVE_AIX || defined ZMQ_HAVE_HPUX
|
121
|
+
// IPv6 support not implemented for AIX or HP/UX.
|
122
|
+
if (ipv6_)
|
123
|
+
{
|
124
|
+
errno = ENODEV;
|
125
|
+
return -1;
|
126
|
+
}
|
127
|
+
#endif
|
128
|
+
|
129
|
+
// Create a socket.
|
130
|
+
const int sd = open_socket (ipv6_ ? AF_INET6 : AF_INET, SOCK_DGRAM, 0);
|
131
|
+
errno_assert (sd != -1);
|
132
|
+
|
133
|
+
struct ifreq ifr;
|
134
|
+
|
135
|
+
// Copy interface name for ioctl get.
|
136
|
+
strncpy (ifr.ifr_name, nic_, sizeof (ifr.ifr_name) );
|
137
|
+
|
138
|
+
// Fetch interface address.
|
139
|
+
const int rc = ioctl (sd, SIOCGIFADDR, (caddr_t) &ifr, sizeof (ifr) );
|
140
|
+
|
141
|
+
// Clean up.
|
142
|
+
close (sd);
|
143
|
+
|
144
|
+
if (rc == -1) {
|
145
|
+
errno = ENODEV;
|
146
|
+
return -1;
|
147
|
+
}
|
148
|
+
|
149
|
+
const int family = ifr.ifr_addr.sa_family;
|
150
|
+
if (family == (ipv6_ ? AF_INET6 : AF_INET)
|
151
|
+
&& !strcmp (nic_, ifr.ifr_name))
|
152
|
+
{
|
153
|
+
if (is_src_)
|
154
|
+
memcpy (&source_address, &ifr.ifr_addr,
|
155
|
+
(family == AF_INET) ? sizeof (struct sockaddr_in)
|
156
|
+
: sizeof (struct sockaddr_in6));
|
157
|
+
else
|
158
|
+
memcpy (&address, &ifr.ifr_addr,
|
159
|
+
(family == AF_INET) ? sizeof (struct sockaddr_in)
|
160
|
+
: sizeof (struct sockaddr_in6));
|
161
|
+
}
|
162
|
+
else
|
163
|
+
{
|
164
|
+
errno = ENODEV;
|
165
|
+
return -1;
|
166
|
+
}
|
167
|
+
|
168
|
+
return 0;
|
169
|
+
}
|
170
|
+
|
171
|
+
#elif ((defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
|
172
|
+
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_OPENBSD ||\
|
173
|
+
defined ZMQ_HAVE_QNXNTO || defined ZMQ_HAVE_NETBSD ||\
|
174
|
+
defined ZMQ_HAVE_DRAGONFLY || defined ZMQ_HAVE_GNU)\
|
175
|
+
&& defined ZMQ_HAVE_IFADDRS)
|
176
|
+
|
177
|
+
#include <ifaddrs.h>
|
178
|
+
|
179
|
+
// On these platforms, network interface name can be queried
|
180
|
+
// using getifaddrs function.
|
181
|
+
int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_src_)
|
182
|
+
{
|
183
|
+
// Get the addresses.
|
184
|
+
ifaddrs *ifa = NULL;
|
185
|
+
int rc = 0;
|
186
|
+
const int max_attempts = 10;
|
187
|
+
const int backoff_msec = 1;
|
188
|
+
for (int i = 0; i < max_attempts; i++) {
|
189
|
+
rc = getifaddrs (&ifa);
|
190
|
+
if (rc == 0 || (rc < 0 && errno != ECONNREFUSED))
|
191
|
+
break;
|
192
|
+
usleep ((backoff_msec << i) * 1000);
|
193
|
+
}
|
194
|
+
|
195
|
+
if (rc != 0 && ((errno == EINVAL) || (errno==EOPNOTSUPP))) {
|
196
|
+
// Windows Subsystem for Linux compatibility
|
197
|
+
LIBZMQ_UNUSED (nic_);
|
198
|
+
LIBZMQ_UNUSED (ipv6_);
|
199
|
+
|
200
|
+
errno = ENODEV;
|
201
|
+
return -1;
|
202
|
+
}
|
203
|
+
errno_assert (rc == 0);
|
204
|
+
zmq_assert (ifa != NULL);
|
205
|
+
|
206
|
+
// Find the corresponding network interface.
|
207
|
+
bool found = false;
|
208
|
+
for (ifaddrs *ifp = ifa; ifp != NULL; ifp = ifp->ifa_next) {
|
209
|
+
if (ifp->ifa_addr == NULL)
|
210
|
+
continue;
|
211
|
+
|
212
|
+
const int family = ifp->ifa_addr->sa_family;
|
213
|
+
if (family == (ipv6_ ? AF_INET6 : AF_INET)
|
214
|
+
&& !strcmp (nic_, ifp->ifa_name)) {
|
215
|
+
if (is_src_)
|
216
|
+
memcpy (&source_address, ifp->ifa_addr,
|
217
|
+
(family == AF_INET) ? sizeof (struct sockaddr_in)
|
218
|
+
: sizeof (struct sockaddr_in6));
|
219
|
+
else
|
220
|
+
memcpy (&address, ifp->ifa_addr,
|
221
|
+
(family == AF_INET) ? sizeof (struct sockaddr_in)
|
222
|
+
: sizeof (struct sockaddr_in6));
|
223
|
+
found = true;
|
224
|
+
break;
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
// Clean-up;
|
229
|
+
freeifaddrs (ifa);
|
230
|
+
|
231
|
+
if (!found) {
|
232
|
+
errno = ENODEV;
|
233
|
+
return -1;
|
234
|
+
}
|
235
|
+
return 0;
|
236
|
+
}
|
237
|
+
|
238
|
+
#elif (defined ZMQ_HAVE_WINDOWS)
|
239
|
+
|
240
|
+
#include <netioapi.h>
|
241
|
+
|
242
|
+
int zmq::tcp_address_t::get_interface_name(unsigned long index, char ** dest) const {
|
243
|
+
#ifdef ZMQ_HAVE_WINDOWS_UWP
|
244
|
+
char * buffer = (char*)malloc(1024);
|
245
|
+
#else
|
246
|
+
char * buffer = (char*)malloc(IF_MAX_STRING_SIZE);
|
247
|
+
#endif
|
248
|
+
alloc_assert(buffer);
|
249
|
+
|
250
|
+
char * if_name_result = NULL;
|
251
|
+
|
252
|
+
#if !defined ZMQ_HAVE_WINDOWS_TARGET_XP && !defined ZMQ_HAVE_WINDOWS_UWP
|
253
|
+
if_name_result = if_indextoname(index, buffer);
|
254
|
+
#endif
|
255
|
+
|
256
|
+
if (if_name_result == NULL) {
|
257
|
+
free(buffer);
|
258
|
+
return -1;
|
259
|
+
}
|
260
|
+
|
261
|
+
*dest = buffer;
|
262
|
+
return 0;
|
263
|
+
}
|
264
|
+
|
265
|
+
int zmq::tcp_address_t::wchar_to_utf8(const WCHAR * src, char ** dest) const {
|
266
|
+
int rc;
|
267
|
+
int buffer_len = WideCharToMultiByte(CP_UTF8, 0,
|
268
|
+
src, -1,
|
269
|
+
NULL, 0,
|
270
|
+
NULL, 0);
|
271
|
+
|
272
|
+
char * buffer = (char*) malloc(buffer_len);
|
273
|
+
alloc_assert(buffer);
|
274
|
+
|
275
|
+
rc = WideCharToMultiByte(CP_UTF8, 0,
|
276
|
+
src, -1,
|
277
|
+
buffer, buffer_len,
|
278
|
+
NULL, 0);
|
279
|
+
|
280
|
+
if (rc == 0) {
|
281
|
+
free(buffer);
|
282
|
+
return -1;
|
283
|
+
}
|
284
|
+
|
285
|
+
*dest = buffer;
|
286
|
+
return 0;
|
287
|
+
}
|
288
|
+
|
289
|
+
int zmq::tcp_address_t::resolve_nic_name(const char *nic_, bool ipv6_, bool is_src_)
|
290
|
+
{
|
291
|
+
int rc;
|
292
|
+
bool found = false;
|
293
|
+
const int max_attempts = 10;
|
294
|
+
|
295
|
+
int iterations = 0;
|
296
|
+
IP_ADAPTER_ADDRESSES * addresses = NULL;
|
297
|
+
IP_ADAPTER_ADDRESSES * current_addresses = NULL;
|
298
|
+
unsigned long out_buf_len = sizeof(IP_ADAPTER_ADDRESSES);
|
299
|
+
|
300
|
+
do {
|
301
|
+
addresses = (IP_ADAPTER_ADDRESSES *) malloc(out_buf_len);
|
302
|
+
alloc_assert(addresses);
|
303
|
+
|
304
|
+
rc = GetAdaptersAddresses(AF_UNSPEC,
|
305
|
+
GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_DNS_SERVER,
|
306
|
+
NULL,
|
307
|
+
addresses, &out_buf_len);
|
308
|
+
if (rc == ERROR_BUFFER_OVERFLOW) {
|
309
|
+
free(addresses);
|
310
|
+
addresses = NULL;
|
311
|
+
}
|
312
|
+
else {
|
313
|
+
break;
|
314
|
+
}
|
315
|
+
iterations++;
|
316
|
+
} while ((rc == ERROR_BUFFER_OVERFLOW) && (iterations < max_attempts));
|
317
|
+
|
318
|
+
if (rc == 0) {
|
319
|
+
current_addresses = addresses;
|
320
|
+
while (current_addresses) {
|
321
|
+
char * if_name = NULL;
|
322
|
+
char * if_friendly_name = NULL;
|
323
|
+
int str_rc1, str_rc2;
|
324
|
+
|
325
|
+
str_rc1 = get_interface_name(current_addresses->IfIndex, &if_name);
|
326
|
+
str_rc2 = wchar_to_utf8(current_addresses->FriendlyName, &if_friendly_name);
|
327
|
+
|
328
|
+
// Find a network adapter by its "name" or "friendly name"
|
329
|
+
if (
|
330
|
+
((str_rc1 == 0) && (!strcmp(nic_, if_name)))
|
331
|
+
|| ((str_rc2 == 0) && (!strcmp(nic_, if_friendly_name)))
|
332
|
+
) {
|
333
|
+
|
334
|
+
// Iterate over all unicast addresses bound to the current network interface
|
335
|
+
IP_ADAPTER_UNICAST_ADDRESS * unicast_address = current_addresses->FirstUnicastAddress;
|
336
|
+
IP_ADAPTER_UNICAST_ADDRESS * current_unicast_address = unicast_address;
|
337
|
+
|
338
|
+
while (current_unicast_address) {
|
339
|
+
ADDRESS_FAMILY family = current_unicast_address->Address.lpSockaddr->sa_family;
|
340
|
+
|
341
|
+
if (family == (ipv6_ ? AF_INET6 : AF_INET)) {
|
342
|
+
if (is_src_)
|
343
|
+
memcpy(&source_address, current_unicast_address->Address.lpSockaddr,
|
344
|
+
(family == AF_INET) ? sizeof(struct sockaddr_in)
|
345
|
+
: sizeof(struct sockaddr_in6));
|
346
|
+
else
|
347
|
+
memcpy(&address, current_unicast_address->Address.lpSockaddr,
|
348
|
+
(family == AF_INET) ? sizeof(struct sockaddr_in)
|
349
|
+
: sizeof(struct sockaddr_in6));
|
350
|
+
found = true;
|
351
|
+
break;
|
352
|
+
}
|
353
|
+
|
354
|
+
current_unicast_address = current_unicast_address->Next;
|
355
|
+
}
|
356
|
+
|
357
|
+
if (found) break;
|
358
|
+
}
|
359
|
+
|
360
|
+
if (str_rc1 == 0) free(if_name);
|
361
|
+
if (str_rc2 == 0) free(if_friendly_name);
|
362
|
+
|
363
|
+
current_addresses = current_addresses->Next;
|
364
|
+
}
|
365
|
+
|
366
|
+
free(addresses);
|
367
|
+
}
|
368
|
+
|
369
|
+
if (!found) {
|
370
|
+
errno = ENODEV;
|
371
|
+
return -1;
|
372
|
+
}
|
373
|
+
return 0;
|
374
|
+
}
|
375
|
+
|
376
|
+
#else
|
377
|
+
|
378
|
+
// On other platforms we assume there are no sane interface names.
|
379
|
+
int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_src_)
|
380
|
+
{
|
381
|
+
LIBZMQ_UNUSED (nic_);
|
382
|
+
LIBZMQ_UNUSED (ipv6_);
|
383
|
+
|
384
|
+
errno = ENODEV;
|
385
|
+
return -1;
|
386
|
+
}
|
387
|
+
|
388
|
+
#endif
|
389
|
+
|
390
|
+
int zmq::tcp_address_t::resolve_interface (const char *interface_, bool ipv6_, bool is_src_)
|
391
|
+
{
|
392
|
+
// Initialize temporary output pointers with storage address.
|
393
|
+
sockaddr_storage ss;
|
394
|
+
sockaddr *out_addr = (sockaddr*) &ss;
|
395
|
+
size_t out_addrlen;
|
396
|
+
|
397
|
+
// Initialise IP-format family/port and populate temporary output pointers
|
398
|
+
// with the address.
|
399
|
+
if (ipv6_) {
|
400
|
+
sockaddr_in6 ip6_addr;
|
401
|
+
memset (&ip6_addr, 0, sizeof (ip6_addr) );
|
402
|
+
ip6_addr.sin6_family = AF_INET6;
|
403
|
+
memcpy (&ip6_addr.sin6_addr, &in6addr_any, sizeof (in6addr_any) );
|
404
|
+
out_addrlen = sizeof (ip6_addr);
|
405
|
+
memcpy (out_addr, &ip6_addr, out_addrlen);
|
406
|
+
}
|
407
|
+
else {
|
408
|
+
sockaddr_in ip4_addr;
|
409
|
+
memset (&ip4_addr, 0, sizeof (ip4_addr) );
|
410
|
+
ip4_addr.sin_family = AF_INET;
|
411
|
+
ip4_addr.sin_addr.s_addr = htonl (INADDR_ANY);
|
412
|
+
out_addrlen = sizeof (ip4_addr);
|
413
|
+
memcpy (out_addr, &ip4_addr, out_addrlen);
|
414
|
+
}
|
415
|
+
// "*" resolves to INADDR_ANY or in6addr_any.
|
416
|
+
if (strcmp (interface_, "*") == 0) {
|
417
|
+
zmq_assert (out_addrlen <= sizeof (address) );
|
418
|
+
if (is_src_)
|
419
|
+
memcpy (&source_address, out_addr, out_addrlen);
|
420
|
+
else
|
421
|
+
memcpy (&address, out_addr, out_addrlen);
|
422
|
+
return 0;
|
423
|
+
}
|
424
|
+
|
425
|
+
// Try to resolve the string as a NIC name.
|
426
|
+
int rc = resolve_nic_name (interface_, ipv6_, is_src_);
|
427
|
+
if (rc == 0 || errno != ENODEV)
|
428
|
+
return rc;
|
429
|
+
|
430
|
+
// There's no such interface name. Assume literal address.
|
431
|
+
#if defined ZMQ_HAVE_OPENVMS && defined __ia64
|
432
|
+
__addrinfo64 *res = NULL;
|
433
|
+
__addrinfo64 req;
|
434
|
+
#else
|
435
|
+
addrinfo *res = NULL;
|
436
|
+
addrinfo req;
|
437
|
+
#endif
|
438
|
+
memset (&req, 0, sizeof (req) );
|
439
|
+
|
440
|
+
// Choose IPv4 or IPv6 protocol family. Note that IPv6 allows for
|
441
|
+
// IPv4-in-IPv6 addresses.
|
442
|
+
req.ai_family = ipv6_? AF_INET6: AF_INET;
|
443
|
+
|
444
|
+
// Arbitrary, not used in the output, but avoids duplicate results.
|
445
|
+
req.ai_socktype = SOCK_STREAM;
|
446
|
+
|
447
|
+
// Restrict hostname/service to literals to avoid any DNS lookups or
|
448
|
+
// service-name irregularity due to indeterminate socktype.
|
449
|
+
req.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
|
450
|
+
|
451
|
+
#if defined AI_V4MAPPED
|
452
|
+
// In this API we only require IPv4-mapped addresses when
|
453
|
+
// no native IPv6 interfaces are available (~AI_ALL).
|
454
|
+
// This saves an additional DNS roundtrip for IPv4 addresses.
|
455
|
+
if (req.ai_family == AF_INET6)
|
456
|
+
req.ai_flags |= AI_V4MAPPED;
|
457
|
+
#endif
|
458
|
+
|
459
|
+
// Resolve the literal address. Some of the error info is lost in case
|
460
|
+
// of error, however, there's no way to report EAI errors via errno.
|
461
|
+
|
462
|
+
rc = getaddrinfo(interface_, NULL, &req, &res);
|
463
|
+
|
464
|
+
#if defined AI_V4MAPPED
|
465
|
+
// Some OS do have AI_V4MAPPED defined but it is not supported in getaddrinfo()
|
466
|
+
// returning EAI_BADFLAGS. Detect this and retry
|
467
|
+
if (rc == EAI_BADFLAGS && (req.ai_flags & AI_V4MAPPED)) {
|
468
|
+
req.ai_flags &= ~AI_V4MAPPED;
|
469
|
+
rc = getaddrinfo(interface_, NULL, &req, &res);
|
470
|
+
}
|
471
|
+
#endif
|
472
|
+
|
473
|
+
#if defined ZMQ_HAVE_WINDOWS
|
474
|
+
// Resolve specific case on Windows platform when using IPv4 address
|
475
|
+
// with ZMQ_IPv6 socket option.
|
476
|
+
if ((req.ai_family == AF_INET6) && (rc == WSAHOST_NOT_FOUND)) {
|
477
|
+
req.ai_family = AF_INET;
|
478
|
+
rc = getaddrinfo(interface_, NULL, &req, &res);
|
479
|
+
}
|
480
|
+
#endif
|
481
|
+
|
482
|
+
if (rc) {
|
483
|
+
errno = ENODEV;
|
484
|
+
return -1;
|
485
|
+
}
|
486
|
+
|
487
|
+
// Use the first result.
|
488
|
+
zmq_assert (res != NULL);
|
489
|
+
zmq_assert ((size_t) res->ai_addrlen <= sizeof (address) );
|
490
|
+
if (is_src_)
|
491
|
+
memcpy (&source_address, res->ai_addr, res->ai_addrlen);
|
492
|
+
else
|
493
|
+
memcpy (&address, res->ai_addr, res->ai_addrlen);
|
494
|
+
|
495
|
+
// Cleanup getaddrinfo after copying the possibly referenced result.
|
496
|
+
freeaddrinfo (res);
|
497
|
+
|
498
|
+
return 0;
|
499
|
+
}
|
500
|
+
|
501
|
+
int zmq::tcp_address_t::resolve_hostname (const char *hostname_, bool ipv6_, bool is_src_)
|
502
|
+
{
|
503
|
+
// Set up the query.
|
504
|
+
#if defined ZMQ_HAVE_OPENVMS && defined __ia64 && __INITIAL_POINTER_SIZE == 64
|
505
|
+
__addrinfo64 req;
|
506
|
+
#else
|
507
|
+
addrinfo req;
|
508
|
+
#endif
|
509
|
+
memset (&req, 0, sizeof (req) );
|
510
|
+
|
511
|
+
// Choose IPv4 or IPv6 protocol family. Note that IPv6 allows for
|
512
|
+
// IPv4-in-IPv6 addresses.
|
513
|
+
req.ai_family = ipv6_? AF_INET6: AF_INET;
|
514
|
+
|
515
|
+
// Need to choose one to avoid duplicate results from getaddrinfo() - this
|
516
|
+
// doesn't really matter, since it's not included in the addr-output.
|
517
|
+
req.ai_socktype = SOCK_STREAM;
|
518
|
+
|
519
|
+
#if defined AI_V4MAPPED
|
520
|
+
// In this API we only require IPv4-mapped addresses when
|
521
|
+
// no native IPv6 interfaces are available.
|
522
|
+
// This saves an additional DNS roundtrip for IPv4 addresses.
|
523
|
+
if (req.ai_family == AF_INET6)
|
524
|
+
req.ai_flags |= AI_V4MAPPED;
|
525
|
+
#endif
|
526
|
+
|
527
|
+
// Resolve host name. Some of the error info is lost in case of error,
|
528
|
+
// however, there's no way to report EAI errors via errno.
|
529
|
+
#if defined ZMQ_HAVE_OPENVMS && defined __ia64 && __INITIAL_POINTER_SIZE == 64
|
530
|
+
__addrinfo64 *res;
|
531
|
+
#else
|
532
|
+
addrinfo *res;
|
533
|
+
#endif
|
534
|
+
int rc = getaddrinfo (hostname_, NULL, &req, &res);
|
535
|
+
|
536
|
+
#if defined AI_V4MAPPED
|
537
|
+
// Some OS do have AI_V4MAPPED defined but it is not supported in getaddrinfo()
|
538
|
+
// returning EAI_BADFLAGS. Detect this and retry
|
539
|
+
if (rc == EAI_BADFLAGS && (req.ai_flags & AI_V4MAPPED)) {
|
540
|
+
req.ai_flags &= ~AI_V4MAPPED;
|
541
|
+
rc = getaddrinfo(hostname_, NULL, &req, &res);
|
542
|
+
}
|
543
|
+
#endif
|
544
|
+
|
545
|
+
if (rc) {
|
546
|
+
switch (rc) {
|
547
|
+
case EAI_MEMORY:
|
548
|
+
errno = ENOMEM;
|
549
|
+
break;
|
550
|
+
default:
|
551
|
+
errno = EINVAL;
|
552
|
+
break;
|
553
|
+
}
|
554
|
+
return -1;
|
555
|
+
}
|
556
|
+
|
557
|
+
// Copy first result to output addr with hostname and service.
|
558
|
+
zmq_assert ((size_t) res->ai_addrlen <= sizeof (address) );
|
559
|
+
if (is_src_)
|
560
|
+
memcpy (&source_address, res->ai_addr, res->ai_addrlen);
|
561
|
+
else
|
562
|
+
memcpy (&address, res->ai_addr, res->ai_addrlen);
|
563
|
+
|
564
|
+
freeaddrinfo (res);
|
565
|
+
|
566
|
+
return 0;
|
567
|
+
}
|
568
|
+
|
569
|
+
zmq::tcp_address_t::tcp_address_t () :
|
570
|
+
_has_src_addr (false)
|
571
|
+
{
|
572
|
+
memset (&address, 0, sizeof (address) );
|
573
|
+
memset (&source_address, 0, sizeof (source_address) );
|
574
|
+
}
|
575
|
+
|
576
|
+
zmq::tcp_address_t::tcp_address_t (const sockaddr *sa, socklen_t sa_len) :
|
577
|
+
_has_src_addr (false)
|
578
|
+
{
|
579
|
+
zmq_assert (sa && sa_len > 0);
|
580
|
+
|
581
|
+
memset (&address, 0, sizeof (address) );
|
582
|
+
memset (&source_address, 0, sizeof (source_address) );
|
583
|
+
if (sa->sa_family == AF_INET && sa_len >= (socklen_t) sizeof (address.ipv4) )
|
584
|
+
memcpy (&address.ipv4, sa, sizeof (address.ipv4) );
|
585
|
+
else
|
586
|
+
if (sa->sa_family == AF_INET6 && sa_len >= (socklen_t) sizeof (address.ipv6) )
|
587
|
+
memcpy (&address.ipv6, sa, sizeof (address.ipv6) );
|
588
|
+
}
|
589
|
+
|
590
|
+
zmq::tcp_address_t::~tcp_address_t ()
|
591
|
+
{
|
592
|
+
}
|
593
|
+
|
594
|
+
int zmq::tcp_address_t::resolve (const char *name_, bool local_, bool ipv6_, bool is_src_)
|
595
|
+
{
|
596
|
+
if (!is_src_) {
|
597
|
+
// Test the ';' to know if we have a source address in name_
|
598
|
+
const char *src_delimiter = strrchr (name_, ';');
|
599
|
+
if (src_delimiter) {
|
600
|
+
std::string src_name (name_, src_delimiter - name_);
|
601
|
+
const int rc = resolve (src_name.c_str (), local_, ipv6_, true);
|
602
|
+
if (rc != 0)
|
603
|
+
return -1;
|
604
|
+
name_ = src_delimiter + 1;
|
605
|
+
_has_src_addr = true;
|
606
|
+
}
|
607
|
+
}
|
608
|
+
|
609
|
+
// Find the ':' at end that separates address from the port number.
|
610
|
+
const char *delimiter = strrchr (name_, ':');
|
611
|
+
if (!delimiter) {
|
612
|
+
errno = EINVAL;
|
613
|
+
return -1;
|
614
|
+
}
|
615
|
+
|
616
|
+
// Separate the address/port.
|
617
|
+
std::string addr_str (name_, delimiter - name_);
|
618
|
+
std::string port_str (delimiter + 1);
|
619
|
+
|
620
|
+
// Remove square brackets around the address, if any, as used in IPv6
|
621
|
+
if (addr_str.size () >= 2 && addr_str [0] == '[' &&
|
622
|
+
addr_str [addr_str.size () - 1] == ']')
|
623
|
+
addr_str = addr_str.substr (1, addr_str.size () - 2);
|
624
|
+
|
625
|
+
// Test the '%' to know if we have an interface name / zone_id in the address
|
626
|
+
// Reference: https://tools.ietf.org/html/rfc4007
|
627
|
+
std::size_t pos = addr_str.rfind('%');
|
628
|
+
uint32_t zone_id = 0;
|
629
|
+
if (pos != std::string::npos) {
|
630
|
+
std::string if_str = addr_str.substr(pos + 1);
|
631
|
+
addr_str = addr_str.substr(0, pos);
|
632
|
+
if (isalpha (if_str.at (0)))
|
633
|
+
#if !defined ZMQ_HAVE_WINDOWS_TARGET_XP && !defined ZMQ_HAVE_WINDOWS_UWP
|
634
|
+
zone_id = if_nametoindex(if_str.c_str());
|
635
|
+
#else
|
636
|
+
// The function 'if_nametoindex' is not supported on Windows XP.
|
637
|
+
// If we are targeting XP using a vxxx_xp toolset then fail.
|
638
|
+
// This is brutal as this code could be run on later windows clients
|
639
|
+
// meaning the IPv6 zone_id cannot have an interface name.
|
640
|
+
// This could be fixed with a runtime check.
|
641
|
+
zone_id = 0;
|
642
|
+
#endif
|
643
|
+
else
|
644
|
+
zone_id = (uint32_t) atoi (if_str.c_str ());
|
645
|
+
if (zone_id == 0) {
|
646
|
+
errno = EINVAL;
|
647
|
+
return -1;
|
648
|
+
}
|
649
|
+
|
650
|
+
}
|
651
|
+
|
652
|
+
// Allow 0 specifically, to detect invalid port error in atoi if not
|
653
|
+
uint16_t port;
|
654
|
+
if (port_str == "*" || port_str == "0")
|
655
|
+
// Resolve wildcard to 0 to allow autoselection of port
|
656
|
+
port = 0;
|
657
|
+
else {
|
658
|
+
// Parse the port number (0 is not a valid port).
|
659
|
+
port = (uint16_t) atoi (port_str.c_str ());
|
660
|
+
if (port == 0) {
|
661
|
+
errno = EINVAL;
|
662
|
+
return -1;
|
663
|
+
}
|
664
|
+
}
|
665
|
+
|
666
|
+
// Resolve the IP address.
|
667
|
+
int rc;
|
668
|
+
if (local_ || is_src_)
|
669
|
+
rc = resolve_interface (addr_str.c_str (), ipv6_, is_src_);
|
670
|
+
else
|
671
|
+
rc = resolve_hostname (addr_str.c_str (), ipv6_, is_src_);
|
672
|
+
if (rc != 0)
|
673
|
+
return -1;
|
674
|
+
|
675
|
+
// Set the port into the address structure.
|
676
|
+
if (is_src_) {
|
677
|
+
if (source_address.generic.sa_family == AF_INET6) {
|
678
|
+
source_address.ipv6.sin6_port = htons (port);
|
679
|
+
source_address.ipv6.sin6_scope_id = zone_id;
|
680
|
+
}
|
681
|
+
else
|
682
|
+
source_address.ipv4.sin_port = htons (port);
|
683
|
+
}
|
684
|
+
else {
|
685
|
+
if (address.generic.sa_family == AF_INET6) {
|
686
|
+
address.ipv6.sin6_port = htons (port);
|
687
|
+
address.ipv6.sin6_scope_id = zone_id;
|
688
|
+
}
|
689
|
+
else
|
690
|
+
address.ipv4.sin_port = htons (port);
|
691
|
+
}
|
692
|
+
|
693
|
+
return 0;
|
694
|
+
}
|
695
|
+
|
696
|
+
int zmq::tcp_address_t::to_string (std::string &addr_)
|
697
|
+
{
|
698
|
+
if (address.generic.sa_family != AF_INET
|
699
|
+
&& address.generic.sa_family != AF_INET6) {
|
700
|
+
addr_.clear ();
|
701
|
+
return -1;
|
702
|
+
}
|
703
|
+
|
704
|
+
// Not using service resolving because of
|
705
|
+
// https://github.com/zeromq/libzmq/commit/1824574f9b5a8ce786853320e3ea09fe1f822bc4
|
706
|
+
char hbuf [NI_MAXHOST];
|
707
|
+
int rc = getnameinfo (addr (), addrlen (), hbuf, sizeof (hbuf), NULL, 0, NI_NUMERICHOST);
|
708
|
+
if (rc != 0) {
|
709
|
+
addr_.clear ();
|
710
|
+
return rc;
|
711
|
+
}
|
712
|
+
|
713
|
+
if (address.generic.sa_family == AF_INET6) {
|
714
|
+
std::stringstream s;
|
715
|
+
s << "tcp://[" << hbuf << "]:" << ntohs (address.ipv6.sin6_port);
|
716
|
+
addr_ = s.str ();
|
717
|
+
}
|
718
|
+
else {
|
719
|
+
std::stringstream s;
|
720
|
+
s << "tcp://" << hbuf << ":" << ntohs (address.ipv4.sin_port);
|
721
|
+
addr_ = s.str ();
|
722
|
+
}
|
723
|
+
return 0;
|
724
|
+
}
|
725
|
+
|
726
|
+
const sockaddr *zmq::tcp_address_t::addr () const
|
727
|
+
{
|
728
|
+
return &address.generic;
|
729
|
+
}
|
730
|
+
|
731
|
+
socklen_t zmq::tcp_address_t::addrlen () const
|
732
|
+
{
|
733
|
+
if (address.generic.sa_family == AF_INET6)
|
734
|
+
return (socklen_t) sizeof (address.ipv6);
|
735
|
+
else
|
736
|
+
return (socklen_t) sizeof (address.ipv4);
|
737
|
+
}
|
738
|
+
|
739
|
+
const sockaddr *zmq::tcp_address_t::src_addr () const
|
740
|
+
{
|
741
|
+
return &source_address.generic;
|
742
|
+
}
|
743
|
+
|
744
|
+
socklen_t zmq::tcp_address_t::src_addrlen () const
|
745
|
+
{
|
746
|
+
if (address.generic.sa_family == AF_INET6)
|
747
|
+
return (socklen_t) sizeof (source_address.ipv6);
|
748
|
+
else
|
749
|
+
return (socklen_t) sizeof (source_address.ipv4);
|
750
|
+
}
|
751
|
+
|
752
|
+
bool zmq::tcp_address_t::has_src_addr () const
|
753
|
+
{
|
754
|
+
return _has_src_addr;
|
755
|
+
}
|
756
|
+
|
757
|
+
#if defined ZMQ_HAVE_WINDOWS
|
758
|
+
unsigned short zmq::tcp_address_t::family () const
|
759
|
+
#else
|
760
|
+
sa_family_t zmq::tcp_address_t::family () const
|
761
|
+
#endif
|
762
|
+
{
|
763
|
+
return address.generic.sa_family;
|
764
|
+
}
|
765
|
+
|
766
|
+
zmq::tcp_address_mask_t::tcp_address_mask_t () :
|
767
|
+
tcp_address_t (),
|
768
|
+
address_mask (-1)
|
769
|
+
{
|
770
|
+
}
|
771
|
+
|
772
|
+
int zmq::tcp_address_mask_t::mask () const
|
773
|
+
{
|
774
|
+
return address_mask;
|
775
|
+
}
|
776
|
+
|
777
|
+
int zmq::tcp_address_mask_t::resolve (const char *name_, bool ipv6_)
|
778
|
+
{
|
779
|
+
// Find '/' at the end that separates address from the cidr mask number.
|
780
|
+
// Allow empty mask clause and treat it like '/32' for ipv4 or '/128' for ipv6.
|
781
|
+
std::string addr_str, mask_str;
|
782
|
+
const char *delimiter = strrchr (name_, '/');
|
783
|
+
if (delimiter != NULL) {
|
784
|
+
addr_str.assign (name_, delimiter - name_);
|
785
|
+
mask_str.assign (delimiter + 1);
|
786
|
+
if (mask_str.empty ()) {
|
787
|
+
errno = EINVAL;
|
788
|
+
return -1;
|
789
|
+
}
|
790
|
+
}
|
791
|
+
else
|
792
|
+
addr_str.assign (name_);
|
793
|
+
|
794
|
+
// Parse address part using standard routines.
|
795
|
+
const int rc =
|
796
|
+
tcp_address_t::resolve_hostname (addr_str.c_str (), ipv6_);
|
797
|
+
if (rc != 0)
|
798
|
+
return rc;
|
799
|
+
|
800
|
+
// Parse the cidr mask number.
|
801
|
+
if (mask_str.empty ()) {
|
802
|
+
if (address.generic.sa_family == AF_INET6)
|
803
|
+
address_mask = 128;
|
804
|
+
else
|
805
|
+
address_mask = 32;
|
806
|
+
}
|
807
|
+
else
|
808
|
+
if (mask_str == "0")
|
809
|
+
address_mask = 0;
|
810
|
+
else {
|
811
|
+
const int mask = atoi (mask_str.c_str ());
|
812
|
+
if (
|
813
|
+
(mask < 1) ||
|
814
|
+
(address.generic.sa_family == AF_INET6 && mask > 128) ||
|
815
|
+
(address.generic.sa_family != AF_INET6 && mask > 32)
|
816
|
+
) {
|
817
|
+
errno = EINVAL;
|
818
|
+
return -1;
|
819
|
+
}
|
820
|
+
address_mask = mask;
|
821
|
+
}
|
822
|
+
|
823
|
+
return 0;
|
824
|
+
}
|
825
|
+
|
826
|
+
int zmq::tcp_address_mask_t::to_string (std::string &addr_)
|
827
|
+
{
|
828
|
+
if (address.generic.sa_family != AF_INET
|
829
|
+
&& address.generic.sa_family != AF_INET6) {
|
830
|
+
addr_.clear ();
|
831
|
+
return -1;
|
832
|
+
}
|
833
|
+
if (address_mask == -1) {
|
834
|
+
addr_.clear ();
|
835
|
+
return -1;
|
836
|
+
}
|
837
|
+
|
838
|
+
char hbuf [NI_MAXHOST];
|
839
|
+
int rc = getnameinfo (addr (), addrlen (), hbuf, sizeof (hbuf), NULL, 0, NI_NUMERICHOST);
|
840
|
+
if (rc != 0) {
|
841
|
+
addr_.clear ();
|
842
|
+
return rc;
|
843
|
+
}
|
844
|
+
|
845
|
+
if (address.generic.sa_family == AF_INET6) {
|
846
|
+
std::stringstream s;
|
847
|
+
s << "[" << hbuf << "]/" << address_mask;
|
848
|
+
addr_ = s.str ();
|
849
|
+
}
|
850
|
+
else {
|
851
|
+
std::stringstream s;
|
852
|
+
s << hbuf << "/" << address_mask;
|
853
|
+
addr_ = s.str ();
|
854
|
+
}
|
855
|
+
return 0;
|
856
|
+
}
|
857
|
+
|
858
|
+
bool zmq::tcp_address_mask_t::match_address (const struct sockaddr *ss, const socklen_t ss_len) const
|
859
|
+
{
|
860
|
+
zmq_assert (address_mask != -1
|
861
|
+
&& ss != NULL
|
862
|
+
&& ss_len >= (socklen_t) sizeof (struct sockaddr));
|
863
|
+
|
864
|
+
if (ss->sa_family != address.generic.sa_family)
|
865
|
+
return false;
|
866
|
+
|
867
|
+
if (address_mask > 0) {
|
868
|
+
int mask;
|
869
|
+
const uint8_t *our_bytes, *their_bytes;
|
870
|
+
if (ss->sa_family == AF_INET6) {
|
871
|
+
zmq_assert (ss_len == sizeof (struct sockaddr_in6));
|
872
|
+
their_bytes = (const uint8_t *) &(((const struct sockaddr_in6 *) ss)->sin6_addr);
|
873
|
+
our_bytes = (const uint8_t *) &address.ipv6.sin6_addr;
|
874
|
+
mask = sizeof (struct in6_addr) * 8;
|
875
|
+
}
|
876
|
+
else {
|
877
|
+
zmq_assert (ss_len == sizeof (struct sockaddr_in));
|
878
|
+
their_bytes = (const uint8_t *) &(((const struct sockaddr_in *) ss)->sin_addr);
|
879
|
+
our_bytes = (const uint8_t *) &address.ipv4.sin_addr;
|
880
|
+
mask = sizeof (struct in_addr) * 8;
|
881
|
+
}
|
882
|
+
if (address_mask < mask)
|
883
|
+
mask = address_mask;
|
884
|
+
|
885
|
+
const size_t full_bytes = mask / 8;
|
886
|
+
if (memcmp (our_bytes, their_bytes, full_bytes))
|
887
|
+
return false;
|
888
|
+
|
889
|
+
const uint8_t last_byte_bits = 0xffU << (8 - mask % 8);
|
890
|
+
if (last_byte_bits) {
|
891
|
+
if ((their_bytes [full_bytes] & last_byte_bits) != (our_bytes [full_bytes] & last_byte_bits))
|
892
|
+
return false;
|
893
|
+
}
|
894
|
+
}
|
895
|
+
|
896
|
+
return true;
|
897
|
+
}
|