From d7f239a75bc51eece8fccf1fdcb1708157c2190a Mon Sep 17 00:00:00 2001
From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net>
Date: Sun, 3 May 2020 17:26:51 +0700
Subject: [PATCH] [!!!] Big massive rename, refactoring and regroup

---
 .../net/client => 3rdparty}/libev/.travis.yml |    0
 .../client => 3rdparty}/libev/CMakeLists.txt  |    0
 .../net/client => 3rdparty}/libev/Changes     |    0
 .../net/client => 3rdparty}/libev/LICENSE     |    0
 .../net/client => 3rdparty}/libev/Makefile.am |    0
 .../net/client => 3rdparty}/libev/Makefile.in |    0
 {dap-sdk/net/client => 3rdparty}/libev/README |    0
 .../net/client => 3rdparty}/libev/Symbols.ev  |    0
 .../client => 3rdparty}/libev/Symbols.event   |    0
 .../net/client => 3rdparty}/libev/aclocal.m4  |    0
 .../net/client => 3rdparty}/libev/autogen.sh  |    0
 .../libev/cmake/configure.cmake               |    0
 .../libev/cmake/dist.cmake                    |    0
 .../libev/config.guess.cdbs-orig              |    0
 .../client => 3rdparty}/libev/config.h.cmake  |    0
 .../net/client => 3rdparty}/libev/config.h.in |    0
 .../libev/config.sub.cdbs-orig                |    0
 .../net/client => 3rdparty}/libev/configure   |    0
 .../client => 3rdparty}/libev/configure.ac    |    0
 .../net/client => 3rdparty}/libev/depcomp     |    0
 .../net/client => 3rdparty}/libev/dist.info   |    0
 {dap-sdk/net/client => 3rdparty}/libev/ev++.h |    0
 {dap-sdk/net/client => 3rdparty}/libev/ev.3   |    0
 {dap-sdk/net/client => 3rdparty}/libev/ev.c   |    0
 {dap-sdk/net/client => 3rdparty}/libev/ev.h   |    0
 {dap-sdk/net/client => 3rdparty}/libev/ev.pod |    0
 .../net/client => 3rdparty}/libev/ev_epoll.c  |    0
 .../net/client => 3rdparty}/libev/ev_kqueue.c |    0
 .../net/client => 3rdparty}/libev/ev_poll.c   |    0
 .../net/client => 3rdparty}/libev/ev_port.c   |    0
 .../net/client => 3rdparty}/libev/ev_select.c |    0
 .../net/client => 3rdparty}/libev/ev_vars.h   |    0
 .../net/client => 3rdparty}/libev/ev_win32.c  |    0
 .../net/client => 3rdparty}/libev/ev_wrap.h   |    0
 .../net/client => 3rdparty}/libev/event.c     |    0
 .../net/client => 3rdparty}/libev/event.h     |    0
 .../net/client => 3rdparty}/libev/install-sh  |    0
 .../net/client => 3rdparty}/libev/libev.m4    |    0
 .../net/client => 3rdparty}/libev/ltmain.sh   |    0
 .../net/client => 3rdparty}/libev/missing     |    0
 .../client => 3rdparty}/libev/mkinstalldirs   |    0
 .../client => 3rdparty}/libev/tmp/config.h    |    0
 CMakeLists.txt                                |    6 +-
 dap-sdk/CMakeLists.txt                        |   41 +-
 dap-sdk/core/.gitignore                       |   60 -
 dap-sdk/core/.travis.yml                      |   26 -
 dap-sdk/core/LICENSE                          |  165 --
 dap-sdk/core/README.md                        |   14 -
 dap-sdk/crypto/.gitignore                     |   52 -
 dap-sdk/crypto/.travis.yml                    |   26 -
 dap-sdk/crypto/CMakeLists.txt.user            |  424 ----
 dap-sdk/crypto/LICENSE                        |  165 --
 ...-Quantum Key Exchange for the Internet.pdf |  Bin 415950 -> 0 bytes
 dap-sdk/crypto/README.md                      |   14 -
 dap-sdk/net/client/.gitignore                 |   55 -
 dap-sdk/net/client/.travis.yml                |   27 -
 dap-sdk/net/client/CMakeLists.txt             |   44 +-
 dap-sdk/net/client/LICENSE                    |  165 --
 dap-sdk/net/client/README.md                  |    5 -
 dap-sdk/net/client/{src => }/dap_client.c     |    0
 .../net/client/{src => }/dap_client_http.c    |    0
 .../net/client/{src => }/dap_client_pool.c    |    0
 dap-sdk/net/client/{src => }/dap_client_pvt.c |    0
 .../net/client/{src => }/dap_client_pvt_hh.c  |    0
 dap-sdk/net/client/include/dap_client.h       |    0
 dap-sdk/net/client/include/dap_client_http.h  |    0
 dap-sdk/net/client/include/dap_client_pool.h  |    0
 dap-sdk/net/client/include/dap_client_pvt.h   |    0
 dap-sdk/net/core/.gitignore                   |    3 -
 dap-sdk/net/core/.travis.yml                  |   24 -
 dap-sdk/net/core/CMakeLists.txt               |   24 +-
 dap-sdk/net/core/README.md                    |    3 -
 .../net/core/{src => }/dap_client_remote.c    |    0
 dap-sdk/net/core/{src => }/dap_events.c       |    0
 .../net/core/{src => }/dap_events_socket.c    |    0
 dap-sdk/net/core/{src => }/dap_server.c       |    0
 .../net/core/{src => }/dap_traffic_track.c    |    0
 dap-sdk/net/core/include/dap_client_remote.h  |    0
 dap-sdk/net/core/include/dap_events.h         |    0
 dap-sdk/net/core/include/dap_events_socket.h  |    0
 dap-sdk/net/core/include/dap_server.h         |    0
 dap-sdk/net/core/include/dap_traffic_track.h  |    0
 dap-sdk/net/server-udp/.gitignore             |    2 -
 dap-sdk/net/server-udp/.travis.yml            |   25 -
 dap-sdk/net/server-udp/CMakeLists.txt         |   26 +-
 dap-sdk/net/server-udp/README.md              |    3 -
 dap-sdk/net/server-udp/dap_dns_server.c       |    0
 dap-sdk/net/server-udp/dap_udp_client.c       |    0
 .../server-udp/{ => include}/dap_dns_server.h |    0
 .../server-udp/{ => include}/dap_udp_client.h |    0
 .../server-udp/{ => include}/dap_udp_server.h |    0
 dap-sdk/net/server-udp/test/CMakeLists.txt    |    0
 dap-sdk/net/server-udp/test/main.c            |    0
 dap-sdk/net/server/CMakeLists.txt             |   22 +-
 dap-sdk/net/server/enc_server/CMakeLists.txt  |   12 +-
 dap-sdk/net/server/enc_server/dap_enc_http.c  |   10 +-
 dap-sdk/net/server/enc_server/dap_enc_ks.c    |    6 +-
 .../enc_server/{ => include}/dap_enc_http.h   |    0
 .../enc_server/{ => include}/dap_enc_ks.h     |    0
 dap-sdk/net/server/http_server/CMakeLists.txt |   22 +-
 dap-sdk/net/server/http_server/dap_http.c     |  342 ++--
 .../net/server/http_server/dap_http_folder.c  |    0
 .../net/server/http_server/dap_http_simple.c  |    4 +-
 .../http_server/http_client/CMakeLists.txt    |   17 +-
 .../http_server/http_client/dap_http_client.c |    4 +-
 .../http_server/http_client/dap_http_header.c |    0
 .../http_client/dap_http_user_agent.c         |    0
 .../server/http_server/http_client/http.pri   |    9 +-
 .../{ => include}/dap_http_client.h           |    0
 .../{ => include}/dap_http_header.h           |    0
 .../{ => include}/dap_http_user_agent.h       |    0
 .../http_server/{ => include}/dap_http.h      |  158 +-
 .../{ => include}/dap_http_folder.h           |   62 +-
 .../{ => include}/dap_http_simple.h           |    0
 .../{ => include}/http_status_code.h          |    0
 dap-sdk/net/server/test/CMakeLists.txt        |    0
 .../net/server/test/enc_server/CMakeLists.txt |    0
 dap-sdk/net/server/test/enc_server/main.c     |    0
 .../server/test/http_server/CMakeLists.txt    |    0
 .../test/http_server/dap_http_simple_test.c   |    0
 .../test/http_server/dap_http_simple_test.h   |    0
 .../http_server/dap_http_user_agent_test.c    |    0
 .../http_server/dap_http_user_agent_test.h    |    0
 dap-sdk/net/server/test/http_server/main.c    |    0
 dap-sdk/net/server/test/main.c                |    0
 dap-sdk/net/stream/.gitignore                 |   54 -
 dap-sdk/net/stream/.travis.yml                |   25 -
 dap-sdk/net/stream/CMakeLists.txt             |   31 +-
 dap-sdk/net/stream/LICENSE                    |  165 --
 dap-sdk/net/stream/README.md                  |    4 -
 dap-sdk/net/stream/ch/.gitignore              |   52 -
 dap-sdk/net/stream/ch/CMakeLists.txt          |    7 +-
 dap-sdk/net/stream/ch/LICENSE                 |  674 -------
 dap-sdk/net/stream/ch/README.md               |    2 -
 dap-sdk/net/stream/ch/dap_stream_ch.c         |    0
 dap-sdk/net/stream/ch/dap_stream_ch_pkt.c     |    0
 dap-sdk/net/stream/ch/dap_stream_ch_proc.c    |    0
 .../stream/ch/{ => include}/dap_stream_ch.h   |    0
 .../ch/{ => include}/dap_stream_ch_pkt.h      |    0
 .../ch/{ => include}/dap_stream_ch_proc.h     |    0
 dap-sdk/net/stream/session/CMakeLists.txt     |   10 +-
 .../{ => include}/dap_stream_session.h        |    0
 dap-sdk/net/stream/stream/CMakeLists.txt      |   13 +-
 .../stream/stream/{ => include}/dap_stream.h  |    0
 .../stream/{ => include}/dap_stream_ctl.h     |    0
 .../stream/{ => include}/dap_stream_pkt.h     |    0
 dap-sdk/net/stream/test/CMakeLists.txt        |    0
 dap-sdk/net/stream/test/main.c                |    0
 modules/CMakeLists.txt                        |   17 +-
 modules/app-cli/CMakeLists.txt                |   17 +-
 modules/chain/CMakeLists.txt                  |    7 +-
 modules/channel/chain-net-srv/CMakeLists.txt  |    5 +-
 modules/channel/chain-net/CMakeLists.txt      |    5 +-
 modules/channel/chain/CMakeLists.txt          |    6 +-
 modules/common/CMakeLists.txt                 |    4 +-
 modules/consensus/block-poa/CMakeLists.txt    |    4 +-
 modules/consensus/block-pow/CMakeLists.txt    |    4 +-
 modules/consensus/dag-poa/CMakeLists.txt      |    5 +-
 modules/consensus/dag-pos/CMakeLists.txt      |    5 +-
 modules/consensus/none/CMakeLists.txt         |    7 +-
 modules/global-db/CMakeLists.txt              |   11 +-
 modules/mempool/CMakeLists.txt                |    1 +
 modules/mining/CMakeLists.txt                 |    7 +-
 modules/net/CMakeLists.txt                    |    5 +-
 modules/net/iputils/iputils.c                 |   49 +
 modules/net/iputils/iputils.h                 |  189 ++
 modules/net/iputils/ping.c                    | 1694 ++++++++++++++++
 modules/net/iputils/ping.h                    |  436 ++++
 modules/net/iputils/ping6_common.c            | 1398 +++++++++++++
 modules/net/iputils/ping_common.c             | 1030 ++++++++++
 modules/net/iputils/tracepath.c               |  783 ++++++++
 modules/net/iputils/traceroute/as_lookups.c   |  128 ++
 modules/net/iputils/traceroute/clif.c         | 1284 ++++++++++++
 modules/net/iputils/traceroute/clif.h         |  121 ++
 modules/net/iputils/traceroute/csum.c         |   34 +
 modules/net/iputils/traceroute/extension.c    |  132 ++
 modules/net/iputils/traceroute/flowlabel.h    |   40 +
 modules/net/iputils/traceroute/mod-dccp.c     |  295 +++
 modules/net/iputils/traceroute/mod-icmp.c     |  240 +++
 modules/net/iputils/traceroute/mod-raw.c      |  172 ++
 modules/net/iputils/traceroute/mod-tcp.c      |  515 +++++
 modules/net/iputils/traceroute/mod-tcpconn.c  |  237 +++
 modules/net/iputils/traceroute/mod-udp.c      |  241 +++
 modules/net/iputils/traceroute/module.c       |   51 +
 modules/net/iputils/traceroute/poll.c         |   93 +
 modules/net/iputils/traceroute/random.c       |   28 +
 modules/net/iputils/traceroute/time.c         |   27 +
 modules/net/iputils/traceroute/traceroute.c   | 1758 +++++++++++++++++
 modules/net/iputils/traceroute/traceroute.h   |  107 +
 modules/net/srv/CMakeLists.txt                |    5 +-
 modules/net/win32/ip.h                        |  301 +++
 modules/net/win32/iphdr.h                     |  112 ++
 modules/service/app-db/CMakeLists.txt         |    5 +-
 modules/service/app/CMakeLists.txt            |    6 +-
 modules/service/datum/CMakeLists.txt          |    5 +-
 modules/service/mining-pool/CMakeLists.txt    |    5 +-
 modules/service/vpn/CMakeLists.txt            |    7 +-
 modules/type/block/CMakeLists.txt             |    6 +-
 modules/type/dag/CMakeLists.txt               |    6 +-
 modules/wallet/CMakeLists.txt                 |    5 +-
 200 files changed, 11940 insertions(+), 2819 deletions(-)
 rename {dap-sdk/net/client => 3rdparty}/libev/.travis.yml (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/CMakeLists.txt (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/Changes (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/LICENSE (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/Makefile.am (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/Makefile.in (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/README (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/Symbols.ev (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/Symbols.event (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/aclocal.m4 (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/autogen.sh (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/cmake/configure.cmake (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/cmake/dist.cmake (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/config.guess.cdbs-orig (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/config.h.cmake (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/config.h.in (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/config.sub.cdbs-orig (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/configure (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/configure.ac (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/depcomp (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/dist.info (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev++.h (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev.3 (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev.h (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev.pod (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_epoll.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_kqueue.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_poll.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_port.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_select.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_vars.h (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_win32.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ev_wrap.h (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/event.c (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/event.h (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/install-sh (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/libev.m4 (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/ltmain.sh (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/missing (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/mkinstalldirs (100%)
 rename {dap-sdk/net/client => 3rdparty}/libev/tmp/config.h (100%)
 delete mode 100755 dap-sdk/core/.gitignore
 delete mode 100755 dap-sdk/core/.travis.yml
 delete mode 100755 dap-sdk/core/LICENSE
 delete mode 100755 dap-sdk/core/README.md
 delete mode 100755 dap-sdk/crypto/.gitignore
 delete mode 100755 dap-sdk/crypto/.travis.yml
 delete mode 100644 dap-sdk/crypto/CMakeLists.txt.user
 delete mode 100755 dap-sdk/crypto/LICENSE
 delete mode 100755 dap-sdk/crypto/Post-Quantum Key Exchange for the Internet.pdf
 delete mode 100755 dap-sdk/crypto/README.md
 delete mode 100755 dap-sdk/net/client/.gitignore
 delete mode 100755 dap-sdk/net/client/.travis.yml
 mode change 100755 => 100644 dap-sdk/net/client/CMakeLists.txt
 delete mode 100755 dap-sdk/net/client/LICENSE
 delete mode 100755 dap-sdk/net/client/README.md
 rename dap-sdk/net/client/{src => }/dap_client.c (100%)
 rename dap-sdk/net/client/{src => }/dap_client_http.c (100%)
 rename dap-sdk/net/client/{src => }/dap_client_pool.c (100%)
 rename dap-sdk/net/client/{src => }/dap_client_pvt.c (100%)
 rename dap-sdk/net/client/{src => }/dap_client_pvt_hh.c (100%)
 mode change 100755 => 100644 dap-sdk/net/client/include/dap_client.h
 mode change 100755 => 100644 dap-sdk/net/client/include/dap_client_http.h
 mode change 100755 => 100644 dap-sdk/net/client/include/dap_client_pool.h
 mode change 100755 => 100644 dap-sdk/net/client/include/dap_client_pvt.h
 delete mode 100755 dap-sdk/net/core/.gitignore
 delete mode 100755 dap-sdk/net/core/.travis.yml
 mode change 100755 => 100644 dap-sdk/net/core/CMakeLists.txt
 delete mode 100755 dap-sdk/net/core/README.md
 rename dap-sdk/net/core/{src => }/dap_client_remote.c (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/core/{src => }/dap_events.c (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/core/{src => }/dap_events_socket.c (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/core/{src => }/dap_server.c (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/core/{src => }/dap_traffic_track.c (100%)
 mode change 100755 => 100644
 mode change 100755 => 100644 dap-sdk/net/core/include/dap_client_remote.h
 mode change 100755 => 100644 dap-sdk/net/core/include/dap_events.h
 mode change 100755 => 100644 dap-sdk/net/core/include/dap_events_socket.h
 mode change 100755 => 100644 dap-sdk/net/core/include/dap_server.h
 mode change 100755 => 100644 dap-sdk/net/core/include/dap_traffic_track.h
 delete mode 100755 dap-sdk/net/server-udp/.gitignore
 delete mode 100755 dap-sdk/net/server-udp/.travis.yml
 mode change 100755 => 100644 dap-sdk/net/server-udp/CMakeLists.txt
 delete mode 100755 dap-sdk/net/server-udp/README.md
 mode change 100755 => 100644 dap-sdk/net/server-udp/dap_dns_server.c
 mode change 100755 => 100644 dap-sdk/net/server-udp/dap_udp_client.c
 rename dap-sdk/net/server-udp/{ => include}/dap_dns_server.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server-udp/{ => include}/dap_udp_client.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server-udp/{ => include}/dap_udp_server.h (100%)
 mode change 100755 => 100644
 mode change 100755 => 100644 dap-sdk/net/server-udp/test/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server-udp/test/main.c
 mode change 100755 => 100644 dap-sdk/net/server/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/enc_server/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/enc_server/dap_enc_http.c
 mode change 100755 => 100644 dap-sdk/net/server/enc_server/dap_enc_ks.c
 rename dap-sdk/net/server/enc_server/{ => include}/dap_enc_http.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/enc_server/{ => include}/dap_enc_ks.h (100%)
 mode change 100755 => 100644
 mode change 100755 => 100644 dap-sdk/net/server/http_server/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/http_server/dap_http.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/dap_http_folder.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/dap_http_simple.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/http_client/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/http_server/http_client/dap_http_client.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/http_client/dap_http_header.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/http_client/dap_http_user_agent.c
 mode change 100755 => 100644 dap-sdk/net/server/http_server/http_client/http.pri
 rename dap-sdk/net/server/http_server/http_client/{ => include}/dap_http_client.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/http_client/{ => include}/dap_http_header.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/http_client/{ => include}/dap_http_user_agent.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/{ => include}/dap_http.h (94%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/{ => include}/dap_http_folder.h (97%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/{ => include}/dap_http_simple.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/server/http_server/{ => include}/http_status_code.h (100%)
 mode change 100755 => 100644
 mode change 100755 => 100644 dap-sdk/net/server/test/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/test/enc_server/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/test/enc_server/main.c
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/dap_http_simple_test.c
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/dap_http_simple_test.h
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/dap_http_user_agent_test.c
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/dap_http_user_agent_test.h
 mode change 100755 => 100644 dap-sdk/net/server/test/http_server/main.c
 mode change 100755 => 100644 dap-sdk/net/server/test/main.c
 delete mode 100755 dap-sdk/net/stream/.gitignore
 delete mode 100755 dap-sdk/net/stream/.travis.yml
 mode change 100755 => 100644 dap-sdk/net/stream/CMakeLists.txt
 delete mode 100755 dap-sdk/net/stream/LICENSE
 delete mode 100755 dap-sdk/net/stream/README.md
 delete mode 100755 dap-sdk/net/stream/ch/.gitignore
 mode change 100755 => 100644 dap-sdk/net/stream/ch/CMakeLists.txt
 delete mode 100755 dap-sdk/net/stream/ch/LICENSE
 delete mode 100755 dap-sdk/net/stream/ch/README.md
 mode change 100755 => 100644 dap-sdk/net/stream/ch/dap_stream_ch.c
 mode change 100755 => 100644 dap-sdk/net/stream/ch/dap_stream_ch_pkt.c
 mode change 100755 => 100644 dap-sdk/net/stream/ch/dap_stream_ch_proc.c
 rename dap-sdk/net/stream/ch/{ => include}/dap_stream_ch.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/stream/ch/{ => include}/dap_stream_ch_pkt.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/stream/ch/{ => include}/dap_stream_ch_proc.h (100%)
 mode change 100755 => 100644
 mode change 100755 => 100644 dap-sdk/net/stream/session/CMakeLists.txt
 rename dap-sdk/net/stream/session/{ => include}/dap_stream_session.h (100%)
 mode change 100755 => 100644
 rename dap-sdk/net/stream/stream/{ => include}/dap_stream.h (100%)
 rename dap-sdk/net/stream/stream/{ => include}/dap_stream_ctl.h (100%)
 rename dap-sdk/net/stream/stream/{ => include}/dap_stream_pkt.h (100%)
 mode change 100755 => 100644 dap-sdk/net/stream/test/CMakeLists.txt
 mode change 100755 => 100644 dap-sdk/net/stream/test/main.c
 create mode 100755 modules/net/iputils/iputils.c
 create mode 100644 modules/net/iputils/iputils.h
 create mode 100644 modules/net/iputils/ping.c
 create mode 100644 modules/net/iputils/ping.h
 create mode 100644 modules/net/iputils/ping6_common.c
 create mode 100644 modules/net/iputils/ping_common.c
 create mode 100755 modules/net/iputils/tracepath.c
 create mode 100644 modules/net/iputils/traceroute/as_lookups.c
 create mode 100644 modules/net/iputils/traceroute/clif.c
 create mode 100644 modules/net/iputils/traceroute/clif.h
 create mode 100644 modules/net/iputils/traceroute/csum.c
 create mode 100644 modules/net/iputils/traceroute/extension.c
 create mode 100755 modules/net/iputils/traceroute/flowlabel.h
 create mode 100644 modules/net/iputils/traceroute/mod-dccp.c
 create mode 100644 modules/net/iputils/traceroute/mod-icmp.c
 create mode 100644 modules/net/iputils/traceroute/mod-raw.c
 create mode 100644 modules/net/iputils/traceroute/mod-tcp.c
 create mode 100644 modules/net/iputils/traceroute/mod-tcpconn.c
 create mode 100644 modules/net/iputils/traceroute/mod-udp.c
 create mode 100644 modules/net/iputils/traceroute/module.c
 create mode 100644 modules/net/iputils/traceroute/poll.c
 create mode 100644 modules/net/iputils/traceroute/random.c
 create mode 100644 modules/net/iputils/traceroute/time.c
 create mode 100755 modules/net/iputils/traceroute/traceroute.c
 create mode 100644 modules/net/iputils/traceroute/traceroute.h
 create mode 100644 modules/net/win32/ip.h
 create mode 100644 modules/net/win32/iphdr.h

diff --git a/dap-sdk/net/client/libev/.travis.yml b/3rdparty/libev/.travis.yml
similarity index 100%
rename from dap-sdk/net/client/libev/.travis.yml
rename to 3rdparty/libev/.travis.yml
diff --git a/dap-sdk/net/client/libev/CMakeLists.txt b/3rdparty/libev/CMakeLists.txt
similarity index 100%
rename from dap-sdk/net/client/libev/CMakeLists.txt
rename to 3rdparty/libev/CMakeLists.txt
diff --git a/dap-sdk/net/client/libev/Changes b/3rdparty/libev/Changes
similarity index 100%
rename from dap-sdk/net/client/libev/Changes
rename to 3rdparty/libev/Changes
diff --git a/dap-sdk/net/client/libev/LICENSE b/3rdparty/libev/LICENSE
similarity index 100%
rename from dap-sdk/net/client/libev/LICENSE
rename to 3rdparty/libev/LICENSE
diff --git a/dap-sdk/net/client/libev/Makefile.am b/3rdparty/libev/Makefile.am
similarity index 100%
rename from dap-sdk/net/client/libev/Makefile.am
rename to 3rdparty/libev/Makefile.am
diff --git a/dap-sdk/net/client/libev/Makefile.in b/3rdparty/libev/Makefile.in
similarity index 100%
rename from dap-sdk/net/client/libev/Makefile.in
rename to 3rdparty/libev/Makefile.in
diff --git a/dap-sdk/net/client/libev/README b/3rdparty/libev/README
similarity index 100%
rename from dap-sdk/net/client/libev/README
rename to 3rdparty/libev/README
diff --git a/dap-sdk/net/client/libev/Symbols.ev b/3rdparty/libev/Symbols.ev
similarity index 100%
rename from dap-sdk/net/client/libev/Symbols.ev
rename to 3rdparty/libev/Symbols.ev
diff --git a/dap-sdk/net/client/libev/Symbols.event b/3rdparty/libev/Symbols.event
similarity index 100%
rename from dap-sdk/net/client/libev/Symbols.event
rename to 3rdparty/libev/Symbols.event
diff --git a/dap-sdk/net/client/libev/aclocal.m4 b/3rdparty/libev/aclocal.m4
similarity index 100%
rename from dap-sdk/net/client/libev/aclocal.m4
rename to 3rdparty/libev/aclocal.m4
diff --git a/dap-sdk/net/client/libev/autogen.sh b/3rdparty/libev/autogen.sh
similarity index 100%
rename from dap-sdk/net/client/libev/autogen.sh
rename to 3rdparty/libev/autogen.sh
diff --git a/dap-sdk/net/client/libev/cmake/configure.cmake b/3rdparty/libev/cmake/configure.cmake
similarity index 100%
rename from dap-sdk/net/client/libev/cmake/configure.cmake
rename to 3rdparty/libev/cmake/configure.cmake
diff --git a/dap-sdk/net/client/libev/cmake/dist.cmake b/3rdparty/libev/cmake/dist.cmake
similarity index 100%
rename from dap-sdk/net/client/libev/cmake/dist.cmake
rename to 3rdparty/libev/cmake/dist.cmake
diff --git a/dap-sdk/net/client/libev/config.guess.cdbs-orig b/3rdparty/libev/config.guess.cdbs-orig
similarity index 100%
rename from dap-sdk/net/client/libev/config.guess.cdbs-orig
rename to 3rdparty/libev/config.guess.cdbs-orig
diff --git a/dap-sdk/net/client/libev/config.h.cmake b/3rdparty/libev/config.h.cmake
similarity index 100%
rename from dap-sdk/net/client/libev/config.h.cmake
rename to 3rdparty/libev/config.h.cmake
diff --git a/dap-sdk/net/client/libev/config.h.in b/3rdparty/libev/config.h.in
similarity index 100%
rename from dap-sdk/net/client/libev/config.h.in
rename to 3rdparty/libev/config.h.in
diff --git a/dap-sdk/net/client/libev/config.sub.cdbs-orig b/3rdparty/libev/config.sub.cdbs-orig
similarity index 100%
rename from dap-sdk/net/client/libev/config.sub.cdbs-orig
rename to 3rdparty/libev/config.sub.cdbs-orig
diff --git a/dap-sdk/net/client/libev/configure b/3rdparty/libev/configure
similarity index 100%
rename from dap-sdk/net/client/libev/configure
rename to 3rdparty/libev/configure
diff --git a/dap-sdk/net/client/libev/configure.ac b/3rdparty/libev/configure.ac
similarity index 100%
rename from dap-sdk/net/client/libev/configure.ac
rename to 3rdparty/libev/configure.ac
diff --git a/dap-sdk/net/client/libev/depcomp b/3rdparty/libev/depcomp
similarity index 100%
rename from dap-sdk/net/client/libev/depcomp
rename to 3rdparty/libev/depcomp
diff --git a/dap-sdk/net/client/libev/dist.info b/3rdparty/libev/dist.info
similarity index 100%
rename from dap-sdk/net/client/libev/dist.info
rename to 3rdparty/libev/dist.info
diff --git a/dap-sdk/net/client/libev/ev++.h b/3rdparty/libev/ev++.h
similarity index 100%
rename from dap-sdk/net/client/libev/ev++.h
rename to 3rdparty/libev/ev++.h
diff --git a/dap-sdk/net/client/libev/ev.3 b/3rdparty/libev/ev.3
similarity index 100%
rename from dap-sdk/net/client/libev/ev.3
rename to 3rdparty/libev/ev.3
diff --git a/dap-sdk/net/client/libev/ev.c b/3rdparty/libev/ev.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev.c
rename to 3rdparty/libev/ev.c
diff --git a/dap-sdk/net/client/libev/ev.h b/3rdparty/libev/ev.h
similarity index 100%
rename from dap-sdk/net/client/libev/ev.h
rename to 3rdparty/libev/ev.h
diff --git a/dap-sdk/net/client/libev/ev.pod b/3rdparty/libev/ev.pod
similarity index 100%
rename from dap-sdk/net/client/libev/ev.pod
rename to 3rdparty/libev/ev.pod
diff --git a/dap-sdk/net/client/libev/ev_epoll.c b/3rdparty/libev/ev_epoll.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_epoll.c
rename to 3rdparty/libev/ev_epoll.c
diff --git a/dap-sdk/net/client/libev/ev_kqueue.c b/3rdparty/libev/ev_kqueue.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_kqueue.c
rename to 3rdparty/libev/ev_kqueue.c
diff --git a/dap-sdk/net/client/libev/ev_poll.c b/3rdparty/libev/ev_poll.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_poll.c
rename to 3rdparty/libev/ev_poll.c
diff --git a/dap-sdk/net/client/libev/ev_port.c b/3rdparty/libev/ev_port.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_port.c
rename to 3rdparty/libev/ev_port.c
diff --git a/dap-sdk/net/client/libev/ev_select.c b/3rdparty/libev/ev_select.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_select.c
rename to 3rdparty/libev/ev_select.c
diff --git a/dap-sdk/net/client/libev/ev_vars.h b/3rdparty/libev/ev_vars.h
similarity index 100%
rename from dap-sdk/net/client/libev/ev_vars.h
rename to 3rdparty/libev/ev_vars.h
diff --git a/dap-sdk/net/client/libev/ev_win32.c b/3rdparty/libev/ev_win32.c
similarity index 100%
rename from dap-sdk/net/client/libev/ev_win32.c
rename to 3rdparty/libev/ev_win32.c
diff --git a/dap-sdk/net/client/libev/ev_wrap.h b/3rdparty/libev/ev_wrap.h
similarity index 100%
rename from dap-sdk/net/client/libev/ev_wrap.h
rename to 3rdparty/libev/ev_wrap.h
diff --git a/dap-sdk/net/client/libev/event.c b/3rdparty/libev/event.c
similarity index 100%
rename from dap-sdk/net/client/libev/event.c
rename to 3rdparty/libev/event.c
diff --git a/dap-sdk/net/client/libev/event.h b/3rdparty/libev/event.h
similarity index 100%
rename from dap-sdk/net/client/libev/event.h
rename to 3rdparty/libev/event.h
diff --git a/dap-sdk/net/client/libev/install-sh b/3rdparty/libev/install-sh
similarity index 100%
rename from dap-sdk/net/client/libev/install-sh
rename to 3rdparty/libev/install-sh
diff --git a/dap-sdk/net/client/libev/libev.m4 b/3rdparty/libev/libev.m4
similarity index 100%
rename from dap-sdk/net/client/libev/libev.m4
rename to 3rdparty/libev/libev.m4
diff --git a/dap-sdk/net/client/libev/ltmain.sh b/3rdparty/libev/ltmain.sh
similarity index 100%
rename from dap-sdk/net/client/libev/ltmain.sh
rename to 3rdparty/libev/ltmain.sh
diff --git a/dap-sdk/net/client/libev/missing b/3rdparty/libev/missing
similarity index 100%
rename from dap-sdk/net/client/libev/missing
rename to 3rdparty/libev/missing
diff --git a/dap-sdk/net/client/libev/mkinstalldirs b/3rdparty/libev/mkinstalldirs
similarity index 100%
rename from dap-sdk/net/client/libev/mkinstalldirs
rename to 3rdparty/libev/mkinstalldirs
diff --git a/dap-sdk/net/client/libev/tmp/config.h b/3rdparty/libev/tmp/config.h
similarity index 100%
rename from dap-sdk/net/client/libev/tmp/config.h
rename to 3rdparty/libev/tmp/config.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bd08eb0f36..bbe7fb7e21 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,8 @@ include(cmake/OS_Detection.cmake)
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 
 add_subdirectory(dap-sdk)
+add_subdirectory(3rdparty/monero_crypto)
+add_subdirectory(3rdparty/cuttdb)
 add_subdirectory(modules/)
 
 add_library(${PROJECT_NAME} STATIC cellframe-sdk.c)
@@ -19,7 +21,7 @@ if(NOT (WIN32))
             dap_chain_net dap_chain_net_srv
             dap_chain_net_srv_vpn dap_chain_net_srv_app  dap_chain_net_srv_app_db
             dap_chain_net_srv_datum  dap_chain_net_srv_datum_pool
-            dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_gdb m magic
+            dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_cs_none m magic
             )
 else()
     target_link_libraries(${PROJECT_NAME}  dap_core dap_crypto dap_crypto dap_server_core dap_enc_server dap_udp_server dap_session
@@ -29,7 +31,7 @@ else()
         dap_chain_net dap_chain_net_srv
         dap_chain_net_srv_app  dap_chain_net_srv_app_db
         dap_chain_net_srv_datum  dap_chain_net_srv_datum_pool
-        dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_gdb
+        dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_cs_none
         )
 endif()
 #target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
diff --git a/dap-sdk/CMakeLists.txt b/dap-sdk/CMakeLists.txt
index 390da539f5..c8f8276289 100644
--- a/dap-sdk/CMakeLists.txt
+++ b/dap-sdk/CMakeLists.txt
@@ -1,33 +1,12 @@
-add_subdirectory(libdap)
-add_subdirectory(libdap-app-cli)
-add_subdirectory(libdap-crypto)
-add_subdirectory(libdap-chain)
-add_subdirectory(libdap-chain-common)
-add_subdirectory(libdap-chain-crypto)
-add_subdirectory(libdap-chain-wallet)
-add_subdirectory(libdap-chain-mempool)
-add_subdirectory(libdap-chain-net)
-add_subdirectory(libdap-server-core)
-add_subdirectory(libdap-chain-global-db)
-add_subdirectory(libdap-client)
-add_subdirectory(libdap-server)
-add_subdirectory(libdap-stream)
-add_subdirectory(libdap-stream-ch)
-add_subdirectory(libdap-stream-ch-chain-net)
-add_subdirectory(libdap-stream-ch-chain)
-add_subdirectory(libdap-server-udp)
-add_subdirectory(libdap-chain-net-srv)
-add_subdirectory(libdap-chain-net-srv-app)
-add_subdirectory(libdap-chain-net-srv-app-db)
-add_subdirectory(libdap-chain-net-srv-datum)
-add_subdirectory(libdap-chain-net-srv-datum-pool)
-if(NOT (WIN32))
-  add_subdirectory(libdap-chain-net-srv-vpn)
-endif()
+# Core
+add_subdirectory(core)
 
-add_subdirectory(libdap-chain-gdb)
-add_subdirectory(libdap-stream-ch-chain-net-srv)
-add_subdirectory(libdap-chain-cs-dag)
-add_subdirectory(libdap-chain-cs-dag-poa)
-add_subdirectory(libdap-chain-cs-dag-pos)
+# Cryptography
+add_subdirectory(crypto)
 
+# Networking
+add_subdirectory(net/core)
+add_subdirectory(net/client)
+add_subdirectory(net/server)
+add_subdirectory(net/server-udp)
+add_subdirectory(net/stream)
diff --git a/dap-sdk/core/.gitignore b/dap-sdk/core/.gitignore
deleted file mode 100755
index ef34ab1636..0000000000
--- a/dap-sdk/core/.gitignore
+++ /dev/null
@@ -1,60 +0,0 @@
-# Prerequisites
-build/*
-test/build
-*.d
-*.txt.user
-*.txt.user.*
-*.autosave
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-/.project
-/.cproject
-/kelvin-node_logs.txt
-/build/
diff --git a/dap-sdk/core/.travis.yml b/dap-sdk/core/.travis.yml
deleted file mode 100755
index d09034d2bf..0000000000
--- a/dap-sdk/core/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-sudo: required
-language: cpp
-compiler: gcc
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update --recursive
-
-script:
-    - sudo service network-manager start
-    - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - network-manager
-
diff --git a/dap-sdk/core/LICENSE b/dap-sdk/core/LICENSE
deleted file mode 100755
index 65c5ca88a6..0000000000
--- a/dap-sdk/core/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
-  Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/dap-sdk/core/README.md b/dap-sdk/core/README.md
deleted file mode 100755
index c25194558d..0000000000
--- a/dap-sdk/core/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# libdap
-Deus Applications Prototypes: core library
-
-[![Build Status](https://travis-ci.com/kelvinblockchain/libdap.svg?branch=master)](https://travis-ci.com/kelvinblockchain/libdap)
-
-## Build and Run tests:
-```
-mkdir build
-cd build
-cmake -DBUILD_DAP_TESTS=ON ../
-make
-ctest --verbose
-```
-
diff --git a/dap-sdk/crypto/.gitignore b/dap-sdk/crypto/.gitignore
deleted file mode 100755
index c6127b38c1..0000000000
--- a/dap-sdk/crypto/.gitignore
+++ /dev/null
@@ -1,52 +0,0 @@
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
diff --git a/dap-sdk/crypto/.travis.yml b/dap-sdk/crypto/.travis.yml
deleted file mode 100755
index a79b9f067d..0000000000
--- a/dap-sdk/crypto/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-sudo: required
-language: cpp
-compiler: gcc
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update --recursive
-
-script:
-    - sudo service network-manager start
-    - mkdir build
-    - cd build
-    - cmake -DBUILD_CRYPTO_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - network-manager
-
diff --git a/dap-sdk/crypto/CMakeLists.txt.user b/dap-sdk/crypto/CMakeLists.txt.user
deleted file mode 100644
index 82fe0bb117..0000000000
--- a/dap-sdk/crypto/CMakeLists.txt.user
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.11.2, 2020-04-29T10:52:27. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{11b3ace2-edb6-4ae7-8e1b-fce9fa91893f}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
-   <value type="int" key="EditorConfiguration.IndentSize">4</value>
-   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
-   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
-   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
-   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
-   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <value type="int" key="EditorConfiguration.TabSize">8</value>
-   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
-   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
-   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
-   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
-   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap">
-   <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
-    <value type="QString">-fno-delayed-template-parsing</value>
-   </valuelist>
-   <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win32_mingw73_kit</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
-    <valuelist type="QVariantList" key="CMake.Configuration">
-     <value type="QString">BUILD_CRYPTO_TESTS:BOOL=ON</value>
-     <value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
-     <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
-     <value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
-     <value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
-     <value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
-    </valuelist>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">all</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">clean</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
-    <valuelist type="QVariantList" key="CMake.Configuration">
-     <value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
-     <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
-     <value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
-     <value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
-     <value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
-    </valuelist>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-Release</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">all</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">clean</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
-    <valuelist type="QVariantList" key="CMake.Configuration">
-     <value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
-     <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
-     <value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
-     <value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
-     <value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
-    </valuelist>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-RelWithDebInfo</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">all</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">clean</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
-    <valuelist type="QVariantList" key="CMake.Configuration">
-     <value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
-     <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
-     <value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
-     <value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
-     <value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
-    </valuelist>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-MinSizeRel</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">all</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
-       <value type="QString">clean</value>
-      </valuelist>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
-    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
-     <value type="QString">cpu-cycles</value>
-    </valuelist>
-    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
-    <value type="int" key="Analyzer.Perf.Frequency">250</value>
-    <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
-     <value type="QString">-e</value>
-     <value type="QString">cpu-cycles</value>
-     <value type="QString">--call-graph</value>
-     <value type="QString">dwarf,4096</value>
-     <value type="QString">-F</value>
-     <value type="QString">250</value>
-    </valuelist>
-    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
-    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
-    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
-    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
-    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">crypto-test</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.crypto-test</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">crypto-test</value>
-    <value type="QString" key="RunConfiguration.Arguments"></value>
-    <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
-    <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
-    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
-    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
-     <value type="QString">cpu-cycles</value>
-    </valuelist>
-    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
-    <value type="int" key="Analyzer.Perf.Frequency">250</value>
-    <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
-     <value type="QString">-e</value>
-     <value type="QString">cpu-cycles</value>
-     <value type="QString">--call-graph</value>
-     <value type="QString">dwarf,4096</value>
-     <value type="QString">-F</value>
-     <value type="QString">250</value>
-    </valuelist>
-    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
-    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
-    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
-    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
-    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">crypto_cert_test</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.crypto_cert_test</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">crypto_cert_test</value>
-    <value type="QString" key="RunConfiguration.Arguments"></value>
-    <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
-    <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="int">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">22</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">22</value>
- </data>
-</qtcreator>
diff --git a/dap-sdk/crypto/LICENSE b/dap-sdk/crypto/LICENSE
deleted file mode 100755
index 0a041280bd..0000000000
--- a/dap-sdk/crypto/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
-  Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/dap-sdk/crypto/Post-Quantum Key Exchange for the Internet.pdf b/dap-sdk/crypto/Post-Quantum Key Exchange for the Internet.pdf
deleted file mode 100755
index a77225afa8a781d0df5e21bbaf4bf32c314299a8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 415950
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%0A%fc6b+
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

diff --git a/dap-sdk/crypto/README.md b/dap-sdk/crypto/README.md
deleted file mode 100755
index 8f6b07c146..0000000000
--- a/dap-sdk/crypto/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# libdap
-Deus Applications Prototypes: core library
-
-[![Build Status](https://travis-ci.com/cellframe/libdap.svg?branch=master)](https://travis-ci.com/cellframe/libdap)
-
-## Build and Run tests:
-```
-mkdir build
-cd build
-cmake -DBUILD_DAP_TESTS=ON ../
-make
-ctest --verbose
-```
-
diff --git a/dap-sdk/net/client/.gitignore b/dap-sdk/net/client/.gitignore
deleted file mode 100755
index 682ea68a9b..0000000000
--- a/dap-sdk/net/client/.gitignore
+++ /dev/null
@@ -1,55 +0,0 @@
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-/build/
-/.cproject
-/.project
diff --git a/dap-sdk/net/client/.travis.yml b/dap-sdk/net/client/.travis.yml
deleted file mode 100755
index e7bbd5baf1..0000000000
--- a/dap-sdk/net/client/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-sudo: required
-language: c
-compiler: gcc
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update
-
-script:
-    - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_CLIENT_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - libjson-c-dev
-    - libev-dev
-    - libmagic-dev
-
diff --git a/dap-sdk/net/client/CMakeLists.txt b/dap-sdk/net/client/CMakeLists.txt
old mode 100755
new mode 100644
index b6b49e7b8f..82df978c49
--- a/dap-sdk/net/client/CMakeLists.txt
+++ b/dap-sdk/net/client/CMakeLists.txt
@@ -2,46 +2,12 @@ cmake_minimum_required(VERSION 3.0)
 project(dap_client)
 add_definitions ("-D_GNU_SOURCE")
 
-if(NOT SUBMODULES_NO_BUILD)
-    if ( NOT ( TARGET dap_core ) )
-        add_subdirectory(libdap)
-    endif()
-
-    if ( NOT ( TARGET dap_crypto ) )
-        add_subdirectory(libdap-crypto)
-    endif()
-
-    if ( NOT ( TARGET dap_server_core ) )
-        add_subdirectory(libdap-server-core)
-    endif()
-
-    if ( NOT ( TARGET dap_server ) )
-        add_subdirectory(libdap-server)
-    endif()
-
-    if ( NOT ( TARGET dap_udp_server ) )
-        add_subdirectory(libdap-server-udp)
-    endif()
-
-    if ( NOT ( TARGET libdap-stream ) )
-        add_subdirectory(libdap-stream)
-    endif()
-
-    if ( NOT ( TARGET dap_stream_ch ) )
-        add_subdirectory(libdap-stream-ch)
-    endif()
-
-
-endif()
-
-file(GLOB DAP_CLIENT_SOURCES src/*.c)
-file(GLOB DAP_CLIENT_HEADERS include/*.h)
+file(GLOB DAP_CLIENT_SOURCES FILES *.c)
+file(GLOB DAP_CLIENT_HEADERS FILES include/*.h)
 
 if(WIN32)
-  include_directories(../3rdparty/wepoll/)
-  include_directories(../3rdparty/uthash/src/)
-  #include_directories(../3rdparty/curl/include/)
-  #add_subdirectory(libev)
+  include_directories(../../../3rdparty/wepoll/)
+  include_directories(../../../3rdparty/uthash/src/)
 endif()
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CLIENT_HEADERS} ${DAP_CLIENT_SOURCES})
@@ -54,7 +20,7 @@ endif()
 
 
 target_include_directories(${PROJECT_NAME} PUBLIC include)
-target_include_directories(${PROJECT_NAME} PRIVATE src)
+target_include_directories(${PROJECT_NAME} PRIVATE .)
 
 
 if (${BUILD_DAP_CLIENT_TESTS} MATCHES ON)
diff --git a/dap-sdk/net/client/LICENSE b/dap-sdk/net/client/LICENSE
deleted file mode 100755
index 0a041280bd..0000000000
--- a/dap-sdk/net/client/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
-  Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/dap-sdk/net/client/README.md b/dap-sdk/net/client/README.md
deleted file mode 100755
index a177e1fdd0..0000000000
--- a/dap-sdk/net/client/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# libdap-client
-
-[![Build Status](https://travis-ci.com/kelvinblockchain/libdap-client.svg?branch=master)](https://travis-ci.com/kelvinblockchain/libdap-client)
-
-DAP client
diff --git a/dap-sdk/net/client/src/dap_client.c b/dap-sdk/net/client/dap_client.c
similarity index 100%
rename from dap-sdk/net/client/src/dap_client.c
rename to dap-sdk/net/client/dap_client.c
diff --git a/dap-sdk/net/client/src/dap_client_http.c b/dap-sdk/net/client/dap_client_http.c
similarity index 100%
rename from dap-sdk/net/client/src/dap_client_http.c
rename to dap-sdk/net/client/dap_client_http.c
diff --git a/dap-sdk/net/client/src/dap_client_pool.c b/dap-sdk/net/client/dap_client_pool.c
similarity index 100%
rename from dap-sdk/net/client/src/dap_client_pool.c
rename to dap-sdk/net/client/dap_client_pool.c
diff --git a/dap-sdk/net/client/src/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c
similarity index 100%
rename from dap-sdk/net/client/src/dap_client_pvt.c
rename to dap-sdk/net/client/dap_client_pvt.c
diff --git a/dap-sdk/net/client/src/dap_client_pvt_hh.c b/dap-sdk/net/client/dap_client_pvt_hh.c
similarity index 100%
rename from dap-sdk/net/client/src/dap_client_pvt_hh.c
rename to dap-sdk/net/client/dap_client_pvt_hh.c
diff --git a/dap-sdk/net/client/include/dap_client.h b/dap-sdk/net/client/include/dap_client.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/client/include/dap_client_http.h b/dap-sdk/net/client/include/dap_client_http.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/client/include/dap_client_pool.h b/dap-sdk/net/client/include/dap_client_pool.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/client/include/dap_client_pvt.h b/dap-sdk/net/client/include/dap_client_pvt.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/core/.gitignore b/dap-sdk/net/core/.gitignore
deleted file mode 100755
index ea462b27ee..0000000000
--- a/dap-sdk/net/core/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-build
-*.txt.user
-
diff --git a/dap-sdk/net/core/.travis.yml b/dap-sdk/net/core/.travis.yml
deleted file mode 100755
index c5aba3c2c6..0000000000
--- a/dap-sdk/net/core/.travis.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-language: c
-compiler: gcc
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update
-
-script:
-    - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_SERVER_CORE_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - libev-dev 
-    - libmemcached-dev
diff --git a/dap-sdk/net/core/CMakeLists.txt b/dap-sdk/net/core/CMakeLists.txt
old mode 100755
new mode 100644
index fa70477e07..3fee161227
--- a/dap-sdk/net/core/CMakeLists.txt
+++ b/dap-sdk/net/core/CMakeLists.txt
@@ -5,36 +5,24 @@ set(CMAKE_C_STANDARD 11)
 
 add_definitions ("-D_GNU_SOURCE")
 
-if(NOT SUBMODULES_NO_BUILD)
-    if ( NOT ( TARGET dap_core ) )
-        add_subdirectory(libdap)
-    endif()
-
-    if ( NOT ( TARGET dap_crypto ) )
-        add_subdirectory(libdap-crypto)
-    endif()
-
-endif()
-
 if(WIN32)
-    file(GLOB DAP_SERVER_CORE_SOURCES src/*.c ../3rdparty/wepoll/*.c)
-    file(GLOB DAP_SERVER_CORE_HEADERS include/*.h ../3rdparty/wepoll/*.h)
+    file(GLOB DAP_SERVER_CORE_SOURCES *.c ../../../3rdparty/wepoll/*.c)
+    file(GLOB DAP_SERVER_CORE_HEADERS include/*.h ../../../3rdparty/wepoll/*.h)
 else()
-    file(GLOB DAP_SERVER_CORE_SOURCES src/*.c)
+    file(GLOB DAP_SERVER_CORE_SOURCES *.c)
     file(GLOB DAP_SERVER_CORE_HEADERS include/*.h)
 endif()
 
 if(WIN32)
-  include_directories(../3rdparty/uthash/src/)
-  #include_directories(../3rdparty/curl/include/)
-  include_directories(../3rdparty/wepoll/)
+  include_directories(../../../3rdparty/uthash/src/)
+  include_directories(../../../3rdparty/wepoll/)
 endif()
 
 add_library(${PROJECT_NAME} STATIC ${DAP_SERVER_CORE_HEADERS} ${DAP_SERVER_CORE_SOURCES})
 
 if(WIN32)
   target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
-  target_include_directories(${PROJECT_NAME} INTERFACE ../3rdparty/wepoll)
+  target_include_directories(${PROJECT_NAME} INTERFACE ../../../3rdparty/wepoll)
 endif()
 
 if(UNIX)
diff --git a/dap-sdk/net/core/README.md b/dap-sdk/net/core/README.md
deleted file mode 100755
index 6195103d43..0000000000
--- a/dap-sdk/net/core/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# libdap-server-core
-
-[![Build Status](https://travis-ci.com/kelvinblockchain/libdap-server-core.svg?branch=master)](https://travis-ci.com/kelvinblockchain/libdap-server-core)
diff --git a/dap-sdk/net/core/src/dap_client_remote.c b/dap-sdk/net/core/dap_client_remote.c
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/core/src/dap_client_remote.c
rename to dap-sdk/net/core/dap_client_remote.c
diff --git a/dap-sdk/net/core/src/dap_events.c b/dap-sdk/net/core/dap_events.c
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/core/src/dap_events.c
rename to dap-sdk/net/core/dap_events.c
diff --git a/dap-sdk/net/core/src/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/core/src/dap_events_socket.c
rename to dap-sdk/net/core/dap_events_socket.c
diff --git a/dap-sdk/net/core/src/dap_server.c b/dap-sdk/net/core/dap_server.c
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/core/src/dap_server.c
rename to dap-sdk/net/core/dap_server.c
diff --git a/dap-sdk/net/core/src/dap_traffic_track.c b/dap-sdk/net/core/dap_traffic_track.c
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/core/src/dap_traffic_track.c
rename to dap-sdk/net/core/dap_traffic_track.c
diff --git a/dap-sdk/net/core/include/dap_client_remote.h b/dap-sdk/net/core/include/dap_client_remote.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/core/include/dap_events.h b/dap-sdk/net/core/include/dap_events.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/core/include/dap_events_socket.h b/dap-sdk/net/core/include/dap_events_socket.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/core/include/dap_server.h b/dap-sdk/net/core/include/dap_server.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/core/include/dap_traffic_track.h b/dap-sdk/net/core/include/dap_traffic_track.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server-udp/.gitignore b/dap-sdk/net/server-udp/.gitignore
deleted file mode 100755
index e8451f4157..0000000000
--- a/dap-sdk/net/server-udp/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-CMakeLists.txt.user
-test/build
diff --git a/dap-sdk/net/server-udp/.travis.yml b/dap-sdk/net/server-udp/.travis.yml
deleted file mode 100755
index 256452d22b..0000000000
--- a/dap-sdk/net/server-udp/.travis.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-sudo: required
-language: cpp
-compiler: c
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update --recursive
-
-script:
-    - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_UDP_SERVER_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - libev-dev
-
diff --git a/dap-sdk/net/server-udp/CMakeLists.txt b/dap-sdk/net/server-udp/CMakeLists.txt
old mode 100755
new mode 100644
index 6e1e123bf7..94dda44efb
--- a/dap-sdk/net/server-udp/CMakeLists.txt
+++ b/dap-sdk/net/server-udp/CMakeLists.txt
@@ -1,30 +1,13 @@
 cmake_minimum_required(VERSION 3.1)
 project (dap_udp_server C)
 
-if(NOT SUBMODULES_NO_BUILD)
 
-#    if ( NOT ( TARGET dap_server_core ) )
-#        add_subdirectory(libdap-server-core)
-#    endif()
-
-    if ( NOT ( TARGET dap_core ) )
-      add_subdirectory(libdap)
-    endif()
-
-    if ( NOT ( TARGET dap_server_core ) )
-        add_subdirectory(libdap-server-core)
-    endif()
-
-    enable_testing()
-    add_subdirectory(test)
-endif()
-
-set(DAP_UDP_SERVER_SRCS dap_udp_server.c dap_udp_client.c dap_dns_server.c)
-set(DAP_UDP_SERVER_HEADERS dap_udp_server.h dap_udp_client.h dap_dns_server.h)
+file(GLOB DAP_UDP_SERVER_SRCS *.c)
+file(GLOB DAP_UDP_SERVER_HEADERS include/*.h)
 
 if(WIN32)
-  include_directories(../3rdparty/wepoll/)
-  include_directories(../3rdparty/uthash/src/)
+  include_directories(../../../3rdparty/wepoll/)
+  include_directories(../../../3rdparty/uthash/src/)
   #include_directories(../3rdparty/curl/include/)
 endif()
 
@@ -33,3 +16,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_UDP_SERVER_SRCS})
 target_link_libraries(${PROJECT_NAME} dap_core dap_server_core dap_chain_net)
 
 target_include_directories(${PROJECT_NAME} INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/dap-sdk/net/server-udp/README.md b/dap-sdk/net/server-udp/README.md
deleted file mode 100755
index fd721b1b52..0000000000
--- a/dap-sdk/net/server-udp/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# libdap-server-udp
-
-[![Build Status](https://travis-ci.com/kelvinblockchain/libdap-server-udp.svg?branch=master)](https://travis-ci.com/kelvinblockchain/libdap-server-udp)
diff --git a/dap-sdk/net/server-udp/dap_dns_server.c b/dap-sdk/net/server-udp/dap_dns_server.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server-udp/dap_udp_client.c b/dap-sdk/net/server-udp/dap_udp_client.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server-udp/dap_dns_server.h b/dap-sdk/net/server-udp/include/dap_dns_server.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server-udp/dap_dns_server.h
rename to dap-sdk/net/server-udp/include/dap_dns_server.h
diff --git a/dap-sdk/net/server-udp/dap_udp_client.h b/dap-sdk/net/server-udp/include/dap_udp_client.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server-udp/dap_udp_client.h
rename to dap-sdk/net/server-udp/include/dap_udp_client.h
diff --git a/dap-sdk/net/server-udp/dap_udp_server.h b/dap-sdk/net/server-udp/include/dap_udp_server.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server-udp/dap_udp_server.h
rename to dap-sdk/net/server-udp/include/dap_udp_server.h
diff --git a/dap-sdk/net/server-udp/test/CMakeLists.txt b/dap-sdk/net/server-udp/test/CMakeLists.txt
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server-udp/test/main.c b/dap-sdk/net/server-udp/test/main.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/CMakeLists.txt b/dap-sdk/net/server/CMakeLists.txt
old mode 100755
new mode 100644
index 47bfd5431c..dfc4ed963b
--- a/dap-sdk/net/server/CMakeLists.txt
+++ b/dap-sdk/net/server/CMakeLists.txt
@@ -1,28 +1,8 @@
 project(libdap-server C)
 cmake_minimum_required(VERSION 3.0)
 
-if(NOT SUBMODULES_NO_BUILD)
-    if ( NOT ( TARGET dap_core ) )
-  add_subdirectory(libdap)
-    endif()
-
-    if ( NOT ( TARGET dap_crypto ) )
-        add_subdirectory(libdap-crypto)
-    endif()
-
-    if ( NOT ( TARGET dap_server_core ) )
-        add_subdirectory(libdap-server-core)
-    endif()
-
-#    if ( NOT ( TARGET dap_server_udp ) )
-#        add_subdirectory(libdap-server-udp)
-#    endif()
-    
-endif()
-
 if (ANDROID)
-    add_subdirectory(libmagic)
-    add_subdirectory(curl)
+    add_subdirectory(../../../3rdparty/libmagic)
 endif()
 
 add_subdirectory(http_server)
diff --git a/dap-sdk/net/server/enc_server/CMakeLists.txt b/dap-sdk/net/server/enc_server/CMakeLists.txt
old mode 100755
new mode 100644
index 56365e5fe8..5269d02b73
--- a/dap-sdk/net/server/enc_server/CMakeLists.txt
+++ b/dap-sdk/net/server/enc_server/CMakeLists.txt
@@ -1,7 +1,8 @@
 cmake_minimum_required(VERSION 3.0)
 project(dap_enc_server C)
   
-set(DAP_ENC_SERVER_SRCS  dap_enc_http.c  dap_enc_ks.c)
+file(GLOB DAP_ENC_SERVER_SRCS FILES *.c)
+file(GLOB DAP_ENC_SERVER_HDRS FILES include/*.h)
 
 if(WIN32)
     add_definitions ("-DUNDEBUG")
@@ -12,11 +13,13 @@ if(WIN32)
     add_definitions ("-D_CRT_SECURE_NO_WARNINGS")
     add_definitions ("-DCURL_STATICLIB")
 
-  include_directories(../../3rdparty/wepoll/)
-  include_directories(../../3rdparty/uthash/src/)
+  include_directories(../../../../3rdparty/wepoll/)
+  include_directories(../../../../3rdparty/uthash/src/)
 endif()
 
-add_library(${PROJECT_NAME} STATIC ${DAP_ENC_SERVER_SRCS})
+add_library(${PROJECT_NAME} STATIC ${DAP_ENC_SERVER_SRCS} ${DAP_ENC_SERVER_HDRS})
+target_include_directories(${PROJECT_NAME} INTERFACE . include/)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
 if(WIN32)
   target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_http_server json-c
@@ -44,4 +47,3 @@ if(UNIX)
   target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_http_server json-c )
 endif()
 
-target_include_directories(${PROJECT_NAME} INTERFACE .)
diff --git a/dap-sdk/net/server/enc_server/dap_enc_http.c b/dap-sdk/net/server/enc_server/dap_enc_http.c
old mode 100755
new mode 100644
index 9c91111e3b..e5513c1216
--- a/dap-sdk/net/server/enc_server/dap_enc_http.c
+++ b/dap-sdk/net/server/enc_server/dap_enc_http.c
@@ -38,18 +38,18 @@
 
 #include "dap_common.h"
 
-#include "dap_http.h"
+#include "include/dap_http.h"
 #include "dap_http_client.h"
-#include "dap_http_simple.h"
+#include "include/dap_http_simple.h"
 
 #include "dap_enc.h"
-#include "dap_enc_ks.h"
+#include "include/dap_enc_ks.h"
 #include "dap_enc_key.h"
 #include "dap_enc_iaes.h"
-#include "dap_enc_http.h"
+#include "include/dap_enc_http.h"
 #include "dap_enc_base64.h"
 #include "dap_enc_msrln.h"
-#include "http_status_code.h"
+#include "include/http_status_code.h"
 #include <json-c/json.h>
 
 
diff --git a/dap-sdk/net/server/enc_server/dap_enc_ks.c b/dap-sdk/net/server/enc_server/dap_enc_ks.c
old mode 100755
new mode 100644
index fe0d329af4..4b8efc5bf3
--- a/dap-sdk/net/server/enc_server/dap_enc_ks.c
+++ b/dap-sdk/net/server/enc_server/dap_enc_ks.c
@@ -32,11 +32,11 @@
 #include "uthash.h"
 #include "dap_common.h"
 
-#include "../http_server/http_client/dap_http_client.h"
-#include "../http_server/http_client/dap_http_header.h"
+#include "../http_server/http_client/include/dap_http_client.h"
+#include "../http_server/http_client/include/dap_http_header.h"
 
 #include "dap_enc.h"
-#include "dap_enc_ks.h"
+#include "include/dap_enc_ks.h"
 #include "dap_enc_key.h"
 
 #define LOG_TAG "dap_enc_ks"
diff --git a/dap-sdk/net/server/enc_server/dap_enc_http.h b/dap-sdk/net/server/enc_server/include/dap_enc_http.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/enc_server/dap_enc_http.h
rename to dap-sdk/net/server/enc_server/include/dap_enc_http.h
diff --git a/dap-sdk/net/server/enc_server/dap_enc_ks.h b/dap-sdk/net/server/enc_server/include/dap_enc_ks.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/enc_server/dap_enc_ks.h
rename to dap-sdk/net/server/enc_server/include/dap_enc_ks.h
diff --git a/dap-sdk/net/server/http_server/CMakeLists.txt b/dap-sdk/net/server/http_server/CMakeLists.txt
old mode 100755
new mode 100644
index ed5267eeaf..48700be821
--- a/dap-sdk/net/server/http_server/CMakeLists.txt
+++ b/dap-sdk/net/server/http_server/CMakeLists.txt
@@ -1,15 +1,10 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_http_server C)
 
-include_directories(http_client)
+include_directories(http_client/include)
 
-set(HTTP_SERVER_SRCS
-    dap_http.c
-    dap_http_folder.c
-    dap_http_simple.c
-    http_client/dap_http_client.c
-    http_client/dap_http_header.c
-    http_client/dap_http_user_agent.c)
+file(GLOB HTTP_SERVER_SRCS FILES *.c http_client/*.c)
+file(GLOB HTTP_SERVER_HDRS FILES include/*.h http_client/include/*.h)
 
 if(WIN32)
     add_definitions ("-DUNDEBUG")
@@ -20,14 +15,15 @@ if(WIN32)
     add_definitions ("-D_CRT_SECURE_NO_WARNINGS")
     add_definitions ("-DCURL_STATICLIB")
 
-  include_directories(../../3rdparty/wepoll/)
-  include_directories(../../3rdparty/uthash/src/)
+  include_directories(../../../../3rdparty/wepoll/)
+  include_directories(../../../../3rdparty/uthash/src/)
   #include_directories(../../3rdparty/curl/include/)
 endif()
 
-add_library(${PROJECT_NAME} STATIC ${HTTP_SERVER_SRCS})
-
-target_include_directories(dap_http_server INTERFACE . http_client)
+include_directories(${PROJECT_NAME} include/)
+add_library(${PROJECT_NAME} STATIC ${HTTP_SERVER_SRCS} ${HTTP_SERVER_HDRS})
+target_include_directories(${PROJECT_NAME} INTERFACE . http_client/include/)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
 if(WIN32)
   target_link_libraries(dap_http_server dap_core dap_crypto dap_server_core magic regex tre intl iconv
diff --git a/dap-sdk/net/server/http_server/dap_http.c b/dap-sdk/net/server/http_server/dap_http.c
old mode 100755
new mode 100644
index 72b52ef92d..51fe57a57e
--- a/dap-sdk/net/server/http_server/dap_http.c
+++ b/dap-sdk/net/server/http_server/dap_http.c
@@ -1,171 +1,171 @@
-/*
- Copyright (c) 2017-2018 (c) Project "DeM Labs Inc" https://github.com/demlabsinc
-  All rights reserved.
-
- This file is part of DAP (Deus Applications Prototypes) the open source project
-
-    DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    DAP is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <dirent.h>
-
-#ifndef _WIN32
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <netdb.h>
-#else
-#include <winsock2.h>
-#include <windows.h>
-#include <mswsock.h>
-#include <ws2tcpip.h>
-#include <io.h>
-#include <time.h>
-#endif
-
-#include <pthread.h>
-
-#include "dap_common.h"
-#include "dap_server.h"
-#include "dap_client_remote.h"
-#include "dap_http.h"
-#include "dap_http_header.h"
-#include "dap_http_client.h"
-
-#define LOG_TAG "dap_http"
-
-
-/**
- * @brief dap_http_init // Init HTTP module
- * @return Zero if ok others if not
- */
-int dap_http_init( )
-{
-  if ( dap_http_header_init() != 0 ) { // Init submodule for headers manipulations
-    log_it(L_CRITICAL,"Can't init HTTP headers processing submodule");
-    return -1;
-  }
-
-  if ( dap_http_client_init() !=0 ) { // Init submodule for HTTP client event processing
-    log_it(L_CRITICAL,"Can't init HTTP client submodule");
-    return -2;
-  }
-
-  log_it( L_NOTICE, "Initialized HTTP server module" );
-  return 0;
-}
-
-/**
- * @brief dap_http_deinit Deinit HTTP module
- */
-void dap_http_deinit()
-{
-  dap_http_header_deinit( );
-  dap_http_client_deinit( );
-}
-
-
-/**
- * @brief dap_server_http_init Init HTTP server
- * @param sh Server instance
- * @return 0 if ok lesser number if error
- */
-int dap_http_new( dap_server_t *sh, const char * server_name )
-{
-  sh->_inheritor = calloc( 1, sizeof(dap_http_t) );
-
-  dap_http_t *shttp = DAP_HTTP( sh );
-
-  shttp->server = sh;
-  strncpy( shttp->server_name, server_name, sizeof(shttp->server_name)-1 );
-
-  sh->client_new_callback    = dap_http_client_new;
-  sh->client_delete_callback = dap_http_client_delete;
-  sh->client_read_callback   = dap_http_client_read;
-  sh->client_write_callback  = dap_http_client_write;
-  sh->client_error_callback  = dap_http_client_error;
-
-  return 0;
-}
-
-/**
- * @brief dap_http_delete Clear dap_http structure in the internal data field of dap_server_t instance
- * @param sh Server's instance
- * @param arg Non-used argument
- */
-void dap_http_delete( dap_server_t *sh, void * arg )
-{
-  (void) arg;
-  (void) sh;
-  dap_http_t *shttp = DAP_HTTP( sh );
-  dap_http_url_proc_t *up, *tmp;
-
-  HASH_ITER( hh, shttp->url_proc ,up, tmp ) {
-    HASH_DEL(shttp->url_proc, up);
-    if( up->_inheritor )
-      free( up->_inheritor );
-    free( up );
-  }
-}
-
-
-/**
- * @brief dap_http_add_proc  Add custom procesor for the HTTP server
- * @param sh                Server's instance
- * @param url_path          Part of URL to be processed
- * @param read_callback     Callback for read in DATA state
- * @param write_callback    Callback for write in DATA state
- * @param error_callback    Callback for error processing
- */
-void dap_http_add_proc(dap_http_t *sh, const char *url_path, void *internal
-                      ,dap_http_client_callback_t new_callback
-                      ,dap_http_client_callback_t delete_callback
-                      ,dap_http_client_callback_t headers_read_callback
-                      ,dap_http_client_callback_t headers_write_callback
-                      ,dap_http_client_callback_t data_read_callback
-                      ,dap_http_client_callback_t data_write_callback
-                      ,dap_http_client_callback_t error_callback
-
-                      )
-{
-  dap_http_url_proc_t *up = (dap_http_url_proc_t *) calloc( 1, sizeof(dap_http_url_proc_t) );
-
-  strncpy( up->url, url_path, sizeof(up->url)-1 );
-
-  up->new_callback    = new_callback;
-  up->delete_callback = delete_callback;
-
-  up->data_read_callback = data_read_callback;
-  up->data_write_callback = data_write_callback;
-  up->headers_read_callback = headers_read_callback;
-  up->headers_write_callback = headers_write_callback;
-  up->error_callback = error_callback;
-
-  up->_inheritor = internal;
-
-  HASH_ADD_STR( sh->url_proc, url, up );
-
-  log_it( L_DEBUG, "Added URL processor for '%s' path", up->url );
-}
-
-
+/*
+ Copyright (c) 2017-2018 (c) Project "DeM Labs Inc" https://github.com/demlabsinc
+  All rights reserved.
+
+ This file is part of DAP (Deus Applications Prototypes) the open source project
+
+    DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Lesser General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    DAP is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public License
+    along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <dirent.h>
+
+#ifndef _WIN32
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <netdb.h>
+#else
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <time.h>
+#endif
+
+#include <pthread.h>
+
+#include "dap_common.h"
+#include "dap_server.h"
+#include "dap_client_remote.h"
+#include "dap_http.h"
+#include "dap_http_header.h"
+#include "dap_http_client.h"
+
+#define LOG_TAG "dap_http"
+
+
+/**
+ * @brief dap_http_init // Init HTTP module
+ * @return Zero if ok others if not
+ */
+int dap_http_init( )
+{
+  if ( dap_http_header_init() != 0 ) { // Init submodule for headers manipulations
+    log_it(L_CRITICAL,"Can't init HTTP headers processing submodule");
+    return -1;
+  }
+
+  if ( dap_http_client_init() !=0 ) { // Init submodule for HTTP client event processing
+    log_it(L_CRITICAL,"Can't init HTTP client submodule");
+    return -2;
+  }
+
+  log_it( L_NOTICE, "Initialized HTTP server module" );
+  return 0;
+}
+
+/**
+ * @brief dap_http_deinit Deinit HTTP module
+ */
+void dap_http_deinit()
+{
+  dap_http_header_deinit( );
+  dap_http_client_deinit( );
+}
+
+
+/**
+ * @brief dap_server_http_init Init HTTP server
+ * @param sh Server instance
+ * @return 0 if ok lesser number if error
+ */
+int dap_http_new( dap_server_t *sh, const char * server_name )
+{
+  sh->_inheritor = calloc( 1, sizeof(dap_http_t) );
+
+  dap_http_t *shttp = DAP_HTTP( sh );
+
+  shttp->server = sh;
+  strncpy( shttp->server_name, server_name, sizeof(shttp->server_name)-1 );
+
+  sh->client_new_callback    = dap_http_client_new;
+  sh->client_delete_callback = dap_http_client_delete;
+  sh->client_read_callback   = dap_http_client_read;
+  sh->client_write_callback  = dap_http_client_write;
+  sh->client_error_callback  = dap_http_client_error;
+
+  return 0;
+}
+
+/**
+ * @brief dap_http_delete Clear dap_http structure in the internal data field of dap_server_t instance
+ * @param sh Server's instance
+ * @param arg Non-used argument
+ */
+void dap_http_delete( dap_server_t *sh, void * arg )
+{
+  (void) arg;
+  (void) sh;
+  dap_http_t *shttp = DAP_HTTP( sh );
+  dap_http_url_proc_t *up, *tmp;
+
+  HASH_ITER( hh, shttp->url_proc ,up, tmp ) {
+    HASH_DEL(shttp->url_proc, up);
+    if( up->_inheritor )
+      free( up->_inheritor );
+    free( up );
+  }
+}
+
+
+/**
+ * @brief dap_http_add_proc  Add custom procesor for the HTTP server
+ * @param sh                Server's instance
+ * @param url_path          Part of URL to be processed
+ * @param read_callback     Callback for read in DATA state
+ * @param write_callback    Callback for write in DATA state
+ * @param error_callback    Callback for error processing
+ */
+void dap_http_add_proc(dap_http_t *sh, const char *url_path, void *internal
+                      ,dap_http_client_callback_t new_callback
+                      ,dap_http_client_callback_t delete_callback
+                      ,dap_http_client_callback_t headers_read_callback
+                      ,dap_http_client_callback_t headers_write_callback
+                      ,dap_http_client_callback_t data_read_callback
+                      ,dap_http_client_callback_t data_write_callback
+                      ,dap_http_client_callback_t error_callback
+
+                      )
+{
+  dap_http_url_proc_t *up = (dap_http_url_proc_t *) calloc( 1, sizeof(dap_http_url_proc_t) );
+
+  strncpy( up->url, url_path, sizeof(up->url)-1 );
+
+  up->new_callback    = new_callback;
+  up->delete_callback = delete_callback;
+
+  up->data_read_callback = data_read_callback;
+  up->data_write_callback = data_write_callback;
+  up->headers_read_callback = headers_read_callback;
+  up->headers_write_callback = headers_write_callback;
+  up->error_callback = error_callback;
+
+  up->_inheritor = internal;
+
+  HASH_ADD_STR( sh->url_proc, url, up );
+
+  log_it( L_DEBUG, "Added URL processor for '%s' path", up->url );
+}
+
+
diff --git a/dap-sdk/net/server/http_server/dap_http_folder.c b/dap-sdk/net/server/http_server/dap_http_folder.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/http_server/dap_http_simple.c b/dap-sdk/net/server/http_server/dap_http_simple.c
old mode 100755
new mode 100644
index 518e4cdcde..12345d2c3c
--- a/dap-sdk/net/server/http_server/dap_http_simple.c
+++ b/dap-sdk/net/server/http_server/dap_http_simple.c
@@ -52,8 +52,8 @@ See more details here <http://www.gnu.org/licenses/>.
 #include "dap_http_user_agent.h"
 
 
-#include "../enc_server/dap_enc_ks.h"
-#include "../enc_server/dap_enc_http.h"
+#include "../enc_server/include/dap_enc_ks.h"
+#include "../enc_server/include/dap_enc_http.h"
 
 #include "http_status_code.h"
 
diff --git a/dap-sdk/net/server/http_server/http_client/CMakeLists.txt b/dap-sdk/net/server/http_server/http_client/CMakeLists.txt
old mode 100755
new mode 100644
index 7d3b34e161..b3633d7203
--- a/dap-sdk/net/server/http_server/http_client/CMakeLists.txt
+++ b/dap-sdk/net/server/http_server/http_client/CMakeLists.txt
@@ -1,18 +1,15 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_http_client)
 
-set(HTTP_SRCS dap_http_client.c dap_http_header.c)
+set(HTTP_SRCS FILES *.c)
+set(HTTP_HDRS FILES include/*.h)
 
 if(WIN32)
-  include_directories(../../../libdap/src/win32/)
-  include_directories(../../../3rdparty/libmemcached/)
-  include_directories(../../../3rdparty/libmemcached/win32/)
-  include_directories(../../../3rdparty/wepoll/include/)
-  include_directories(../../../3rdparty/uthash/src/)
-  include_directories(../../../3rdparty/libjson-c/)
-  include_directories(../../../3rdparty/libmagic/src/)
-  include_directories(../../../3rdparty/curl/include/)
+  include_directories(../../../../os/win32/)
+  include_directories(../../../../3rdparty/wepoll/include/)
+  include_directories(../../../../3rdparty/uthash/src/)
+  include_directories(../../../../3rdparty/libmagic/src/)
 endif()
 
-add_library(${PROJECT_NAME} STATIC ${HTTP_SRCS})
+add_library(${PROJECT_NAME} STATIC ${HTTP_SRCS} ${HTTP_HDRS})
 
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_client.c b/dap-sdk/net/server/http_server/http_client/dap_http_client.c
old mode 100755
new mode 100644
index 4ecdcd5687..e7944d411b
--- a/dap-sdk/net/server/http_server/http_client/dap_http_client.c
+++ b/dap-sdk/net/server/http_server/http_client/dap_http_client.c
@@ -38,8 +38,8 @@
 #include "dap_common.h"
 #include "dap_client_remote.h"
 
-#include "../dap_http.h"
-#include "../http_status_code.h"
+#include "dap_http.h"
+#include "http_status_code.h"
 
 #include "dap_http_header.h"
 #include "dap_http_client.h"
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_header.c b/dap-sdk/net/server/http_server/http_client/dap_http_header.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_user_agent.c b/dap-sdk/net/server/http_server/http_client/dap_http_user_agent.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/http_server/http_client/http.pri b/dap-sdk/net/server/http_server/http_client/http.pri
old mode 100755
new mode 100644
index 4c88864907..2feda48461
--- a/dap-sdk/net/server/http_server/http_client/http.pri
+++ b/dap-sdk/net/server/http_server/http_client/http.pri
@@ -1,15 +1,10 @@
 HEADERS += $$PWD/dap_http_client.h \
-    $$PWD/dap_http_client_simple.h \
-    $$PWD/dap_http_header.h
+    $$PWD/include/dap_http_client_simple.h \
+    $$PWD/include/dap_http_header.h
 
 
 SOURCES += $$PWD/dap_http_client.c \
     $$PWD/dap_http_client_simple.c \
     $$PWD/dap_http_header.c
 
-
-linux-* {
-    LIBS += -lcurl
-}
-
 INCLUDEPATH += $$PWD
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_client.h b/dap-sdk/net/server/http_server/http_client/include/dap_http_client.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/http_server/http_client/dap_http_client.h
rename to dap-sdk/net/server/http_server/http_client/include/dap_http_client.h
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_header.h b/dap-sdk/net/server/http_server/http_client/include/dap_http_header.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/http_server/http_client/dap_http_header.h
rename to dap-sdk/net/server/http_server/http_client/include/dap_http_header.h
diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_user_agent.h b/dap-sdk/net/server/http_server/http_client/include/dap_http_user_agent.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/http_server/http_client/dap_http_user_agent.h
rename to dap-sdk/net/server/http_server/http_client/include/dap_http_user_agent.h
diff --git a/dap-sdk/net/server/http_server/dap_http.h b/dap-sdk/net/server/http_server/include/dap_http.h
old mode 100755
new mode 100644
similarity index 94%
rename from dap-sdk/net/server/http_server/dap_http.h
rename to dap-sdk/net/server/http_server/include/dap_http.h
index 9c7ee75cb2..6468119401
--- a/dap-sdk/net/server/http_server/dap_http.h
+++ b/dap-sdk/net/server/http_server/include/dap_http.h
@@ -1,79 +1,79 @@
-/*
-* Authors:
-* Dmitrii Gerasimov <naeper@demlabs.net>
-* DeM Labs Inc.   https://demlabs.net
-* Cellframe https://cellframe.net
-* Copyright  (c) 2017-2019
-* All rights reserved.
-
-This file is part of DAP the open source project.
-
-DAP is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-DAP is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-See more details here <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
-#include "dap_server.h"
-#include "dap_client_remote.h"
-#include "http_client/dap_http_header.h"
-#include "http_client/dap_http_client.h"
-#include "uthash.h"
-
-struct dap_http;
-struct dap_http_url_processor;
-//Structure for internal data of dap_server_t structure for holding special HTTP data
-
-// Structure for holding URL processors
-typedef struct dap_http_url_proc{
-    char url[512]; // First part of URL that will be processed
-    struct dap_http * http; // Pointer to HTTP server instance
-
-    dap_http_client_callback_t new_callback; // Init internal structure
-    dap_http_client_callback_t delete_callback; // Delete internal structure
-
-    dap_http_client_callback_t headers_read_callback;
-    dap_http_client_callback_t headers_write_callback;
-
-    dap_http_client_callback_t data_read_callback;
-    dap_http_client_callback_t data_write_callback;
-    dap_http_client_callback_t error_callback;
-
-    dap_http_client_callback_t access_callback;
-
-    void *_inheritor; // Internal data specific to the current URL processor
-    UT_hash_handle hh; // makes this structure hashable with UTHASH library
-} dap_http_url_proc_t;
-
-// Internal server structure for HTTP server
-typedef struct dap_http {
-    dap_server_t *server;
-    char server_name[256];
-    dap_http_url_proc_t * url_proc;
-} dap_http_t;
-
-#define DAP_HTTP(a) ((dap_http_t *) (a)->_inheritor)
-
-int dap_http_init( ); // Init module
-void dap_http_deinit( ); // Deinit module
-
-int dap_http_new( dap_server_t *sh, const char *server_name ); // Create dap_http structure in the internal data field of dap_server_t instance
-void dap_http_delete( dap_server_t *sh, void *arg ); // Clear dap_http structure in the internal data field of dap_server_t instance
-
-void dap_http_add_proc(dap_http_t *sh, const char *url_path, void *internal
-                             ,dap_http_client_callback_t new_callback
-                             ,dap_http_client_callback_t delete_callback
-                             ,dap_http_client_callback_t headers_read_callback
-                             ,dap_http_client_callback_t headers_write_callback
-                             ,dap_http_client_callback_t data_read_callback
-                             ,dap_http_client_callback_t data_write_callback
-                             ,dap_http_client_callback_t error_callback ); // Add custom procesor for the HTTP server
-
+/*
+* Authors:
+* Dmitrii Gerasimov <naeper@demlabs.net>
+* DeM Labs Inc.   https://demlabs.net
+* Cellframe https://cellframe.net
+* Copyright  (c) 2017-2019
+* All rights reserved.
+
+This file is part of DAP the open source project.
+
+DAP is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+DAP is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+See more details here <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "dap_server.h"
+#include "dap_client_remote.h"
+#include "dap_http_header.h"
+#include "dap_http_client.h"
+#include "uthash.h"
+
+struct dap_http;
+struct dap_http_url_processor;
+//Structure for internal data of dap_server_t structure for holding special HTTP data
+
+// Structure for holding URL processors
+typedef struct dap_http_url_proc{
+    char url[512]; // First part of URL that will be processed
+    struct dap_http * http; // Pointer to HTTP server instance
+
+    dap_http_client_callback_t new_callback; // Init internal structure
+    dap_http_client_callback_t delete_callback; // Delete internal structure
+
+    dap_http_client_callback_t headers_read_callback;
+    dap_http_client_callback_t headers_write_callback;
+
+    dap_http_client_callback_t data_read_callback;
+    dap_http_client_callback_t data_write_callback;
+    dap_http_client_callback_t error_callback;
+
+    dap_http_client_callback_t access_callback;
+
+    void *_inheritor; // Internal data specific to the current URL processor
+    UT_hash_handle hh; // makes this structure hashable with UTHASH library
+} dap_http_url_proc_t;
+
+// Internal server structure for HTTP server
+typedef struct dap_http {
+    dap_server_t *server;
+    char server_name[256];
+    dap_http_url_proc_t * url_proc;
+} dap_http_t;
+
+#define DAP_HTTP(a) ((dap_http_t *) (a)->_inheritor)
+
+int dap_http_init( ); // Init module
+void dap_http_deinit( ); // Deinit module
+
+int dap_http_new( dap_server_t *sh, const char *server_name ); // Create dap_http structure in the internal data field of dap_server_t instance
+void dap_http_delete( dap_server_t *sh, void *arg ); // Clear dap_http structure in the internal data field of dap_server_t instance
+
+void dap_http_add_proc(dap_http_t *sh, const char *url_path, void *internal
+                             ,dap_http_client_callback_t new_callback
+                             ,dap_http_client_callback_t delete_callback
+                             ,dap_http_client_callback_t headers_read_callback
+                             ,dap_http_client_callback_t headers_write_callback
+                             ,dap_http_client_callback_t data_read_callback
+                             ,dap_http_client_callback_t data_write_callback
+                             ,dap_http_client_callback_t error_callback ); // Add custom procesor for the HTTP server
+
diff --git a/dap-sdk/net/server/http_server/dap_http_folder.h b/dap-sdk/net/server/http_server/include/dap_http_folder.h
old mode 100755
new mode 100644
similarity index 97%
rename from dap-sdk/net/server/http_server/dap_http_folder.h
rename to dap-sdk/net/server/http_server/include/dap_http_folder.h
index 05d0eedec0..3dec0498a1
--- a/dap-sdk/net/server/http_server/dap_http_folder.h
+++ b/dap-sdk/net/server/http_server/include/dap_http_folder.h
@@ -1,31 +1,31 @@
-/*
- Copyright (c) 2017-2018 (c) Project "DeM Labs Inc" https://github.com/demlabsinc
-  All rights reserved.
-
- This file is part of DAP (Deus Applications Prototypes) the open source project
-
-    DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    DAP is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _DAP_HTTP_FOLDER_H_
-#define _DAP_HTTP_FOLDER_H_
-
-struct dap_http;
-
-extern int dap_http_folder_init();
-extern void dap_http_folder_deinit();
-
-extern int dap_http_folder_add(struct dap_http *sh, const char * url_path, const char * local_path); // Add folder for reading to the HTTP server
-
-#endif
+/*
+ Copyright (c) 2017-2018 (c) Project "DeM Labs Inc" https://github.com/demlabsinc
+  All rights reserved.
+
+ This file is part of DAP (Deus Applications Prototypes) the open source project
+
+    DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Lesser General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    DAP is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public License
+    along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _DAP_HTTP_FOLDER_H_
+#define _DAP_HTTP_FOLDER_H_
+
+struct dap_http;
+
+extern int dap_http_folder_init();
+extern void dap_http_folder_deinit();
+
+extern int dap_http_folder_add(struct dap_http *sh, const char * url_path, const char * local_path); // Add folder for reading to the HTTP server
+
+#endif
diff --git a/dap-sdk/net/server/http_server/dap_http_simple.h b/dap-sdk/net/server/http_server/include/dap_http_simple.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/http_server/dap_http_simple.h
rename to dap-sdk/net/server/http_server/include/dap_http_simple.h
diff --git a/dap-sdk/net/server/http_server/http_status_code.h b/dap-sdk/net/server/http_server/include/http_status_code.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/server/http_server/http_status_code.h
rename to dap-sdk/net/server/http_server/include/http_status_code.h
diff --git a/dap-sdk/net/server/test/CMakeLists.txt b/dap-sdk/net/server/test/CMakeLists.txt
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/enc_server/CMakeLists.txt b/dap-sdk/net/server/test/enc_server/CMakeLists.txt
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/enc_server/main.c b/dap-sdk/net/server/test/enc_server/main.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/CMakeLists.txt b/dap-sdk/net/server/test/http_server/CMakeLists.txt
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/dap_http_simple_test.c b/dap-sdk/net/server/test/http_server/dap_http_simple_test.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/dap_http_simple_test.h b/dap-sdk/net/server/test/http_server/dap_http_simple_test.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/dap_http_user_agent_test.c b/dap-sdk/net/server/test/http_server/dap_http_user_agent_test.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/dap_http_user_agent_test.h b/dap-sdk/net/server/test/http_server/dap_http_user_agent_test.h
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/http_server/main.c b/dap-sdk/net/server/test/http_server/main.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/server/test/main.c b/dap-sdk/net/server/test/main.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/stream/.gitignore b/dap-sdk/net/stream/.gitignore
deleted file mode 100755
index 15cef3cea8..0000000000
--- a/dap-sdk/net/stream/.gitignore
+++ /dev/null
@@ -1,54 +0,0 @@
-# Prerequisites
-*.d
-build/
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-
-*.txt.user
diff --git a/dap-sdk/net/stream/.travis.yml b/dap-sdk/net/stream/.travis.yml
deleted file mode 100755
index ff468b80fc..0000000000
--- a/dap-sdk/net/stream/.travis.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-language: c
-compiler: gcc
-dist: xenial
-notifications:
-  email: false
-
-before_install:
-    - git submodule init
-    - git submodule update
-
-script:
-    - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_STREAM_TESTS=ON ../
-    - make
-    - ctest --verbose
-
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - libjson-c-dev
-    - libev-dev
-    - libmagic-dev
diff --git a/dap-sdk/net/stream/CMakeLists.txt b/dap-sdk/net/stream/CMakeLists.txt
old mode 100755
new mode 100644
index 3e477f95a2..87d7d73645
--- a/dap-sdk/net/stream/CMakeLists.txt
+++ b/dap-sdk/net/stream/CMakeLists.txt
@@ -1,35 +1,6 @@
 project(libdap-stream C)
 cmake_minimum_required(VERSION 3.0)
 
-if(NOT SUBMODULES_NO_BUILD)
-    if ( NOT ( TARGET dap_core ) )
-	add_subdirectory(libdap)
-    endif()
-    if ( NOT ( TARGET dap_crypto ) )
-	add_subdirectory(libdap-crypto)
-    endif()
-    
-    if ( NOT ( TARGET libdap-server ) )
-        add_subdirectory(libdap-server)
-    endif()
-
-    if ( NOT ( TARGET dap_server_core ) )
-	add_subdirectory(libdap-server-core)
-    endif()
-
-    if ( NOT ( TARGET dap_server_udp ) )
-	add_subdirectory(libdap-server-udp)
-    endif()
-
-    if ( NOT ( TARGET dap_stream_ch ) )
-	add_subdirectory(libdap-stream-ch)
-    endif()
-endif()
-
-if(BUILD_DAP_STREAM_TESTS)
-    enable_testing()
-    add_subdirectory(test)
-endif()
-
 add_subdirectory(session)
 add_subdirectory(stream)
+add_subdirectory(ch)
diff --git a/dap-sdk/net/stream/LICENSE b/dap-sdk/net/stream/LICENSE
deleted file mode 100755
index 65c5ca88a6..0000000000
--- a/dap-sdk/net/stream/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
-  Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/dap-sdk/net/stream/README.md b/dap-sdk/net/stream/README.md
deleted file mode 100755
index e0b4a68318..0000000000
--- a/dap-sdk/net/stream/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# libdap-stream
-Deus Applications Prototypes: multichannel stream
-
-[![Build Status](https://travis-ci.com/kelvinblockchain/libdap-stream.svg?branch=master)](https://travis-ci.com/kelvinblockchain/libdap-stream)
diff --git a/dap-sdk/net/stream/ch/.gitignore b/dap-sdk/net/stream/ch/.gitignore
deleted file mode 100755
index c6127b38c1..0000000000
--- a/dap-sdk/net/stream/ch/.gitignore
+++ /dev/null
@@ -1,52 +0,0 @@
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
diff --git a/dap-sdk/net/stream/ch/CMakeLists.txt b/dap-sdk/net/stream/ch/CMakeLists.txt
old mode 100755
new mode 100644
index d3be99c041..8a2c0d822b
--- a/dap-sdk/net/stream/ch/CMakeLists.txt
+++ b/dap-sdk/net/stream/ch/CMakeLists.txt
@@ -1,16 +1,17 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_stream_ch)
   
-set(DAP_STREAM_CH_SRCS dap_stream_ch.c dap_stream_ch_pkt.c dap_stream_ch_proc.c)
+file(GLOB DAP_STREAM_CH_SRCS *.c)
+file(GLOB DAP_STREAM_CH_HDRS include/*.h)
 
 if(WIN32)
   include_directories(../3rdparty/wepoll/)
   include_directories(../3rdparty/uthash/src/)
-  #include_directories(../3rdparty/curl/include/)
 endif()
 
-add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_SRCS})
+add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_SRCS} ${DAP_STREAM_CH_HDRS})
 
 target_link_libraries(dap_stream_ch dap_core dap_crypto dap_stream)
 
 target_include_directories(dap_stream_ch INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/dap-sdk/net/stream/ch/LICENSE b/dap-sdk/net/stream/ch/LICENSE
deleted file mode 100755
index 94a9ed024d..0000000000
--- a/dap-sdk/net/stream/ch/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/dap-sdk/net/stream/ch/README.md b/dap-sdk/net/stream/ch/README.md
deleted file mode 100755
index be612fe2e6..0000000000
--- a/dap-sdk/net/stream/ch/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# libdap-stream-ch
-Channels managment
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch.c b/dap-sdk/net/stream/ch/dap_stream_ch.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch_pkt.c b/dap-sdk/net/stream/ch/dap_stream_ch_pkt.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch_proc.c b/dap-sdk/net/stream/ch/dap_stream_ch_proc.c
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch.h b/dap-sdk/net/stream/ch/include/dap_stream_ch.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/stream/ch/dap_stream_ch.h
rename to dap-sdk/net/stream/ch/include/dap_stream_ch.h
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch_pkt.h b/dap-sdk/net/stream/ch/include/dap_stream_ch_pkt.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/stream/ch/dap_stream_ch_pkt.h
rename to dap-sdk/net/stream/ch/include/dap_stream_ch_pkt.h
diff --git a/dap-sdk/net/stream/ch/dap_stream_ch_proc.h b/dap-sdk/net/stream/ch/include/dap_stream_ch_proc.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/stream/ch/dap_stream_ch_proc.h
rename to dap-sdk/net/stream/ch/include/dap_stream_ch_proc.h
diff --git a/dap-sdk/net/stream/session/CMakeLists.txt b/dap-sdk/net/stream/session/CMakeLists.txt
old mode 100755
new mode 100644
index 4c702cfbd8..ffda4c0ca4
--- a/dap-sdk/net/stream/session/CMakeLists.txt
+++ b/dap-sdk/net/stream/session/CMakeLists.txt
@@ -1,16 +1,16 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_session)
   
-set(SESSION_SRCS dap_stream_session.c)
+file(GLOB SESSION_SRCS *.c)
+file(GLOB SESSION_HDRS include/*.h)
 
 if(WIN32)
-  include_directories(../../3rdparty/wepoll/)
   include_directories(../../3rdparty/uthash/src/)
-  #include_directories(../../3rdparty/curl/include/)
 endif()
 
 add_library(${PROJECT_NAME} STATIC ${SESSION_SRCS})
 
+include_directories(include/)
 target_link_libraries(dap_session dap_core dap_crypto)
-
-target_include_directories(dap_session INTERFACE .)
+target_include_directories(dap_session INTERFACE . include/)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/dap-sdk/net/stream/session/dap_stream_session.h b/dap-sdk/net/stream/session/include/dap_stream_session.h
old mode 100755
new mode 100644
similarity index 100%
rename from dap-sdk/net/stream/session/dap_stream_session.h
rename to dap-sdk/net/stream/session/include/dap_stream_session.h
diff --git a/dap-sdk/net/stream/stream/CMakeLists.txt b/dap-sdk/net/stream/stream/CMakeLists.txt
index 7bb630e624..1b4ed0617c 100755
--- a/dap-sdk/net/stream/stream/CMakeLists.txt
+++ b/dap-sdk/net/stream/stream/CMakeLists.txt
@@ -1,20 +1,19 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_stream)
   
-set(STREAM_SRCS
-    dap_stream.c
-    dap_stream_ctl.c
-    dap_stream_pkt.c )
+file(GLOB STREAM_SRCS *.c)
+file(GLOB STREAM_HDRS include/*.h)
 
 if(WIN32)
-  include_directories(../../3rdparty/wepoll/)
-  include_directories(../../3rdparty/uthash/src/)
+  include_directories(../../../3rdparty/wepoll/)
+  include_directories(../../../3rdparty/uthash/src/)
   #include_directories(../../3rdparty/curl/include/)
 endif()
 
-add_library(${PROJECT_NAME} STATIC ${STREAM_SRCS})
+add_library(${PROJECT_NAME} STATIC ${STREAM_SRCS} ${STREAM_HDRS})
 
 target_link_libraries(dap_stream dap_core dap_server_core dap_udp_server dap_crypto
     dap_http_server dap_enc_server dap_session dap_stream_ch)
 
 target_include_directories(dap_stream INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/dap-sdk/net/stream/stream/dap_stream.h b/dap-sdk/net/stream/stream/include/dap_stream.h
similarity index 100%
rename from dap-sdk/net/stream/stream/dap_stream.h
rename to dap-sdk/net/stream/stream/include/dap_stream.h
diff --git a/dap-sdk/net/stream/stream/dap_stream_ctl.h b/dap-sdk/net/stream/stream/include/dap_stream_ctl.h
similarity index 100%
rename from dap-sdk/net/stream/stream/dap_stream_ctl.h
rename to dap-sdk/net/stream/stream/include/dap_stream_ctl.h
diff --git a/dap-sdk/net/stream/stream/dap_stream_pkt.h b/dap-sdk/net/stream/stream/include/dap_stream_pkt.h
similarity index 100%
rename from dap-sdk/net/stream/stream/dap_stream_pkt.h
rename to dap-sdk/net/stream/stream/include/dap_stream_pkt.h
diff --git a/dap-sdk/net/stream/test/CMakeLists.txt b/dap-sdk/net/stream/test/CMakeLists.txt
old mode 100755
new mode 100644
diff --git a/dap-sdk/net/stream/test/main.c b/dap-sdk/net/stream/test/main.c
old mode 100755
new mode 100644
diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index 35b0e0cf89..d9dbd649e8 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -1,7 +1,7 @@
 add_subdirectory(app-cli)
 add_subdirectory(chain)
 add_subdirectory(common)
-add_subdirectory(crypto)
+add_subdirectory(mining)
 add_subdirectory(wallet)
 add_subdirectory(mempool)
 add_subdirectory(net)
@@ -9,13 +9,13 @@ add_subdirectory(net/srv)
 add_subdirectory(global-db)
 
 # Consensus types
-add_subdirectory(types/dag)
-add_subdirectory(types/block)
-add_subdirectory(types/no-consensus)
+add_subdirectory(type/dag)
+#add_subdirectory(type/block)
 
 # Consensuses
-add_subdirectory(consensus/block-pow)
-add_subdirectory(consensus/block-poa)
+add_subdirectory(consensus/none)
+#add_subdirectory(consensus/block-pow)
+#add_subdirectory(consensus/block-poa)
 add_subdirectory(consensus/dag-pos)
 add_subdirectory(consensus/dag-poa)
 
@@ -29,4 +29,9 @@ if(NOT (WIN32))
   add_subdirectory(service/vpn)
 endif()
 
+add_subdirectory(service/app)
+add_subdirectory(service/app-db)
+add_subdirectory(service/datum)
+add_subdirectory(service/mining-pool)
+
 
diff --git a/modules/app-cli/CMakeLists.txt b/modules/app-cli/CMakeLists.txt
index 7ca7367a47..d03500dfa5 100644
--- a/modules/app-cli/CMakeLists.txt
+++ b/modules/app-cli/CMakeLists.txt
@@ -1,22 +1,9 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_app_cli)
 
-set(DAP_APP_CLI_SRCS
-        src/dap_app_cli.c
-        src/dap_app_cli_net.c
-        src/dap_app_cli_shell.c
-        )
+file(GLOB DAP_APP_CLI_SRCS *.c)
 
-set(DAP_APP_CLI_HEADERS
-        include/dap_app_cli.h
-        include/dap_app_cli_net.h
-        include/dap_app_cli_shell.h
-    )
-
-
-if(WIN32)
-  #include_directories(../3rdparty/curl/include/)
-endif()
+file(GLOB DAP_APP_CLI_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_APP_CLI_SRCS} ${DAP_APP_CLI_HEADERS} )
 
diff --git a/modules/chain/CMakeLists.txt b/modules/chain/CMakeLists.txt
index 493975f6a6..ed93dd69eb 100644
--- a/modules/chain/CMakeLists.txt
+++ b/modules/chain/CMakeLists.txt
@@ -1,9 +1,9 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain)
   
-set(DAP_CHAIN_SRCS *.c)
+file(GLOB DAP_CHAIN_SRCS *.c)
 
-set(DAP_CHAIN_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_HEADERS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -16,4 +16,5 @@ add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_SRCS} ${DAP_CHAIN_HEADERS})
 #pkg_search_module(GLIB REQUIRED glib-2.0)
 
 target_link_libraries(dap_chain dap_core dap_chain_common dap_chain_crypto dap_chain_mempool dap_chain_global_db ${GLIB_LDFLAGS})
-target_include_directories(dap_chain INTERFACE . ${GLIB_INCLUDE_DIRS})
+target_include_directories(dap_chain INTERFACE . include/ ${GLIB_INCLUDE_DIRS})
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/channel/chain-net-srv/CMakeLists.txt b/modules/channel/chain-net-srv/CMakeLists.txt
index 0be2199dfc..257582d017 100644
--- a/modules/channel/chain-net-srv/CMakeLists.txt
+++ b/modules/channel/chain-net-srv/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_stream_ch_chain_net_srv)
 
-set(DAP_STREAM_CH_CHAIN_NET_SRV_SRCS *.c)
-set(DAP_STREAM_CH_CHAIN_NET_SRV_HDRS include/*.h)
+file(GLOB DAP_STREAM_CH_CHAIN_NET_SRV_SRCS *.c)
+file(GLOB DAP_STREAM_CH_CHAIN_NET_SRV_HDRS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -14,3 +14,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_CHAIN_NET_SRV_SRCS} ${DAP_STR
 target_link_libraries(dap_stream_ch_chain_net_srv dap_core dap_crypto dap_chain_common dap_chain dap_chain_mempool dap_chain_net dap_chain_net_srv dap_server_core dap_stream dap_stream_ch dap_stream_ch_chain dap_stream_ch_chain_net)
 
 target_include_directories(dap_stream_ch_chain_net_srv INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/channel/chain-net/CMakeLists.txt b/modules/channel/chain-net/CMakeLists.txt
index 44a24c1b9e..62f2a5c4b2 100644
--- a/modules/channel/chain-net/CMakeLists.txt
+++ b/modules/channel/chain-net/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_stream_ch_chain_net)
   
-set(DAP_STREAM_CH_CHAIN_NET_SRCS *.c)
-set(DAP_STREAM_CH_CHAIN_NET_HDRS include/*.h)
+file(GLOB DAP_STREAM_CH_CHAIN_NET_SRCS *.c)
+file(GLOB DAP_STREAM_CH_CHAIN_NET_HDRS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -15,3 +15,4 @@ target_link_libraries(dap_stream_ch_chain_net dap_core dap_crypto dap_stream dap
                                                dap_chain_net)
 
 target_include_directories(dap_stream_ch_chain_net INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/channel/chain/CMakeLists.txt b/modules/channel/chain/CMakeLists.txt
index 93bbfbb055..2c31b0a784 100644
--- a/modules/channel/chain/CMakeLists.txt
+++ b/modules/channel/chain/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0)
 project (dap_stream_ch_chain)
   
-set(DAP_STREAM_CH_CHAIN_SRCS *.c)
-set(DAP_STREAM_CH_CHAIN_SRCS include/*.h)
+file(GLOB DAP_STREAM_CH_CHAIN_SRCS *.c)
+file(GLOB DAP_STREAM_CH_CHAIN_HDRS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -14,4 +14,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_CHAIN_SRCS} ${DAP_STREAM_CH_C
 target_link_libraries(dap_stream_ch_chain dap_core dap_crypto dap_chain dap_stream dap_stream_ch)
 
 target_include_directories(dap_stream_ch_chain INTERFACE .)
-
+target_include_directories(${PROJECT_NAME} PUBLIC include)
\ No newline at end of file
diff --git a/modules/common/CMakeLists.txt b/modules/common/CMakeLists.txt
index b9a1e49823..ca8333ab03 100644
--- a/modules/common/CMakeLists.txt
+++ b/modules/common/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_common)
   
-set(DAP_CHAIN_COMMON_SRCS  *.c)
-set(DAP_CHAIN_COMMON_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_COMMON_SRCS  *.c)
+file(GLOB DAP_CHAIN_COMMON_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_COMMON_SRCS} ${DAP_CHAIN_COMMON_HEADERS})
 
diff --git a/modules/consensus/block-poa/CMakeLists.txt b/modules/consensus/block-poa/CMakeLists.txt
index 5a5d36de80..2d2fbe8bf0 100644
--- a/modules/consensus/block-poa/CMakeLists.txt
+++ b/modules/consensus/block-poa/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_block_poa)
   
-set(DAP_CHAIN_BLOCK_CS_POA_SRCS *.c)
-set(DAP_CHAIN_BLOCK_CS_POA_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_BLOCK_CS_POA_SRCS *.c)
+file(GLOB DAP_CHAIN_BLOCK_CS_POA_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_BLOCK_CS_POA_SRCS} ${DAP_CHAIN_BLOCK_CS_POA_HEADERS})
 add_definitions ("-DDAP_CHAIN_BLOCK_CS_POA")
diff --git a/modules/consensus/block-pow/CMakeLists.txt b/modules/consensus/block-pow/CMakeLists.txt
index 4d9b13ae14..944079a1df 100644
--- a/modules/consensus/block-pow/CMakeLists.txt
+++ b/modules/consensus/block-pow/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_block_pow)
   
-set(DAP_CHAIN_BLOCK_CS_POW_SRCS *.c)
-set(DAP_CHAIN_BLOCK_CS_POW_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_BLOCK_CS_POW_SRCS *.c)
+file(GLOB DAP_CHAIN_BLOCK_CS_POW_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_BLOCK_CS_POW_SRCS} ${DAP_CHAIN_BLOCK_CS_POW_HEADERS})
 
diff --git a/modules/consensus/dag-poa/CMakeLists.txt b/modules/consensus/dag-poa/CMakeLists.txt
index 0cea39c868..48c8e1e6f2 100644
--- a/modules/consensus/dag-poa/CMakeLists.txt
+++ b/modules/consensus/dag-poa/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_dag_poa)
   
-set(DAP_CHAIN_DAG_CS_POA_SRCS *.c)
-set(DAP_CHAIN_DAG_CS_POA_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_DAG_CS_POA_SRCS *.c)
+file(GLOB DAP_CHAIN_DAG_CS_POA_HEADERS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -13,3 +13,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_DAG_CS_POA_SRCS} ${DAP_CHAIN_DAG_
 
 target_link_libraries(dap_chain_cs_dag_poa dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_cs_dag )
 target_include_directories(dap_chain_cs_dag_poa INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/consensus/dag-pos/CMakeLists.txt b/modules/consensus/dag-pos/CMakeLists.txt
index 36d0f5c44f..7f35421cd0 100644
--- a/modules/consensus/dag-pos/CMakeLists.txt
+++ b/modules/consensus/dag-pos/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_dag_pos)
   
-set(DAP_CHAIN_CS_DAG_POS_SRCS *.c)
-set(DAP_CHAIN_CS_DAG_POS_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_CS_DAG_POS_SRCS *.c)
+file(GLOB DAP_CHAIN_CS_DAG_POS_HEADERS include/*.h)
 
 if(WIN32)
   include_directories(../../../3rdparty/wepoll/)
@@ -13,3 +13,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_CS_DAG_POS_SRCS} ${DAP_CHAIN_CS_D
 
 target_link_libraries(dap_chain_cs_dag_pos dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_cs_dag )
 target_include_directories(dap_chain_cs_dag_pos INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/consensus/none/CMakeLists.txt b/modules/consensus/none/CMakeLists.txt
index ec4118ffed..eb679fd4b5 100644
--- a/modules/consensus/none/CMakeLists.txt
+++ b/modules/consensus/none/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 2.8)
-project (dap_chain_cs_no_consensus)
+project (dap_chain_cs_none)
   
 file(GLOB DAP_CHAIN_CS_NO_CONSENSUS_SRC *.c)
 file(GLOB DAP_CHAIN_CS_NO_CONSENSUS_HDR include/*.h)
@@ -10,5 +10,6 @@ endif()
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_CS_NO_CONSENSUS_SRC} ${DAP_CHAIN_CS_NO_CONSENSUS_HDR})
 
-target_link_libraries(dap_chain_gdb dap_core dap_chain dap_chain_global_db dap_chain_mempool dap_chain_net)
-target_include_directories(dap_chain_gdb INTERFACE .)
+target_link_libraries(${PROJECT_NAME} dap_core dap_chain dap_chain_global_db dap_chain_mempool dap_chain_net)
+target_include_directories(${PROJECT_NAME} INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/global-db/CMakeLists.txt b/modules/global-db/CMakeLists.txt
index e837ab4541..c918ddaddc 100644
--- a/modules/global-db/CMakeLists.txt
+++ b/modules/global-db/CMakeLists.txt
@@ -5,19 +5,14 @@ file(GLOB DAP_CHAIN_GLOBAL_DB_SRC *.c)
 file(GLOB DAP_CHAIN_GLOBAL_DB_HDR include/*.h)
 
 if(WIN32)
-  include_directories(../../../3rdparty/wepoll/)
-  include_directories(../../../3rdparty/uthash/src/)
+  include_directories(../../3rdparty/wepoll/)
+  include_directories(../../3rdparty/uthash/src/)
 endif()
 
-
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_GLOBAL_DB_SRC} ${DAP_CHAIN_GLOBAL_DB_HDR})
 
-add_subdirectory(../../../3rdparty/cuttdb)
-
 target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain dap_chain_crypto sqlite3 dap_cuttdb json-c)
 
 target_include_directories(dap_chain_global_db INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
-#set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
-
-#set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/modules/mempool/CMakeLists.txt b/modules/mempool/CMakeLists.txt
index aa680dd6b6..004d63d862 100644
--- a/modules/mempool/CMakeLists.txt
+++ b/modules/mempool/CMakeLists.txt
@@ -13,3 +13,4 @@ add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_MEMPOOL_SRC} ${DAP_CHAIN_MEMPOOL_
 
 target_link_libraries(dap_chain_mempool dap_http_server dap_client dap_chain_net dap_chain_global_db dap_core)
 target_include_directories(dap_chain_mempool INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/mining/CMakeLists.txt b/modules/mining/CMakeLists.txt
index b3b2f16de3..d42442f1fd 100644
--- a/modules/mining/CMakeLists.txt
+++ b/modules/mining/CMakeLists.txt
@@ -1,11 +1,9 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_crypto)
   
-set(DAP_CHAIN_CRYPTO_SRCS *.c)
+file(GLOB DAP_CHAIN_CRYPTO_SRCS *.c)
 
-set(DAP_CHAIN_CRYPTO_HEADERS include/*.h)
-
-add_subdirectory(../../../3rdparty/monero_crypto)
+file(GLOB DAP_CHAIN_CRYPTO_HEADERS include/*.h)
 
 include_directories("${monero_crypto_INCLUDE_DIRS}")
 add_definitions ("${monero_crypto_DEFINITIONS}")
@@ -13,6 +11,7 @@ add_definitions ("${monero_crypto_DEFINITIONS}")
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_CRYPTO_SRCS} ${DAP_CHAIN_CRYPTO_HEADERS})
 
 target_include_directories(dap_chain_crypto INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 target_link_libraries(dap_chain_crypto dap_core dap_crypto dap_chain monero_crypto)
 
 set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
diff --git a/modules/net/CMakeLists.txt b/modules/net/CMakeLists.txt
index e4d7c5e545..2f19f6a87b 100644
--- a/modules/net/CMakeLists.txt
+++ b/modules/net/CMakeLists.txt
@@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 3.0)
 project (dap_chain_net)
   
 
-set(DAP_CHAIN_NET_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRCS *.c)
 
-set(DAP_CHAIN_NET_HEADERS *.h)
+file(GLOB DAP_CHAIN_NET_HEADERS *.h)
 
 #if (ANDROID)
 #    set(DAP_CHAIN_NET_HEADERS ${DAP_CHAIN_NET_HEADERS}
@@ -50,6 +50,7 @@ if(UNIX)
 endif()
 
 target_include_directories(${PROJECT_NAME} INTERFACE . )
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
 if (!WIN32)
     target_include_directories(${PROJECT_NAME} PUBLIC ${IPUTILS_INCLUDE_DIRS})
diff --git a/modules/net/iputils/iputils.c b/modules/net/iputils/iputils.c
new file mode 100755
index 0000000000..263590139c
--- /dev/null
+++ b/modules/net/iputils/iputils.c
@@ -0,0 +1,49 @@
+/*
+ * Set utilities for networking
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include "dap_common.h"
+#include "dap_strfuncs.h"
+
+static bool LOG_VERBOSE = false;
+
+/**
+ * Set verbose mode
+ */
+void iputils_set_verbose(void)
+{
+    LOG_VERBOSE = true;
+}
+
+/**
+ * Reset verbose mode
+ */
+void iputils_reset_verbose(void)
+{
+    LOG_VERBOSE = false;
+}
+
+// analog printf()
+int log_printf(const char *format, ...)
+{
+    int ret = 0;
+    if(LOG_VERBOSE)
+    {
+        char *log_str = NULL;
+        va_list args;
+
+        va_start(args, format);
+        log_str = dap_strdup_vprintf(format, args);
+        va_end(args);
+
+        if(log_str)
+        {
+
+            ret = printf("%s", log_str);
+            DAP_DELETE(log_str);
+        }
+    }
+    return ret;
+}
diff --git a/modules/net/iputils/iputils.h b/modules/net/iputils/iputils.h
new file mode 100644
index 0000000000..0330b548f1
--- /dev/null
+++ b/modules/net/iputils/iputils.h
@@ -0,0 +1,189 @@
+/*
+ * Set utilities for networking
+ */
+
+#ifndef _IPUTILS_H
+#define _IPUTILS_H
+
+#include <stdint.h>
+#include <stdlib.h>
+#ifndef _WIN32
+#include <netinet/ip.h>
+#else
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include "win32/iphdr.h"
+#include "win32/ip.h"
+#define uid_t uint32_t
+#endif
+#include <setjmp.h>
+#include <sys/time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXPACKET 128000    /* max packet size */
+
+#define MAX_DUP_CHK 0x10000
+
+#ifdef USE_BITMAP64
+typedef uint64_t  bitmap_t;
+# define BITMAP_SHIFT 6
+#else
+typedef uint32_t  bitmap_t;
+# define BITMAP_SHIFT 5
+#endif
+
+struct rcvd_table {
+  bitmap_t bitmap[MAX_DUP_CHK / (sizeof(bitmap_t) * 8)];
+};
+
+typedef struct ping_handle{
+    int ts_type;
+    int nroute;
+    uint32_t route[10];
+
+    struct sockaddr_in whereto; /* who to ping */
+    int optlen;
+    int settos; /* Set TOS, Precendence or other QOS options */
+
+    int broadcast_pings;
+
+    struct sockaddr_in source;
+    char *device;
+    int pmtudisc;
+    struct {
+
+        int options;
+
+        int mark;
+        int sndbuf;
+        int ttl;
+        int rtt;
+        int rtt_addend;
+        uint16_t acked;
+
+        unsigned char outpack[MAXPACKET];
+        struct rcvd_table rcvd_tbl;
+
+        // counters
+        long npackets; // max packets to transmit
+        long nreceived; // # of packets we got back
+        long nrepeats; // number of duplicates
+        long ntransmitted; // sequence # for outbound packets = #sent
+        long nchecksum; // replies with bad checksum
+        long nerrors; // icmp errors
+        int interval; // interval between packets (msec)
+        int preload;
+        int deadline; // time to die
+        int lingertime;
+        struct timeval start_time, cur_time;
+        //volatile int exiting;
+        //volatile int status_snapshot;
+        int confirm;
+        volatile int in_pr_addr; // pr_addr() is executing
+        jmp_buf pr_addr_jmp;
+
+        /* Stupid workarounds for bugs/missing functionality in older linuces.
+         * confirm_flag fixes refusing service of kernels without MSG_CONFIRM.
+         * i.e. for linux-2.2 */
+        int confirm_flag;
+
+        // timing
+        int timing; // flag to do timing
+        long tmin; // minimum round trip time
+        long tmax; // maximum round trip time
+        /* Message for rpm maintainers: have _shame_. If you want
+         * to fix something send the patch to me for sanity checking.
+         * "sparcfix" patch is a complete non-sense, apparenly the person
+         * prepared it was stoned.
+         */
+        long long tsum; // sum of all times, for doing average
+        long long tsum2;
+        int pipesize;
+
+        int datalen;
+
+        char *hostname;
+        int uid;
+        uid_t euid;
+        int ident; // process id to identify our packets
+
+        int screen_width;
+
+        #ifdef HAVE_LIBCAP
+        cap_value_t cap_raw;
+        cap_value_t cap_admin;
+        #endif
+    } ping_common;
+}ping_handle_t;
+
+ping_handle_t* ping_handle_create(void);
+
+/**
+ * Send ping for ipv4
+ *
+ * @addr host name or IP address
+ * @count number of packets to transmit
+ * @return ping time in microsecond or -1 if error
+ */
+int ping_util(ping_handle_t *a_ping_handle, const char *addr, int count);
+
+/**
+ * Send ping for ipv6
+ *
+ * @addr host name or IP address
+ * @count number of packets to transmit
+ * @return ping time in microsecond or -1 if error
+ */
+int ping_util6(ping_handle_t *a_ping_handle, const char *addr, int count);
+
+
+/**
+ * Tracepath host
+ *
+ * @addr[in] host name or IP address
+ * @hops[out] hops count
+ * @time_usec[out] latency in microseconds
+ * @return 0 Ok, -1 error
+ */
+int tracepath_util(const char *addr, int *hops, int *time_usec);
+
+/**
+ * Traceroute host
+ *
+ * @addr[in] host name or IP address
+ * @hops[out] hops count
+ * @time_usec[out] latency in microseconds
+ * @return 0 Ok, -1 error
+ */
+int traceroute_util(const char *addr, int *hops, int *time_usec);
+
+
+/**
+ * Set verbose mode
+ */
+void iputils_set_verbose(void);
+/**
+ * Reset verbose mode
+ */
+void iputils_reset_verbose(void);
+
+
+// analog printf()
+int log_printf(const char *format, ...);
+
+#define PACKAGE_NAME "iputils"
+#define PACKAGE_VERSION "0.1"
+#define IPUTILS_VERSION(_prog) "%s from %s %s\n", _prog, PACKAGE_NAME, PACKAGE_VERSION
+#define UNUSED(x) (void)(x)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _IPUTILS_H
diff --git a/modules/net/iputils/ping.c b/modules/net/iputils/ping.c
new file mode 100644
index 0000000000..e634a606e8
--- /dev/null
+++ b/modules/net/iputils/ping.c
@@ -0,0 +1,1694 @@
+/*
+ * Copyright (c) 1989 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Muuss.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ *			P I N G . C
+ *
+ * Using the InterNet Control Message Protocol (ICMP) "ECHO" facility,
+ * measure round-trip-delays and packet loss across network paths.
+ *
+ * Author -
+ *	Mike Muuss
+ *	U. S. Army Ballistic Research Laboratory
+ *	December, 1983
+ *
+ * Status -
+ *	Public Domain.  Distribution Unlimited.
+ * Bugs -
+ *	More statistics could always be gathered.
+ *	If kernel does not support non-raw ICMP sockets,
+ *	this program has to run SUID to ROOT or with
+ *	net_cap_raw enabled.
+ */
+
+#include "ping.h"
+
+#include <assert.h>
+#include <netinet/ip_icmp.h>
+#include <ifaddrs.h>
+#include <math.h>
+#include "dap_common.h"
+#include "dap_strfuncs.h"
+#include "iputils.h"
+
+#ifndef ICMP_FILTER
+#define ICMP_FILTER	1
+struct icmp_filter {
+    uint32_t data;
+};
+#endif
+
+ping_func_set_st ping4_func_set = {
+    .send_probe = ping4_send_probe,
+    .receive_error_msg = ping4_receive_error_msg,
+    .parse_reply = ping4_parse_reply,
+    .install_filter = ping4_install_filter
+};
+
+#define	MAXIPLEN	60
+#define	MAXICMPLEN	76
+#define	NROUTES		9		/* number of record route slots */
+#define TOS_MAX		255		/* 8-bit TOS field */
+
+/*
+static int ts_type;
+static int nroute = 0;
+static uint32_t route[10];
+
+static struct sockaddr_in whereto; // who to ping
+static int optlen = 0;
+static int settos = 0; // Set TOS, Precendence or other QOS options
+
+static int broadcast_pings = 0;
+
+static struct sockaddr_in source = { .sin_family = AF_INET };
+char *device;
+int pmtudisc = -1;
+*/
+
+static void pr_options(ping_handle_t *a_ping_handle, unsigned char * cp, int hlen);
+static void pr_iph(ping_handle_t *a_ping_handle, struct iphdr *ip);
+static unsigned short in_cksum(const unsigned short *addr, int len, unsigned short salt);
+static void pr_icmph(ping_handle_t *a_ping_handle, uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp);
+static int parsetos(char *str);
+static int parseflow(char *str);
+
+ping_handle_t* ping_handle_create(void)
+{
+    ping_handle_t *lping = DAP_NEW_Z(ping_handle_t);
+    lping->source.sin_family = AF_INET;
+    lping->pmtudisc = -1;
+
+    lping->ping_common.interval = 1000; // interval between packets (msec)
+    lping->ping_common.preload = 1;
+    lping->ping_common.lingertime = MAXWAIT * 1000;
+
+
+    lping->ping_common.confirm_flag = MSG_CONFIRM;
+
+    lping->ping_common.tmin = LONG_MAX; // minimum round trip time
+    lping->ping_common.pipesize = -1;
+
+    lping->ping_common.datalen = DEFDATALEN;
+
+    lping->ping_common.screen_width = INT_MAX;
+
+#ifdef HAVE_LIBCAP
+    lping->ping_common.cap_raw = CAP_NET_RAW;
+    lping->ping_common.cap_admin = CAP_NET_ADMIN;
+#endif
+
+    return lping;
+}
+
+static void create_socket(ping_handle_t *a_ping_handle, socket_st *sock, int family, int socktype, int protocol, int requisite)
+{
+    int do_fallback = 0;
+
+    errno = 0;
+
+    assert(sock->fd == -1);
+    assert(socktype == SOCK_DGRAM || socktype == SOCK_RAW);
+
+    /* Attempt to create a ping socket if requested. Attempt to create a raw
+     * socket otherwise or as a fallback. Well known errno values follow.
+     *
+     * 1) EACCES
+     *
+     * Kernel returns EACCES for all ping socket creation attempts when the
+     * user isn't allowed to use ping socket. A range of group ids is
+     * configured using the `net.ipv4.ping_group_range` sysctl. Fallback
+     * to raw socket is necessary.
+     *
+     * Kernel returns EACCES for all raw socket creation attempts when the
+     * process doesn't have the `CAP_NET_RAW` capability.
+     *
+     * 2) EAFNOSUPPORT
+     *
+     * Kernel returns EAFNOSUPPORT for IPv6 ping or raw socket creation
+     * attempts when run with IPv6 support disabled (e.g. via `ipv6.disable=1`
+     * kernel command-line option.
+     *
+     * https://github.com/iputils/iputils/issues/32
+     *
+     * OpenVZ 2.6.32-042stab113.11 and possibly other older kernels return
+     * EAFNOSUPPORT for all IPv4 ping socket creation attempts due to lack
+     * of support in the kernel. Fallback to raw socket is necessary.
+     *
+     * https://github.com/iputils/iputils/issues/54
+     *
+     * 3) EPROTONOSUPPORT
+     *
+     * OpenVZ 2.6.32-042stab113.11 and possibly other older kernels return
+     * EPROTONOSUPPORT for all IPv6 ping socket creation attempts due to lack
+     * of support in the kernel [1]. Debian 9.5 based container with kernel 4.10
+     * returns EPROTONOSUPPORT also for IPv4 [2]. Fallback to raw socket is
+     * necessary.
+     *
+     * [1] https://github.com/iputils/iputils/issues/54
+     * [2] https://github.com/iputils/iputils/issues/129
+     */
+    if(socktype == SOCK_DGRAM)
+        sock->fd = socket(family, socktype, protocol);
+
+    /* Kernel doesn't support ping sockets. */
+    if(sock->fd == -1 && errno == EAFNOSUPPORT && family == AF_INET)
+        do_fallback = 1;
+    if(sock->fd == -1 && errno == EPROTONOSUPPORT)
+        do_fallback = 1;
+
+    /* User is not allowed to use ping sockets. */
+    if(sock->fd == -1 && errno == EACCES)
+        do_fallback = 1;
+
+    if(socktype == SOCK_RAW || do_fallback) {
+        socktype = SOCK_RAW;
+        sock->fd = socket(family, SOCK_RAW, protocol);
+    }
+
+    if(sock->fd == -1) {
+        /* Report error related to disabled IPv6 only when IPv6 also failed or in
+         * verbose mode. Report other errors always.
+         */
+        if((errno == EAFNOSUPPORT && socktype == AF_INET6) || (a_ping_handle->ping_common.options & F_VERBOSE) || requisite)
+            error(0, errno, "socket");
+        if(requisite)
+            exit(2);
+    } else
+        sock->socktype = socktype;
+}
+
+static void set_socket_option(socket_st *sock, int level, int optname, const void *optval, socklen_t olen)
+{
+    if(sock->fd == -1)
+        return;
+
+    if(setsockopt(sock->fd, level, optname, optval, olen) == -1)
+        error(2, errno, "setsockopt");
+}
+
+/* Much like stdtod(3, but will fails if str is not valid number. */
+static double ping_strtod(const char *str, const char *err_msg)
+{
+    double num;
+    char *end = NULL;
+
+    if(str == NULL || *str == '\0')
+        goto err;
+    errno = 0;
+#ifdef USE_IDN
+    setlocale(LC_ALL, "C");
+#endif
+    num = strtod(str, &end);
+#ifdef USE_IDN
+    setlocale(LC_ALL, "");
+#endif
+    if(errno || str == end || (end && *end))
+        goto err;
+    switch (fpclassify(num)) {
+    case FP_NORMAL:
+        case FP_ZERO:
+        break;
+    default:
+        errno = ERANGE;
+        goto err;
+    }
+    return num;
+    err:
+    error(2, errno, "%s: %s", err_msg, str);
+    abort(); /* cannot be reached, above error() will exit */
+    return 0.0;
+}
+
+static int ping_main(ping_handle_t *a_ping_handle, int argc, char **argv)
+{
+    struct addrinfo hints = { .ai_family = AF_UNSPEC, .ai_protocol = IPPROTO_UDP, .ai_socktype = SOCK_DGRAM, .ai_flags =
+    getaddrinfo_flags };
+    struct addrinfo *result, *ai;
+    int status;
+    int ch;
+    socket_st sock4 = { .fd = -1 };
+    socket_st sock6 = { .fd = -1 };
+    char *target;
+
+    limit_capabilities(a_ping_handle);
+
+#ifdef USE_IDN
+    setlocale(LC_ALL, "");
+    if (!strcmp(setlocale(LC_ALL, NULL), "C"))
+    hints.ai_flags &= ~ AI_CANONIDN;
+#endif
+
+    /* Support being called using `ping4` or `ping6` symlinks */
+    if(argv[0][strlen(argv[0]) - 1] == '4')
+        hints.ai_family = AF_INET;
+    else if(argv[0][strlen(argv[0]) - 1] == '6')
+        hints.ai_family = AF_INET6;
+
+    /* Parse command line options */
+    while((ch = getopt(argc, argv, "h?" "4bRT:" "6F:N:" "aABc:dDfi:I:l:Lm:M:nOp:qQ:rs:S:t:UvVw:W:")) != EOF) {
+        switch (ch) {
+        /* IPv4 specific options */
+        case '4':
+            if(hints.ai_family != AF_UNSPEC)
+                error(2, 0, "only one -4 or -6 option may be specified");
+            hints.ai_family = AF_INET;
+            break;
+        case 'b':
+            a_ping_handle->broadcast_pings = 1;
+            break;
+        case 'R':
+            if(a_ping_handle->ping_common.options & F_TIMESTAMP)
+                error(2, 0, "only one of -T or -R may be used");
+            a_ping_handle->ping_common.options |= F_RROUTE;
+            break;
+        case 'T':
+            if(a_ping_handle->ping_common.options & F_RROUTE)
+                error(2, 0, "only one of -T or -R may be used");
+            a_ping_handle->ping_common.options |= F_TIMESTAMP;
+            if(strcmp(optarg, "tsonly") == 0)
+                a_ping_handle->ts_type = IPOPT_TS_TSONLY;
+            else if(strcmp(optarg, "tsandaddr") == 0)
+                a_ping_handle->ts_type = IPOPT_TS_TSANDADDR;
+            else if(strcmp(optarg, "tsprespec") == 0)
+                a_ping_handle->ts_type = IPOPT_TS_PRESPEC;
+            else
+                error(2, 0, "invalid timestamp type: %s", optarg);
+            break;
+            /* IPv6 specific options */
+        case '6':
+            if(hints.ai_family != AF_UNSPEC)
+                error(2, 0, "only one -4 or -6 option may be specified");
+            hints.ai_family = AF_INET6;
+            break;
+        case 'F':
+            flowlabel = parseflow(optarg);
+            a_ping_handle->ping_common.options |= F_FLOWINFO;
+            break;
+        case 'N':
+            if(niquery_option_handler(optarg) < 0)
+                usage();
+            hints.ai_socktype = SOCK_RAW;
+            break;
+            /* Common options */
+        case 'a':
+            a_ping_handle->ping_common.options |= F_AUDIBLE;
+            break;
+        case 'A':
+            a_ping_handle->ping_common.options |= F_ADAPTIVE;
+            break;
+        case 'B':
+            a_ping_handle->ping_common.options |= F_STRICTSOURCE;
+            break;
+        case 'c':
+            a_ping_handle->ping_common.npackets = atoi(optarg);
+            if(a_ping_handle->ping_common.npackets <= 0)
+                error(2, 0, "bad number of packets to transmit: %ld", a_ping_handle->ping_common.npackets);
+            break;
+        case 'd':
+            a_ping_handle->ping_common.options |= F_SO_DEBUG;
+            break;
+        case 'D':
+            a_ping_handle->ping_common.options |= F_PTIMEOFDAY;
+            break;
+        case 'i':
+            {
+            double optval;
+
+            optval = ping_strtod(optarg, "bad timing interval");
+            if(isgreater(optval, (double)(INT_MAX / 1000)))
+                error(2, 0, "bad timing interval: %s", optarg);
+            a_ping_handle->ping_common.interval = (int) (optval * 1000);
+            a_ping_handle->ping_common.options |= F_INTERVAL;
+        }
+            break;
+        case 'I':
+            /* IPv6 */
+            if(strchr(optarg, ':')) {
+                char *p, *addr = strdup(optarg);
+
+                if(!addr)
+                    error(2, errno, "cannot copy: %s", optarg);
+
+                p = strchr(addr, SCOPE_DELIMITER);
+                if(p) {
+                    *p = '\0';
+                    a_ping_handle->device = optarg + (p - addr) + 1;
+                }
+
+                if(inet_pton(AF_INET6, addr, (char*) &source6.sin6_addr) <= 0)
+                    error(2, 0, "invalid source address: %s", optarg);
+
+                a_ping_handle->ping_common.options |= F_STRICTSOURCE;
+
+                free(addr);
+            } else if(inet_pton(AF_INET, optarg, &a_ping_handle->source.sin_addr) > 0) {
+                a_ping_handle->ping_common.options |= F_STRICTSOURCE;
+            } else {
+                a_ping_handle->device = optarg;
+            }
+            break;
+        case 'l':
+            a_ping_handle->ping_common.preload = atoi(optarg);
+            if(a_ping_handle->ping_common.preload <= 0)
+                error(2, 0, "bad preload value: %s, should be 1..%d", optarg, MAX_DUP_CHK);
+            if(a_ping_handle->ping_common.preload > MAX_DUP_CHK)
+                a_ping_handle->ping_common.preload = MAX_DUP_CHK;
+            if(a_ping_handle->ping_common.uid && a_ping_handle->ping_common.preload > 3)
+                error(2, 0, "cannot set preload to value greater than 3: %d", a_ping_handle->ping_common.preload);
+            break;
+        case 'L':
+            a_ping_handle->ping_common.options |= F_NOLOOP;
+            break;
+        case 'm':
+            {
+            char *endp;
+            a_ping_handle->ping_common.mark = (int) strtoul(optarg, &endp, 10);
+            if(a_ping_handle->ping_common.mark < 0 || *endp != '\0')
+                error(2, 0, "mark cannot be negative: %s", optarg);
+            a_ping_handle->ping_common.options |= F_MARK;
+            break;
+        }
+        case 'M':
+            if(strcmp(optarg, "do") == 0)
+                a_ping_handle->pmtudisc = IP_PMTUDISC_DO;
+            else if(strcmp(optarg, "dont") == 0)
+                a_ping_handle->pmtudisc = IP_PMTUDISC_DONT;
+            else if(strcmp(optarg, "want") == 0)
+                a_ping_handle->pmtudisc = IP_PMTUDISC_WANT;
+            else
+                error(2, 0, "invalid -M argument: %s", optarg);
+            break;
+        case 'n':
+            a_ping_handle->ping_common.options |= F_NUMERIC;
+            break;
+        case 'O':
+            a_ping_handle->ping_common.options |= F_OUTSTANDING;
+            break;
+        case 'f':
+            /* avoid `getaddrinfo()` during flood */
+            a_ping_handle->ping_common.options |= F_FLOOD | F_NUMERIC;
+            setbuf(stdout, (char *) NULL);
+            break;
+        case 'p':
+            a_ping_handle->ping_common.options |= F_PINGFILLED;
+            fill(a_ping_handle, optarg, a_ping_handle->ping_common.outpack, sizeof(a_ping_handle->ping_common.outpack));
+            break;
+        case 'q':
+            a_ping_handle->ping_common.options |= F_QUIET;
+            break;
+        case 'Q':
+            a_ping_handle->settos = parsetos(optarg); /* IPv4 */
+            tclass = a_ping_handle->settos; /* IPv6 */
+            break;
+        case 'r':
+            a_ping_handle->ping_common.options |= F_SO_DONTROUTE;
+            break;
+        case 's':
+            a_ping_handle->ping_common.datalen = atoi(optarg);
+            if(a_ping_handle->ping_common.datalen < 0)
+                error(2, 0, "illegal packet size: %d", a_ping_handle->ping_common.datalen);
+            if(a_ping_handle->ping_common.datalen > MAXPACKET - 8)
+                error(2, 0, "packet size too large: %d", a_ping_handle->ping_common.datalen);
+            break;
+        case 'S':
+            a_ping_handle->ping_common.sndbuf = atoi(optarg);
+            if(a_ping_handle->ping_common.sndbuf <= 0)
+                error(2, 0, "bad sndbuf value: %s", optarg);
+            break;
+        case 't':
+            a_ping_handle->ping_common.options |= F_TTL;
+            a_ping_handle->ping_common.ttl = atoi(optarg);
+            if(a_ping_handle->ping_common.ttl < 0 || a_ping_handle->ping_common.ttl > 255)
+                error(2, 0, "ttl out of range: %s", optarg);
+            break;
+        case 'U':
+            a_ping_handle->ping_common.options |= F_LATENCY;
+            break;
+        case 'v':
+            a_ping_handle->ping_common.options |= F_VERBOSE;
+            break;
+        case 'V':
+            printf(IPUTILS_VERSION("ping"));
+            exit(0);
+        case 'w':
+            a_ping_handle->ping_common.deadline = atoi(optarg);
+            if(a_ping_handle->ping_common.deadline < 0)
+                error(2, 0, "bad wait time: %s", optarg);
+            break;
+        case 'W':
+            {
+            double optval;
+
+            optval = ping_strtod(optarg, "bad linger time");
+            if(isless(optval, 0.001) || isgreater(optval, (double)(INT_MAX / 1000)))
+                error(2, 0, "bad linger time: %s", optarg);
+            /* lingertime will be converted to usec later */
+            a_ping_handle->ping_common.lingertime = (int) (optval * 1000);
+        }
+            break;
+        default:
+            usage();
+            break;
+        }
+    }
+
+    argc -= optind;
+    argv += optind;
+    optind = 0;
+
+    if(!argc)
+    {
+        //error(1, EDESTADDRREQ, "usage error");
+        return -EDESTADDRREQ;//    89  Destination address required
+    }
+
+    target = argv[argc - 1];
+
+    /* Create sockets */
+    enable_capability_raw(a_ping_handle);
+    if(hints.ai_family != AF_INET6)
+        create_socket(a_ping_handle, &sock4, AF_INET, hints.ai_socktype, IPPROTO_ICMP, hints.ai_family == AF_INET);
+    if(hints.ai_family != AF_INET) {
+        create_socket(a_ping_handle, &sock6, AF_INET6, hints.ai_socktype, IPPROTO_ICMPV6, sock4.fd == -1);
+        /* This may not be needed if both protocol versions always had the same value, but
+         * since I don't know that, it's better to be safe than sorry. */
+        a_ping_handle->pmtudisc = a_ping_handle->pmtudisc == IP_PMTUDISC_DO ? IPV6_PMTUDISC_DO :
+                                  a_ping_handle->pmtudisc == IP_PMTUDISC_DONT ? IPV6_PMTUDISC_DONT :
+                                  a_ping_handle->pmtudisc == IP_PMTUDISC_WANT ? IPV6_PMTUDISC_WANT : a_ping_handle->pmtudisc;
+    }
+    disable_capability_raw(a_ping_handle);
+
+    /* Limit address family on single-protocol systems */
+    if(hints.ai_family == AF_UNSPEC) {
+        if(sock4.fd == -1)
+            hints.ai_family = AF_INET6;
+        else if(sock6.fd == -1)
+            hints.ai_family = AF_INET;
+    }
+
+    /* Set socket options */
+    if(a_ping_handle->settos)
+        set_socket_option(&sock4, IPPROTO_IP, IP_TOS, &a_ping_handle->settos, sizeof (a_ping_handle->settos));
+    if(tclass)
+        set_socket_option(&sock6, IPPROTO_IPV6, IPV6_TCLASS, &tclass, sizeof tclass);
+
+    status = getaddrinfo(target, NULL, &hints, &result);
+    if(status)
+    {
+        //error(2, 0, "%s: %s", target, gai_strerror(status));
+        return -EADDRNOTAVAIL;//
+    }
+
+    for(ai = result; ai; ai = ai->ai_next) {
+        switch (ai->ai_family) {
+        case AF_INET:
+            status = ping4_run(a_ping_handle, argc, argv, ai, &sock4);
+            break;
+        case AF_INET6:
+            status = ping6_run(a_ping_handle, argc, argv, ai, &sock6);
+            break;
+        default:
+        {
+            //error(2, 0, "unknown protocol family: %d", ai->ai_family);
+            return -EPFNOSUPPORT;
+        }
+        }
+
+        if(status == 0)
+            break;
+    }
+
+    freeaddrinfo(result);
+
+    return status;
+}
+
+/**
+ * Send ping
+ *
+ * @type for ipv4=4, for ipv6=6
+ * @addr host name or IP address
+ * @count number of packets to transmit
+ * @return ping time in microsecond or -1 if error
+ */
+int ping_util_common(ping_handle_t *a_ping_handle, int type, const char *addr, int count)
+{
+
+    /*
+     rights for /bin/ping: -rwsr-xr-x 1 root root
+     current parametr:
+     # sysctl net.ipv4.ping_group_range
+     net.ipv4.ping_group_range = 1   0
+     Need change range for other users:
+     # sysctl net.ipv4.ping_group_range="1 65000"
+     */
+    a_ping_handle->ping_common.tsum = a_ping_handle->ping_common.ntransmitted = a_ping_handle->ping_common.nreceived = exiting = 0;
+    int argc = 3;
+    const char *argv[argc];
+    if(type != 4)
+        argv[0] = "ping6";
+    else
+        argv[0] = "ping4";
+    argv[1] = dap_strdup_printf("-c%d", count);
+    argv[2] = addr;
+    int status = ping_main(a_ping_handle, argc, (char**) argv);
+    DAP_DELETE((char*) argv[1]);
+    if(a_ping_handle->ping_common.ntransmitted >= 1 && a_ping_handle->ping_common.nreceived >= 1)
+        return a_ping_handle->ping_common.tsum;
+    return status;
+}
+
+/**
+ * Send ping for ipv4
+ *
+ * @addr host name or IP address
+ * @count number of packets to transmit
+ * @return ping time in microsecond or -1 if error
+ */
+int ping_util(ping_handle_t *a_ping_handle, const char *addr, int count)
+{
+    return ping_util_common(a_ping_handle, 4, addr, count);
+}
+
+/**
+ * Send ping for ipv6
+ *
+ * @addr host name or IP address
+ * @count number of packets to transmit
+ * @return ping time in microsecond or -1 if error
+ */
+int ping_util6(ping_handle_t *a_ping_handle, const char *addr, int count)
+{
+    return ping_util_common(a_ping_handle, 6, addr, count);
+}
+
+int ping4_run(ping_handle_t *a_ping_handle, int argc, char **argv, struct addrinfo *ai, socket_st *sock)
+{
+    static const struct addrinfo hints = { .ai_family = AF_INET, .ai_protocol = IPPROTO_UDP, .ai_flags =
+    getaddrinfo_flags };
+    int hold, packlen;
+    unsigned char *packet;
+    char *target;
+    char hnamebuf[NI_MAXHOST];
+    unsigned char rspace[3 + 4 * NROUTES + 1]; /* record route space */
+    uint32_t *tmp_rspace;
+
+    if(argc > 1) {
+        if(a_ping_handle->ping_common.options & F_RROUTE)
+            usage();
+        else if(a_ping_handle->ping_common.options & F_TIMESTAMP) {
+            if(a_ping_handle->ts_type != IPOPT_TS_PRESPEC)
+                usage();
+            if(argc > 5)
+                usage();
+        } else {
+            if(argc > 10)
+                usage();
+            a_ping_handle->ping_common.options |= F_SOURCEROUTE;
+        }
+    }
+    while(argc > 0) {
+        target = *argv;
+
+        memset((char *) &a_ping_handle->whereto, 0, sizeof(a_ping_handle->whereto));
+        a_ping_handle->whereto.sin_family = AF_INET;
+        if(inet_aton(target, &a_ping_handle->whereto.sin_addr) == 1) {
+            a_ping_handle->ping_common.hostname = target;
+            if(argc == 1)
+                a_ping_handle->ping_common.options |= F_NUMERIC;
+        } else {
+            struct addrinfo *result = NULL;
+            int status;
+
+            if(argc > 1 || !ai) {
+                status = getaddrinfo(target, NULL, &hints, &result);
+                if(status)
+                    error(2, 0, "%s: %s", target, gai_strerror(status));
+                ai = result;
+            }
+
+            memcpy(&a_ping_handle->whereto, ai->ai_addr, sizeof (a_ping_handle->whereto));
+            memset(hnamebuf, 0, sizeof hnamebuf);
+            if(ai->ai_canonname)
+                strncpy(hnamebuf, ai->ai_canonname, sizeof hnamebuf - 1);
+            a_ping_handle->ping_common.hostname = hnamebuf;
+
+            if(result)
+                freeaddrinfo(result);
+        }
+        if(argc > 1)
+            a_ping_handle->route[a_ping_handle->nroute++] = a_ping_handle->whereto.sin_addr.s_addr;
+        argc--;
+        argv++;
+    }
+
+    if(a_ping_handle->source.sin_addr.s_addr == 0) {
+        socklen_t alen;
+        struct sockaddr_in dst = a_ping_handle->whereto;
+        int probe_fd = socket(AF_INET, SOCK_DGRAM, 0);
+
+        if(probe_fd < 0)
+            error(2, errno, "socket");
+        if(a_ping_handle->device) {
+            struct ifreq ifr;
+            int i;
+            int fds[2] = { probe_fd, sock->fd };
+
+            memset(&ifr, 0, sizeof(ifr));
+            strncpy(ifr.ifr_name, a_ping_handle->device, IFNAMSIZ - 1);
+
+            for(i = 0; i < 2; i++) {
+                int fd = fds[i];
+                int rc;
+                int errno_save;
+
+                enable_capability_raw(a_ping_handle);
+                rc = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, a_ping_handle->device, strlen(a_ping_handle->device) + 1);
+                errno_save = errno;
+                disable_capability_raw(a_ping_handle);
+
+                if(rc == -1) {
+                    if(IN_MULTICAST(ntohl(dst.sin_addr.s_addr))) {
+                        struct ip_mreqn imr;
+                        if(ioctl(fd, SIOCGIFINDEX, &ifr) < 0)
+                            error(2, 0, "unknown iface: %s", a_ping_handle->device);
+                        memset(&imr, 0, sizeof(imr));
+                        imr.imr_ifindex = ifr.ifr_ifindex;
+                        if(setsockopt(fd, SOL_IP, IP_MULTICAST_IF, &imr, sizeof(imr)) == -1)
+                            error(2, errno, "IP_MULTICAST_IF");
+                    } else
+                        error(2, errno_save, "SO_BINDTODEVICE %s", a_ping_handle->device);
+                }
+            }
+        }
+
+        if(a_ping_handle->settos &&
+                setsockopt(probe_fd, IPPROTO_IP, IP_TOS, (char *) &a_ping_handle->settos, sizeof(int)) < 0)
+            error(0, errno, "warning: QOS sockopts");
+
+        dst.sin_port = htons(1025);
+        if(a_ping_handle->nroute)
+            dst.sin_addr.s_addr = a_ping_handle->route[0];
+        if(connect(probe_fd, (struct sockaddr*) &dst, sizeof(dst)) == -1) {
+            if(errno == EACCES) {
+                if(a_ping_handle->broadcast_pings == 0)
+                    error(2, 0,
+                            "Do you want to ping broadcast? Then -b. If not, check your local firewall rules");
+                fprintf(stderr, "WARNING: pinging broadcast address\n");
+                if(setsockopt(probe_fd, SOL_SOCKET, SO_BROADCAST,
+                        &a_ping_handle->broadcast_pings, sizeof(a_ping_handle->broadcast_pings)) < 0)
+                    error(2, errno, "cannot set broadcasting");
+                if(connect(probe_fd, (struct sockaddr*) &dst, sizeof(dst)) == -1)
+                    error(2, errno, "connect");
+            } else
+                error(2, errno, "connect");
+        }
+        alen = sizeof(a_ping_handle->source);
+        if(getsockname(probe_fd, (struct sockaddr*) &a_ping_handle->source, &alen) == -1)
+            error(2, errno, "getsockname");
+        a_ping_handle->source.sin_port = 0;
+
+        if(a_ping_handle->device) {
+            struct ifaddrs *ifa0, *ifa;
+            int ret;
+
+            ret = getifaddrs(&ifa0);
+            if(ret)
+                error(2, errno, "gatifaddrs failed");
+            for(ifa = ifa0; ifa; ifa = ifa->ifa_next) {
+                if(!ifa->ifa_name || !ifa->ifa_addr ||
+                        ifa->ifa_addr->sa_family != AF_INET)
+                    continue;
+                if(!strcmp(ifa->ifa_name, a_ping_handle->device) &&
+                        !memcmp(&((struct sockaddr_in *) ifa->ifa_addr)->sin_addr,
+                                &a_ping_handle->source.sin_addr, sizeof(a_ping_handle->source.sin_addr)))
+                    break;
+            }
+            if(ifa && !memcmp(&((struct sockaddr_in *) ifa->ifa_addr)->sin_addr,
+                    &dst.sin_addr, sizeof(a_ping_handle->source.sin_addr))) {
+                enable_capability_raw(a_ping_handle);
+                setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, "", 0);
+                disable_capability_raw(a_ping_handle);
+            }
+            freeifaddrs(ifa0);
+            if(!ifa)
+                error(0, 0, "Warning: source address might be selected on device other than: %s", a_ping_handle->device);
+        }
+        close(probe_fd);
+    }
+    while(0)
+        ;
+
+    if(a_ping_handle->whereto.sin_addr.s_addr == 0)
+        a_ping_handle->whereto.sin_addr.s_addr = a_ping_handle->source.sin_addr.s_addr;
+
+    if(a_ping_handle->device) {
+        struct ifreq ifr;
+
+        memset(&ifr, 0, sizeof(ifr));
+        strncpy(ifr.ifr_name, a_ping_handle->device, IFNAMSIZ - 1);
+        if(ioctl(sock->fd, SIOCGIFINDEX, &ifr) < 0)
+            error(2, 0, "unknown iface: %s", a_ping_handle->device);
+    }
+
+    if(a_ping_handle->broadcast_pings || IN_MULTICAST(ntohl(a_ping_handle->whereto.sin_addr.s_addr))) {
+        if(a_ping_handle->ping_common.uid) {
+            if(a_ping_handle->ping_common.interval < 1000)
+                error(2, 0, "broadcast ping with too short interval: %d", a_ping_handle->ping_common.interval);
+            if(a_ping_handle->pmtudisc >= 0 && a_ping_handle->pmtudisc != IP_PMTUDISC_DO)
+                error(2, 0, "broadcast ping does not fragment");
+        }
+        if(a_ping_handle->pmtudisc < 0)
+            a_ping_handle->pmtudisc = IP_PMTUDISC_DO;
+    }
+
+    if(a_ping_handle->pmtudisc >= 0) {
+        if(setsockopt(sock->fd, SOL_IP, IP_MTU_DISCOVER, &a_ping_handle->pmtudisc, sizeof (a_ping_handle->pmtudisc)) == -1)
+            error(2, errno, "IP_MTU_DISCOVER");
+    }
+
+    if((a_ping_handle->ping_common.options & F_STRICTSOURCE) &&
+            bind(sock->fd, (struct sockaddr *) &a_ping_handle->source, sizeof (a_ping_handle->source)) == -1)
+        error(2, errno, "bind");
+
+    if(sock->socktype == SOCK_RAW) {
+        struct icmp_filter filt;
+        filt.data = ~((1 << ICMP_SOURCE_QUENCH) |
+                (1 << ICMP_DEST_UNREACH) |
+                (1 << ICMP_TIME_EXCEEDED) |
+                (1 << ICMP_PARAMETERPROB) |
+                (1 << ICMP_REDIRECT) |
+                (1 << ICMP_ECHOREPLY));
+        if(setsockopt(sock->fd, SOL_RAW, ICMP_FILTER, &filt, sizeof filt) == -1)
+            error(0, errno, "WARNING: setsockopt(ICMP_FILTER)");
+    }
+
+    hold = 1;
+    if(setsockopt(sock->fd, SOL_IP, IP_RECVERR, &hold, sizeof hold))
+        error(0, 0, "WARNING: your kernel is veeery old. No problems.");
+
+    if(sock->socktype == SOCK_DGRAM) {
+        if(setsockopt(sock->fd, SOL_IP, IP_RECVTTL, &hold, sizeof hold))
+            error(0, errno, "WARNING: setsockopt(IP_RECVTTL)");
+        if(setsockopt(sock->fd, SOL_IP, IP_RETOPTS, &hold, sizeof hold))
+            error(0, errno, "WARNING: setsockopt(IP_RETOPTS)");
+    }
+
+    /* record route option */
+    if(a_ping_handle->ping_common.options & F_RROUTE) {
+        memset(rspace, 0, sizeof(rspace));
+        rspace[0] = IPOPT_NOP;
+        rspace[1 + IPOPT_OPTVAL] = IPOPT_RR;
+        rspace[1 + IPOPT_OLEN] = sizeof(rspace) - 1;
+        rspace[1 + IPOPT_OFFSET] = IPOPT_MINOFF;
+        a_ping_handle->optlen = 40;
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_OPTIONS, rspace, sizeof rspace) < 0)
+            error(2, errno, "record route");
+    }
+    if(a_ping_handle->ping_common.options & F_TIMESTAMP) {
+        memset(rspace, 0, sizeof(rspace));
+        rspace[0] = IPOPT_TIMESTAMP;
+        rspace[1] = (a_ping_handle->ts_type == IPOPT_TS_TSONLY ? 40 : 36);
+        rspace[2] = 5;
+        rspace[3] = a_ping_handle->ts_type;
+        if(a_ping_handle->ts_type == IPOPT_TS_PRESPEC) {
+            int i;
+            rspace[1] = 4 + a_ping_handle->nroute * 8;
+            for(i = 0; i < a_ping_handle->nroute; i++) {
+                tmp_rspace = (uint32_t*) &rspace[4 + i * 8];
+                *tmp_rspace = a_ping_handle->route[i];
+            }
+        }
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_OPTIONS, rspace, rspace[1]) < 0) {
+            rspace[3] = 2;
+            if(setsockopt(sock->fd, IPPROTO_IP, IP_OPTIONS, rspace, rspace[1]) < 0)
+                error(2, errno, "ts option");
+        }
+        a_ping_handle->optlen = 40;
+    }
+    if(a_ping_handle->ping_common.options & F_SOURCEROUTE) {
+        int i;
+        memset(rspace, 0, sizeof(rspace));
+        rspace[0] = IPOPT_NOOP;
+        rspace[1 + IPOPT_OPTVAL] = (a_ping_handle->ping_common.options & F_SO_DONTROUTE) ? IPOPT_SSRR
+                                                                :
+                                                                IPOPT_LSRR;
+        rspace[1 + IPOPT_OLEN] = 3 + a_ping_handle->nroute * 4;
+        rspace[1 + IPOPT_OFFSET] = IPOPT_MINOFF;
+        for(i = 0; i < a_ping_handle->nroute; i++) {
+            tmp_rspace = (uint32_t*) &rspace[4 + i * 4];
+            *tmp_rspace = a_ping_handle->route[i];
+        }
+
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_OPTIONS, rspace, 4 + a_ping_handle->nroute * 4) < 0)
+            error(2, errno, "record route");
+        a_ping_handle->optlen = 40;
+    }
+
+    /* Estimate memory eaten by single packet. It is rough estimate.
+     * Actually, for small datalen's it depends on kernel side a lot. */
+    hold = a_ping_handle->ping_common.datalen + 8;
+    hold += ((hold + 511) / 512) * (a_ping_handle->optlen + 20 + 16 + 64 + 160);
+    sock_setbufs(a_ping_handle, sock, hold);
+
+    if(a_ping_handle->broadcast_pings) {
+        if(setsockopt(sock->fd, SOL_SOCKET, SO_BROADCAST, &a_ping_handle->broadcast_pings, sizeof (a_ping_handle->broadcast_pings)) < 0)
+            error(2, errno, "cannot set broadcasting");
+    }
+
+    if(a_ping_handle->ping_common.options & F_NOLOOP) {
+        int loop = 0;
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof loop) == -1)
+            error(2, errno, "cannot disable multicast loopback");
+    }
+    if(a_ping_handle->ping_common.options & F_TTL) {
+        int ittl = a_ping_handle->ping_common.ttl;
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_TTL, &a_ping_handle->ping_common.ttl, sizeof (a_ping_handle->ping_common.ttl)) == -1)
+            error(2, errno, "cannot set multicast time-to-live");
+        if(setsockopt(sock->fd, IPPROTO_IP, IP_TTL, &ittl, sizeof ittl) == -1)
+            error(2, errno, "cannot set unicast time-to-live");
+    }
+
+    if(a_ping_handle->ping_common.datalen > 0xFFFF - 8 - a_ping_handle->optlen - 20)
+        error(2, 0, "packet size %d is too large. Maximum is %d",
+                a_ping_handle->ping_common.datalen, 0xFFFF - 8 - 20 - a_ping_handle->optlen);
+
+    if(a_ping_handle->ping_common.datalen >= (int) sizeof(struct timeval)) /* can we time transfer */
+        a_ping_handle->ping_common.timing = 1;
+    packlen = a_ping_handle->ping_common.datalen + MAXIPLEN + MAXICMPLEN;
+    if(!(packet = (unsigned char *) malloc((unsigned int) packlen)))
+        error(2, errno, "memory allocation failed");
+
+//printf("PING %s (%s) ", hostname, inet_ntoa(whereto.sin_addr));
+    if(a_ping_handle->device || (a_ping_handle->ping_common.options & F_STRICTSOURCE))
+        printf("from %s %s: ", inet_ntoa(a_ping_handle->source.sin_addr), a_ping_handle->device ? a_ping_handle->device : "");
+//printf("%d(%d) bytes of data.\n", datalen, datalen + 8 + optlen + 20);
+
+    setup(a_ping_handle, sock);
+    log_printf("main_loop start %s (%s)\n", a_ping_handle->ping_common.hostname, inet_ntoa(a_ping_handle->whereto.sin_addr));
+    main_loop(a_ping_handle, &ping4_func_set, sock, packet, packlen);
+    log_printf("main_loop end\n");
+    return 0;
+}
+
+int ping4_receive_error_msg(ping_handle_t *a_ping_handle, socket_st *sock)
+{
+    ssize_t res;
+    char cbuf[512];
+    struct iovec iov;
+    struct msghdr msg;
+    struct cmsghdr *cmsgh;
+    struct sock_extended_err *e;
+    struct icmphdr icmph;
+    struct sockaddr_in target;
+    int net_errors = 0;
+    int local_errors = 0;
+    int saved_errno = errno;
+
+    iov.iov_base = &icmph;
+    iov.iov_len = sizeof(icmph);
+    msg.msg_name = (void*) &target;
+    msg.msg_namelen = sizeof(target);
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_flags = 0;
+    msg.msg_control = cbuf;
+    msg.msg_controllen = sizeof(cbuf);
+    if(!sock)
+        return net_errors;
+    res = recvmsg(sock->fd, &msg, MSG_ERRQUEUE | MSG_DONTWAIT);
+    if(res < 0)
+        goto out;
+
+    e = NULL;
+    for(cmsgh = CMSG_FIRSTHDR(&msg); cmsgh; cmsgh = CMSG_NXTHDR(&msg, cmsgh)) {
+        if(cmsgh->cmsg_level == SOL_IP) {
+            if(cmsgh->cmsg_type == IP_RECVERR)
+                e = (struct sock_extended_err *) CMSG_DATA(cmsgh);
+        }
+    }
+    if(e == NULL)
+        abort();
+
+    if(e->ee_origin == SO_EE_ORIGIN_LOCAL) {
+        local_errors++;
+        if(a_ping_handle->ping_common.options & F_QUIET)
+            goto out;
+        if(a_ping_handle->ping_common.options & F_FLOOD)
+            write_stdout("E", 1);
+        else if(e->ee_errno != EMSGSIZE)
+            error(0, 0, "local error: %s", strerror(e->ee_errno));
+        else
+            error(0, 0, "local error: message too long, mtu=%u", e->ee_info);
+        a_ping_handle->ping_common.nerrors++;
+    } else if(e->ee_origin == SO_EE_ORIGIN_ICMP) {
+        struct sockaddr_in *sin = (struct sockaddr_in*) (e + 1);
+
+        if(res < (ssize_t) sizeof(icmph) ||
+                target.sin_addr.s_addr != a_ping_handle->whereto.sin_addr.s_addr ||
+                icmph.type != ICMP_ECHO ||
+                !is_ours(a_ping_handle, sock, icmph.un.echo.id)) {
+            /* Not our error, not an error at all. Clear. */
+            saved_errno = 0;
+            goto out;
+        }
+
+        acknowledge(a_ping_handle, ntohs(icmph.un.echo.sequence));
+
+        net_errors++;
+        a_ping_handle->ping_common.nerrors++;
+        if(a_ping_handle->ping_common.options & F_QUIET)
+            goto out;
+        if(a_ping_handle->ping_common.options & F_FLOOD) {
+            write_stdout("\bE", 2);
+        } else {
+            print_timestamp(a_ping_handle);
+            printf("From %s icmp_seq=%u ", pr_addr(a_ping_handle, sin, sizeof *sin), ntohs(icmph.un.echo.sequence));
+            pr_icmph(a_ping_handle, e->ee_type, e->ee_code, e->ee_info, NULL);
+            fflush(stdout);
+        }
+    }
+
+    out:
+    errno = saved_errno;
+    return net_errors ? net_errors : -local_errors;
+}
+
+/*
+ * pinger --
+ * 	Compose and transmit an ICMP ECHO REQUEST packet.  The IP packet
+ * will be added on by the kernel.  The ID field is our UNIX process ID,
+ * and the sequence number is an ascending integer.  The first several bytes
+ * of the data portion are used to hold a UNIX "timeval" struct in VAX
+ * byte-order, to compute the round-trip time.
+ */
+int ping4_send_probe(ping_handle_t *a_ping_handle, socket_st *sock, void *packet, unsigned packet_size __attribute__((__unused__)))
+{
+    struct icmphdr *icp;
+    int cc;
+    int i;
+
+    icp = (struct icmphdr *) packet;
+    icp->type = ICMP_ECHO;
+    icp->code = 0;
+    icp->checksum = 0;
+    icp->un.echo.sequence = htons(a_ping_handle->ping_common.ntransmitted + 1);
+    icp->un.echo.id = a_ping_handle->ping_common.ident; /* ID */
+
+    rcvd_clear(a_ping_handle, a_ping_handle->ping_common.ntransmitted + 1);
+
+    if(a_ping_handle->ping_common.timing) {
+        if(a_ping_handle->ping_common.options & F_LATENCY) {
+            struct timeval tmp_tv;
+            gettimeofday(&tmp_tv, NULL);
+            memcpy(icp + 1, &tmp_tv, sizeof(tmp_tv));
+        } else {
+            memset(icp + 1, 0, sizeof(struct timeval));
+        }
+    }
+
+    cc = a_ping_handle->ping_common.datalen + 8; /* skips ICMP portion */
+
+    /* compute ICMP checksum here */
+    icp->checksum = in_cksum((unsigned short *) icp, cc, 0);
+
+    if(a_ping_handle->ping_common.timing && !(a_ping_handle->ping_common.options & F_LATENCY)) {
+        struct timeval tmp_tv;
+        gettimeofday(&tmp_tv, NULL);
+        memcpy(icp + 1, &tmp_tv, sizeof(tmp_tv));
+        icp->checksum = in_cksum((unsigned short *) &tmp_tv, sizeof(tmp_tv), ~icp->checksum);
+    }
+
+    i = sendto(sock->fd, icp, cc, 0, (struct sockaddr*) &a_ping_handle->whereto, sizeof(a_ping_handle->whereto));
+    //log_printf("**sendto(fd=%d,icp=0x%x,cc=%d)=%d\n",sock->fd,&icp,cc,i);
+    return (cc == i ? 0 : i);
+}
+
+/*
+ * parse_reply --
+ *	Print out the packet, if it came from us.  This logic is necessary
+ * because ALL readers of the ICMP socket get a copy of ALL ICMP packets
+ * which arrive ('tis only fair).  This permits multiple copies of this
+ * program to be run without having intermingled output (or statistics!).
+ */
+static
+void pr_echo_reply(uint8_t *_icp, int len __attribute__((__unused__)))
+{
+    struct icmphdr *icp = (struct icmphdr *) _icp;
+    log_printf(" icmp_seq=%u", ntohs(icp->un.echo.sequence));
+}
+
+int
+ping4_parse_reply(ping_handle_t *a_ping_handle, struct socket_st *sock, struct msghdr *msg, int cc, void *addr, struct timeval *tv)
+{
+    struct sockaddr_in *from = addr;
+    uint8_t *buf = msg->msg_iov->iov_base;
+    struct icmphdr *icp;
+    struct iphdr *ip;
+    int hlen;
+    int csfailed;
+    struct cmsghdr *cmsgh;
+    int reply_ttl;
+    uint8_t *opts, *tmp_ttl;
+    int olen;
+
+    /* Check the IP header */
+    ip = (struct iphdr *) buf;
+    if(sock->socktype == SOCK_RAW) {
+        hlen = ip->ihl * 4;
+        if(cc < hlen + 8 || ip->ihl < 5) {
+            if(a_ping_handle->ping_common.options & F_VERBOSE)
+                error(0, 0, "packet too short (%d bytes) from %s", cc,
+                        pr_addr(a_ping_handle, from, sizeof *from));
+            return 1;
+        }
+        reply_ttl = ip->ttl;
+        opts = buf + sizeof(struct iphdr);
+        olen = hlen - sizeof(struct iphdr);
+    } else {
+        hlen = 0;
+        reply_ttl = 0;
+        opts = buf;
+        olen = 0;
+        for(cmsgh = CMSG_FIRSTHDR(msg); cmsgh; cmsgh = CMSG_NXTHDR(msg, cmsgh)) {
+            if(cmsgh->cmsg_level != SOL_IP)
+                continue;
+            if(cmsgh->cmsg_type == IP_TTL) {
+                if(cmsgh->cmsg_len < sizeof(int))
+                    continue;
+                tmp_ttl = (uint8_t *) CMSG_DATA(cmsgh);
+                reply_ttl = (int) *tmp_ttl;
+            } else if(cmsgh->cmsg_type == IP_RETOPTS) {
+                opts = (uint8_t *) CMSG_DATA(cmsgh);
+                olen = cmsgh->cmsg_len;
+            }
+        }
+    }
+
+    /* Now the ICMP part */
+    cc -= hlen;
+    icp = (struct icmphdr *) (buf + hlen);
+    csfailed = in_cksum((unsigned short *) icp, cc, 0);
+
+    if(icp->type == ICMP_ECHOREPLY) {
+        //log_printf("in ping4_parse_reply00\n");
+        if(!is_ours(a_ping_handle, sock, icp->un.echo.id))
+            return 1; /* 'Twas not our ECHO */
+        if(!contains_pattern_in_payload(a_ping_handle, (uint8_t*) (icp + 1)))
+            return 1; /* 'Twas really not our ECHO */
+        if(gather_statistics(a_ping_handle, (uint8_t*) icp, sizeof(*icp), cc,
+                ntohs(icp->un.echo.sequence),
+                reply_ttl, 0, tv, pr_addr(a_ping_handle, from, sizeof *from),
+                pr_echo_reply)) {
+            fflush(stdout);
+            return 0;
+        }
+        //log_printf("in ping4_parse_reply01\n");
+    } else {
+        /* We fall here when a redirect or source quench arrived. */
+        switch (icp->type) {
+        case ICMP_ECHO:
+            /* MUST NOT */
+            return 1;
+        case ICMP_SOURCE_QUENCH:
+            case ICMP_REDIRECT:
+            case ICMP_DEST_UNREACH:
+            case ICMP_TIME_EXCEEDED:
+            case ICMP_PARAMETERPROB:
+            {
+            struct iphdr * iph = (struct iphdr *) (&icp[1]);
+            struct icmphdr *icp1 = (struct icmphdr*) ((unsigned char *) iph + iph->ihl * 4);
+            int error_pkt;
+            if(cc < (int) (8 + sizeof(struct iphdr) + 8) ||
+                    cc < 8 + iph->ihl * 4 + 8)
+                return 1;
+            if(icp1->type != ICMP_ECHO ||
+                    iph->daddr != a_ping_handle->whereto.sin_addr.s_addr ||
+                    !is_ours(a_ping_handle, sock, icp1->un.echo.id))
+                return 1;
+            error_pkt = (icp->type != ICMP_REDIRECT &&
+                    icp->type != ICMP_SOURCE_QUENCH);
+            if(error_pkt) {
+                acknowledge(a_ping_handle, ntohs(icp1->un.echo.sequence));
+                return 0;
+            }
+            if(a_ping_handle->ping_common.options & (F_QUIET | F_FLOOD))
+                return 1;
+            print_timestamp(a_ping_handle);
+            log_printf("From %s: icmp_seq=%u ",
+                    pr_addr(a_ping_handle, from, sizeof *from),
+                    ntohs(icp1->un.echo.sequence));
+            if(csfailed)
+                log_printf("(BAD CHECKSUM)");
+            pr_icmph(a_ping_handle, icp->type, icp->code, ntohl(icp->un.gateway), icp);
+            return 1;
+        }
+        default:
+            /* MUST NOT */
+            break;
+        }
+        if((a_ping_handle->ping_common.options & F_FLOOD) && !(a_ping_handle->ping_common.options & (F_VERBOSE | F_QUIET))) {
+            if(!csfailed)
+                write_stdout("!E", 2);
+            else
+                write_stdout("!EC", 3);
+            return 0;
+        }
+        if(!(a_ping_handle->ping_common.options & F_VERBOSE) || a_ping_handle->ping_common.uid)
+            return 0;
+        if(a_ping_handle->ping_common.options & F_PTIMEOFDAY) {
+            struct timeval recv_time;
+            gettimeofday(&recv_time, NULL);
+            log_printf("%lu.%06lu ", (unsigned long) recv_time.tv_sec, (unsigned long) recv_time.tv_usec);
+        }
+        printf("From %s: ", pr_addr(a_ping_handle, from, sizeof *from));
+        if(csfailed) {
+            log_printf("(BAD CHECKSUM)\n");
+            return 0;
+        }
+        pr_icmph(a_ping_handle, icp->type, icp->code, ntohl(icp->un.gateway), icp);
+        return 0;
+    }
+
+    if(a_ping_handle->ping_common.options & F_AUDIBLE) {
+        log_printf("\a"); //putchar('\a');
+        if(a_ping_handle->ping_common.options & F_FLOOD)
+            fflush(stdout);
+    }
+    if(!(a_ping_handle->ping_common.options & F_FLOOD)) {
+        pr_options(a_ping_handle, opts, olen + sizeof(struct iphdr));
+
+        log_printf("\n"); //putchar('\n');
+        fflush(stdout);
+    }
+    return 0;
+}
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+# define ODDBYTE(v)	(v)
+#elif BYTE_ORDER == BIG_ENDIAN
+# define ODDBYTE(v)	((unsigned short)(v) << 8)
+#else
+# define ODDBYTE(v)	htons((unsigned short)(v) << 8)
+#endif
+
+unsigned short
+in_cksum(const unsigned short *addr, int len, unsigned short csum)
+{
+    int nleft = len;
+    const unsigned short *w = addr;
+    unsigned short answer;
+    int sum = csum;
+
+    /*
+     *  Our algorithm is simple, using a 32 bit accumulator (sum),
+     *  we add sequential 16 bit words to it, and at the end, fold
+     *  back all the carry bits from the top 16 bits into the lower
+     *  16 bits.
+     */
+    while(nleft > 1) {
+        sum += *w++;
+        nleft -= 2;
+    }
+
+    /* mop up an odd byte, if necessary */
+    if(nleft == 1)
+        sum += ODDBYTE(*(unsigned char * )w); /* le16toh() may be unavailable on old systems */
+
+    /*
+     * add back carry outs from top 16 bits to low 16 bits
+     */
+    sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */
+    sum += (sum >> 16); /* add carry */
+    answer = ~sum; /* truncate to 16 bits */
+    return (answer);
+}
+
+/*
+ * pr_icmph --
+ *	Print a descriptive string about an ICMP header.
+ */
+void pr_icmph(ping_handle_t *a_ping_handle, uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp)
+{
+    switch (type) {
+    case ICMP_ECHOREPLY:
+        printf("Echo Reply\n");
+        /* XXX ID + Seq + Data */
+        break;
+    case ICMP_DEST_UNREACH:
+        switch (code) {
+        case ICMP_NET_UNREACH:
+            printf("Destination Net Unreachable\n");
+            break;
+        case ICMP_HOST_UNREACH:
+            printf("Destination Host Unreachable\n");
+            break;
+        case ICMP_PROT_UNREACH:
+            printf("Destination Protocol Unreachable\n");
+            break;
+        case ICMP_PORT_UNREACH:
+            printf("Destination Port Unreachable\n");
+            break;
+        case ICMP_FRAG_NEEDED:
+            printf("Frag needed and DF set (mtu = %u)\n", info);
+            break;
+        case ICMP_SR_FAILED:
+            printf("Source Route Failed\n");
+            break;
+        case ICMP_NET_UNKNOWN:
+            printf("Destination Net Unknown\n");
+            break;
+        case ICMP_HOST_UNKNOWN:
+            printf("Destination Host Unknown\n");
+            break;
+        case ICMP_HOST_ISOLATED:
+            printf("Source Host Isolated\n");
+            break;
+        case ICMP_NET_ANO:
+            printf("Destination Net Prohibited\n");
+            break;
+        case ICMP_HOST_ANO:
+            printf("Destination Host Prohibited\n");
+            break;
+        case ICMP_NET_UNR_TOS:
+            printf("Destination Net Unreachable for Type of Service\n");
+            break;
+        case ICMP_HOST_UNR_TOS:
+            printf("Destination Host Unreachable for Type of Service\n");
+            break;
+        case ICMP_PKT_FILTERED:
+            printf("Packet filtered\n");
+            break;
+        case ICMP_PREC_VIOLATION:
+            printf("Precedence Violation\n");
+            break;
+        case ICMP_PREC_CUTOFF:
+            printf("Precedence Cutoff\n");
+            break;
+        default:
+            printf("Dest Unreachable, Bad Code: %d\n", code);
+            break;
+        }
+        if(icp && (a_ping_handle->ping_common.options & F_VERBOSE))
+            pr_iph(a_ping_handle, (struct iphdr*) (icp + 1));
+        break;
+    case ICMP_SOURCE_QUENCH:
+        printf("Source Quench\n");
+        if(icp && (a_ping_handle->ping_common.options & F_VERBOSE))
+            pr_iph(a_ping_handle, (struct iphdr*) (icp + 1));
+        break;
+    case ICMP_REDIRECT:
+        switch (code) {
+        case ICMP_REDIR_NET:
+            printf("Redirect Network");
+            break;
+        case ICMP_REDIR_HOST:
+            printf("Redirect Host");
+            break;
+        case ICMP_REDIR_NETTOS:
+            printf("Redirect Type of Service and Network");
+            break;
+        case ICMP_REDIR_HOSTTOS:
+            printf("Redirect Type of Service and Host");
+            break;
+        default:
+            printf("Redirect, Bad Code: %d", code);
+            break;
+        }
+        {
+            struct sockaddr_in sin = { .sin_family = AF_INET, .sin_addr = { icp ? icp->un.gateway : info } };
+
+            printf("(New nexthop: %s)\n", pr_addr(a_ping_handle, &sin, sizeof sin));
+        }
+        if(icp && (a_ping_handle->ping_common.options & F_VERBOSE))
+            pr_iph(a_ping_handle, (struct iphdr*) (icp + 1));
+        break;
+    case ICMP_ECHO:
+        printf("Echo Request\n");
+        /* XXX ID + Seq + Data */
+        break;
+    case ICMP_TIME_EXCEEDED:
+        switch (code) {
+        case ICMP_EXC_TTL:
+            printf("Time to live exceeded\n");
+            break;
+        case ICMP_EXC_FRAGTIME:
+            printf("Frag reassembly time exceeded\n");
+            break;
+        default:
+            printf("Time exceeded, Bad Code: %d\n", code);
+            break;
+        }
+        if(icp && (a_ping_handle->ping_common.options & F_VERBOSE))
+            pr_iph(a_ping_handle, (struct iphdr*) (icp + 1));
+        break;
+    case ICMP_PARAMETERPROB:
+        printf("Parameter problem: pointer = %u\n", icp ? (ntohl(icp->un.gateway) >> 24) : info);
+        if(icp && (a_ping_handle->ping_common.options & F_VERBOSE))
+            pr_iph(a_ping_handle, (struct iphdr*) (icp + 1));
+        break;
+    case ICMP_TIMESTAMP:
+        printf("Timestamp\n");
+        /* XXX ID + Seq + 3 timestamps */
+        break;
+    case ICMP_TIMESTAMPREPLY:
+        printf("Timestamp Reply\n");
+        /* XXX ID + Seq + 3 timestamps */
+        break;
+    case ICMP_INFO_REQUEST:
+        printf("Information Request\n");
+        /* XXX ID + Seq */
+        break;
+    case ICMP_INFO_REPLY:
+        printf("Information Reply\n");
+        /* XXX ID + Seq */
+        break;
+#ifdef ICMP_MASKREQ
+    case ICMP_MASKREQ:
+        printf("Address Mask Request\n");
+        break;
+#endif
+#ifdef ICMP_MASKREPLY
+    case ICMP_MASKREPLY:
+        printf("Address Mask Reply\n");
+        break;
+#endif
+    default:
+        printf("Bad ICMP type: %d\n", type);
+    }
+}
+
+void pr_options(ping_handle_t *a_ping_handle, unsigned char * cp, int hlen)
+{
+    int i, j;
+    int olen, totlen;
+    unsigned char * optptr;
+    static int old_rrlen;
+    static char old_rr[MAX_IPOPTLEN];
+
+    totlen = hlen - sizeof(struct iphdr);
+    optptr = cp;
+
+    while(totlen > 0) {
+        if(*optptr == IPOPT_EOL)
+            break;
+        if(*optptr == IPOPT_NOP) {
+            totlen--;
+            optptr++;
+            printf("\nNOP");
+            continue;
+        }
+        cp = optptr;
+        olen = optptr[1];
+        if(olen < 2 || olen > totlen)
+            break;
+
+        switch (*cp) {
+        case IPOPT_SSRR:
+            case IPOPT_LSRR:
+            printf("\n%cSRR: ", *cp == IPOPT_SSRR ? 'S' : 'L');
+            j = *++cp;
+            cp++;
+            if(j > IPOPT_MINOFF) {
+                for(;;) {
+                    uint32_t address;
+                    memcpy(&address, cp, 4);
+                    cp += 4;
+                    if(address == 0)
+                        printf("\t0.0.0.0");
+                    else {
+                        struct sockaddr_in sin = { .sin_family = AF_INET, .sin_addr = { address } };
+
+                        printf("\t%s", pr_addr(a_ping_handle, &sin, sizeof sin));
+                    }
+                    j -= 4;
+                    putchar('\n');
+                    if(j <= IPOPT_MINOFF)
+                        break;
+                }
+            }
+            break;
+        case IPOPT_RR:
+            j = *++cp; /* get length */
+            i = *++cp; /* and pointer */
+            if(i > j)
+                i = j;
+            i -= IPOPT_MINOFF;
+            if(i <= 0)
+                break;
+            if(i == old_rrlen
+                    && !memcmp(cp, old_rr, i)
+                    && !(a_ping_handle->ping_common.options & F_FLOOD)) {
+                printf("\t(same route)");
+                break;
+            }
+            old_rrlen = i;
+            memcpy(old_rr, (char *) cp, i);
+            printf("\nRR: ");
+            cp++;
+            for(;;) {
+                uint32_t address;
+                memcpy(&address, cp, 4);
+                cp += 4;
+                if(address == 0)
+                    printf("\t0.0.0.0");
+                else {
+                    struct sockaddr_in sin = { .sin_family = AF_INET, .sin_addr = { address } };
+
+                    printf("\t%s", pr_addr(a_ping_handle, &sin, sizeof sin));
+                }
+                i -= 4;
+                putchar('\n');
+                if(i <= 0)
+                    break;
+            }
+            break;
+        case IPOPT_TS:
+            {
+            int stdtime = 0, nonstdtime = 0;
+            uint8_t flags;
+            j = *++cp; /* get length */
+            i = *++cp; /* and pointer */
+            if(i > j)
+                i = j;
+            i -= 5;
+            if(i <= 0)
+                break;
+            flags = *++cp;
+            printf("\nTS: ");
+            cp++;
+            for(;;) {
+                long l;
+
+                if((flags & 0xF) != IPOPT_TS_TSONLY) {
+                    uint32_t address;
+                    memcpy(&address, cp, 4);
+                    cp += 4;
+                    if(address == 0)
+                        printf("\t0.0.0.0");
+                    else {
+                        struct sockaddr_in sin = { .sin_family = AF_INET, .sin_addr = { address } };
+
+                        printf("\t%s", pr_addr(a_ping_handle, &sin, sizeof sin));
+                    }
+                    i -= 4;
+                    if(i <= 0)
+                        break;
+                }
+                l = *cp++;
+                l = (l << 8) + *cp++;
+                l = (l << 8) + *cp++;
+                l = (l << 8) + *cp++;
+
+                if(l & 0x80000000) {
+                    if(nonstdtime == 0)
+                        printf("\t%ld absolute not-standard", l & 0x7fffffff);
+                    else
+                        printf("\t%ld not-standard", (l & 0x7fffffff) - nonstdtime);
+                    nonstdtime = l & 0x7fffffff;
+                } else {
+                    if(stdtime == 0)
+                        printf("\t%ld absolute", l);
+                    else
+                        printf("\t%ld", l - stdtime);
+                    stdtime = l;
+                }
+                i -= 4;
+                putchar('\n');
+                if(i <= 0)
+                    break;
+            }
+            if(flags >> 4)
+                printf("Unrecorded hops: %d\n", flags >> 4);
+            break;
+        }
+        default:
+            printf("\nunknown option %x", *cp);
+            break;
+        }
+        totlen -= olen;
+        optptr += olen;
+    }
+}
+
+/*
+ * pr_iph --
+ *	Print an IP header with options.
+ */
+void pr_iph(ping_handle_t *a_ping_handle, struct iphdr *ip)
+{
+    int hlen;
+    unsigned char *cp;
+
+    hlen = ip->ihl << 2;
+    cp = (unsigned char *) ip + 20; /* point to options */
+
+    printf("Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst Data\n");
+    printf(" %1x  %1x  %02x %04x %04x",
+            ip->version, ip->ihl, ip->tos, ip->tot_len, ip->id);
+    printf("   %1x %04x", ((ip->frag_off) & 0xe000) >> 13,
+            (ip->frag_off) & 0x1fff);
+    printf("  %02x  %02x %04x", ip->ttl, ip->protocol, ip->check);
+    printf(" %s ", inet_ntoa(*(struct in_addr *) &ip->saddr));
+    printf(" %s ", inet_ntoa(*(struct in_addr *) &ip->daddr));
+    printf("\n");
+    pr_options(a_ping_handle, cp, hlen);
+}
+
+/*
+ * pr_addr --
+ *
+ * Return an ascii host address optionally with a hostname.
+ */
+char *
+pr_addr(ping_handle_t *a_ping_handle, void *sa, socklen_t salen)
+{
+    static char buffer[4096] = "";
+    static struct sockaddr_storage last_sa = { 0, { 0 }, 0 };
+    static socklen_t last_salen = 0;
+    char name[NI_MAXHOST] = "";
+    char address[NI_MAXHOST] = "";
+
+    if(salen == last_salen && !memcmp(sa, &last_sa, salen))
+        return buffer;
+
+    memcpy(&last_sa, sa, (last_salen = salen));
+
+    a_ping_handle->ping_common.in_pr_addr = !setjmp(a_ping_handle->ping_common.pr_addr_jmp);
+
+    getnameinfo(sa, salen, address, sizeof address, NULL, 0, getnameinfo_flags | NI_NUMERICHOST);
+    if(!exiting && !(a_ping_handle->ping_common.options & F_NUMERIC))
+        getnameinfo(sa, salen, name, sizeof name, NULL, 0, getnameinfo_flags);
+
+    if(*name)
+        snprintf(buffer, sizeof buffer, "%s (%s)", name, address);
+    else
+        snprintf(buffer, sizeof buffer, "%s", address);
+
+    a_ping_handle->ping_common.in_pr_addr = 0;
+
+    return (buffer);
+}
+
+/* Set Type of Service (TOS) and other Quality of Service relating bits */
+int parsetos(char *str)
+{
+    const char *cp;
+    int tos;
+    char *ep;
+
+    /* handle both hex and decimal values */
+    if(str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) {
+        cp = str + 2;
+        tos = (int) strtol(cp, &ep, 16);
+    } else
+        tos = (int) strtol(str, &ep, 10);
+
+    /* doesn't look like decimal or hex, eh? */
+    if(*ep != '\0')
+        error(2, 0, "bad TOS value: %s", str);
+
+    if(tos > TOS_MAX)
+        error(2, 0, "the decimal value of TOS bits must be in range 0-255: %d", tos);
+    return (tos);
+}
+
+int parseflow(char *str)
+{
+    const char *cp;
+    unsigned long val;
+    char *ep;
+
+    /* handle both hex and decimal values */
+    if(str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) {
+        cp = str + 2;
+        val = (int) strtoul(cp, &ep, 16);
+    } else
+        val = (int) strtoul(str, &ep, 10);
+
+    /* doesn't look like decimal or hex, eh? */
+    if(*ep != '\0')
+        error(2, 0, "bad value for flowinfo: %s", str);
+
+    if(val & ~IPV6_FLOWINFO_FLOWLABEL)
+        error(2, 0, "flow value is greater than 20 bits: %s", str);
+    return (val);
+}
+
+void ping4_install_filter(ping_handle_t *a_ping_handle, socket_st *sock)
+{
+    static int once;
+    static struct sock_filter insns[] = {
+    BPF_STMT(BPF_LDX|BPF_B|BPF_MSH, 0), /* Skip IP header. F..g BSD... Look into ping6. */
+    BPF_STMT(BPF_LD|BPF_H|BPF_IND, 4), /* Load icmp echo ident */
+    BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0xAAAA, 0, 1), /* Ours? */
+    BPF_STMT(BPF_RET|BPF_K, ~0U), /* Yes, it passes. */
+    BPF_STMT(BPF_LD|BPF_B|BPF_IND, 0), /* Load icmp type */
+    BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMP_ECHOREPLY, 1, 0), /* Echo? */
+    BPF_STMT(BPF_RET|BPF_K, 0xFFFFFFF), /* No. It passes. */
+    BPF_STMT(BPF_RET|BPF_K, 0) /* Echo with wrong ident. Reject. */
+    };
+    static struct sock_fprog filter = {
+        sizeof insns / sizeof(insns[0]),
+        insns
+    };
+
+    if(once)
+        return;
+    once = 1;
+
+    /* Patch bpflet for current identifier. */
+    insns[2] = (struct sock_filter )BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(a_ping_handle->ping_common.ident), 0, 1);
+
+    if(setsockopt(sock->fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
+        error(0, errno, "WARNING: failed to install socket filter");
+}
diff --git a/modules/net/iputils/ping.h b/modules/net/iputils/ping.h
new file mode 100644
index 0000000000..651455289f
--- /dev/null
+++ b/modules/net/iputils/ping.h
@@ -0,0 +1,436 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+#include <signal.h>
+#include <poll.h>
+
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#define __USE_GNU
+
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/icmp6.h>
+
+#include <linux/filter.h>
+#include <linux/types.h>
+#include <linux/sockios.h>
+
+#include <sys/file.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <sys/uio.h>
+#include <ctype.h>
+#include <errno.h>
+#include <string.h>
+#include <netdb.h>
+#include <setjmp.h>
+
+#include <asm/byteorder.h>
+#include <sched.h>
+#include <math.h>
+
+#include <resolv.h>
+
+#include "iputils.h"
+
+#ifdef HAVE_ERROR_H
+#include <error.h>
+#else
+#include <stdarg.h>
+#endif
+
+#ifdef HAVE_LIBCAP
+#include <sys/prctl.h>
+#include <sys/capability.h>
+#endif
+
+#ifdef USE_IDN
+#include <locale.h>
+#include <idn2.h>
+
+#ifndef AI_IDN
+#define AI_IDN 0x0040
+#endif
+#ifndef AI_CANONIDN
+#define AI_CANONIDN 0x0080
+#endif
+#ifndef NI_IDN
+#define NI_IDN 32
+#endif
+
+#define getaddrinfo_flags (AI_CANONNAME | AI_IDN | AI_CANONIDN)
+#define getnameinfo_flags NI_IDN
+#else
+#define getaddrinfo_flags (AI_CANONNAME)
+#define getnameinfo_flags 0
+#endif
+
+#include <ifaddrs.h>
+#include <netinet/in.h>
+#include <linux/ipv6.h>
+#include <arpa/inet.h>
+#include <linux/types.h>
+#include <linux/errqueue.h>
+#include <linux/in6.h>
+
+#ifndef SCOPE_DELIMITER
+#define SCOPE_DELIMITER '%'
+#endif
+
+#define DEFDATALEN  (64 - 8)  /* default data length */
+
+#define MAXWAIT   10    /* max seconds to wait for response */
+#define MININTERVAL 10    /* Minimal interpacket gap */
+#define MINUSERINTERVAL 200   /* Minimal allowed interval for non-root */
+
+#define SCHINT(a) (((a) <= MININTERVAL) ? MININTERVAL : (a))
+
+/* various options */
+//extern int options;
+#define F_FLOOD   0x001
+#define F_INTERVAL  0x002
+#define F_NUMERIC 0x004
+#define F_PINGFILLED  0x008
+#define F_QUIET   0x010
+#define F_RROUTE  0x020
+#define F_SO_DEBUG  0x040
+#define F_SO_DONTROUTE  0x080
+#define F_VERBOSE 0x100
+#define F_TIMESTAMP 0x200
+#define F_SOURCEROUTE 0x400
+#define F_FLOOD_POLL  0x800
+#define F_LATENCY 0x1000
+#define F_AUDIBLE 0x2000
+#define F_ADAPTIVE  0x4000
+#define F_STRICTSOURCE  0x8000
+#define F_NOLOOP  0x10000
+#define F_TTL   0x20000
+#define F_MARK    0x40000
+#define F_PTIMEOFDAY  0x80000
+#define F_OUTSTANDING 0x100000
+#define F_FLOWINFO  0x200000
+#define F_TCLASS  0x400000
+
+/*
+ * MAX_DUP_CHK is the number of bits in received table, i.e. the maximum
+ * number of received sequence numbers we can keep track of.
+ */
+
+
+#if defined(__WORDSIZE) && __WORDSIZE == 64
+# define USE_BITMAP64
+#endif
+
+
+
+#if ((MAX_DUP_CHK >> (BITMAP_SHIFT + 3)) << (BITMAP_SHIFT + 3)) != MAX_DUP_CHK
+# error Please MAX_DUP_CHK and/or BITMAP_SHIFT
+#endif
+
+
+
+//extern struct rcvd_table rcvd_tbl;
+
+//#define A(a_ping_handle, bit)  (a_ping_handle->ping_common.rcvd_tbl.bitmap[(bit) >> BITMAP_SHIFT])  /* identify word in array */
+#define B(bit)  (((bitmap_t)1) << ((bit) & ((1 << BITMAP_SHIFT) - 1)))  /* identify bit in word */
+
+static inline void rcvd_set(ping_handle_t *a_ping_handle, uint16_t seq)
+{
+  unsigned bit = seq % MAX_DUP_CHK;
+  a_ping_handle->ping_common.rcvd_tbl.bitmap[(bit) >> BITMAP_SHIFT] |= B(bit);
+  //A(a_ping_handle, bit) |= B(bit);
+}
+
+static inline void rcvd_clear(ping_handle_t *a_ping_handle, uint16_t seq)
+{
+  unsigned bit = seq % MAX_DUP_CHK;
+  a_ping_handle->ping_common.rcvd_tbl.bitmap[(bit) >> BITMAP_SHIFT] &= ~B(bit);
+  //A(a_ping_handle, bit) &= ~B(bit);
+}
+
+static inline bitmap_t rcvd_test(ping_handle_t *a_ping_handle, uint16_t seq)
+{
+  unsigned bit = seq % MAX_DUP_CHK;
+  return (a_ping_handle->ping_common.rcvd_tbl.bitmap[(bit) >> BITMAP_SHIFT] & B(bit));
+  //return A(a_ping_handle, bit) & B(bit);
+}
+
+#ifndef HAVE_ERROR_H
+static void error(int status, int errnum, const char *format, ...)
+{
+  va_list ap;
+
+  fprintf(stderr, "ping: ");
+  va_start(ap, format);
+  vfprintf(stderr, format, ap);
+  va_end(ap);
+  if (errnum)
+    fprintf(stderr, ": %s\n", strerror(errnum));
+  else
+    fprintf(stderr, "\n");
+  if (status)
+    exit(status);
+}
+#endif
+
+/*
+extern int datalen;
+extern char *hostname;
+extern int uid;
+extern int ident;     // process id to identify our packets
+
+extern int sndbuf;
+extern int ttl;
+
+extern long npackets;     // max packets to transmit
+extern long nreceived;      // # of packets we got back
+extern long nrepeats;     // number of duplicates
+extern long ntransmitted;   // sequence # for outbound packets = #sent
+extern long nchecksum;      // replies with bad checksum
+extern long nerrors;      // icmp errors
+extern int interval;      // interval between packets (msec)
+extern int preload;
+extern int deadline;      // time to die
+extern int lingertime;
+extern struct timeval start_time, cur_time;
+extern int confirm;
+extern int confirm_flag;
+extern char *device;
+extern int pmtudisc;
+
+extern volatile int in_pr_addr;   // pr_addr() is executing
+extern jmp_buf pr_addr_jmp;
+*/
+
+extern volatile int exiting;
+extern volatile int status_snapshot;
+
+#ifndef MSG_CONFIRM
+#define MSG_CONFIRM 0
+#endif
+
+
+/* timing */
+/*
+extern int timing;      // flag to do timing
+extern long tmin;     // minimum round trip time
+extern long tmax;     // maximum round trip time
+extern long long tsum;      // sum of all times, for doing average
+extern long long tsum2;
+extern int rtt;
+extern uint16_t acked;
+extern int pipesize;
+*/
+
+/*
+ * Write to stdout
+ */
+static inline void write_stdout(const char *str, size_t len)
+{
+  size_t o = 0;
+  ssize_t cc;
+  do {
+    cc = write(STDOUT_FILENO, str + o, len - o);
+    o += cc;
+  } while (len > o || cc < 0);
+}
+
+/*
+ * tvsub --
+ *  Subtract 2 timeval structs:  out = out - in.  Out is assumed to
+ * be >= in.
+ */
+static inline void tvsub(struct timeval *out, struct timeval *in)
+{
+  if ((out->tv_usec -= in->tv_usec) < 0) {
+    --out->tv_sec;
+    out->tv_usec += 1000000;
+  }
+  out->tv_sec -= in->tv_sec;
+}
+
+static inline void set_signal(int signo, void (*handler)(int))
+{
+  struct sigaction sa;
+
+  memset(&sa, 0, sizeof(sa));
+
+  sa.sa_handler = (void (*)(int))handler;
+  sigaction(signo, &sa, NULL);
+}
+
+extern int __schedule_exit(ping_handle_t *a_ping_handle, int next);
+
+static inline int schedule_exit(ping_handle_t  *a_ping_handle, int next)
+{
+  if (a_ping_handle->ping_common.npackets && a_ping_handle->ping_common.ntransmitted >= a_ping_handle->ping_common.npackets
+          && !a_ping_handle->ping_common.deadline)
+    next = __schedule_exit(a_ping_handle, next);
+  return next;
+}
+
+static inline int in_flight(ping_handle_t *a_ping_handle)
+{
+  uint16_t diff = (uint16_t)a_ping_handle->ping_common.ntransmitted - a_ping_handle->ping_common.acked;
+  return (diff<=0x7FFF) ? diff : a_ping_handle->ping_common.ntransmitted-a_ping_handle->ping_common.nreceived-a_ping_handle->ping_common.nerrors;
+}
+
+static inline void acknowledge(ping_handle_t *a_ping_handle, uint16_t seq)
+{
+  uint16_t diff = (uint16_t)a_ping_handle->ping_common.ntransmitted - seq;
+  if (diff <= 0x7FFF) {
+    if ((int)diff+1 > a_ping_handle->ping_common.pipesize)
+        a_ping_handle->ping_common.pipesize = (int)diff+1;
+    if ((int16_t)(seq - a_ping_handle->ping_common.acked) > 0 ||
+        (uint16_t)a_ping_handle->ping_common.ntransmitted - a_ping_handle->ping_common.acked > 0x7FFF)
+        a_ping_handle->ping_common.acked = seq;
+  }
+}
+
+static inline void advance_ntransmitted(ping_handle_t  *a_ping_handle)
+{
+    a_ping_handle->ping_common.ntransmitted++;
+  /* Invalidate acked, if 16 bit seq overflows. */
+  if ((uint16_t)a_ping_handle->ping_common.ntransmitted - a_ping_handle->ping_common.acked > 0x7FFF)
+      a_ping_handle->ping_common.acked = (uint16_t)a_ping_handle->ping_common.ntransmitted + 1;
+}
+
+extern void usage(void) __attribute__((noreturn));
+extern void limit_capabilities(ping_handle_t *a_ping_handle);
+static int enable_capability_raw(ping_handle_t *a_ping_handle);
+static int disable_capability_raw(ping_handle_t *a_ping_handle);
+static int enable_capability_admin(ping_handle_t *a_ping_handle);
+static int disable_capability_admin(ping_handle_t *a_ping_handle);
+#ifdef HAVE_LIBCAP
+extern int modify_capability(cap_value_t, cap_flag_value_t);
+static inline int enable_capability_raw(void)   { return modify_capability(CAP_NET_RAW,   CAP_SET);   }
+static inline int disable_capability_raw(void)    { return modify_capability(CAP_NET_RAW,   CAP_CLEAR); }
+static inline int enable_capability_admin(void)   { return modify_capability(CAP_NET_ADMIN, CAP_SET);   }
+static inline int disable_capability_admin(void)  { return modify_capability(CAP_NET_ADMIN, CAP_CLEAR); }
+#else
+extern int modify_capability(ping_handle_t *a_ping_handle, int);
+static inline int enable_capability_raw(ping_handle_t *a_ping_handle)     { return modify_capability(a_ping_handle, 1); }
+static inline int disable_capability_raw(ping_handle_t *a_ping_handle)    { return modify_capability(a_ping_handle, 0); }
+static inline int enable_capability_admin(ping_handle_t *a_ping_handle)   { return modify_capability(a_ping_handle, 1); }
+static inline int disable_capability_admin(ping_handle_t *a_ping_handle)  { return modify_capability(a_ping_handle, 0); }
+#endif
+extern void drop_capabilities(void);
+
+typedef struct socket_st {
+  int fd;
+  int socktype;
+} socket_st;
+
+char *pr_addr(ping_handle_t *a_ping_handle, void *sa, socklen_t salen);
+
+int is_ours(ping_handle_t *a_ping_handle, socket_st *sock, uint16_t id);
+
+int ping4_run(ping_handle_t *a_ping_handle, int argc, char **argv, struct addrinfo *ai, socket_st *sock);
+int ping4_send_probe(ping_handle_t *a_ping_handle, socket_st *, void *packet, unsigned packet_size);
+int ping4_receive_error_msg(ping_handle_t *a_ping_handle, socket_st *sock);
+int ping4_parse_reply(ping_handle_t *a_ping_handle, socket_st *, struct msghdr *msg, int len, void *addr, struct timeval *);
+void ping4_install_filter( ping_handle_t *a_ping_handle, socket_st *);
+
+typedef struct ping_func_set_st {
+  int (*send_probe)(ping_handle_t *a_ping_handle, socket_st *, void *packet, unsigned packet_size);
+  int (*receive_error_msg)(ping_handle_t *a_ping_handle, socket_st *sock);
+  int (*parse_reply)(ping_handle_t *a_ping_handle, socket_st *, struct msghdr *msg, int len, void *addr, struct timeval *);
+  void (*install_filter)(ping_handle_t *a_ping_handle, socket_st *);
+} ping_func_set_st;
+
+extern ping_func_set_st ping4_func_set;
+
+extern int pinger(ping_handle_t *a_ping_handle, ping_func_set_st *fset, socket_st *sock);
+extern void sock_setbufs(ping_handle_t *a_ping_handle, socket_st*, int alloc);
+extern void setup(ping_handle_t *a_ping_handle, socket_st *);
+extern int contains_pattern_in_payload(ping_handle_t *a_ping_handle, uint8_t *ptr);
+extern void main_loop(ping_handle_t *a_ping_handle, ping_func_set_st *fset, socket_st*, uint8_t *buf, int buflen);// __attribute__((noreturn));
+extern void finish(ping_handle_t *a_ping_handle);// __attribute__((noreturn));
+extern void status(ping_handle_t *a_ping_handle);
+extern void common_options(int ch);
+extern int gather_statistics(ping_handle_t *a_ping_handle, uint8_t *ptr, int icmplen,
+           int cc, uint16_t seq, int hops,
+           int csfailed, struct timeval *tv, char *from,
+           void (*pr_reply)(uint8_t *ptr, int cc));
+extern void print_timestamp(ping_handle_t *a_ping_handle);
+void fill(ping_handle_t *a_ping_handle, char *patp, unsigned char *packet, unsigned packet_size);
+
+//extern int mark;
+//extern unsigned char outpack[MAXPACKET];
+
+/* IPv6 */
+
+int ping6_run(ping_handle_t *a_ping_handle, int argc, char **argv, struct addrinfo *ai, socket_st *sock);
+void ping6_usage(unsigned from_ping);
+
+int ping6_send_probe(ping_handle_t *a_ping_handle, socket_st *sockets, void *packet, unsigned packet_size);
+int ping6_receive_error_msg(ping_handle_t *a_ping_handle, socket_st *sock);
+int ping6_parse_reply(ping_handle_t *a_ping_handle, socket_st *, struct msghdr *msg, int len, void *addr, struct timeval *);
+void ping6_install_filter(ping_handle_t *a_ping_handle, socket_st *sockets);
+
+extern ping_func_set_st ping6_func_set;
+
+int niquery_option_handler(const char *opt_arg);
+
+extern uint32_t tclass;
+extern uint32_t flowlabel;
+extern struct sockaddr_in6 source6;
+extern struct sockaddr_in6 whereto6;
+extern struct sockaddr_in6 firsthop6;
+
+/* IPv6 node information query */
+
+#define NI_NONCE_SIZE     8
+
+struct ni_hdr {
+  struct icmp6_hdr    ni_u;
+  uint8_t       ni_nonce[NI_NONCE_SIZE];
+};
+
+#define ni_type   ni_u.icmp6_type
+#define ni_code   ni_u.icmp6_code
+#define ni_cksum  ni_u.icmp6_cksum
+#define ni_qtype  ni_u.icmp6_data16[0]
+#define ni_flags  ni_u.icmp6_data16[1]
+
+/* Types */
+#ifndef ICMPV6_NI_QUERY
+# define ICMPV6_NI_QUERY    139
+# define ICMPV6_NI_REPLY    140
+#endif
+
+/* Query Codes */
+#define NI_SUBJ_IPV6      0
+#define NI_SUBJ_NAME      1
+#define NI_SUBJ_IPV4      2
+
+/* Reply Codes */
+#define NI_SUCCESS      0
+#define NI_REFUSED      1
+#define NI_UNKNOWN      2
+
+/* Qtypes */
+#define NI_QTYPE_NOOP     0
+#define NI_QTYPE_NAME     2
+#define NI_QTYPE_IPV6ADDR   3
+#define NI_QTYPE_IPV4ADDR   4
+
+/* Flags */
+#define NI_IPV6ADDR_F_TRUNCATE    __constant_cpu_to_be16(0x0001)
+#define NI_IPV6ADDR_F_ALL   __constant_cpu_to_be16(0x0002)
+#define NI_IPV6ADDR_F_COMPAT    __constant_cpu_to_be16(0x0004)
+#define NI_IPV6ADDR_F_LINKLOCAL   __constant_cpu_to_be16(0x0008)
+#define NI_IPV6ADDR_F_SITELOCAL   __constant_cpu_to_be16(0x0010)
+#define NI_IPV6ADDR_F_GLOBAL    __constant_cpu_to_be16(0x0020)
+
+#define NI_IPV4ADDR_F_TRUNCATE    NI_IPV6ADDR_F_TRUNCATE
+#define NI_IPV4ADDR_F_ALL   NI_IPV6ADDR_F_ALL
+
+
diff --git a/modules/net/iputils/ping6_common.c b/modules/net/iputils/ping6_common.c
new file mode 100644
index 0000000000..3bb143fadd
--- /dev/null
+++ b/modules/net/iputils/ping6_common.c
@@ -0,0 +1,1398 @@
+/*
+ *
+ *  Modified for AF_INET6 by Pedro Roque
+ *
+ *  <roque@di.fc.ul.pt>
+ *
+ *  Original copyright notice included bellow
+ */
+
+/*
+ * Copyright (c) 1989 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Muuss.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ *      P I N G . C
+ *
+ * Using the InterNet Control Message Protocol (ICMP) "ECHO" facility,
+ * measure round-trip-delays and packet loss across network paths.
+ *
+ * Author -
+ *  Mike Muuss
+ *  U. S. Army Ballistic Research Laboratory
+ *  December, 1983
+ *
+ * Status -
+ *  Public Domain.  Distribution Unlimited.
+ * Bugs -
+ *  More statistics could always be gathered.
+ *  If kernel does not support non-raw ICMP sockets or
+ *  if -N option is used, this program has to run SUID to ROOT or
+ *  with net_cap_raw enabled.
+ */
+
+#include "ping.h"
+
+/* IPv6 packet information.  */
+//struct in6_pktinfo
+//  {
+//    struct in6_addr ipi6_addr;  /* src/dst IPv6 address */
+//    unsigned int ipi6_ifindex;  /* send/recv interface index */
+//  };
+
+ping_func_set_st ping6_func_set = {
+    .send_probe = ping6_send_probe,
+    .receive_error_msg = ping6_receive_error_msg,
+    .parse_reply = ping6_parse_reply,
+    .install_filter = ping6_install_filter
+};
+
+#ifndef SCOPE_DELIMITER
+# define SCOPE_DELIMITER '%'
+#endif
+
+uint32_t flowlabel;
+uint32_t tclass;
+
+static struct sockaddr_in6 whereto;
+static struct sockaddr_in6 firsthop;
+
+static unsigned char cmsgbuf[4096];
+static size_t cmsglen = 0;
+
+static int pr_icmph(uint8_t type, uint8_t code, uint32_t info);
+
+struct sockaddr_in6 source6 = { .sin6_family = AF_INET6 };
+//extern char *device;
+
+#if defined(USE_GCRYPT) || defined(USE_OPENSSL) || defined(USE_NETTLE)
+#include "iputils_md5dig.h"
+#define USE_CRYPTO
+#endif
+
+/* Node Information query */
+int ni_query = -1;
+int ni_flag = 0;
+void *ni_subject = NULL;
+int ni_subject_len = 0;
+int ni_subject_type = -1;
+char *ni_group;
+
+static inline int ntohsp(uint16_t *p)
+{
+    uint16_t v;
+    memcpy(&v, p, sizeof(v));
+    return ntohs(v);
+}
+
+unsigned int if_name2index(const char *ifname)
+{
+    unsigned int i = if_nametoindex(ifname);
+    if(!i)
+        error(2, 0, "unknown iface: %s", ifname);
+    return i;
+}
+
+struct niquery_option {
+    char *name;
+    int namelen;
+    int has_arg;
+    int data;
+    int (*handler)(int index, const char *arg);
+};
+
+#define NIQUERY_OPTION(_name, _has_arg, _data, _handler)  \
+  {             \
+    .name = _name,          \
+    .namelen = sizeof(_name) - 1,     \
+    .has_arg = _has_arg,        \
+    .data = _data,          \
+    .handler = _handler       \
+  }
+
+static int niquery_option_name_handler(int index __attribute__((__unused__)),
+        const char *arg __attribute__((__unused__)));
+static int niquery_option_ipv6_handler(int index __attribute__((__unused__)),
+        const char *arg __attribute__((__unused__)));
+static int niquery_option_ipv6_flag_handler(int index, const char *arg);
+static int niquery_option_ipv4_handler(int index, const char *arg);
+static int niquery_option_ipv4_flag_handler(int index, const char *arg);
+static int niquery_option_subject_addr_handler(int index, const char *arg);
+static int niquery_option_subject_name_handler(int index, const char *arg);
+static int niquery_option_help_handler(int index, const char *arg);
+
+struct niquery_option niquery_options[] = {
+NIQUERY_OPTION("name", 0, 0, niquery_option_name_handler),
+NIQUERY_OPTION("fqdn", 0, 0, niquery_option_name_handler),
+NIQUERY_OPTION("ipv6", 0, 0, niquery_option_ipv6_handler),
+NIQUERY_OPTION("ipv6-all", 0, NI_IPV6ADDR_F_ALL, niquery_option_ipv6_flag_handler),
+NIQUERY_OPTION("ipv6-compatible", 0, NI_IPV6ADDR_F_COMPAT, niquery_option_ipv6_flag_handler),
+NIQUERY_OPTION("ipv6-linklocal", 0, NI_IPV6ADDR_F_LINKLOCAL, niquery_option_ipv6_flag_handler),
+NIQUERY_OPTION("ipv6-sitelocal", 0, NI_IPV6ADDR_F_SITELOCAL, niquery_option_ipv6_flag_handler),
+NIQUERY_OPTION("ipv6-global", 0, NI_IPV6ADDR_F_GLOBAL, niquery_option_ipv6_flag_handler),
+NIQUERY_OPTION("ipv4", 0, 0, niquery_option_ipv4_handler),
+NIQUERY_OPTION("ipv4-all", 0, NI_IPV4ADDR_F_ALL, niquery_option_ipv4_flag_handler),
+NIQUERY_OPTION("subject-ipv6", 1, NI_SUBJ_IPV6, niquery_option_subject_addr_handler),
+NIQUERY_OPTION("subject-ipv4", 1, NI_SUBJ_IPV4, niquery_option_subject_addr_handler),
+NIQUERY_OPTION("subject-name", 1, 0, niquery_option_subject_name_handler),
+NIQUERY_OPTION("subject-fqdn", 1, -1, niquery_option_subject_name_handler),
+NIQUERY_OPTION("help", 0, 0, niquery_option_help_handler),
+    { NULL, 0, 0, 0, NULL }
+};
+
+static inline int niquery_is_enabled(void)
+{
+    return ni_query >= 0;
+}
+
+#if PING6_NONCE_MEMORY
+uint8_t *ni_nonce_ptr;
+#else
+struct {
+    struct timeval tv;
+    pid_t pid;
+} ni_nonce_secret;
+#endif
+
+static void niquery_init_nonce(void)
+{
+#if PING6_NONCE_MEMORY
+    struct timeval tv;
+    unsigned long seed;
+
+    seed = (unsigned long)getpid();
+    if (!gettimeofday(&tv, NULL))
+    seed ^= tv.tv_usec;
+    srand(seed);
+
+    ni_nonce_ptr = calloc(NI_NONCE_SIZE, MAX_DUP_CHK);
+    if (!ni_nonce_ptr)
+    error(2, errno, "calloc");
+
+    ni_nonce_ptr[0] = ~0;
+#else
+    gettimeofday(&ni_nonce_secret.tv, NULL);
+    ni_nonce_secret.pid = getpid();
+#endif
+}
+
+#if !PING6_NONCE_MEMORY
+static int niquery_nonce(uint8_t *nonce, int fill)
+{
+# ifdef USE_CRYPTO
+    static uint8_t digest[MD5_DIGEST_LENGTH];
+    static int seq = -1;
+
+    if (fill || seq != *(uint16_t *)nonce || seq < 0) {
+        MD5_CTX ctxt;
+
+        MD5_Init(&ctxt);
+        MD5_Update(&ctxt, &ni_nonce_secret, sizeof(ni_nonce_secret));
+        MD5_Update(&ctxt, nonce, sizeof(uint16_t));
+        MD5_Final(digest, &ctxt);
+
+        seq = *(uint16_t *)nonce;
+    }
+
+    if (fill) {
+        memcpy(nonce + sizeof(uint16_t), digest, NI_NONCE_SIZE - sizeof(uint16_t));
+        return 0;
+    } else {
+        if (memcmp(nonce + sizeof(uint16_t), digest, NI_NONCE_SIZE - sizeof(uint16_t)))
+        return -1;
+        return ntohsp((uint16_t *)nonce);
+    }
+# else
+    error(3, ENOSYS, "niquery_nonce() crypto disabled");
+# endif
+    if(nonce || fill)
+        return -1;
+    return -1;
+}
+#endif
+
+static inline void niquery_fill_nonce(uint16_t seq, uint8_t *nonce)
+{
+    uint16_t v = htons(seq);
+#if PING6_NONCE_MEMORY
+    int i;
+
+    memcpy(&ni_nonce_ptr[NI_NONCE_SIZE * (seq % MAX_DUP_CHK)], &v, sizeof(v));
+
+    for (i = sizeof(v); i < NI_NONCE_SIZE; i++)
+    ni_nonce_ptr[NI_NONCE_SIZE * (seq % MAX_DUP_CHK) + i] = 0x100 * (rand() / (RAND_MAX + 1.0));
+
+    memcpy(nonce, &ni_nonce_ptr[NI_NONCE_SIZE * (seq % MAX_DUP_CHK)], NI_NONCE_SIZE);
+#else
+    memcpy(nonce, &v, sizeof(v));
+    niquery_nonce(nonce, 1);
+#endif
+}
+
+static inline int niquery_check_nonce(uint8_t *nonce)
+{
+#if PING6_NONCE_MEMORY
+    uint16_t seq = ntohsp((uint16_t *)nonce);
+    if (memcmp(nonce, &ni_nonce_ptr[NI_NONCE_SIZE * (seq % MAX_DUP_CHK)], NI_NONCE_SIZE))
+    return -1;
+    return seq;
+#else
+    return niquery_nonce(nonce, 0);
+#endif
+}
+
+static int niquery_set_qtype(int type)
+{
+    if(niquery_is_enabled() && ni_query != type) {
+        printf("Qtype conflict\n");
+        return -1;
+    }
+    ni_query = type;
+    return 0;
+}
+
+static int niquery_option_name_handler(int index __attribute__((__unused__)),
+        const char *arg __attribute__((__unused__)))
+{
+    if(niquery_set_qtype(NI_QTYPE_NAME) < 0)
+        return -1;
+    return 0;
+}
+
+static int niquery_option_ipv6_handler(int index __attribute__((__unused__)),
+        const char *arg __attribute__((__unused__)))
+{
+    if(niquery_set_qtype(NI_QTYPE_IPV6ADDR) < 0)
+        return -1;
+    return 0;
+}
+
+static int niquery_option_ipv6_flag_handler(int index, const char *arg __attribute__((__unused__)))
+{
+    if(niquery_set_qtype(NI_QTYPE_IPV6ADDR) < 0)
+        return -1;
+    ni_flag |= niquery_options[index].data;
+    return 0;
+}
+
+static int niquery_option_ipv4_handler(int index __attribute__((__unused__)),
+        const char *arg __attribute__((__unused__)))
+{
+    if(niquery_set_qtype(NI_QTYPE_IPV4ADDR) < 0)
+        return -1;
+    return 0;
+}
+
+static int niquery_option_ipv4_flag_handler(int index, const char *arg __attribute__((__unused__)))
+{
+    if(niquery_set_qtype(NI_QTYPE_IPV4ADDR) < 0)
+        return -1;
+    ni_flag |= niquery_options[index].data;
+    return 0;
+}
+
+static inline int niquery_is_subject_valid(void)
+{
+    return ni_subject_type >= 0 && ni_subject;
+}
+
+static int niquery_set_subject_type(int type)
+{
+    if(niquery_is_subject_valid() && ni_subject_type != type) {
+        printf("Subject type conflict\n");
+        return -1;
+    }
+    ni_subject_type = type;
+    return 0;
+}
+
+#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
+#define OFFSET_OF(type,elem)  ((size_t)&((type *)0)->elem)
+
+static int niquery_option_subject_addr_handler(int index, const char *arg)
+{
+    struct addrinfo hints = { .ai_family = AF_UNSPEC, .ai_socktype = SOCK_DGRAM, .ai_flags = getaddrinfo_flags };
+    struct addrinfo *result, *ai;
+    int status;
+    int offset;
+
+    if(niquery_set_subject_type(niquery_options[index].data) < 0)
+        return -1;
+
+    ni_subject_type = niquery_options[index].data;
+
+    switch (niquery_options[index].data) {
+    case NI_SUBJ_IPV6:
+        ni_subject_len = sizeof(struct in6_addr);
+        offset = OFFSET_OF(struct sockaddr_in6, sin6_addr);
+        hints.ai_family = AF_INET6;
+        break;
+    case NI_SUBJ_IPV4:
+        ni_subject_len = sizeof(struct in_addr);
+        offset = OFFSET_OF(struct sockaddr_in, sin_addr);
+        hints.ai_family = AF_INET;
+        break;
+    default:
+        /* should not happen. */
+        offset = -1;
+    }
+
+    status = getaddrinfo(arg, 0, &hints, &result);
+    if(status) {
+        error(0, 0, "%s: %s", arg, gai_strerror(status));
+        return -1;
+    }
+
+    for(ai = result; ai; ai = ai->ai_next) {
+        void *p = malloc(ni_subject_len);
+        if(!p)
+            continue;
+        memcpy(p, (uint8_t *) ai->ai_addr + offset, ni_subject_len);
+        free(ni_subject);
+        ni_subject = p;
+        break;
+    }
+    freeaddrinfo(result);
+
+    return 0;
+}
+
+#ifdef USE_IDN
+# if IDN2_VERSION_NUMBER >= 0x02000000
+#  define IDN2_FLAGS IDN2_NONTRANSITIONAL
+# else
+#  define IDN2_FLAGS 0
+# endif
+#endif
+
+#ifdef USE_CRYPTO
+static int niquery_option_subject_name_handler(int index, const char *name)
+{
+    static char nigroup_buf[INET6_ADDRSTRLEN + 1 + IFNAMSIZ];
+    unsigned char *dnptrs[2], **dpp, **lastdnptr;
+    int n;
+    size_t i;
+    char *p;
+    char *canonname = NULL, *idn = NULL;
+    unsigned char *buf = NULL;
+    size_t namelen;
+    size_t buflen;
+    int dots, fqdn = niquery_options[index].data;
+    MD5_CTX ctxt;
+    uint8_t digest[MD5_DIGEST_LENGTH];
+#ifdef USE_IDN
+    int rc;
+#endif
+
+    if (niquery_set_subject_type(NI_SUBJ_NAME) < 0)
+    return -1;
+
+#ifdef USE_IDN
+    rc = idn2_lookup_ul(name, &idn, IDN2_FLAGS);
+    if (rc)
+    error(2, 0, "IDN encoding error: %s", idn2_strerror(rc));
+#else
+    idn = strdup(name);
+    if (!idn)
+    goto oomexit;
+#endif
+
+    p = strchr(idn, SCOPE_DELIMITER);
+    if (p) {
+        *p = '\0';
+        if (strlen(p + 1) >= IFNAMSIZ)
+        error(1, 0, "too long scope name");
+    }
+
+    namelen = strlen(idn);
+    canonname = malloc(namelen + 1);
+    if (!canonname)
+    goto oomexit;
+
+    dots = 0;
+    for (i = 0; i < namelen + 1; i++) {
+        canonname[i] = isupper(idn[i]) ? tolower(idn[i]) : idn[i];
+        if (idn[i] == '.')
+        dots++;
+    }
+
+    if (fqdn == 0) {
+        /* guess if hostname is FQDN */
+        fqdn = dots ? 1 : -1;
+    }
+
+    buflen = namelen + 3 + 1; /* dn_comp() requrires strlen() + 3,
+     plus non-fqdn indicator. */
+    buf = malloc(buflen);
+    if (!buf) {
+        error(0, errno, "memory allocation failed");
+        goto errexit;
+    }
+
+    dpp = dnptrs;
+    lastdnptr = &dnptrs[ARRAY_SIZE(dnptrs)];
+
+    *dpp++ = (unsigned char *)buf;
+    *dpp++ = NULL;
+
+    n = dn_comp(canonname, (unsigned char *)buf, buflen, dnptrs, lastdnptr);
+    if (n < 0) {
+        error(0, 0, "inappropriate subject name: %s", canonname);
+        goto errexit;
+    } else if ((size_t) n >= buflen) {
+        error(0, 0, "dn_comp() returned too long result");
+        goto errexit;
+    }
+
+    MD5_Init(&ctxt);
+    MD5_Update(&ctxt, buf, buf[0]);
+    MD5_Final(digest, &ctxt);
+
+    sprintf(nigroup_buf, "ff02::2:%02x%02x:%02x%02x%s%s",
+            digest[0], digest[1], digest[2], digest[3],
+            p ? "%" : "",
+            p ? p + 1 : "");
+
+    if (fqdn < 0)
+    buf[n] = 0;
+
+    free(ni_subject);
+
+    ni_group = nigroup_buf;
+    ni_subject = buf;
+    ni_subject_len = n + (fqdn < 0);
+    ni_group = nigroup_buf;
+
+    free(canonname);
+    free(idn);
+
+    return 0;
+    oomexit:
+    error(0, errno, "memory allocation failed");
+    errexit:
+    free(buf);
+    free(canonname);
+    free(idn);
+    exit(1);
+}
+#else
+static int niquery_option_subject_name_handler(int index __attribute__((__unused__)),
+        const char *name __attribute__((__unused__)))
+{
+    error(3, ENOSYS, "niquery_option_subject_name_handler() crypto disabled");
+    return -1;
+}
+#endif
+
+int niquery_option_help_handler(int index __attribute__((__unused__)), const char *arg __attribute__((__unused__)))
+{
+    fprintf(stderr, "ping -6 -N <nodeinfo opt>\n"
+            "Help:\n"
+            "  help\n"
+            "Query:\n"
+            "  name\n"
+            "  ipv6\n"
+            "  ipv6-all\n"
+            "  ipv6-compatible\n"
+            "  ipv6-global\n"
+            "  ipv6-linklocal\n"
+            "  ipv6-sitelocal\n"
+            "  ipv4\n"
+            "  ipv4-all\n"
+            "Subject:\n"
+            "  subject-ipv6=addr\n"
+            "  subject-ipv4=addr\n"
+            "  subject-name=name\n"
+            "  subject-fqdn=name\n"
+            );
+    exit(2);
+}
+
+int niquery_option_handler(const char *opt_arg)
+{
+    struct niquery_option *p;
+    int i;
+    int ret = -1;
+    for(i = 0, p = niquery_options; p->name; i++, p++) {
+        if(strncmp(p->name, opt_arg, p->namelen))
+            continue;
+        if(!p->has_arg) {
+            if(opt_arg[p->namelen] == '\0') {
+                ret = p->handler(i, NULL);
+                if(ret >= 0)
+                    break;
+            }
+        } else {
+            if(opt_arg[p->namelen] == '=') {
+                ret = p->handler(i, &opt_arg[p->namelen] + 1);
+                if(ret >= 0)
+                    break;
+            }
+        }
+    }
+    if(!p->name)
+        ret = niquery_option_help_handler(0, NULL);
+    return ret;
+}
+
+int ping6_run(ping_handle_t *a_ping_handle, int argc, char **argv, struct addrinfo *ai, struct socket_st *sock)
+{
+    static const struct addrinfo hints = { .ai_family = AF_INET6, .ai_flags = getaddrinfo_flags };
+    struct addrinfo *result = NULL;
+    int status;
+    int hold, packlen;
+    unsigned char *packet;
+    char *target;
+    struct icmp6_filter filter;
+    int err;
+    static uint32_t scope_id = 0;
+
+    if(niquery_is_enabled()) {
+        niquery_init_nonce();
+
+        if(!niquery_is_subject_valid()) {
+            ni_subject = &whereto.sin6_addr;
+            ni_subject_len = sizeof(whereto.sin6_addr);
+            ni_subject_type = NI_SUBJ_IPV6;
+        }
+    }
+
+    if(argc > 1) {
+        usage();
+    } else if(argc == 1) {
+        target = *argv;
+    } else {
+        if(ni_query < 0 && ni_subject_type != NI_SUBJ_NAME)
+            usage();
+        target = ni_group;
+    }
+
+    if(!ai) {
+        status = getaddrinfo(target, NULL, &hints, &result);
+        if(status)
+            error(2, 0, "%s: %s", target, gai_strerror(status));
+        ai = result;
+    }
+
+    memcpy(&whereto, ai->ai_addr, sizeof(whereto));
+    whereto.sin6_port = htons(IPPROTO_ICMPV6);
+
+    if(result)
+        freeaddrinfo(result);
+
+    if(memchr(target, ':', strlen(target)))
+        a_ping_handle->ping_common.options |= F_NUMERIC;
+
+    if(IN6_IS_ADDR_UNSPECIFIED(&firsthop.sin6_addr)) {
+        memcpy(&firsthop.sin6_addr, &whereto.sin6_addr, 16);
+        firsthop.sin6_scope_id = whereto.sin6_scope_id;
+        /* Verify scope_id is the same as intermediate nodes */
+        if(firsthop.sin6_scope_id && scope_id && firsthop.sin6_scope_id != scope_id)
+            error(2, 0, "scope discrepancy among the nodes");
+        else if(!scope_id)
+            scope_id = firsthop.sin6_scope_id;
+    }
+
+    a_ping_handle->ping_common.hostname = target;
+
+    if(IN6_IS_ADDR_UNSPECIFIED(&source6.sin6_addr)) {
+        socklen_t alen;
+        int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0);
+
+        if(probe_fd < 0)
+            error(2, errno, "socket");
+        if(a_ping_handle->device) {
+            unsigned int iface = if_name2index(a_ping_handle->device);
+#ifdef IPV6_RECVPKTINFO
+            struct in6_pktinfo ipi;
+
+            memset(&ipi, 0, sizeof(ipi));
+            ipi.ipi6_ifindex = iface;
+#endif
+
+            if(IN6_IS_ADDR_LINKLOCAL(&firsthop.sin6_addr) ||
+                    IN6_IS_ADDR_MC_LINKLOCAL(&firsthop.sin6_addr))
+                firsthop.sin6_scope_id = iface;
+            enable_capability_raw(a_ping_handle);
+#ifdef IPV6_RECVPKTINFO
+            if(
+            setsockopt(probe_fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1 ||
+                    setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1) {
+                perror("setsockopt(IPV6_PKTINFO)");
+                exit(2);
+            }
+#endif
+            if(
+            setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, a_ping_handle->device, strlen(a_ping_handle->device) + 1) == -1 ||
+                    setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, a_ping_handle->device, strlen(a_ping_handle->device) + 1) == -1) {
+                error(2, errno, "setsockopt(SO_BINDTODEVICE) %s", a_ping_handle->device);
+            }
+            disable_capability_raw(a_ping_handle);
+        }
+
+        if(!IN6_IS_ADDR_LINKLOCAL(&firsthop.sin6_addr) &&
+                !IN6_IS_ADDR_MC_LINKLOCAL(&firsthop.sin6_addr))
+            firsthop.sin6_family = AF_INET6;
+
+        firsthop.sin6_port = htons(1025);
+        if(connect(probe_fd, (struct sockaddr*) &firsthop, sizeof(firsthop)) == -1)
+            error(2, errno, "connect");
+        alen = sizeof source6;
+        if(getsockname(probe_fd, (struct sockaddr *) &source6, &alen) == -1)
+            error(2, errno, "getsockname");
+        source6.sin6_port = 0;
+        close(probe_fd);
+
+        if(a_ping_handle->device) {
+            struct ifaddrs *ifa0, *ifa;
+
+            if(getifaddrs(&ifa0))
+                error(2, errno, "getifaddrs");
+
+            for(ifa = ifa0; ifa; ifa = ifa->ifa_next) {
+                if(!ifa->ifa_name || !ifa->ifa_addr ||
+                        ifa->ifa_addr->sa_family != AF_INET6)
+                    continue;
+                if(!strcmp(ifa->ifa_name, a_ping_handle->device) &&
+                        IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 * )ifa->ifa_addr)->sin6_addr,
+                                &source6.sin6_addr))
+                    break;
+            }
+            if(!ifa)
+                error(0, 0, "Warning: source address might be selected on device other than: %s", a_ping_handle->device);
+
+            freeifaddrs(ifa0);
+        }
+    }
+    else if(a_ping_handle->device && (IN6_IS_ADDR_LINKLOCAL(&source6.sin6_addr) ||
+            IN6_IS_ADDR_MC_LINKLOCAL(&source6.sin6_addr)))
+        source6.sin6_scope_id = if_name2index(a_ping_handle->device);
+
+    if(a_ping_handle->device) {
+        struct cmsghdr *cmsg;
+        struct in6_pktinfo *ipi;
+
+        cmsg = (struct cmsghdr*) (cmsgbuf + cmsglen);
+        cmsglen += CMSG_SPACE(sizeof(*ipi));
+        cmsg->cmsg_len = CMSG_LEN(sizeof(*ipi));
+        cmsg->cmsg_level = IPPROTO_IPV6;
+        cmsg->cmsg_type = IPV6_PKTINFO;
+
+        ipi = (struct in6_pktinfo*) CMSG_DATA(cmsg);
+        memset(ipi, 0, sizeof(*ipi));
+        ipi->ipi6_ifindex = if_name2index(a_ping_handle->device);
+    }
+
+    if((whereto.sin6_addr.s6_addr16[0] & htons(0xff00)) == htons(0xff00)) {
+        if(a_ping_handle->ping_common.uid) {
+            if(a_ping_handle->ping_common.interval < 1000)
+                error(2, 0, "multicast ping with too short interval: %d", a_ping_handle->ping_common.interval);
+            if(a_ping_handle->pmtudisc >= 0 && a_ping_handle->pmtudisc != IPV6_PMTUDISC_DO)
+                error(2, 0, "multicast ping does not fragment");
+        }
+        if(a_ping_handle->pmtudisc < 0)
+            a_ping_handle->pmtudisc = IPV6_PMTUDISC_DO;
+    }
+
+    if(a_ping_handle->pmtudisc >= 0) {
+        if(setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &a_ping_handle->pmtudisc, sizeof (a_ping_handle->pmtudisc)) == -1)
+            error(2, errno, "IPV6_MTU_DISCOVER");
+    }
+
+    if((a_ping_handle->ping_common.options & F_STRICTSOURCE) &&
+            bind(sock->fd, (struct sockaddr *) &source6, sizeof source6) == -1)
+        error(2, errno, "bind icmp socket");
+
+    if((ssize_t) a_ping_handle->ping_common.datalen >= (ssize_t) sizeof(struct timeval) && (ni_query < 0)) {
+        /* can we time transfer */
+        a_ping_handle->ping_common.timing = 1;
+    }
+    packlen = a_ping_handle->ping_common.datalen + 8 + 4096 + 40 + 8; /* 4096 for rthdr */
+    if(!(packet = (unsigned char *) malloc((unsigned int) packlen)))
+        error(2, errno, "memory allocation failed");
+
+    hold = 1;
+
+    /* Estimate memory eaten by single packet. It is rough estimate.
+     * Actually, for small datalen's it depends on kernel side a lot. */
+    hold = a_ping_handle->ping_common.datalen + 8;
+    hold += ((hold + 511) / 512) * (40 + 16 + 64 + 160);
+    sock_setbufs(a_ping_handle,sock, hold);
+
+#ifdef __linux__
+    if(sock->socktype == SOCK_RAW) {
+        int csum_offset = 2;
+        int sz_opt = sizeof(int);
+
+        err = setsockopt(sock->fd, SOL_RAW, IPV6_CHECKSUM, &csum_offset, sz_opt);
+        if(err < 0) {
+            /* checksum should be enabled by default and setting this
+             * option might fail anyway.
+             */
+            error(0, errno, "setsockopt(RAW_CHECKSUM) failed - try to continue");
+        }
+#else
+        {
+#endif
+
+        /*
+         *  select icmp echo reply as icmp type to receive
+         */
+
+        ICMP6_FILTER_SETBLOCKALL(&filter);
+
+        ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH, &filter);
+        ICMP6_FILTER_SETPASS(ICMP6_PACKET_TOO_BIG, &filter);
+        ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED, &filter);
+        ICMP6_FILTER_SETPASS(ICMP6_PARAM_PROB, &filter);
+
+        if(niquery_is_enabled())
+            ICMP6_FILTER_SETPASS(ICMPV6_NI_REPLY, &filter);
+        else
+            ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &filter);
+
+        err = setsockopt(sock->fd, IPPROTO_ICMPV6, ICMP6_FILTER, &filter, sizeof filter);
+
+        if(err < 0)
+            error(2, errno, "setsockopt(ICMP6_FILTER)");
+    }
+
+    if(a_ping_handle->ping_common.options & F_NOLOOP) {
+        int loop = 0;
+        if(setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &loop, sizeof loop) == -1)
+            error(2, errno, "can't disable multicast loopback");
+    }
+    if(a_ping_handle->ping_common.options & F_TTL) {
+        if(setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &a_ping_handle->ping_common.ttl, sizeof (a_ping_handle->ping_common.ttl)) == -1)
+            error(2, errno, "can't set multicast hop limit");
+        if(setsockopt(sock->fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &a_ping_handle->ping_common.ttl, sizeof (a_ping_handle->ping_common.ttl)) == -1)
+            error(2, errno, "can't set unicast hop limit");
+    }
+
+    const int on = 1;
+    if(
+    #ifdef IPV6_RECVHOPLIMIT
+    setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &on, sizeof on) == -1 &&
+            setsockopt(sock->fd, IPPROTO_IPV6, IPV6_2292HOPLIMIT, &on, sizeof on) == -1
+                    #else
+                    setsockopt(sock->fd, IPPROTO_IPV6, IPV6_HOPLIMIT, &on, sizeof on) == -1
+#endif
+                    )
+        error(2, errno, "can't receive hop limit");
+
+    if(a_ping_handle->ping_common.options & F_TCLASS) {
+#ifdef IPV6_TCLASS
+        if(setsockopt(sock->fd, IPPROTO_IPV6, IPV6_TCLASS, &tclass, sizeof tclass) == -1)
+            error(2, errno, "setsockopt(IPV6_TCLASS)");
+#else
+        error(0, 0, "traffic class is not supported");
+#endif
+    }
+
+    if(a_ping_handle->ping_common.options & F_FLOWINFO) {
+#ifdef IPV6_FLOWLABEL_MGR
+        char freq_buf[CMSG_ALIGN(sizeof(struct in6_flowlabel_req)) + cmsglen];
+        struct in6_flowlabel_req *freq = (struct in6_flowlabel_req *)freq_buf;
+        int freq_len = sizeof(*freq);
+        memset(freq, 0, sizeof(*freq));
+        freq->flr_label = htonl(flowlabel & IPV6_FLOWINFO_FLOWLABEL);
+        freq->flr_action = IPV6_FL_A_GET;
+        freq->flr_flags = IPV6_FL_F_CREATE;
+        freq->flr_share = IPV6_FL_S_EXCL;
+        memcpy(&freq->flr_dst, &whereto.sin6_addr, 16);
+        if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_FLOWLABEL_MGR, freq, freq_len) == -1)
+        error(2, errno, "can't set flowlabel");
+        flowlabel = freq->flr_label;
+#else
+        error(2, 0, "flow labels are not supported");
+#endif
+
+#ifdef IPV6_FLOWINFO_SEND
+        whereto.sin6_flowinfo = flowlabel;
+        if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_FLOWINFO_SEND, &on, sizeof on) == -1)
+        error(2, errno, "can't send flowinfo");
+#else
+        error(2, 0, "flowinfo is not supported");
+#endif
+    }
+
+    printf("PING %s(%s) ", a_ping_handle->ping_common.hostname, pr_addr(a_ping_handle, &whereto, sizeof whereto));
+    if(flowlabel)
+        printf(", flow 0x%05x, ", (unsigned) ntohl(flowlabel));
+    if(a_ping_handle->device || (a_ping_handle->ping_common.options & F_STRICTSOURCE)) {
+        int saved_options = a_ping_handle->ping_common.options;
+
+        a_ping_handle->ping_common.options |= F_NUMERIC;
+        printf("from %s %s: ", pr_addr(a_ping_handle, &source6, sizeof source6), a_ping_handle->device ? a_ping_handle->device : "");
+        a_ping_handle->ping_common.options = saved_options;
+    }
+    printf("%d data bytes\n", a_ping_handle->ping_common.datalen);
+
+    setup(a_ping_handle, sock);
+
+    drop_capabilities();
+
+    main_loop(a_ping_handle, &ping6_func_set, sock, packet, packlen);
+    return 0;
+}
+
+int ping6_receive_error_msg(ping_handle_t *a_ping_handle, socket_st *sock)
+{
+    ssize_t res;
+    char cbuf[512];
+    struct iovec iov;
+    struct msghdr msg;
+    struct cmsghdr *cmsg;
+    struct sock_extended_err *e;
+    struct icmp6_hdr icmph;
+    struct sockaddr_in6 target;
+    int net_errors = 0;
+    int local_errors = 0;
+    int saved_errno = errno;
+
+    iov.iov_base = &icmph;
+    iov.iov_len = sizeof(icmph);
+    msg.msg_name = (void*) &target;
+    msg.msg_namelen = sizeof(target);
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_flags = 0;
+    msg.msg_control = cbuf;
+    msg.msg_controllen = sizeof(cbuf);
+
+    res = recvmsg(sock->fd, &msg, MSG_ERRQUEUE | MSG_DONTWAIT);
+    if(res < 0)
+        goto out;
+
+    e = NULL;
+    for(cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
+        if(cmsg->cmsg_level == IPPROTO_IPV6) {
+            if(cmsg->cmsg_type == IPV6_RECVERR)
+                e = (struct sock_extended_err *) CMSG_DATA(cmsg);
+        }
+    }
+    if(e == NULL)
+        abort();
+
+    if(e->ee_origin == SO_EE_ORIGIN_LOCAL) {
+        local_errors++;
+        if(a_ping_handle->ping_common.options & F_QUIET)
+            goto out;
+        if(a_ping_handle->ping_common.options & F_FLOOD)
+            write_stdout("E", 1);
+        else if(e->ee_errno != EMSGSIZE)
+            error(0, e->ee_errno, "local error");
+        else
+            error(0, 0, "local error: message too long, mtu: %u", e->ee_info);
+        a_ping_handle->ping_common.nerrors++;
+    } else if(e->ee_origin == SO_EE_ORIGIN_ICMP6) {
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6*) (e + 1);
+
+        if((size_t) res < sizeof(icmph) ||
+                memcmp(&target.sin6_addr, &whereto.sin6_addr, 16) ||
+                icmph.icmp6_type != ICMP6_ECHO_REQUEST ||
+                !is_ours(a_ping_handle, sock, icmph.icmp6_id)) {
+            /* Not our error, not an error at all. Clear. */
+            saved_errno = 0;
+            goto out;
+        }
+
+        net_errors++;
+        a_ping_handle->ping_common.nerrors++;
+        if(a_ping_handle->ping_common.options & F_QUIET)
+            goto out;
+        if(a_ping_handle->ping_common.options & F_FLOOD) {
+            write_stdout("\bE", 2);
+        } else {
+            print_timestamp(a_ping_handle);
+            printf("From %s icmp_seq=%u ", pr_addr(a_ping_handle, sin6, sizeof *sin6), ntohs(icmph.icmp6_seq));
+            pr_icmph(e->ee_type, e->ee_code, e->ee_info);
+            putchar('\n');
+            fflush(stdout);
+        }
+    }
+
+    out:
+    errno = saved_errno;
+    return net_errors ? net_errors : -local_errors;
+}
+
+/*
+ * pinger --
+ *  Compose and transmit an ICMP ECHO REQUEST packet.  The IP packet
+ * will be added on by the kernel.  The ID field is our UNIX process ID,
+ * and the sequence number is an ascending integer.  The first several bytes
+ * of the data portion are used to hold a UNIX "timeval" struct in VAX
+ * byte-order, to compute the round-trip time.
+ */
+static int build_echo(ping_handle_t *a_ping_handle, uint8_t *_icmph, unsigned packet_size __attribute__((__unused__)))
+{
+    struct icmp6_hdr *icmph;
+    int cc;
+
+    icmph = (struct icmp6_hdr *) _icmph;
+    icmph->icmp6_type = ICMP6_ECHO_REQUEST;
+    icmph->icmp6_code = 0;
+    icmph->icmp6_cksum = 0;
+    icmph->icmp6_seq= htons(a_ping_handle->ping_common.ntransmitted+1);
+    icmph->icmp6_id= a_ping_handle->ping_common.ident;
+
+    if(a_ping_handle->ping_common.timing)
+        gettimeofday((struct timeval *) &_icmph[8],
+                (struct timezone *) NULL);
+
+    cc = a_ping_handle->ping_common.datalen + 8; /* skips ICMP portion */
+
+    return cc;
+}
+
+static int build_niquery(ping_handle_t *a_ping_handle, uint8_t *_nih, unsigned packet_size __attribute__((__unused__)))
+{
+    struct ni_hdr *nih;
+    int cc;
+
+    nih = (struct ni_hdr *) _nih;
+    nih->ni_cksum = 0;
+
+    nih->ni_type = ICMPV6_NI_QUERY;
+    cc = sizeof(*nih);
+    a_ping_handle->ping_common.datalen = 0;
+
+    niquery_fill_nonce(a_ping_handle->ping_common.ntransmitted + 1, nih->ni_nonce);
+    nih->ni_code = ni_subject_type;
+    nih->ni_qtype= htons(ni_query);
+    nih->ni_flags= ni_flag;
+    memcpy(nih + 1, ni_subject, ni_subject_len);
+    cc += ni_subject_len;
+
+    return cc;
+}
+
+int ping6_send_probe(ping_handle_t *a_ping_handle, socket_st *sock, void *packet, unsigned packet_size)
+{
+    int len, cc;
+
+    rcvd_clear(a_ping_handle, a_ping_handle->ping_common.ntransmitted + 1);
+
+    if(niquery_is_enabled())
+        len = build_niquery(a_ping_handle, packet, packet_size);
+    else
+        len = build_echo(a_ping_handle, packet, packet_size);
+
+    if(cmsglen == 0) {
+        cc = sendto(sock->fd, (char *) packet, len, a_ping_handle->ping_common.confirm,
+                (struct sockaddr *) &whereto,
+                sizeof(struct sockaddr_in6));
+    } else {
+        struct msghdr mhdr;
+        struct iovec iov;
+
+        iov.iov_len = len;
+        iov.iov_base = packet;
+
+        memset(&mhdr, 0, sizeof(mhdr));
+        mhdr.msg_name = &whereto;
+        mhdr.msg_namelen = sizeof(struct sockaddr_in6);
+        mhdr.msg_iov = &iov;
+        mhdr.msg_iovlen = 1;
+        mhdr.msg_control = cmsgbuf;
+        mhdr.msg_controllen = cmsglen;
+
+        cc = sendmsg(sock->fd, &mhdr, a_ping_handle->ping_common.confirm);
+    }
+    a_ping_handle->ping_common.confirm = 0;
+
+    return (cc == len ? 0 : cc);
+}
+
+void pr_echo_reply(uint8_t *_icmph, int cc __attribute__((__unused__)))
+{
+    struct icmp6_hdr *icmph = (struct icmp6_hdr *) _icmph;
+    log_printf(" icmp_seq=%u", ntohs(icmph->icmp6_seq));
+}
+
+static void putchar_safe(char c)
+{
+    if(isprint(c))
+        putchar(c);
+    else
+        printf("\\%03o", c);
+}
+
+static
+void pr_niquery_reply_name(struct ni_hdr *nih, int len)
+{
+    uint8_t *h = (uint8_t *) (nih + 1);
+    uint8_t *p = h + 4;
+    uint8_t *end = (uint8_t *) nih + len;
+    int continued = 0;
+    char buf[1024];
+    int ret;
+
+    len -= sizeof(struct ni_hdr) + 4;
+
+    if(len < 0) {
+        printf(" parse error (too short)");
+        return;
+    }
+    while(p < end) {
+        int fqdn = 1;
+        size_t i;
+
+        memset(buf, 0xff, sizeof(buf));
+
+        if(continued)
+            putchar(',');
+
+        ret = dn_expand(h, end, p, buf, sizeof(buf));
+        if(ret < 0) {
+            printf(" parse error (truncated)");
+            break;
+        }
+        if(p + ret < end && *(p + ret) == '\0')
+            fqdn = 0;
+
+        putchar(' ');
+        for(i = 0; i < strlen(buf); i++)
+            putchar_safe(buf[i]);
+        if(fqdn)
+            putchar('.');
+
+        p += ret + !fqdn;
+
+        continued = 1;
+    }
+}
+
+static
+void pr_niquery_reply_addr(struct ni_hdr *nih, int len)
+{
+    uint8_t *h = (uint8_t *) (nih + 1);
+    uint8_t *p;
+    uint8_t *end = (uint8_t *) nih + len;
+    int af;
+    int aflen;
+    int continued = 0;
+    int truncated;
+    char buf[1024];
+
+    switch (ntohs(nih->ni_qtype)) {
+        case NI_QTYPE_IPV4ADDR:
+        af = AF_INET;
+        aflen = sizeof(struct in_addr);
+        truncated = nih->ni_flags & NI_IPV6ADDR_F_TRUNCATE;
+        break;
+        case NI_QTYPE_IPV6ADDR:
+        af = AF_INET6;
+        aflen = sizeof(struct in6_addr);
+        truncated = nih->ni_flags & NI_IPV4ADDR_F_TRUNCATE;
+        break;
+        default:
+        /* should not happen */
+        af = aflen = truncated = 0;
+    }
+    p = h;
+    if(len < 0) {
+        printf(" parse error (too short)");
+        return;
+    }
+
+    while(p < end) {
+        if(continued)
+            putchar(',');
+
+        if(p + sizeof(uint32_t) + aflen > end) {
+            printf(" parse error (truncated)");
+            break;
+        }
+        if(!inet_ntop(af, p + sizeof(uint32_t), buf, sizeof(buf)))
+            printf(" unexpeced error in inet_ntop(%s)",
+                    strerror(errno));
+        else
+            printf(" %s", buf);
+        p += sizeof(uint32_t) + aflen;
+
+        continued = 1;
+    }
+    if(truncated)
+        printf(" (truncated)");
+}
+
+static
+void pr_niquery_reply(uint8_t *_nih, int len)
+{
+    struct ni_hdr *nih = (struct ni_hdr *) _nih;
+
+    switch (nih->ni_code) {
+    case NI_SUCCESS:
+        switch (ntohs(nih->ni_qtype)) {
+            case NI_QTYPE_NAME:
+            pr_niquery_reply_name(nih, len);
+            break;
+            case NI_QTYPE_IPV4ADDR:
+            case NI_QTYPE_IPV6ADDR:
+            pr_niquery_reply_addr(nih, len);
+            break;
+            default:
+            printf(" unknown qtype(0x%02x)", ntohs(nih->ni_qtype));
+        }
+        break;
+        case NI_REFUSED:
+        printf(" refused");
+        break;
+        case NI_UNKNOWN:
+        printf(" unknown");
+        break;
+        default:
+        printf(" unknown code(%02x)", ntohs(nih->ni_code));
+    }
+    printf("; seq=%u;", ntohsp((uint16_t*) nih->ni_nonce));
+}
+
+/*
+ * parse_reply --
+ *  Print out the packet, if it came from us.  This logic is necessary
+ * because ALL readers of the ICMP socket get a copy of ALL ICMP packets
+ * which arrive ('tis only fair).  This permits multiple copies of this
+ * program to be run without having intermingled output (or statistics!).
+ */
+int
+ping6_parse_reply(ping_handle_t *a_ping_handle, socket_st *sock, struct msghdr *msg, int cc, void *addr, struct timeval *tv)
+{
+    struct sockaddr_in6 *from = addr;
+    uint8_t *buf = msg->msg_iov->iov_base;
+    struct cmsghdr *c;
+    struct icmp6_hdr *icmph;
+    int hops = -1;
+
+    for(c = CMSG_FIRSTHDR(msg); c; c = CMSG_NXTHDR(msg, c)) {
+        if(c->cmsg_level != IPPROTO_IPV6)
+            continue;
+        switch (c->cmsg_type) {
+        case IPV6_HOPLIMIT:
+            #ifdef IPV6_2292HOPLIMIT
+        case IPV6_2292HOPLIMIT:
+            #endif
+            if(c->cmsg_len < CMSG_LEN(sizeof(int)))
+                continue;
+            memcpy(&hops, CMSG_DATA(c), sizeof(hops));
+        }
+    }
+
+    /* Now the ICMP part */
+
+    icmph = (struct icmp6_hdr *) buf;
+    if(cc < 8) {
+        if(a_ping_handle->ping_common.options & F_VERBOSE)
+            error(0, 0, "packet too short: %d bytes", cc);
+        return 1;
+    }
+
+    if(icmph->icmp6_type == ICMP6_ECHO_REPLY) {
+        if(!is_ours(a_ping_handle, sock, icmph->icmp6_id))
+        return 1;
+        if (!contains_pattern_in_payload(a_ping_handle, (uint8_t*)(icmph+1)))
+        return 1; /* 'Twas really not our ECHO */
+        if (gather_statistics(a_ping_handle, (uint8_t*)icmph, sizeof(*icmph), cc,
+                ntohs(icmph->icmp6_seq),
+                hops, 0, tv, pr_addr(a_ping_handle, from, sizeof *from),
+                pr_echo_reply)) {
+            fflush(stdout);
+            return 0;
+        }
+    } else if (icmph->icmp6_type == ICMPV6_NI_REPLY) {
+        struct ni_hdr *nih = (struct ni_hdr *)icmph;
+        int seq = niquery_check_nonce(nih->ni_nonce);
+        if (seq < 0)
+        return 1;
+        if (gather_statistics(a_ping_handle, (uint8_t*)icmph, sizeof(*icmph), cc,
+                seq,
+                hops, 0, tv, pr_addr(a_ping_handle, from, sizeof *from),
+                pr_niquery_reply))
+        return 0;
+    } else {
+        int nexthdr;
+        struct ip6_hdr *iph1 = (struct ip6_hdr*)(icmph+1);
+        struct icmp6_hdr *icmph1 = (struct icmp6_hdr *)(iph1+1);
+
+        /* We must not ever fall here. All the messages but
+         * echo reply are blocked by filter and error are
+         * received with IPV6_RECVERR. Ugly code is preserved
+         * however, just to remember what crap we avoided
+         * using RECVRERR. :-)
+         */
+
+        if (cc < (int) (8 + sizeof(struct ip6_hdr) + 8))
+        return 1;
+
+        if (memcmp(&iph1->ip6_dst, &whereto.sin6_addr, 16))
+        return 1;
+
+        nexthdr = iph1->ip6_nxt;
+
+        if (nexthdr == 44) {
+            nexthdr = *(uint8_t*)icmph1;
+            icmph1++;
+        }
+        if (nexthdr == IPPROTO_ICMPV6) {
+            if (icmph1->icmp6_type != ICMP6_ECHO_REQUEST ||
+            !is_ours(a_ping_handle, sock, icmph1->icmp6_id))
+            return 1;
+            acknowledge(a_ping_handle, ntohs(icmph1->icmp6_seq));
+            a_ping_handle->ping_common.nerrors++;
+            if (a_ping_handle->ping_common.options & F_FLOOD) {
+                write_stdout("\bE", 2);
+                return 0;
+            }
+            print_timestamp(a_ping_handle);
+            printf("From %s: icmp_seq=%u ", pr_addr(a_ping_handle, from, sizeof *from), ntohs(icmph1->icmp6_seq));
+        } else {
+            /* We've got something other than an ECHOREPLY */
+            if (!(a_ping_handle->ping_common.options & F_VERBOSE) || a_ping_handle->ping_common.uid)
+            return 1;
+            print_timestamp(a_ping_handle);
+            printf("From %s: ", pr_addr(a_ping_handle, from, sizeof *from));
+        }
+        pr_icmph(icmph->icmp6_type, icmph->icmp6_code, ntohl(icmph->icmp6_mtu));
+    }
+
+    if(a_ping_handle->ping_common.options & F_AUDIBLE) {
+        putchar('\a');
+        if(a_ping_handle->ping_common.options & F_FLOOD)
+            fflush(stdout);
+    }
+    if(!(a_ping_handle->ping_common.options & F_FLOOD)) {
+        putchar('\n');
+        fflush(stdout);
+    }
+    return 0;
+}
+
+int pr_icmph(uint8_t type, uint8_t code, uint32_t info)
+{
+    switch (type) {
+    case ICMP6_DST_UNREACH:
+        printf("Destination unreachable: ");
+        switch (code) {
+        case ICMP6_DST_UNREACH_NOROUTE:
+            printf("No route");
+            break;
+        case ICMP6_DST_UNREACH_ADMIN:
+            printf("Administratively prohibited");
+            break;
+        case ICMP6_DST_UNREACH_BEYONDSCOPE:
+            printf("Beyond scope of source address");
+            break;
+        case ICMP6_DST_UNREACH_ADDR:
+            printf("Address unreachable");
+            break;
+        case ICMP6_DST_UNREACH_NOPORT:
+            printf("Port unreachable");
+            break;
+        default:
+            printf("Unknown code %d", code);
+            break;
+        }
+        break;
+    case ICMP6_PACKET_TOO_BIG:
+        printf("Packet too big: mtu=%u", info);
+        if(code)
+            printf(", code=%d", code);
+        break;
+    case ICMP6_TIME_EXCEEDED:
+        printf("Time exceeded: ");
+        if(code == ICMP6_TIME_EXCEED_TRANSIT)
+            printf("Hop limit");
+        else if(code == ICMP6_TIME_EXCEED_REASSEMBLY)
+            printf("Defragmentation failure");
+        else
+            printf("code %d", code);
+        break;
+    case ICMP6_PARAM_PROB:
+        printf("Parameter problem: ");
+        if(code == ICMP6_PARAMPROB_HEADER)
+            printf("Wrong header field ");
+        else if(code == ICMP6_PARAMPROB_NEXTHEADER)
+            printf("Unknown header ");
+        else if(code == ICMP6_PARAMPROB_OPTION)
+            printf("Unknown option ");
+        else
+            printf("code %d ", code);
+        printf("at %u", info);
+        break;
+    case ICMP6_ECHO_REQUEST:
+        printf("Echo request");
+        break;
+    case ICMP6_ECHO_REPLY:
+        printf("Echo reply");
+        break;
+    case MLD_LISTENER_QUERY:
+        printf("MLD Query");
+        break;
+    case MLD_LISTENER_REPORT:
+        printf("MLD Report");
+        break;
+    case MLD_LISTENER_REDUCTION:
+        printf("MLD Reduction");
+        break;
+    default:
+        printf("unknown icmp type: %u", type);
+
+    }
+    return 0;
+}
+
+void ping6_install_filter(ping_handle_t *a_ping_handle, socket_st *sock)
+{
+    static int once;
+    static struct sock_filter insns[] = {
+    BPF_STMT(BPF_LD|BPF_H|BPF_ABS, 4), /* Load icmp echo ident */
+    BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0xAAAA, 0, 1), /* Ours? */
+    BPF_STMT(BPF_RET|BPF_K, ~0U), /* Yes, it passes. */
+    BPF_STMT(BPF_LD|BPF_B|BPF_ABS, 0), /* Load icmp type */
+    BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMP6_ECHO_REPLY, 1, 0), /* Echo? */
+    BPF_STMT(BPF_RET|BPF_K, ~0U), /* No. It passes. This must not happen. */
+    BPF_STMT(BPF_RET|BPF_K, 0), /* Echo with wrong ident. Reject. */
+    };
+    static struct sock_fprog filter = {
+        sizeof insns / sizeof(insns[0]),
+        insns
+    };
+
+    if(once)
+        return;
+    once = 1;
+
+    /* Patch bpflet for current identifier. */
+    insns[1] = (struct sock_filter )BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(a_ping_handle->ping_common.ident), 0, 1);
+
+    if(setsockopt(sock->fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
+        error(0, errno, "WARNING: failed to install socket filter");
+}
diff --git a/modules/net/iputils/ping_common.c b/modules/net/iputils/ping_common.c
new file mode 100644
index 0000000000..566fdc755e
--- /dev/null
+++ b/modules/net/iputils/ping_common.c
@@ -0,0 +1,1030 @@
+/*
+ * Copyright (c) 1989 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Muuss.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "ping.h"
+
+#ifndef HZ
+#define HZ sysconf(_SC_CLK_TCK)
+#endif
+
+/*
+int options;
+
+int mark;
+int sndbuf;
+int ttl;
+int rtt;
+int rtt_addend;
+uint16_t acked;
+
+unsigned char outpack[MAXPACKET];
+struct rcvd_table rcvd_tbl;
+
+// counters
+long npackets; // max packets to transmit
+long nreceived; // # of packets we got back
+long nrepeats; // number of duplicates
+long ntransmitted; // sequence # for outbound packets = #sent
+long nchecksum; // replies with bad checksum
+long nerrors; // icmp errors
+int interval = 1000; // interval between packets (msec)
+int preload = 1;
+int deadline = 0; // time to die
+int lingertime = MAXWAIT * 1000;
+struct timeval start_time, cur_time;
+int confirm = 0;
+volatile int in_pr_addr = 0; // pr_addr() is executing
+jmp_buf pr_addr_jmp;
+*/
+
+volatile int exiting;
+volatile int status_snapshot;
+
+/* Stupid workarounds for bugs/missing functionality in older linuces.
+ * confirm_flag fixes refusing service of kernels without MSG_CONFIRM.
+ * i.e. for linux-2.2 */
+/*
+
+int confirm_flag = MSG_CONFIRM;
+
+// timing
+int timing; // flag to do timing
+long tmin = LONG_MAX; // minimum round trip time
+long tmax; // maximum round trip time
+*/
+/* Message for rpm maintainers: have _shame_. If you want
+ * to fix something send the patch to me for sanity checking.
+ * "sparcfix" patch is a complete non-sense, apparenly the person
+ * prepared it was stoned.
+ */
+/*
+long long tsum; // sum of all times, for doing average
+long long tsum2;
+int pipesize = -1;
+
+int datalen = DEFDATALEN;
+
+char *hostname;
+int uid;
+uid_t euid;
+int ident; // process id to identify our packets
+
+static int screen_width = INT_MAX;
+
+#ifdef HAVE_LIBCAP
+static cap_value_t cap_raw = CAP_NET_RAW;
+static cap_value_t cap_admin = CAP_NET_ADMIN;
+#endif
+*/
+
+#define ARRAY_SIZE(a)	(sizeof(a) / sizeof(a[0]))
+
+
+void usage(void)
+{
+    fprintf(stderr,
+            "\nUsage\n"
+                    "  ping [options] <destination>\n"
+                    "\nOptions:\n"
+                    "  <destination>      dns name or ip address\n"
+                    "  -a                 use audible ping\n"
+                    "  -A                 use adaptive ping\n"
+                    "  -B                 sticky source address\n"
+                    "  -c <count>         stop after <count> replies\n"
+                    "  -D                 print timestamps\n"
+                    "  -d                 use SO_DEBUG socket option\n"
+                    "  -f                 flood ping\n"
+                    "  -h                 print help and exit\n"
+                    "  -I <interface>     either interface name or address\n"
+                    "  -i <interval>      seconds between sending each packet\n"
+                    "  -L                 suppress loopback of multicast packets\n"
+                    "  -l <preload>       send <preload> number of packages while waiting replies\n"
+                    "  -m <mark>          tag the packets going out\n"
+                    "  -M <pmtud opt>     define mtu discovery, can be one of <do|dont|want>\n"
+                    "  -n                 no dns name resolution\n"
+                    "  -O                 report outstanding replies\n"
+                    "  -p <pattern>       contents of padding byte\n"
+                    "  -q                 quiet output\n"
+                    "  -Q <tclass>        use quality of service <tclass> bits\n"
+                    "  -s <size>          use <size> as number of data bytes to be sent\n"
+                    "  -S <size>          use <size> as SO_SNDBUF socket option value\n"
+                    "  -t <ttl>           define time to live\n"
+                    "  -U                 print user-to-user latency\n"
+                    "  -v                 verbose output\n"
+                    "  -V                 print version and exit\n"
+                    "  -w <deadline>      reply wait <deadline> in seconds\n"
+                    "  -W <timeout>       time to wait for response\n"
+                    "\nIPv4 options:\n"
+                    "  -4                 use IPv4\n"
+                    "  -b                 allow pinging broadcast\n"
+                    "  -R                 record route\n"
+                    "  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>\n"
+                    "\nIPv6 options:\n"
+                    "  -6                 use IPv6\n"
+                    "  -F <flowlabel>     define flow label, default is random\n"
+                    "  -N <nodeinfo opt>  use icmp6 node info query, try <help> as argument\n"
+                    "\nFor more details see ping(8).\n"
+            );
+    //exit(2);
+    exit(2);
+}
+
+void limit_capabilities(ping_handle_t *a_ping_handle)
+{
+#ifdef HAVE_LIBCAP
+    cap_t cap_cur_p;
+    cap_t cap_p;
+    cap_flag_value_t cap_ok;
+
+    cap_cur_p = cap_get_proc();
+    if (!cap_cur_p)
+    error(-1, errno, "cap_get_proc");
+    cap_p = cap_init();
+    if (!cap_p)
+    error(-1, errno, "cap_init");
+    cap_ok = CAP_CLEAR;
+    cap_get_flag(cap_cur_p, CAP_NET_ADMIN, CAP_PERMITTED, &cap_ok);
+    if (cap_ok != CAP_CLEAR)
+    cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_admin, CAP_SET);
+    cap_ok = CAP_CLEAR;
+    cap_get_flag(cap_cur_p, CAP_NET_RAW, CAP_PERMITTED, &cap_ok);
+    if (cap_ok != CAP_CLEAR)
+    cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_raw, CAP_SET);
+    if (cap_set_proc(cap_p) < 0)
+    error(-1, errno, "cap_set_proc");
+    if (prctl(PR_SET_KEEPCAPS, 1) < 0)
+    error(-1, errno, "prctl");
+    if (setuid(getuid()) < 0)
+    error(-1, errno, "setuid");
+    if (prctl(PR_SET_KEEPCAPS, 0) < 0)
+    error(-1, errno, "prctl");
+    cap_free(cap_p);
+    cap_free(cap_cur_p);
+#endif
+    a_ping_handle->ping_common.uid = getuid();
+    a_ping_handle->ping_common.euid = geteuid();
+#ifndef HAVE_LIBCAP
+    if(seteuid(a_ping_handle->ping_common.uid))
+        error(-1, errno, "setuid");
+#endif
+}
+
+#ifdef HAVE_LIBCAP
+int modify_capability(cap_value_t cap, cap_flag_value_t on)
+{
+    cap_t cap_p = cap_get_proc();
+    cap_flag_value_t cap_ok;
+    int rc = -1;
+
+    if (!cap_p) {
+        error(0, errno, "cap_get_proc");
+        goto out;
+    }
+
+    cap_ok = CAP_CLEAR;
+    cap_get_flag(cap_p, cap, CAP_PERMITTED, &cap_ok);
+    if (cap_ok == CAP_CLEAR) {
+        rc = on ? -1 : 0;
+        goto out;
+    }
+
+    cap_set_flag(cap_p, CAP_EFFECTIVE, 1, &cap, on);
+
+    if (cap_set_proc(cap_p) < 0) {
+        error(0, errno, "cap_set_proc");
+        goto out;
+    }
+
+    cap_free(cap_p);
+    cap_p = NULL;
+
+    rc = 0;
+    out:
+    if (cap_p)
+    cap_free(cap_p);
+    return rc;
+}
+#else
+int modify_capability(ping_handle_t *a_ping_handle, int on)
+{
+    if(seteuid(on ? a_ping_handle->ping_common.euid : getuid())) {
+        error(0, errno, "seteuid");
+        return -1;
+    }
+
+    return 0;
+}
+#endif
+
+void drop_capabilities(void)
+{
+#ifdef HAVE_LIBCAP
+    cap_t cap = cap_init();
+    if (cap_set_proc(cap) < 0)
+    error(-1, errno, "cap_set_proc");
+    cap_free(cap);
+#else
+    if(setuid(getuid()))
+        error(-1, errno, "setuid");
+#endif
+}
+
+/* Fills all the outpack, excluding ICMP header, but _including_
+ * timestamp area with supplied pattern.
+ */
+void fill(ping_handle_t *a_ping_handle, char *patp, unsigned char *packet, unsigned packet_size)
+{
+    int ii, jj;
+    unsigned int pat[16];
+    char *cp;
+    unsigned char *bp = packet + 8;
+
+#ifdef USE_IDN
+    setlocale(LC_ALL, "C");
+#endif
+
+    for(cp = patp; *cp; cp++) {
+        if(!isxdigit(*cp))
+            error(2, 0, "patterns must be specified as hex digits: %s", cp);
+    }
+    ii = sscanf(patp,
+            "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x",
+            &pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6],
+            &pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12],
+            &pat[13], &pat[14], &pat[15]);
+
+    if(ii > 0) {
+        unsigned kk;
+        for(kk = 0; kk <= packet_size - (8 + ii); kk += ii)
+            for(jj = 0; jj < ii; ++jj)
+                bp[jj + kk] = pat[jj];
+    }
+    if(!(a_ping_handle->ping_common.options & F_QUIET)) {
+        printf("PATTERN: 0x");
+        for(jj = 0; jj < ii; ++jj)
+            printf("%02x", bp[jj] & 0xFF);
+        printf("\n");
+    }
+
+#ifdef USE_IDN
+    setlocale(LC_ALL, "");
+#endif
+}
+
+static void sigexit(int signo __attribute__((__unused__)))
+{
+    //exiting = 1;
+    //if(in_pr_addr)
+    //    longjmp(pr_addr_jmp, 0);
+}
+
+static void sigstatus(int signo __attribute__((__unused__)))
+{
+    //status_snapshot = 1;
+}
+
+int __schedule_exit(ping_handle_t *a_ping_handle, int next)
+{
+    static unsigned long waittime;
+    struct itimerval it;
+
+    if(waittime)
+        return next;
+
+    if(a_ping_handle->ping_common.nreceived) {
+        waittime = 2 * a_ping_handle->ping_common.tmax;
+        if(waittime < (unsigned long) (1000 * a_ping_handle->ping_common.interval))
+            waittime = 1000 * a_ping_handle->ping_common.interval;
+    } else
+        waittime = a_ping_handle->ping_common.lingertime * 1000;
+
+    if(next < 0 || (unsigned long) next < waittime / 1000)
+        next = waittime / 1000;
+
+    it.it_interval.tv_sec = 0;
+    it.it_interval.tv_usec = 0;
+    it.it_value.tv_sec = waittime / 1000000;
+    it.it_value.tv_usec = waittime % 1000000;
+    setitimer(ITIMER_REAL, &it, NULL);
+    return next;
+}
+
+static inline void update_interval(ping_handle_t *a_ping_handle)
+{
+    int est = a_ping_handle->ping_common.rtt ? a_ping_handle->ping_common.rtt / 8 : a_ping_handle->ping_common.interval * 1000;
+
+    a_ping_handle->ping_common.interval = (est + a_ping_handle->ping_common.rtt_addend + 500) / 1000;
+    if(a_ping_handle->ping_common.uid && a_ping_handle->ping_common.interval < MINUSERINTERVAL)
+        a_ping_handle->ping_common.interval = MINUSERINTERVAL;
+}
+
+/*
+ * Print timestamp
+ */
+void print_timestamp(ping_handle_t *a_ping_handle)
+{
+    if(a_ping_handle->ping_common.options & F_PTIMEOFDAY) {
+        struct timeval tv;
+        gettimeofday(&tv, NULL);
+        printf("[%lu.%06lu] ",
+                (unsigned long) tv.tv_sec, (unsigned long) tv.tv_usec);
+    }
+}
+
+/*
+ * pinger --
+ * 	Compose and transmit an ICMP ECHO REQUEST packet.  The IP packet
+ * will be added on by the kernel.  The ID field is our UNIX process ID,
+ * and the sequence number is an ascending integer.  The first several bytes
+ * of the data portion are used to hold a UNIX "timeval" struct in VAX
+ * byte-order, to compute the round-trip time.
+ */
+int pinger(ping_handle_t *a_ping_handle, ping_func_set_st *fset, socket_st *sock)
+{
+    static int oom_count;
+    static int tokens;
+    int i;
+
+    /* Have we already sent enough? If we have, return an arbitrary positive value. */
+    if(exiting || (a_ping_handle->ping_common.npackets && a_ping_handle->ping_common.ntransmitted >= a_ping_handle->ping_common.npackets && !a_ping_handle->ping_common.deadline))
+        return 1000;
+
+    /* Check that packets < rate*time + preload */
+    if(a_ping_handle->ping_common.cur_time.tv_sec == 0) {
+        gettimeofday(&a_ping_handle->ping_common.cur_time, NULL);
+        tokens = a_ping_handle->ping_common.interval * (a_ping_handle->ping_common.preload - 1);
+    } else {
+        long ntokens;
+        struct timeval tv;
+
+        gettimeofday(&tv, NULL);
+        ntokens = (tv.tv_sec - a_ping_handle->ping_common.cur_time.tv_sec) * 1000 +
+                (tv.tv_usec - a_ping_handle->ping_common.cur_time.tv_usec) / 1000;
+        if(!a_ping_handle->ping_common.interval) {
+            /* Case of unlimited flood is special;
+             * if we see no reply, they are limited to 100pps */
+            if(ntokens < MININTERVAL && in_flight(a_ping_handle) >= a_ping_handle->ping_common.preload)
+                return MININTERVAL - ntokens;
+        }
+        ntokens += tokens;
+        if(ntokens > a_ping_handle->ping_common.interval * a_ping_handle->ping_common.preload)
+            ntokens = a_ping_handle->ping_common.interval * a_ping_handle->ping_common.preload;
+        if(ntokens < a_ping_handle->ping_common.interval)
+            return a_ping_handle->ping_common.interval - ntokens;
+
+        a_ping_handle->ping_common.cur_time = tv;
+        tokens = ntokens - a_ping_handle->ping_common.interval;
+    }
+
+    if(a_ping_handle->ping_common.options & F_OUTSTANDING) {
+        if(a_ping_handle->ping_common.ntransmitted > 0 && !rcvd_test(a_ping_handle, a_ping_handle->ping_common.ntransmitted)) {
+            print_timestamp(a_ping_handle);
+            printf("no answer yet for icmp_seq=%lu\n", (a_ping_handle->ping_common.ntransmitted % MAX_DUP_CHK));
+            fflush(stdout);
+        }
+    }
+
+    resend:
+    i = fset->send_probe(a_ping_handle, sock, a_ping_handle->ping_common.outpack, sizeof(a_ping_handle->ping_common.outpack));
+
+    if(i == 0) {
+        oom_count = 0;
+        advance_ntransmitted(a_ping_handle);
+        if(!(a_ping_handle->ping_common.options & F_QUIET) && (a_ping_handle->ping_common.options & F_FLOOD)) {
+            /* Very silly, but without this output with
+             * high preload or pipe size is very confusing. */
+            if((a_ping_handle->ping_common.preload < a_ping_handle->ping_common.screen_width && a_ping_handle->ping_common.pipesize < a_ping_handle->ping_common.screen_width) ||
+                    in_flight(a_ping_handle) < a_ping_handle->ping_common.screen_width)
+                write_stdout(".", 1);
+        }
+        return a_ping_handle->ping_common.interval - tokens;
+    }
+
+    /* And handle various errors... */
+    if(i > 0) {
+        /* Apparently, it is some fatal bug. */
+        abort();
+    } else if(errno == ENOBUFS || errno == ENOMEM) {
+        int nores_interval;
+
+        /* Device queue overflow or OOM. Packet is not sent. */
+        tokens = 0;
+        /* Slowdown. This works only in adaptive mode (option -A) */
+        a_ping_handle->ping_common.rtt_addend += (a_ping_handle->ping_common.rtt < 8 * 50000 ? a_ping_handle->ping_common.rtt / 8 : 50000);
+        if(a_ping_handle->ping_common.options & F_ADAPTIVE)
+            update_interval(a_ping_handle);
+        nores_interval = SCHINT(a_ping_handle->ping_common.interval / 2);
+        if(nores_interval > 500)
+            nores_interval = 500;
+        oom_count++;
+        if(oom_count * nores_interval < a_ping_handle->ping_common.lingertime)
+            return nores_interval;
+        i = 0;
+        /* Fall to hard error. It is to avoid complete deadlock
+         * on stuck output device even when dealine was not requested.
+         * Expected timings are screwed up in any case, but we will
+         * exit some day. :-) */
+    } else if(errno == EAGAIN) {
+        /* Socket buffer is full. */
+        tokens += a_ping_handle->ping_common.interval;
+        return MININTERVAL;
+    } else {
+        if((i = fset->receive_error_msg(a_ping_handle, sock)) > 0) {
+            /* An ICMP error arrived. In this case, we've received
+             * an error from sendto(), but we've also received an
+             * ICMP message, which means the packet did in fact
+             * send in some capacity. So, in this odd case, report
+             * the more specific errno as the error, and treat this
+             * as a hard local error. */
+            i = 0;
+            goto hard_local_error;
+        }
+        /* Compatibility with old linuces. */
+        if(i == 0 && a_ping_handle->ping_common.confirm_flag && errno == EINVAL) {
+            a_ping_handle->ping_common.confirm_flag = 0;
+            errno = 0;
+        }
+        if(!errno)
+            goto resend;
+    }
+
+    hard_local_error:
+    /* Hard local error. Pretend we sent packet. */
+    advance_ntransmitted(a_ping_handle);
+
+    if(i == 0 && !(a_ping_handle->ping_common.options & F_QUIET)) {
+        if(a_ping_handle->ping_common.options & F_FLOOD)
+            write_stdout("E", 1);
+        else
+            perror("ping: sendmsg");
+    }
+    tokens = 0;
+    return SCHINT(a_ping_handle->ping_common.interval);
+}
+
+/* Set socket buffers, "alloc" is an estimate of memory taken by single packet. */
+
+void sock_setbufs(ping_handle_t *a_ping_handle, socket_st *sock, int alloc)
+{
+    int rcvbuf, hold;
+    socklen_t tmplen = sizeof(hold);
+
+    if(!a_ping_handle->ping_common.sndbuf)
+        a_ping_handle->ping_common.sndbuf = alloc;
+    setsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *) &a_ping_handle->ping_common.sndbuf, sizeof(a_ping_handle->ping_common.sndbuf));
+
+    rcvbuf = hold = alloc * a_ping_handle->ping_common.preload;
+    if(hold < 65536)
+        hold = 65536;
+    setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *) &hold, sizeof(hold));
+    if(getsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *) &hold, &tmplen) == 0) {
+        if(hold < rcvbuf)
+            error(0, 0, "WARNING: probably, rcvbuf is not enough to hold preload");
+    }
+}
+
+/* Protocol independent setup and parameter checks. */
+
+void setup(ping_handle_t *a_ping_handle, socket_st *sock)
+{
+    int hold;
+    struct timeval tv;
+    sigset_t sset;
+
+    if((a_ping_handle->ping_common.options & F_FLOOD) && !(a_ping_handle->ping_common.options & F_INTERVAL))
+        a_ping_handle->ping_common.interval = 0;
+
+    if(a_ping_handle->ping_common.uid && a_ping_handle->ping_common.interval < MINUSERINTERVAL)
+        error(2, 0, "cannot flood; minimal interval allowed for user is %dms", MINUSERINTERVAL);
+
+    if(a_ping_handle->ping_common.interval >= INT_MAX / a_ping_handle->ping_common.preload)
+        error(2, 0, "illegal preload and/or interval: %d", a_ping_handle->ping_common.interval);
+
+    hold = 1;
+    if(a_ping_handle->ping_common.options & F_SO_DEBUG)
+        setsockopt(sock->fd, SOL_SOCKET, SO_DEBUG, (char *) &hold, sizeof(hold));
+    if(a_ping_handle->ping_common.options & F_SO_DONTROUTE)
+        setsockopt(sock->fd, SOL_SOCKET, SO_DONTROUTE, (char *) &hold, sizeof(hold));
+
+#ifdef SO_TIMESTAMP
+    if(!(a_ping_handle->ping_common.options & F_LATENCY)) {
+        int on = 1;
+        if(setsockopt(sock->fd, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on)))
+            error(0, 0, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP");
+    }
+#endif
+#ifdef SO_MARK
+    if(a_ping_handle->ping_common.options & F_MARK) {
+        int ret;
+        int errno_save;
+
+        enable_capability_admin(a_ping_handle);
+        ret = setsockopt(sock->fd, SOL_SOCKET, SO_MARK, &a_ping_handle->ping_common.mark, sizeof(a_ping_handle->ping_common.mark));
+        errno_save = errno;
+        disable_capability_admin(a_ping_handle);
+
+        if(ret == -1) {
+            /* we probably dont wanna exit since old kernels
+             * dont support mark ..
+             */
+            error(0, errno_save, "Warning: Failed to set mark: %d", a_ping_handle->ping_common.mark);
+        }
+    }
+#endif
+
+    /* Set some SNDTIMEO to prevent blocking forever
+     * on sends, when device is too slow or stalls. Just put limit
+     * of one second, or "interval", if it is less.
+     */
+    tv.tv_sec = 1;
+    tv.tv_usec = 0;
+    if(a_ping_handle->ping_common.interval < 1000) {
+        tv.tv_sec = 0;
+        tv.tv_usec = 1000 * SCHINT(a_ping_handle->ping_common.interval);
+    }
+    setsockopt(sock->fd, SOL_SOCKET, SO_SNDTIMEO, (char*) &tv, sizeof(tv));
+
+    /* Set RCVTIMEO to "interval". Note, it is just an optimization
+     * allowing to avoid redundant poll(). */
+    tv.tv_sec = SCHINT(a_ping_handle->ping_common.interval) / 1000;
+    tv.tv_usec = 1000 * (SCHINT(a_ping_handle->ping_common.interval) % 1000);
+    if(setsockopt(sock->fd, SOL_SOCKET, SO_RCVTIMEO, (char*) &tv, sizeof(tv)))
+        a_ping_handle->ping_common.options |= F_FLOOD_POLL;
+
+    if(!(a_ping_handle->ping_common.options & F_PINGFILLED)) {
+        int i;
+        unsigned char *p = a_ping_handle->ping_common.outpack + 8;
+
+        /* Do not forget about case of small datalen,
+         * fill timestamp area too!
+         */
+        for(i = 0; i < a_ping_handle->ping_common.datalen; ++i)
+            *p++ = i;
+    }
+
+    if(sock->socktype == SOCK_RAW)
+        a_ping_handle->ping_common.ident = htons(getpid() & 0xFFFF);
+
+    set_signal(SIGINT, sigexit);
+    set_signal(SIGALRM, sigexit);
+    set_signal(SIGQUIT, sigstatus);
+
+    sigemptyset(&sset);
+    sigprocmask(SIG_SETMASK, &sset, NULL);
+
+    gettimeofday(&a_ping_handle->ping_common.start_time, NULL);
+
+    if(a_ping_handle->ping_common.deadline) {
+        struct itimerval it;
+
+        it.it_interval.tv_sec = 0;
+        it.it_interval.tv_usec = 0;
+        it.it_value.tv_sec = a_ping_handle->ping_common.deadline;
+        it.it_value.tv_usec = 0;
+        setitimer(ITIMER_REAL, &it, NULL);
+    }
+
+    if(isatty(STDOUT_FILENO)) {
+        struct winsize w;
+
+        if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) != -1) {
+            if(w.ws_col > 0)
+                a_ping_handle->ping_common.screen_width = w.ws_col;
+        }
+    }
+}
+
+/*
+ * Return 0 if pattern in payload point to be ptr did not match the pattern that was sent  
+ */
+int contains_pattern_in_payload(ping_handle_t *a_ping_handle, uint8_t *ptr)
+{
+    int i;
+    uint8_t *cp, *dp;
+
+    /* check the data */
+    cp = ((u_char*) ptr) + sizeof(struct timeval);
+    dp = &a_ping_handle->ping_common.outpack[8 + sizeof(struct timeval)];
+    for(i = sizeof(struct timeval); i < a_ping_handle->ping_common.datalen; ++i, ++cp, ++dp) {
+        if(*cp != *dp)
+            return 0;
+    }
+    return 1;
+}
+
+void main_loop(ping_handle_t *a_ping_handle, ping_func_set_st *fset, socket_st *sock, uint8_t *packet, int packlen)
+{
+    char addrbuf[128];
+    char ans_data[4096];
+    struct iovec iov;
+    struct msghdr msg;
+    struct cmsghdr *c;
+    int cc;
+    int next;
+    int polling;
+    int recv_error;
+
+    iov.iov_base = (char *) packet;
+
+    for(;;) {
+        /* Check exit conditions. */
+        if(exiting)
+            break;
+        if(a_ping_handle->ping_common.npackets && a_ping_handle->ping_common.nreceived + a_ping_handle->ping_common.nerrors >= a_ping_handle->ping_common.npackets)
+            break;
+        if(a_ping_handle->ping_common.deadline && a_ping_handle->ping_common.nerrors)
+            break;
+        /* Check for and do special actions. */
+        if(status_snapshot)
+            status(a_ping_handle);
+
+        /* Send probes scheduled to this time. */
+        do {
+            next = pinger(a_ping_handle, fset, sock);
+            next = schedule_exit(a_ping_handle, next);
+        } while(next <= 0);
+
+        /* "next" is time to send next probe, if positive.
+         * If next<=0 send now or as soon as possible. */
+
+        /* Technical part. Looks wicked. Could be dropped,
+         * if everyone used the newest kernel. :-)
+         * Its purpose is:
+         * 1. Provide intervals less than resolution of scheduler.
+         *    Solution: spinning.
+         * 2. Avoid use of poll(), when recvmsg() can provide
+         *    timed waiting (SO_RCVTIMEO). */
+        polling = 0;
+        recv_error = 0;
+        if((a_ping_handle->ping_common.options & (F_ADAPTIVE | F_FLOOD_POLL)) || next < SCHINT(a_ping_handle->ping_common.interval)) {
+            int recv_expected = in_flight(a_ping_handle);
+
+            /* If we are here, recvmsg() is unable to wait for
+             * required timeout. */
+            if(1000 % HZ == 0 ? next <= 1000 / HZ : (next < INT_MAX / HZ && next * HZ <= 1000)) {
+                /* Very short timeout... So, if we wait for
+                 * something, we sleep for MININTERVAL.
+                 * Otherwise, spin! */
+                if(recv_expected) {
+                    next = MININTERVAL;
+                } else {
+                    next = 0;
+                    /* When spinning, no reasons to poll.
+                     * Use nonblocking recvmsg() instead. */
+                    polling = MSG_DONTWAIT;
+                    /* But yield yet. */
+                    sched_yield();
+                }
+            }
+
+            if(!polling &&
+                    ((a_ping_handle->ping_common.options & (F_ADAPTIVE | F_FLOOD_POLL)) || a_ping_handle->ping_common.interval)) {
+                struct pollfd pset;
+                pset.fd = sock->fd;
+                pset.events = POLLIN;
+                pset.revents = 0;
+                if(poll(&pset, 1, next) < 1 ||
+                        !(pset.revents & (POLLIN | POLLERR)))
+                    continue;
+                polling = MSG_DONTWAIT;
+                recv_error = pset.revents & POLLERR;
+            }
+        }
+
+        for(;;) {
+            struct timeval *recv_timep = NULL;
+            struct timeval recv_time;
+            int not_ours = 0; /* Raw socket can receive messages
+             * destined to other running pings. */
+
+            iov.iov_len = packlen;
+            memset(&msg, 0, sizeof(msg));
+            msg.msg_name = addrbuf;
+            msg.msg_namelen = sizeof(addrbuf);
+            msg.msg_iov = &iov;
+            msg.msg_iovlen = 1;
+            msg.msg_control = ans_data;
+            msg.msg_controllen = sizeof(ans_data);
+
+            cc = recvmsg(sock->fd, &msg, polling);
+            //log_printf("**recvmsg(fd=%d,msg=0x%x,polling=%d)=%d\n",sock->fd,&msg,polling,cc);
+            polling = MSG_DONTWAIT;
+
+            if(cc < 0) {
+                /* If there was a POLLERR and there is no packet
+                 * on the socket, try to read the error queue.
+                 * Otherwise, give up.
+                 */
+                if((errno == EAGAIN && !recv_error) ||
+                errno == EINTR)
+                    break;
+                recv_error = 0;
+                if(!fset->receive_error_msg(a_ping_handle, sock)) {
+                    if(errno) {
+                        error(0, errno, "recvmsg");
+                        break;
+                    }
+                    not_ours = 1;
+                }
+            } else {
+
+#ifdef SO_TIMESTAMP
+                for(c = CMSG_FIRSTHDR(&msg); c; c = CMSG_NXTHDR(&msg, c)) {
+                    if(c->cmsg_level != SOL_SOCKET ||
+                            c->cmsg_type != SO_TIMESTAMP)
+                        continue;
+                    if(c->cmsg_len < CMSG_LEN(sizeof(struct timeval)))
+                        continue;
+                    recv_timep = (struct timeval*) CMSG_DATA(c);
+                }
+#endif
+
+                if((a_ping_handle->ping_common.options & F_LATENCY) || recv_timep == NULL) {
+                    if((a_ping_handle->ping_common.options & F_LATENCY) ||
+                            ioctl(sock->fd, SIOCGSTAMP, &recv_time))
+                        gettimeofday(&recv_time, NULL);
+                    recv_timep = &recv_time;
+                }
+                not_ours = fset->parse_reply(a_ping_handle, sock, &msg, cc, addrbuf, recv_timep);
+            }
+
+            /* See? ... someone runs another ping on this host. */
+            if(not_ours && sock->socktype == SOCK_RAW)
+                fset->install_filter(a_ping_handle, sock);
+
+            /* If nothing is in flight, "break" returns us to pinger. */
+            if(in_flight(a_ping_handle) == 0)
+                break;
+
+            /* Otherwise, try to recvmsg() again. recvmsg()
+             * is nonblocking after the first iteration, so that
+             * if nothing is queued, it will receive EAGAIN
+             * and return to pinger. */
+        }
+    }
+    // here present exit() from app
+    finish(a_ping_handle);
+}
+
+int gather_statistics(ping_handle_t *a_ping_handle, uint8_t *icmph, int icmplen,
+        int cc, uint16_t seq, int hops,
+        int csfailed, struct timeval *tv, char *from,
+        void (*pr_reply)(uint8_t *icmph, int cc))
+{
+    int dupflag = 0;
+    long triptime = 0;
+    uint8_t *ptr = icmph + icmplen;
+
+    ++a_ping_handle->ping_common.nreceived;
+    if(!csfailed)
+        acknowledge(a_ping_handle, seq);
+
+    if(a_ping_handle->ping_common.timing && cc >= (int) (8 + sizeof(struct timeval))) {
+        struct timeval tmp_tv;
+        memcpy(&tmp_tv, ptr, sizeof(tmp_tv));
+
+        restamp:
+        tvsub(tv, &tmp_tv);
+        triptime = tv->tv_sec * 1000000 + tv->tv_usec;
+        if(triptime < 0) {
+            error(0, 0, "Warning: time of day goes back (%ldus), taking countermeasures", triptime);
+            triptime = 0;
+            if(!(a_ping_handle->ping_common.options & F_LATENCY)) {
+                gettimeofday(tv, NULL);
+                a_ping_handle->ping_common.options |= F_LATENCY;
+                goto restamp;
+            }
+        }
+        if(!csfailed) {
+            a_ping_handle->ping_common.tsum += triptime;
+            a_ping_handle->ping_common.tsum2 += (long long) triptime * (long long) triptime;
+            if(triptime < a_ping_handle->ping_common.tmin)
+                a_ping_handle->ping_common.tmin = triptime;
+            if(triptime > a_ping_handle->ping_common.tmax)
+                a_ping_handle->ping_common.tmax = triptime;
+            if(!a_ping_handle->ping_common.rtt)
+                a_ping_handle->ping_common.rtt = triptime * 8;
+            else
+                a_ping_handle->ping_common.rtt += triptime - a_ping_handle->ping_common.rtt / 8;
+            if(a_ping_handle->ping_common.options & F_ADAPTIVE)
+                update_interval(a_ping_handle);
+        }
+    }
+
+    if(csfailed) {
+        ++a_ping_handle->ping_common.nchecksum;
+        --a_ping_handle->ping_common.nreceived;
+    } else if(rcvd_test(a_ping_handle, seq)) {
+        ++a_ping_handle->ping_common.nrepeats;
+        --a_ping_handle->ping_common.nreceived;
+        dupflag = 1;
+    } else {
+        rcvd_set(a_ping_handle, seq);
+        dupflag = 0;
+    }
+    a_ping_handle->ping_common.confirm = a_ping_handle->ping_common.confirm_flag;
+
+    if(a_ping_handle->ping_common.options & F_QUIET)
+        return 1;
+
+    if(a_ping_handle->ping_common.options & F_FLOOD) {
+        if(!csfailed)
+            write_stdout("\b \b", 3);
+        else
+            write_stdout("\bC", 2);
+    } else {
+        int i;
+        uint8_t *cp, *dp;
+
+        print_timestamp(a_ping_handle);
+        log_printf("%d bytes from %s:", cc, from);
+
+        if(pr_reply)
+            pr_reply(icmph, cc);
+
+        if(hops >= 0)
+            log_printf(" ttl=%d", hops);
+
+        if(cc < a_ping_handle->ping_common.datalen + 8) {
+            log_printf(" (truncated)\n");
+            return 1;
+        }
+        if(a_ping_handle->ping_common.timing) {
+            if(triptime >= 100000)
+                log_printf(" time=%ld ms", (triptime + 500) / 1000);
+            else if(triptime >= 10000)
+                log_printf(" time=%ld.%01ld ms", (triptime + 50) / 1000,
+                        ((triptime + 50) % 1000) / 100);
+            else if(triptime >= 1000)
+                log_printf(" time=%ld.%02ld ms", (triptime + 5) / 1000,
+                        ((triptime + 5) % 1000) / 10);
+            else
+                log_printf(" time=%ld.%03ld ms", triptime / 1000,
+                        triptime % 1000);
+            log_printf(" tsum=%d ", a_ping_handle->ping_common.tsum);
+        }
+        if(dupflag)
+            log_printf(" (DUP!)");
+        if(csfailed)
+            log_printf(" (BAD CHECKSUM!)");
+
+        /* check the data */
+        cp = ((unsigned char*) ptr) + sizeof(struct timeval);
+        dp = &a_ping_handle->ping_common.outpack[8 + sizeof(struct timeval)];
+        for(i = sizeof(struct timeval); i < a_ping_handle->ping_common.datalen; ++i, ++cp, ++dp) {
+            if(*cp != *dp) {
+                log_printf("\nwrong data byte #%d should be 0x%x but was 0x%x",
+                        i, *dp, *cp);
+                cp = (unsigned char*) ptr + sizeof(struct timeval);
+                for(i = sizeof(struct timeval); i < a_ping_handle->ping_common.datalen; ++i, ++cp) {
+                    if((i % 32) == sizeof(struct timeval))
+                        log_printf("\n#%d\t", i);
+                    log_printf("%x ", *cp);
+                }
+                break;
+            }
+        }
+    }
+    return 0;
+}
+#ifdef PING_DBG
+static long llsqrt(long long a)
+{
+    long long prev = LLONG_MAX;
+    long long x = a;
+
+    if (x > 0) {
+        while (x < prev) {
+            prev = x;
+            x = (x+(a/x))/2;
+        }
+    }
+
+    return (long)x;
+}
+#endif
+
+/*
+ * finish --
+ *	Print out statistics, and give up.
+ */
+void finish(ping_handle_t *a_ping_handle)
+{
+    struct timeval tv = a_ping_handle->ping_common.cur_time;
+#ifdef PING_DBG
+    char *comma = "";
+#endif
+
+    tvsub(&tv, &a_ping_handle->ping_common.start_time);
+#ifdef PING_DBG
+    putchar('\n');
+    fflush(stdout);
+    printf("--- %s ping statistics ---\n", hostname);
+    printf("%ld packets transmitted, ", ntransmitted);
+    printf("%ld received", nreceived);
+    if (nrepeats)
+    log_printf(", +%ld duplicates", nrepeats);
+    if (nchecksum)
+    printf(", +%ld corrupted", nchecksum);
+    if (nerrors)
+    printf(", +%ld errors", nerrors);
+    if (ntransmitted) {
+#ifdef USE_IDN
+        setlocale(LC_ALL, "C");
+#endif
+        printf(", %g%% packet loss",
+                (float) ((((long long)(ntransmitted - nreceived)) * 100.0) /
+                        ntransmitted));
+        printf(", time %ldms", 1000*tv.tv_sec+(tv.tv_usec+500)/1000);
+    }
+    putchar('\n');
+#endif
+
+    if(a_ping_handle->ping_common.nreceived && a_ping_handle->ping_common.timing) {
+
+        a_ping_handle->ping_common.tsum /= a_ping_handle->ping_common.nreceived + a_ping_handle->ping_common.nrepeats;
+        a_ping_handle->ping_common.tsum2 /= a_ping_handle->ping_common.nreceived + a_ping_handle->ping_common.nrepeats;
+#ifdef PING_DBG
+        long tmdev;
+        tmdev = llsqrt(tsum2 - tsum * tsum);
+        printf("rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld/%ld.%03ld/%ld.%03ld ms",
+                (long)tmin/1000, (long)tmin%1000,
+                (unsigned long)(tsum/1000), (long)(tsum%1000),
+                (long)tmax/1000, (long)tmax%1000,
+                (long)tmdev/1000, (long)tmdev%1000
+        );
+        comma = ", ";
+#endif
+    }
+#ifdef PING_DBG
+    if (pipesize > 1) {
+        printf("%spipe %d", comma, pipesize);
+        comma = ", ";
+    }
+    if (nreceived && (!interval || (a_ping_handle->ping_common.options&(F_FLOOD|F_ADAPTIVE))) && ntransmitted > 1) {
+        int ipg = (1000000*(long long)tv.tv_sec+tv.tv_usec)/(ntransmitted-1);
+        printf("%sipg/ewma %d.%03d/%d.%03d ms",
+                comma, ipg/1000, ipg%1000, rtt/8000, (rtt/8)%1000);
+    }
+    putchar('\n');
+    //exit(!nreceived || (deadline && nreceived < npackets));
+#endif
+}
+
+void status(ping_handle_t *a_ping_handle)
+{
+    int loss = 0;
+    long tavg = 0;
+
+    status_snapshot = 0;
+
+    if(a_ping_handle->ping_common.ntransmitted)
+        loss = (((long long) (a_ping_handle->ping_common.ntransmitted - a_ping_handle->ping_common.nreceived)) * 100) / a_ping_handle->ping_common.ntransmitted;
+
+    fprintf(stderr, "\r%ld/%ld packets, %d%% loss", a_ping_handle->ping_common.nreceived, a_ping_handle->ping_common.ntransmitted, loss);
+
+    if(a_ping_handle->ping_common.nreceived && a_ping_handle->ping_common.timing) {
+        tavg = a_ping_handle->ping_common.tsum / (a_ping_handle->ping_common.nreceived + a_ping_handle->ping_common.nrepeats);
+
+        fprintf(stderr, ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld/%d.%03d/%ld.%03ld ms",
+                (long) a_ping_handle->ping_common.tmin / 1000, (long) a_ping_handle->ping_common.tmin % 1000,
+                tavg / 1000, tavg % 1000,
+                a_ping_handle->ping_common.rtt / 8000, (a_ping_handle->ping_common.rtt / 8) % 1000,
+                (long) a_ping_handle->ping_common.tmax / 1000, (long) a_ping_handle->ping_common.tmax % 1000
+                        );
+    }
+    fprintf(stderr, "\n");
+}
+
+inline int is_ours(ping_handle_t *a_ping_handle, socket_st *sock, uint16_t id) {
+    return sock->socktype == SOCK_DGRAM || id == a_ping_handle->ping_common.ident;
+}
diff --git a/modules/net/iputils/tracepath.c b/modules/net/iputils/tracepath.c
new file mode 100755
index 0000000000..2dce76420c
--- /dev/null
+++ b/modules/net/iputils/tracepath.c
@@ -0,0 +1,783 @@
+/*
+ * tracepath.c
+ *
+ *    This program is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU General Public License
+ *    as published by the Free Software Foundation; either version
+ *    2 of the License, or (at your option) any later version.
+ *
+ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ */
+
+#include <arpa/inet.h>
+#include <errno.h>
+#include <limits.h>
+#include <time.h>
+#include <linux/errqueue.h>
+#include <linux/icmp.h>
+#include <linux/icmpv6.h>
+#include <linux/types.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <resolv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/uio.h>
+#include <unistd.h>
+//#include <glib.h>
+
+#include "iputils.h"
+
+#ifdef USE_IDN
+# include <locale.h>
+# ifndef AI_IDN
+#  define AI_IDN 0x0040
+# endif
+# ifndef NI_IDN
+#  define NI_IDN 32
+# endif
+# define getnameinfo_flags  NI_IDN
+#else
+# define getnameinfo_flags  0
+#endif
+
+#ifndef SOL_IPV6
+# define SOL_IPV6 IPPROTO_IPV6
+#endif
+
+#ifndef IP_PMTUDISC_DO
+# define IP_PMTUDISC_DO   3
+#endif
+#ifndef IPV6_PMTUDISC_DO
+# define IPV6_PMTUDISC_DO 3
+#endif
+
+enum {
+    MAX_PROBES = 10,
+
+    MAX_HOPS_DEFAULT = 30,
+    MAX_HOPS_LIMIT = 255,
+
+    HOST_COLUMN_SIZE = 52,
+
+    HIS_ARRAY_SIZE = 64,
+
+    DEFAULT_OVERHEAD_IPV4 = 28,
+    DEFAULT_OVERHEAD_IPV6 = 48,
+
+    DEFAULT_MTU_IPV4 = 65535,
+    DEFAULT_MTU_IPV6 = 128000,
+
+    DEFAULT_BASEPORT = 44444,
+
+    ANCILLARY_DATA_LEN = 512,
+};
+
+struct hhistory {
+    int hops;
+    struct timeval sendtime;
+    struct timeval deltatime;
+    int hop;
+    char *host_namea;
+    char *host_nameb;
+};
+
+struct probehdr {
+    uint32_t ttl;
+    struct timeval tv;
+};
+
+struct run_state {
+    struct hhistory his[HIS_ARRAY_SIZE];
+    int hisptr;
+    struct sockaddr_storage target;
+    struct addrinfo *ai;
+    int socket_fd;
+    socklen_t targetlen;
+    uint16_t base_port;
+    uint8_t ttl;
+    int max_hops;
+    int overhead;
+    int mtu;
+    void *pktbuf;
+    int hops_to;
+    int hops_from;
+    unsigned int
+    no_resolve :1,
+            show_both :1,
+            mapped :1;
+};
+
+/*
+ * All includes, definitions, struct declarations, and global variables are
+ * above.  After this comment all you can find is functions.
+ */
+
+static void data_wait(struct run_state const * const ctl)
+{
+    fd_set fds;
+    struct timeval tv = {
+        .tv_sec = 1,
+        .tv_usec = 0
+    };
+
+    FD_ZERO(&fds);
+    FD_SET(ctl->socket_fd, &fds);
+    select(ctl->socket_fd + 1, &fds, NULL, NULL, &tv);
+}
+
+static void print_host(struct run_state const * const ctl, char const * const a,
+        char const * const b)
+{
+    int plen;
+
+    plen = log_printf("%s", a);
+    if(ctl->show_both)
+        plen += log_printf(" (%s)", b);
+    if(plen >= HOST_COLUMN_SIZE)
+        plen = HOST_COLUMN_SIZE - 1;
+    log_printf("%*s", HOST_COLUMN_SIZE - plen, "");
+}
+
+static int recverr(struct run_state * const ctl)
+{
+    ssize_t recv_size;
+    struct probehdr rcvbuf;
+    char cbuf[ANCILLARY_DATA_LEN];
+    struct cmsghdr *cmsg;
+    struct sock_extended_err *e;
+    struct sockaddr_storage addr;
+    struct timeval tv;
+    struct timeval *rettv;
+    struct timeval *deltatv;
+    int slot = 0;
+    int rethops;
+    int sndhops;
+    int progress = -1;
+    int broken_router;
+    char hnamebuf[NI_MAXHOST] = "";
+    struct iovec iov = {
+        .iov_base = &rcvbuf,
+        .iov_len = sizeof(rcvbuf)
+    };
+    struct msghdr msg;
+    const struct msghdr reset = {
+        .msg_name = (uint8_t *) &addr,
+        .msg_namelen = sizeof(addr),
+        .msg_iov = &iov,
+        .msg_iovlen = 1,
+        .msg_control = cbuf,
+        .msg_controllen = sizeof(cbuf),
+        0
+    };
+
+    restart:
+    memset(&rcvbuf, -1, sizeof(rcvbuf));
+    msg = reset;
+
+    gettimeofday(&tv, NULL);
+    recv_size = recvmsg(ctl->socket_fd, &msg, MSG_ERRQUEUE);
+    if(recv_size < 0) {
+        if(errno == EAGAIN)
+            return progress;
+        goto restart;
+    }
+
+    progress = ctl->mtu;
+
+    rethops = -1;
+    sndhops = -1;
+    e = NULL;
+    rettv = NULL;
+    deltatv = NULL;
+    broken_router = 0;
+
+    slot = -ctl->base_port;
+    switch (ctl->ai->ai_family) {
+    case AF_INET6:
+        slot += ntohs(((struct sockaddr_in6 *) &addr)->sin6_port);
+        break;
+    case AF_INET:
+        slot += ntohs(((struct sockaddr_in *) &addr)->sin_port);
+        break;
+    }
+
+    if(slot >= 0 && slot < (HIS_ARRAY_SIZE - 1) && ctl->his[slot].hops) {
+        sndhops = ctl->his[slot].hops;
+        rettv = &ctl->his[slot].sendtime;
+        deltatv = &ctl->his[slot].deltatime;
+        ctl->his[slot].hop = sndhops;
+        ctl->his[slot].hops = 0;
+    }
+    if(recv_size == sizeof(rcvbuf)) {
+        if(rcvbuf.ttl == 0 || rcvbuf.tv.tv_sec == 0)
+            broken_router = 1;
+        else {
+            sndhops = rcvbuf.ttl;
+            rettv = &rcvbuf.tv;
+        }
+    }
+
+    for(cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
+        switch (cmsg->cmsg_level) {
+        case SOL_IPV6:
+            switch (cmsg->cmsg_type) {
+            case IPV6_RECVERR:
+                e = (struct sock_extended_err *) CMSG_DATA(cmsg);
+                break;
+            case IPV6_HOPLIMIT:
+                #ifdef IPV6_2292HOPLIMIT
+            case IPV6_2292HOPLIMIT:
+                #endif
+                memcpy(&rethops, CMSG_DATA(cmsg), sizeof(rethops));
+                break;
+            default:
+                log_printf("cmsg6:%d\n ", cmsg->cmsg_type);
+            }
+            break;
+        case SOL_IP:
+            switch (cmsg->cmsg_type) {
+            case IP_RECVERR:
+                e = (struct sock_extended_err *) CMSG_DATA(cmsg);
+                break;
+            case IP_TTL:
+                rethops = *(uint8_t *) CMSG_DATA(cmsg);
+                break;
+            default:
+                log_printf("cmsg4:%d\n ", cmsg->cmsg_type);
+            }
+        }
+    }
+    if(e == NULL) {
+        log_printf("no info\n");
+        return 0;
+    }
+    if(e->ee_origin == SO_EE_ORIGIN_LOCAL)
+        log_printf("%2d?: %-32s ", ctl->ttl, "[LOCALHOST]");
+    else if(e->ee_origin == SO_EE_ORIGIN_ICMP6 ||
+            e->ee_origin == SO_EE_ORIGIN_ICMP) {
+        char abuf[NI_MAXHOST];
+        struct sockaddr *sa = (struct sockaddr *) (e + 1);
+        socklen_t salen;
+
+        if(sndhops > 0)
+            log_printf("%2d:  ", sndhops);
+        else
+            log_printf("%2d?: ", ctl->ttl);
+
+        switch (sa->sa_family) {
+        case AF_INET6:
+            salen = sizeof(struct sockaddr_in6);
+            break;
+        case AF_INET:
+            salen = sizeof(struct sockaddr_in);
+            break;
+        default:
+            salen = 0;
+        }
+
+        if(ctl->no_resolve || ctl->show_both)
+                {
+            if(getnameinfo(sa, salen, abuf, sizeof(abuf), NULL, 0,
+            NI_NUMERICHOST))
+                strcpy(abuf, "???");
+            ctl->his[slot].host_namea = strdup(abuf);
+        } else
+            abuf[0] = 0;
+
+        if(!ctl->no_resolve || ctl->show_both)
+                {
+            fflush(stdout);
+            if(getnameinfo(sa, salen, hnamebuf, sizeof hnamebuf, NULL, 0,
+            getnameinfo_flags))
+                strcpy(hnamebuf, "???");
+            ctl->his[slot].host_nameb = strdup(hnamebuf);
+        } else
+            hnamebuf[0] = 0;
+
+        if(ctl->no_resolve) {
+            print_host(ctl, abuf, hnamebuf);
+        }
+        else {
+            print_host(ctl, hnamebuf, abuf);
+        }
+    }
+
+    if(rettv) {
+        struct timeval res;
+
+        timersub(&tv, rettv, &res);
+        if(deltatv)
+            memcpy(deltatv, &res, sizeof(struct timeval));
+        log_printf("%3ld.%03ldms ", res.tv_sec * 1000 + res.tv_usec / 1000, res.tv_usec % 1000);
+        if(broken_router)
+            log_printf("(This broken router returned corrupted payload) ");
+    }
+
+    if(rethops <= 64)
+        rethops = 65 - rethops;
+    else if(rethops <= 128)
+        rethops = 129 - rethops;
+    else
+        rethops = 256 - rethops;
+
+    //log_printf("ERROR=%d ", e->ee_errno);
+    switch (e->ee_errno) {
+    case ETIMEDOUT:
+        log_printf("\n");
+        break;
+    case EMSGSIZE:
+        log_printf("pmtu %d\n", e->ee_info);
+        ctl->mtu = e->ee_info;
+        progress = ctl->mtu;
+        break;
+    case ECONNREFUSED:
+        log_printf("reached\n");
+        ctl->hops_to = sndhops < 0 ? ctl->ttl : sndhops;
+        ctl->hops_from = rethops;
+        return 0;
+    case EPROTO:
+        log_printf("!P\n");
+        return 0;
+    case EHOSTUNREACH:
+        if((e->ee_origin == SO_EE_ORIGIN_ICMP &&
+                e->ee_type == ICMP_TIME_EXCEEDED &&
+                e->ee_code == ICMP_EXC_TTL) ||
+                (e->ee_origin == SO_EE_ORIGIN_ICMP6 &&
+                        e->ee_type == ICMPV6_TIME_EXCEED &&
+                        e->ee_code == ICMPV6_EXC_HOPLIMIT)) {
+            if(rethops >= 0) {
+                if(sndhops >= 0 && rethops != sndhops)
+                    log_printf("asymm %2d ", rethops);
+                else if(sndhops < 0 && rethops != ctl->ttl)
+                    log_printf("asymm %2d ", rethops);
+            }
+            //log_printf("hops=->%2d, <-%2d  ", sndhops, rethops);
+            log_printf("\n");
+            break;
+        }
+        printf("!H\n");
+        return 0;
+    case ENETUNREACH:
+        log_printf("!N\n");
+        return 0;
+    case EACCES:
+        log_printf("!A\n");
+        return 0;
+    default:
+        printf("\n");
+        errno = e->ee_errno;
+        perror("NET ERROR");
+        return 0;
+    }
+    goto restart;
+    return 0;
+}
+
+static int probe_ttl(struct run_state * const ctl)
+{
+    int i;
+    struct probehdr *hdr = ctl->pktbuf;
+
+    memset(ctl->pktbuf, 0, ctl->mtu);
+    restart:
+    for(i = 0; i < MAX_PROBES; i++) {
+        int res;
+
+        hdr->ttl = ctl->ttl;
+        switch (ctl->ai->ai_family) {
+        case AF_INET6:
+            ((struct sockaddr_in6 *) &ctl->target)->sin6_port =
+                    htons(ctl->base_port + ctl->hisptr);
+            break;
+        case AF_INET:
+            ((struct sockaddr_in *) &ctl->target)->sin_port =
+                    htons(ctl->base_port + ctl->hisptr);
+            break;
+        }
+        gettimeofday(&hdr->tv, NULL);
+        ctl->his[ctl->hisptr].hops = ctl->ttl;
+        ctl->his[ctl->hisptr].sendtime = hdr->tv;
+        if(sendto(ctl->socket_fd, ctl->pktbuf, ctl->mtu - ctl->overhead, 0,
+                (struct sockaddr *) &ctl->target, ctl->targetlen) > 0)
+            break;
+        res = recverr(ctl);
+        ctl->his[ctl->hisptr].hops = 0;
+        if(res == 0)
+            return 0;
+        if(res > 0)
+            goto restart;
+    }
+    ctl->hisptr = (ctl->hisptr + 1) & (HIS_ARRAY_SIZE - 1);
+
+    if(i < MAX_PROBES) {
+        data_wait(ctl);
+        if(recv(ctl->socket_fd, ctl->pktbuf, ctl->mtu, MSG_DONTWAIT) > 0) {
+            log_printf("%2d?: reply received 8)\n", ctl->ttl);
+            return 0;
+        }
+        return recverr(ctl);
+    }
+
+    log_printf("%2d:  send failed\n", ctl->ttl);
+    return 0;
+}
+
+static void usage(void)
+{
+    fprintf(stderr,
+            "\nUsage\n"
+                    "  tracepath [options] <destination>\n"
+                    "\nOptions:\n"
+                    "  -4             use IPv4\n"
+                    "  -6             use IPv6\n"
+                    "  -b             print both name and ip\n"
+                    "  -l <length>    use packet <length>\n"
+                    "  -m <hops>      use maximum <hops>\n"
+                    "  -n             no dns name resolution\n"
+                    "  -p <port>      use destination <port>\n"
+                    "  -V             print version and exit\n"
+                    "  <destination>  dns name or ip address\n"
+                    "\nFor more details see tracepath(8).\n");
+    exit(-1);
+}
+
+int tracepath_main(int argc, char **argv, struct run_state *ctl)
+{
+    int ret = -1;
+    struct addrinfo hints = {
+        .ai_family = AF_UNSPEC,
+        .ai_socktype = SOCK_DGRAM,
+        .ai_protocol = IPPROTO_UDP,
+#ifdef USE_IDN
+            .ai_flags = AI_IDN | AI_CANONNAME,
+#endif
+        };
+    struct addrinfo *result;
+    int ch;
+    int status;
+    int on;
+    char *p;
+    char pbuf[NI_MAXSERV];
+
+#ifdef USE_IDN
+    setlocale(LC_ALL, "");
+#endif
+
+    /* Support being called using `tracepath4` or `tracepath6` symlinks */
+    if(argv[0][strlen(argv[0]) - 1] == '4')
+        hints.ai_family = AF_INET;
+    else if(argv[0][strlen(argv[0]) - 1] == '6')
+        hints.ai_family = AF_INET6;
+
+    while((ch = getopt(argc, argv, "46nbh?l:m:p:V")) != EOF) {
+        switch (ch) {
+        case '4':
+            if(hints.ai_family == AF_INET6) {
+                fprintf(stderr,
+                        "tracepath: Only one -4 or -6 option may be specified\n");
+                return -1; //exit(2);
+            }
+            hints.ai_family = AF_INET;
+            break;
+        case '6':
+            if(hints.ai_family == AF_INET) {
+                fprintf(stderr,
+                        "tracepath: Only one -4 or -6 option may be specified\n");
+                return -1; //exit(2);
+            }
+            hints.ai_family = AF_INET6;
+            break;
+        case 'n':
+            ctl->no_resolve = 1;
+            break;
+        case 'b':
+            ctl->show_both = 1;
+            break;
+        case 'l':
+            if((ctl->mtu = atoi(optarg)) <= ctl->overhead) {
+                fprintf(stderr,
+                        "Error: pktlen must be > %d and <= %d.\n",
+                        ctl->overhead, INT_MAX);
+                return -1; //exit(1);
+            }
+            break;
+        case 'm':
+            ctl->max_hops = atoi(optarg);
+            if(ctl->max_hops < 0 || ctl->max_hops > MAX_HOPS_LIMIT) {
+                fprintf(stderr,
+                        "Error: max hops must be 0 .. %d (inclusive).\n",
+                        MAX_HOPS_LIMIT);
+                return -1; //exit(1);
+            }
+            break;
+        case 'p':
+            ctl->base_port = atoi(optarg);
+            break;
+        case 'V':
+            printf(IPUTILS_VERSION("tracepath"));
+            return 0;
+        default:
+            usage();
+        }
+    }
+
+    argc -= optind;
+    argv += optind;
+    optind = 0;
+
+    if(argc != 1)
+        usage();
+
+    /* Backward compatibility */
+    if(!ctl->base_port) {
+        p = strchr(argv[0], '/');
+        if(p) {
+            *p = 0;
+            ctl->base_port = atoi(p + 1);
+        } else
+            ctl->base_port = DEFAULT_BASEPORT;
+    }
+    sprintf(pbuf, "%u", ctl->base_port);
+
+    status = getaddrinfo(argv[0], pbuf, &hints, &result);
+    if(status) {
+        fprintf(stderr, "tracepath: %s: %s\n", argv[0],
+                gai_strerror(status));
+        return -EADDRNOTAVAIL;//exit(1);
+    }
+
+    for(ctl->ai = result; ctl->ai; ctl->ai = ctl->ai->ai_next) {
+        if(ctl->ai->ai_family != AF_INET6 && ctl->ai->ai_family != AF_INET)
+            continue;
+        ctl->socket_fd = socket(ctl->ai->ai_family, ctl->ai->ai_socktype, ctl->ai->ai_protocol);
+        if(ctl->socket_fd < 0)
+            continue;
+        memcpy(&ctl->target, ctl->ai->ai_addr, ctl->ai->ai_addrlen);
+        ctl->targetlen = ctl->ai->ai_addrlen;
+        break;
+    }
+    if(ctl->socket_fd < 0) {
+        perror("socket/connect");
+        return -ESOCKTNOSUPPORT;//exit(1);
+    }
+
+    switch (ctl->ai->ai_family) {
+    case AF_INET6:
+        ctl->overhead = DEFAULT_OVERHEAD_IPV6;
+        if(!ctl->mtu)
+            ctl->mtu = DEFAULT_MTU_IPV6;
+        if(ctl->mtu <= ctl->overhead)
+            goto pktlen_error;
+
+        on = IPV6_PMTUDISC_DO;
+        if(setsockopt(ctl->socket_fd, SOL_IPV6, IPV6_MTU_DISCOVER, &on, sizeof(on)) &&
+                (on = IPV6_PMTUDISC_DO, setsockopt(ctl->socket_fd, SOL_IPV6,
+                IPV6_MTU_DISCOVER, &on, sizeof(on)))) {
+            perror("IPV6_MTU_DISCOVER");
+            return -2;//exit(1);
+        }
+        on = 1;
+        if(setsockopt(ctl->socket_fd, SOL_IPV6, IPV6_RECVERR, &on, sizeof(on))) {
+            perror("IPV6_RECVERR");
+            return -3;//exit(1);
+        }
+        if(setsockopt(ctl->socket_fd, SOL_IPV6, IPV6_HOPLIMIT, &on, sizeof(on))
+                #ifdef IPV6_RECVHOPLIMIT
+                && setsockopt(ctl->socket_fd, SOL_IPV6, IPV6_2292HOPLIMIT, &on, sizeof(on))
+                        #endif
+                        ) {
+            perror("IPV6_HOPLIMIT");
+            return -4;//exit(1);
+        }
+        if(!IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 * )&ctl->target)->sin6_addr)))
+            break;
+        ctl->mapped = 1;
+        /*FALLTHROUGH*/
+    case AF_INET:
+        ctl->overhead = DEFAULT_OVERHEAD_IPV4;
+        if(!ctl->mtu)
+            ctl->mtu = DEFAULT_MTU_IPV4;
+        if(ctl->mtu <= ctl->overhead)
+            goto pktlen_error;
+
+        on = IP_PMTUDISC_DO;
+        if(setsockopt(ctl->socket_fd, SOL_IP, IP_MTU_DISCOVER, &on, sizeof(on))) {
+            perror("IP_MTU_DISCOVER");
+            return -5;//exit(1);
+        }
+        on = 1;
+        if(setsockopt(ctl->socket_fd, SOL_IP, IP_RECVERR, &on, sizeof(on))) {
+            perror("IP_RECVERR");
+            return -6;//exit(1);
+        }
+        if(setsockopt(ctl->socket_fd, SOL_IP, IP_RECVTTL, &on, sizeof(on))) {
+            perror("IP_RECVTTL");
+            return -7;//exit(1);
+        }
+    }
+
+    ctl->pktbuf = malloc(ctl->mtu);
+    if(!ctl->pktbuf) {
+        perror("malloc");
+        return -8; //exit(1);
+    }
+
+//    struct sockaddr sa;
+//    int salen6 = sizeof(struct sockaddr_in6);
+//    int salen = sizeof(struct sockaddr_in);
+    char target_ip[NI_MAXHOST];
+    char *target_name = argv[0];
+    memset(&target_ip, 0, sizeof(target_ip));
+    getnameinfo((struct sockaddr *) &ctl->target, ctl->targetlen, target_ip, sizeof(target_ip), NULL, 0,
+    NI_NUMERICHOST);
+    log_printf("START target_name=%s target_ip=%s\n", target_name, target_ip);
+
+    for(ctl->ttl = 1; ctl->ttl <= ctl->max_hops; ctl->ttl++) {
+        int res;
+        int i;
+
+        on = ctl->ttl;
+        switch (ctl->ai->ai_family) {
+        case AF_INET6:
+            if(setsockopt(ctl->socket_fd, SOL_IPV6, IPV6_UNICAST_HOPS, &on, sizeof(on))) {
+                perror("IPV6_UNICAST_HOPS");
+                return -9; //exit(1);
+            }
+            if(!ctl->mapped)
+                break;
+            /*FALLTHROUGH*/
+        case AF_INET:
+            if(setsockopt(ctl->socket_fd, SOL_IP, IP_TTL, &on, sizeof(on))) {
+                perror("IP_TTL");
+                return -10; //exit(1);
+            }
+        }
+
+        restart:
+        for(i = 0; i < 2; i++) {
+            int old_mtu;
+
+            old_mtu = ctl->mtu;
+            res = probe_ttl(ctl);
+            if(ctl->mtu != old_mtu)
+                goto restart;
+            if(res == 0)
+                goto done;
+            if(res > 0)
+                break;
+        }
+        // if already find need name, make ret>=0 and break
+        {
+            int i = ctl->hisptr - 1;
+            //for(int i = 0; i < MAX_HOPS_DEFAULT; i++)
+            {
+                char *host_namea = (ctl->his[i].host_namea);
+                char *host_nameb = (ctl->his[i].host_nameb);
+                if(host_namea) {
+                    if(!strcmp(host_namea, target_name) || !strcmp(host_namea, target_ip)) {
+                        ctl->ttl = ctl->max_hops;
+                        ret = i;
+                        break;
+                    }
+                }
+                if(host_nameb) {
+                    if(!strcmp(host_nameb, target_name) || !strcmp(host_nameb, target_ip)) {
+                        ctl->ttl = ctl->max_hops;
+                        ret = i;
+                        break;
+                    }
+                }
+            }
+        }
+        if(res < 0)
+            log_printf("%2d:  no reply\n", ctl->ttl);
+    }
+    log_printf("     Too many hops: pmtu %d\n", ctl->mtu);
+
+    done:
+    freeaddrinfo(result);
+
+    log_printf("     Resume: pmtu %d ", ctl->mtu);
+    if(ctl->hops_to >= 0)
+            {
+        ret = ctl->hisptr - 1;
+        log_printf("hops %d ", ctl->hops_to);
+    }
+    if(ctl->hops_from >= 0)
+        log_printf("back %d ", ctl->hops_from);
+    log_printf("\n");
+    return ret; //exit(0);
+
+    pktlen_error:
+    fprintf(stderr, "Error: pktlen must be > %d and <= %d\n",
+            ctl->overhead, INT_MAX);
+    return -1; //exit(1);
+}
+
+/**
+ * Tracepath host
+ *
+ * @addr[in] host name or IP address
+ * @hops[out] hops count
+ * @time_usec[out] latency in microseconds
+ * @return 0 Ok, -1 error
+ */
+int tracepath_util(const char *addr, int *hops, int *time_usec)
+{
+    int type = 4; // 4 or 6
+    int total_hops = 0;
+    long int total_time_usec = 0; // latency in microseconds
+    int argc = 4;
+    const char *argv[argc];
+    if(type != 4)
+        argv[0] = "tracepath6";
+    else
+        argv[0] = "tracepath4";
+    argv[1] = "-b"; // print both name and ip
+    argv[2] = "-m 26"; // -n -m 16
+    argv[3] = addr;
+    struct run_state ctl = {
+        .max_hops = MAX_HOPS_DEFAULT,
+        .hops_to = -1,
+        .hops_from = -1,
+        0
+    };
+    int ret = tracepath_main(argc, (char**) argv, &ctl);
+    for(int i = 0; i < MAX_HOPS_DEFAULT; i++) {
+        free(ctl.his[i].host_namea);
+        free(ctl.his[i].host_nameb);
+    }
+    if(ret >= 0)
+            {
+        struct timeval *deltatime = &(ctl.his[ret].deltatime);
+        total_hops = ctl.his[ret].hop;
+        total_time_usec = deltatime->tv_sec * 1000000 + deltatime->tv_usec;
+    }
+    else
+        for(int i = 0; i < MAX_HOPS_DEFAULT; i++) {
+            struct timeval *deltatime = &(ctl.his[i].deltatime);
+            if(ctl.his[i].hop) { //if(!ctl.his[i].hops && (deltatime->tv_sec > 0 || deltatime->tv_usec > 0)) {
+                total_hops = ctl.his[i].hop;
+                total_time_usec = deltatime->tv_sec * 1000000 + deltatime->tv_usec;
+            }
+            /*if(ctl.his[i].hop > 0)
+             {
+             char *host_name = (ctl.his[i].host_name) ? ctl.his[i].host_name : "-";
+             printf("%d %d: %s %ld\n", ctl.his[i].hops, ctl.his[i].hop, host_name,
+             deltatime->tv_sec * 1000000 + deltatime->tv_usec);
+             }*/
+        }
+    if(hops) {
+        *hops = total_hops;
+    }
+    if(time_usec) {
+        *time_usec = total_time_usec;
+    }
+    return (ret >= 0) ? 0 : ret;
+
+}
+
diff --git a/modules/net/iputils/traceroute/as_lookups.c b/modules/net/iputils/traceroute/as_lookups.c
new file mode 100644
index 0000000000..8731803758
--- /dev/null
+++ b/modules/net/iputils/traceroute/as_lookups.c
@@ -0,0 +1,128 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+#include "traceroute.h"
+
+
+#define DEF_RADB_SERVER		"whois.radb.net"
+#define DEF_RADB_SERVICE	"nicname"
+
+
+static sockaddr_any ra_addr = {{ 0, }, };
+static char ra_buf[512] = { 0, };
+
+
+const char *get_as_path (const char *query) {
+	int sk, n;
+	FILE *fp;
+	char buf[1024];
+	int prefix = 0, best_prefix = 0;
+	char *rb, *re = &ra_buf[sizeof (ra_buf) / sizeof (*ra_buf) - 1];
+
+
+	if (!ra_addr.sa.sa_family) {
+	    const char *server, *service;
+	    struct addrinfo *res;
+	    int ret;
+
+	    server = getenv ("RA_SERVER");
+	    if (!server)  server = DEF_RADB_SERVER;
+
+	    service = getenv ("RA_SERVICE");
+	    if (!service)  service = DEF_RADB_SERVICE;
+
+
+	    ret = getaddrinfo (server, service, NULL, &res);
+	    if (ret) {
+		fprintf (stderr, "%s/%s: %s\n", server, service,
+						    gai_strerror(ret));
+		exit (2);
+	    }	
+
+	    memcpy (&ra_addr, res->ai_addr, res->ai_addrlen);
+
+	    freeaddrinfo (res);
+	}
+
+
+	sk = socket (ra_addr.sa.sa_family, SOCK_STREAM, 0);
+	if (sk < 0)  error ("socket");
+
+	if (connect (sk, &ra_addr.sa, sizeof (ra_addr)) < 0)
+		goto  err_sk;
+
+	n = snprintf (buf, sizeof (buf), "%s\r\n", query);
+	if (n >= (int)sizeof (buf))  goto err_sk;
+
+	if (write (sk, buf, n) < n)
+		goto err_sk;
+
+	fp = fdopen (sk, "r");
+	if (!fp)  goto err_sk;
+
+
+	strcpy (ra_buf, "*");
+	rb = ra_buf;
+
+	while (fgets (buf, sizeof (buf), fp) != NULL) {
+
+	    if (!strncmp (buf, "route:", sizeof ("route:") - 1) ||
+		!strncmp (buf, "route6:", sizeof ("route6:") - 1)
+	    ) {
+		char *p = strchr (buf, '/');
+
+		if (p)  prefix = strtoul (++p, NULL, 10);
+		else  prefix = 0;	/*  Hmmm...  */
+
+	    }
+	    else if (!strncmp (buf, "origin:", sizeof ("origin:") -1)) {
+		char *p, *as;
+
+		p = buf + (sizeof ("origin:") - 1);
+
+		while (isspace (*p))  p++;
+		as = p;
+		while (*p && !isspace (*p))  p++;
+		*p = '\0';
+
+		if (prefix > best_prefix) {
+		    best_prefix = prefix;
+
+		    rb = ra_buf;
+		    while (rb < re && (*rb++ = *as++)) ;
+		}
+		else if (prefix == best_prefix) {
+		    char *q = strstr (ra_buf, as);
+
+		    if (!q || (*(q += strlen (as)) != '\0' && *q != '/')) {
+			if (rb > ra_buf)  rb[-1] = '/';
+			while (rb < re && (*rb++ = *as++)) ;
+		    }
+		}
+		/*  else just ignore it   */
+	    }
+	}
+
+	fclose (fp);
+
+	return ra_buf;
+
+
+err_sk:
+	close (sk);
+	return "!!";
+}
diff --git a/modules/net/iputils/traceroute/clif.c b/modules/net/iputils/traceroute/clif.c
new file mode 100644
index 0000000000..4380e8ecd0
--- /dev/null
+++ b/modules/net/iputils/traceroute/clif.c
@@ -0,0 +1,1284 @@
+/*
+ Copyright (c)  2000, 2003		Dmitry Butskoy
+ <buc@citadel.stu.neva.ru>
+ License:  LGPL v2.1 or any later
+
+ See COPYING.LIB for the status of this software.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include "../iputils.h"
+#include "clif.h"
+
+#if 1	/*  Bad idea, anyway...  */
+#define MAX_ARGC_NUMBER	256
+typedef unsigned char _CLIF_index;
+#else
+#define MAX_ARGC_NUMBER	(4096 / 5 + 1)	/*  POSIX ARG_MAX >= 4096 ...  */
+typedef unsigned short _CLIF_index;
+#endif
+
+/*  This is needed for some print info functions.
+ This is ugly for thread-safe (is it really actual on program invoking?),
+ and for several CLIF_parse_cmdline invoking... But foo on this. Yeah...
+ */
+static struct {
+    int argc;
+    char **argv;
+    CLIF_option *option_list;
+    CLIF_argument *argument_list;
+    unsigned int parse_flags;
+} curr = { 0, };
+
+static void err_report(const char *format, ...) {
+    va_list ap;
+
+    if(curr.parse_flags & CLIF_SILENT)
+        return;
+
+    va_start(ap, format);
+
+    vfprintf(stderr, format, ap);
+
+    va_end(ap);
+
+    fprintf(stderr, "\n");
+
+    return;
+}
+
+/*  info generation stuff...   */
+
+#define SHORT_PLUS_MINUS	"+/-"
+#define LONG_PLUS_MINUS		"++/--"
+#define EXCL_DLM		" | "
+
+static char *show_short(const CLIF_option *optn) {
+    static char buf[80];
+    char *p = buf;
+    unsigned int flags = optn->flags | curr.parse_flags;
+
+    if(optn->function_plus) {
+        if(!optn->function)
+            *p++ = '+';
+        else {
+            strcpy(p, SHORT_PLUS_MINUS);
+            p += sizeof(SHORT_PLUS_MINUS) - 1;
+        }
+    } else
+        *p++ = '-';
+
+    *p++ = optn->short_opt[0];
+
+    if(optn->arg_name) {
+        char *endp = buf + sizeof(buf) - sizeof(",...]");
+        const char *s;
+
+        if(!(flags & _CLIF_STRICT_JOIN_ARG))
+            *p++ = ' ';
+        if(flags & CLIF_OPTARG)
+            *p++ = '[';
+
+        s = optn->arg_name;
+        while(*s && p < endp)
+            *p++ = *s++;
+
+        if(flags & CLIF_SEVERAL) {
+            strcpy(p, ",...");
+            p += sizeof(",...") - 1; /*  last '\0' ...  */
+        }
+
+        if(flags & CLIF_OPTARG)
+            *p++ = ']';
+    }
+
+    *p = '\0';
+
+    return buf;
+}
+
+static char *show_long(const CLIF_option *optn) {
+    static char buf[80];
+    char *p = buf;
+    char *endp;
+    const char *s;
+    unsigned int flags = optn->flags | curr.parse_flags;
+
+    if(!(flags & _CLIF_STRICT_KEYWORD)) {
+
+        if(!(flags & _CLIF_STRICT_ONEDASH)) {
+            if(optn->function_plus) {
+                if(!optn->function) {
+                    *p++ = '+';
+                    *p++ = '+';
+                }
+                else {
+                    strcpy(p, LONG_PLUS_MINUS);
+                    p += sizeof(LONG_PLUS_MINUS) - 1;
+                }
+            } else {
+                *p++ = '-';
+                *p++ = '-';
+            }
+
+        } else {
+            if(optn->function_plus) {
+                if(!optn->function)
+                    *p++ = '+';
+                else {
+                    strcpy(p, SHORT_PLUS_MINUS);
+                    p += sizeof(SHORT_PLUS_MINUS) - 1;
+                }
+            } else
+                *p++ = '-';
+        }
+    }
+
+    s = optn->long_opt;
+    endp = buf + sizeof(buf) - sizeof(" [");
+    while(*s && p < endp)
+        *p++ = *s++;
+
+    if(optn->arg_name) {
+
+        if(flags & _CLIF_STRICT_NOEQUAL) {
+            *p++ = ' ';
+            if(flags & CLIF_OPTARG)
+                *p++ = '[';
+        } else {
+            if(flags & CLIF_OPTARG)
+                *p++ = '[';
+            *p++ = '=';
+        }
+
+        s = optn->arg_name;
+        endp = buf + sizeof(buf) - sizeof(",...]");
+        while(*s && p < endp)
+            *p++ = *s++;
+
+        if(flags & CLIF_SEVERAL) {
+            strcpy(p, ",...");
+            p += sizeof(",...") - 1; /*  last '\0' ...  */
+        }
+
+        if(flags & CLIF_OPTARG)
+            *p++ = ']';
+    }
+
+    *p = '\0';
+
+    return buf;
+}
+
+static char *show_excl(const CLIF_option *option_list, int *cnt_p) {
+    static char buf[256];
+    const CLIF_option *optn;
+    char *p = buf;
+    char *endp = buf + sizeof(buf) - sizeof(EXCL_DLM);
+    int excl_cnt = 0;
+
+    *p = '\0';
+    if(cnt_p)
+        *cnt_p = 0;
+    if(!option_list)
+        return buf;
+
+    for(optn = option_list; optn->short_opt || optn->long_opt; optn++) {
+        char *s;
+
+        if(!(optn->flags & CLIF_EXCL))
+            continue;
+
+        if(optn->short_opt)
+            s = show_short(optn);
+        else
+            s = show_long(optn);
+
+        if(excl_cnt > 0) { /*  i.e., second etc...  */
+            strcpy(p, EXCL_DLM);
+            p += sizeof(EXCL_DLM) - 1;
+        }
+
+        while(*s && p < endp)
+            *p++ = *s++;
+
+        excl_cnt++;
+    }
+
+    *p = '\0';
+
+    if(cnt_p)
+        *cnt_p = excl_cnt;
+
+    return buf;
+}
+
+static int is_keyword(const CLIF_option *optn) {
+    unsigned int flags = optn->flags | curr.parse_flags;
+
+    return (flags & _CLIF_STRICT_KEYWORD) != 0;
+}
+
+static void err_bad_opt(const char *arg, char c, int n) {
+    char sym = (*arg == '+') ? '+' : '-';
+
+    if(c)
+        err_report("Bad option `%c%c' (argc %d)", sym, c, n);
+    else {
+        char *p = strchr(arg, '=');
+        const char *type = (*arg == sym) ? "option" : "keyword";
+
+        if(p)
+            err_report("Bad %s `%s' (with arg `%s') (argc %d)",
+                    type, arg, p + 1, n);
+        else
+            err_report("Bad %s `%s' (argc %d)", type, arg, n);
+    }
+}
+
+static void err_bad_arg(const CLIF_option *optn, char c, int n) {
+    CLIF_option tmp = *optn;
+    char ss[80];
+    char *s;
+
+    tmp.arg_name = NULL;
+
+    if(c) {
+        s = show_short(&tmp); /*  always without arg...  */
+        strncpy(ss, s, sizeof(ss));
+        s = show_short(optn);
+    } else {
+        s = show_long(&tmp); /*  always without arg...  */
+        strncpy(ss, s, sizeof(ss));
+        s = show_long(optn);
+    }
+
+    err_report("%s `%s' (argc %d) requires an argument: `%s'",
+            (c || !is_keyword(optn)) ? "Option" : "Keyword", ss, n, s);
+}
+
+static void err_bad_res(const CLIF_option *optn, char c,
+        const char *opt_arg, int n) {
+    CLIF_option tmp = *optn;
+    char *ss;
+    const char *type;
+
+    tmp.arg_name = NULL;
+
+    if(c) {
+        ss = show_short(&tmp);
+        type = "option";
+    } else {
+        ss = show_long(&tmp);
+        type = is_keyword(optn) ? "keyword" : "option";
+    }
+
+    if(optn->arg_name)
+        err_report("Cannot handle `%s' %s with arg `%s' (argc %d)",
+                ss, type, opt_arg, n);
+    else
+        err_report("Cannot handle `%s' %s (argc %d)", ss, type, n);
+}
+
+static void err_bad_excl(const CLIF_option *optn, char c, int n) {
+    CLIF_option tmp = *optn;
+    char *ss;
+    char *excl = show_excl(curr.option_list, 0);
+    /*  Note: show_(short|long)() nested!!! */
+
+    tmp.arg_name = NULL;
+
+    if(c)
+        ss = show_short(&tmp);
+    else
+        ss = show_long(&tmp);
+
+    err_report("%s `%s' (argc %d): Only one of:\n    %s\n"
+            "may be specified.",
+            (c || !is_keyword(optn)) ? "Option" : "Keyword",
+            ss, n, excl);
+}
+
+static CLIF_option *find_long(char *arg, char **arg_p,
+        unsigned int match, unsigned int nomatch) {
+    CLIF_option *optn;
+    CLIF_option *abbrev = NULL;
+    char *abbrev_arg = NULL;
+    int abbrev_found = 0;
+
+    for(optn = curr.option_list;
+            optn->short_opt || optn->long_opt;
+            optn++
+            ) {
+        char *a;
+        const char *o;
+        unsigned int flags;
+
+        if(!optn->long_opt)
+            continue;
+
+        flags = curr.parse_flags | optn->flags;
+        if(flags & nomatch)
+            continue;
+        if(match && !(flags & match))
+            continue; /*  XXX: optimize it */
+
+        for(a = arg, o = optn->long_opt; *o && *a == *o; a++, o++)
+            ;
+
+        if(*a == '\0' ||
+                (*a == '=' && optn->arg_name && !(flags & _CLIF_STRICT_NOEQUAL))
+                ) { /*  looks like end of option...  */
+
+            if(!*o) { /*  explicit match found   */
+                if(*a == '=' && arg_p)
+                    *arg_p = a + 1;
+                return optn;
+            }
+
+            if((flags & CLIF_ABBREV) &&
+                    (a - arg >= CLIF_MIN_ABBREV)
+                    ) {
+                if(!abbrev_found) {
+                    abbrev_found = 1;
+                    abbrev = optn;
+                    if(*a == '=')
+                        abbrev_arg = a + 1;
+                } else
+                    /*  several possibility case...  */
+                    abbrev = NULL;
+            }
+        }
+    }
+
+    if(abbrev) { /*  implicit match found   */
+        if(abbrev_arg && arg_p)
+            *arg_p = abbrev_arg;
+        return abbrev;
+    } else
+        /*  no match found   */
+        return NULL;
+}
+
+static int check_sym(const CLIF_option *optn, char sym) {
+
+    if(sym == '+') {
+        if(!optn->function_plus)
+            return -1;
+    }
+    else if(sym == '-') {
+        if(!optn->function && optn->function_plus)
+            return -1;
+    }
+
+    return 0;
+}
+
+static int call_function(CLIF_option *optn, char *opt_arg, char sym) {
+    int (*function)(CLIF_option *, char *);
+
+    function = (sym == '+') ? optn->function_plus : optn->function;
+
+    if(!function)
+        return 0;
+
+    if(opt_arg && ((optn->flags | curr.parse_flags) & CLIF_SEVERAL)) {
+        char tmp[80];
+        char *t;
+        char *endt = tmp + sizeof(tmp);
+
+        while(*opt_arg) {
+
+            t = tmp;
+            while(t < endt && *opt_arg &&
+                    *opt_arg != ' ' && *opt_arg != '\t' && *opt_arg != ','
+            )
+                *t++ = *opt_arg++;
+
+            if(t >= endt)
+                return -1;
+
+            *t = '\0';
+
+            if(function(optn, tmp) < 0)
+                return -1;
+
+            while(*opt_arg == ' ' || *opt_arg == '\t' || *opt_arg == ',')
+                opt_arg++;
+        }
+
+        return 0;
+    }
+
+    return function(optn, opt_arg);
+}
+
+int CLIF_parse_cmdline (int argc, char *argv[],
+        CLIF_option *option_list,
+        CLIF_argument *argument_list,
+        unsigned int parse_flags){
+int i, j;
+CLIF_option *optn;
+CLIF_argument *argm;
+int num_args = 0;
+int num_argm = 0, strict_beg = 0, strict_end = 0;
+_CLIF_index arg_n[MAX_ARGC_NUMBER];
+unsigned int dirty_flags = 0;
+int dirty_plus = 0;
+int exclusive_cnt = 0;
+int posix = getenv ("POSIXLY_CORRECT") != NULL ||
+(parse_flags & CLIF_POSIX);
+
+curr.argc = argc;
+curr.argv = argv;
+curr.option_list = option_list;
+curr.argument_list = argument_list;
+curr.parse_flags = parse_flags;
+
+if (argc <= 1 && (parse_flags & CLIF_HELP_EMPTY)) {
+    CLIF_current_help ();
+    exit (0);
+}
+
+/*  Scan argument_list for check and some info.  */
+
+if (argument_list) {
+    enum stages {STRICT_BEG, OPTIONAL, STRICT_END};
+    int stage = STRICT_BEG;
+
+    for (argm = argument_list; argm->name; argm++) {
+
+        if (argm->flags & CLIF_STRICT) {
+
+            if (stage == STRICT_BEG) strict_beg++;
+            else if (stage == OPTIONAL) {
+                stage = STRICT_END;
+                strict_end++;
+            }
+            else if (stage == STRICT_END)
+            strict_end++;
+        } else {
+            if (stage == STRICT_BEG) stage = OPTIONAL;
+            else if (stage == STRICT_END) {
+                err_report ("Incorrect argument list set in program "
+                        "source: more than one optional area.");
+                return -1;
+            }
+        }
+
+        num_argm++;
+    }
+}
+
+/*  Scan option_list for some info.  */
+if (option_list) {
+
+    dirty_flags = parse_flags;
+
+    for (optn = option_list;
+            optn->short_opt || optn->long_opt;
+            optn++
+    ) {
+        dirty_flags |= optn->flags;
+        if (optn->function_plus) dirty_plus = 1;
+    }
+}
+
+if (dirty_flags & CLIF_EXCL)
+exclusive_cnt = 1; /*  only one is allowed...  */
+
+/*  Go !   Store arguments, parse options.  */
+
+for (i = 1; i < argc; i++) {
+    char *arg = argv[i];
+    char *opt_arg = NULL;
+    char sym = '-';
+
+    if (!option_list)
+    goto handle_arg;
+
+    if (*arg == '+' && dirty_plus)
+    sym = '+';
+
+    if (*arg != sym) { /*  argument or keyword   */
+
+        if (dirty_flags & CLIF_MAY_KEYWORD) {
+            optn = find_long (arg, &opt_arg, CLIF_MAY_KEYWORD, 0);
+            if (optn) goto long_found;
+        }
+
+        if (num_args == 0 && (parse_flags & CLIF_FIRST_GROUP)) {
+            /*  ugly...  */
+            parse_flags &= ~CLIF_FIRST_GROUP;
+            dirty_flags &= ~CLIF_FIRST_GROUP; /*  to be correct   */
+
+            goto handle_short;
+        }
+
+        /*  else it is an argument   */
+        goto handle_arg;
+
+    }
+    else if (*++arg == sym) { /*  `--' - long option   */
+        arg++;
+
+        if (*arg == sym || /*  `---' - let it be not option... */
+                (parse_flags & (_CLIF_STRICT_KEYWORD|_CLIF_STRICT_ONEDASH))
+        ) {
+            arg -= 2;
+            goto handle_arg; /*  not option anyway  */
+        }
+
+        optn = find_long (arg, &opt_arg, 0,
+                _CLIF_STRICT_KEYWORD | _CLIF_STRICT_ONEDASH);
+        if (optn) goto long_found;
+
+        /*  XXX: May be allow only for `--', not `++' too...  */
+        if (!*arg && sym == '-') { /*  `--' and no empty longoption */
+            option_list = NULL; /*  POSIX way...  */
+            continue;
+        }
+
+        /*  XXX: or treat as an argument sometimes???  */
+        err_bad_opt (argv[i], 0, i);
+        return -1;
+    }
+    else { /*  short option, or several short options...  */
+
+        if (dirty_flags & CLIF_MAY_ONEDASH) {
+            optn = find_long (arg, &opt_arg, CLIF_MAY_ONEDASH, 0);
+            if (optn) goto long_found;
+        }
+
+        if (!*arg) { /*  POSIX say: only "stdout specification"... */
+            arg--;
+            goto handle_arg;
+        }
+
+        goto handle_short;
+    }
+
+    long_found:
+    if (check_sym (optn, sym) < 0) { /*  Oops...  */
+        err_bad_opt (argv[i], 0, i);
+        return -1;
+    }
+
+    if (optn->flags & CLIF_EXCL) {
+        if (!exclusive_cnt) {
+            err_bad_excl (optn, 0, i);
+            return -1;
+        }
+        exclusive_cnt--;
+    }
+
+    if (optn->arg_name && !opt_arg) {
+        unsigned int flags = optn->flags | parse_flags;
+
+        if (++i >= argc ||
+                !(flags & CLIF_MAY_NOEQUAL)
+        ) { /*  missing opt arg   */
+            i--;
+
+            if (!(flags & CLIF_OPTARG)) {
+                err_bad_arg (optn, 0, i);
+                return -1;
+            }
+
+            opt_arg = NULL;
+        } else
+        opt_arg = argv[i];
+
+    }
+
+    if (call_function (optn, opt_arg, sym) < 0) {
+        err_bad_res (optn, 0, opt_arg, i);
+        return -1;
+    }
+
+    if (optn->flags & CLIF_EXIT)
+    exit (0);
+
+    continue;
+
+    handle_arg:
+    if (argument_list) {
+        if (i < MAX_ARGC_NUMBER) /*  XXX: ugly, better report   */
+        arg_n[num_args++] = i;
+    } else {
+        err_report ("`%s' (argc %d): arguments are not allowed",
+                argv[i], i);
+        return -1;
+    }
+
+    /*  POSIX say: No more options after args...  */
+    if (posix) option_list = NULL; /*  geniously...  */
+
+    continue;
+
+    handle_short:
+
+    opt_arg = NULL;
+
+    do {
+
+        for (optn = option_list;
+                optn->short_opt || optn->long_opt;
+                optn++
+        ) {
+            if (optn->short_opt && optn->short_opt[0] == *arg)
+            break;
+        }
+        if (!optn->short_opt ||
+                check_sym (optn, sym) < 0
+        ) {
+            err_bad_opt (argv[i], *arg, i);
+            return -1;
+        }
+
+        if (optn->flags & CLIF_EXCL) {
+            if (!exclusive_cnt) {
+                err_bad_excl (optn, *arg, i);
+                return -1;
+            }
+            exclusive_cnt--;
+        }
+
+        if (optn->arg_name) {
+            unsigned int flags = parse_flags | optn->flags;
+
+            if (arg[1] == '\0') { /*  a last one   */
+
+                /*  POSIX say: an option with arg cannot be grouped. */
+                if (posix && arg != argv[i] && arg[-1] != sym) {
+                    err_bad_arg (optn, *arg, i); /*  good way? */
+                    return -1;
+                }
+
+                if (++i >= argc ||
+                        (flags & _CLIF_STRICT_JOIN_ARG)
+                ) {
+                    i--;
+
+                    if (!(flags & CLIF_OPTARG)) {
+                        err_bad_arg (optn, *arg, i);
+                        return -1;
+                    }
+
+                    opt_arg = NULL;
+                } else
+                opt_arg = argv[i];
+            }
+            else if ((arg == argv[i] || arg[-1] == sym) &&
+                    (flags & CLIF_MAY_JOIN_ARG)
+            ) {
+                opt_arg = ++arg;
+            }
+            else { /*  inside a group...  */
+                if (!(flags & CLIF_OPTARG) ||
+                        (flags & CLIF_MAY_JOIN_ARG)
+                ) {
+                    err_bad_arg (optn, *arg, i);
+                    return -1;
+                }
+
+                opt_arg = NULL;
+            }
+        }
+
+        if (call_function (optn, opt_arg, sym) < 0) {
+            err_bad_res (optn, optn->short_opt[0], opt_arg, i);
+            return -1;
+        }
+
+        if (optn->flags & CLIF_EXIT)
+        exit (0);
+
+    }while (!opt_arg && *++arg);
+
+} /*  for ( ...  )   */
+
+if ((parse_flags & CLIF_STRICT_EXCL) && exclusive_cnt != 0) {
+    err_report ("One of these must be specified:\n    %s\n",
+            show_excl (option_list, 0));
+    return -1;
+}
+
+/*  Now, after *ALL* options, handle arguments, if any.  */
+
+if (num_args < strict_beg + strict_end) {
+    /*  Missing some needed arguments.  */
+
+    if (num_args < strict_beg) argm = argument_list + num_args;
+    else
+    argm = argument_list +
+    ((num_args - strict_beg) + (num_argm - strict_end));
+
+    if (num_args == strict_beg + strict_end - 1)
+    err_report ("Specify \"%s\" missing argument.", argm->name);
+    else
+    err_report ("Specify \"%s\" and other missing arguments.",
+            argm->name);
+    return -1;
+}
+
+if (num_args > 0) {
+    _CLIF_index argm_index[MAX_ARGC_NUMBER];
+
+    /*  assing argm (by index) for each arg...  */
+
+    for (i = 0, j = 0; i < strict_beg; i++, j++)
+    argm_index[i] = j;
+    for (i = num_args - strict_end, j = num_argm - strict_end;
+            i < num_args; i++, j++
+    ) argm_index[i] = j;
+    for (i = strict_beg, j = strict_beg;
+            i < num_args - strict_end && j < num_argm - strict_end;
+            i++
+    ) {
+        argm_index[i] = j;
+        if (!(argument_list[j].flags & CLIF_MORE))
+        j++;
+    }
+
+    if (i < num_args - strict_end) { /*  there are extra args...  */
+        err_report ("Extra arg `%s' (position %d, argc %d)",
+                argv[arg_n[i]], i + 1, arg_n[i]);
+        return -1;
+    }
+
+    if (j < num_argm - strict_end &&
+            !(argument_list[j].flags & CLIF_MORE) &&
+            /*  ...i.e, there are some missing optional args...  */
+            (argument_list[j].flags & CLIF_ACC_PREV)
+    ) {
+        if (j == 0)
+        err_report ("Incorrect argument list set: first arg "
+                "cannot be `accompanied with previous'.");
+        else
+        err_report ("Arg \"%s\" must be specified because "
+                "\"%s\" `%s' is used.", argument_list[j].name,
+                argument_list[j - 1].name, argv[arg_n[i - 1]]);
+        return -1;
+    }
+
+    if (argm_index[--i] == j &&
+            /*  above is true only after OPTIONAL area scan
+             and when `j' is stopped on CLIF_MORE  */
+            ++j < num_argm - strict_end
+            /*  i.e: there is a *last* one (after CLIF_MORE)
+             in the OPTIONAL area  */
+    ) argm_index[i] = j; /*  *last* is better than *more*   */
+
+    /*  ...and work now   */
+
+    for (i = 0; i < num_args; i++) {
+        argm = argument_list + argm_index[i];
+
+        if (argm->function &&
+                argm->function (argm, argv[arg_n[i]], i) < 0
+        ) {
+            err_report ("Cannot handle \"%s\" cmdline arg `%s' "
+                    "on position %d (argc %d)",
+                    argm->name, argv[arg_n[i]], i + 1, arg_n[i]);
+            return -1;
+        }
+    }
+
+    /*  That`s all.  */
+}
+
+return 0;
+}
+
+static void box_output(int start, int left, int width, const char *str,
+        const char *arg_name) {
+    char *p, *endp, *s;
+    int l;
+    char buf[1024];
+    char spacer[128]; /*  assume it is enough   */
+
+    if(left > (int) sizeof(spacer) - 2)
+        left = (int) sizeof(spacer) - 2;
+    if(width > (int) sizeof(buf) - 1)
+        width = (int) sizeof(buf) - 1;
+
+    spacer[0] = '\n';
+    memset(spacer + 1, ' ', left);
+    spacer[left + 1] = '\0';
+
+    l = left - start;
+    if(l > 0) {
+        memset(buf, ' ', l);
+        buf[l] = '\0';
+        fprintf(stderr, "%s", buf);
+    } else
+        fprintf(stderr, "%s", spacer);
+
+    endp = buf + width;
+
+    p = buf;
+
+    while(*str) {
+
+        while(*str && p < endp) {
+
+            if(*str == '%' && arg_name) {
+                if(str[1] == '%') {
+                    *p++ = '%';
+                    str += 2;
+                    continue;
+                }
+                else if(str[1] == 's') {
+                    const char *a = arg_name;
+
+                    while(*a && p < endp)
+                        *p++ = *a++;
+                    str += 2;
+                    continue;
+                }
+            }
+
+            *p++ = *str++;
+        }
+
+        *p = '\0';
+
+        if(p < endp)
+            break;
+
+        while(p > buf && *p != ' ' && *p != '\t')
+            p--;
+        if(p <= buf)
+            return; /*  foo on you   */
+
+        *p = '\0';
+        fprintf(stderr, "%s", buf);
+        fprintf(stderr, "%s", spacer);
+
+        p++;
+        for(s = buf; *p; *s++ = *p++)
+            ;
+        *s = '\0';
+        p = s;
+    }
+
+    fprintf(stderr, "%s", buf);
+
+    return;
+}
+
+#define SHORT_LONG_DLM	"  "
+#define OPT_START_DLM	"  "
+#define OPT_FIELD_WIDTH	30
+
+#define ARG_MARK_STRICT	"+     "
+#define ARG_MARK_GROUP0	"  .   "
+#define ARG_MARK_GROUP	"  '   "
+#define ARG_MARK_OPT	"      "
+#define ARG_FIELD_WIDTH	20
+
+#define SCREEN_WIDTH	80
+
+void CLIF_print_options(const char *header,
+        const CLIF_option *option_list) {
+    const CLIF_option *optn;
+    char *excl;
+    int excl_cnt = 0;
+
+    /*  Print a header string, if present...  */
+    if(header)
+        fprintf(stderr, "%s\n", header);
+
+    if(!option_list)
+        return;
+
+    for(optn = option_list; optn->short_opt || optn->long_opt; optn++) {
+        int len;
+
+        /*  generate and print an option usage   */
+
+        if(optn->short_opt) {
+            if(optn->long_opt)
+                len = fprintf(stderr, OPT_START_DLM "%s"
+                SHORT_LONG_DLM "%s",
+                        show_short(optn), show_long(optn));
+            else
+                len = fprintf(stderr, OPT_START_DLM "%s",
+                        show_short(optn));
+        } else
+            len = fprintf(stderr, OPT_START_DLM "%s", show_long(optn));
+
+        /*  print a help string, if present   */
+
+        if(optn->help_string)
+            box_output(len, OPT_FIELD_WIDTH,
+            SCREEN_WIDTH - OPT_FIELD_WIDTH,
+                    optn->help_string, optn->arg_name);
+
+        fprintf(stderr, "\n"); /*  a last one   */
+    }
+
+    excl = show_excl(option_list, &excl_cnt);
+    if(excl_cnt > 0) {
+
+        if(excl_cnt == 1) {
+            if((curr.parse_flags & CLIF_STRICT_EXCL) &&
+                    curr.option_list == option_list
+                            )
+                fprintf(stderr, "Anyway `%s' must be specified.\n", excl);
+            //else  /*  simple ordinary option, because excl_cnt == 1 ... */
+        } else
+            fprintf(stderr, "Only one of these may be specified:\n"
+                    "    %s\n", excl);
+    }
+
+    return;
+}
+
+void CLIF_print_arguments(const char *header,
+        const CLIF_argument *argument_list) {
+    const CLIF_argument *argm;
+
+    if(!argument_list)
+        return;
+
+    /*  Print a header string, if present...  */
+    if(header)
+        fprintf(stderr, "%s\n", header);
+
+    for(argm = argument_list; argm->name; argm++) {
+        int len;
+
+        if(argm->flags & CLIF_STRICT)
+            len = fprintf(stderr, ARG_MARK_STRICT "%s", argm->name);
+        else if(argm->flags & CLIF_MORE)
+            len = fprintf(stderr, ARG_MARK_OPT "%s ...", argm->name);
+        else if(argm->flags & CLIF_ACC_PREV)
+            len = fprintf(stderr, ARG_MARK_GROUP "%s", argm->name);
+        else if((argm + 1)->name && ((argm + 1)->flags & CLIF_ACC_PREV))
+            len = fprintf(stderr, ARG_MARK_GROUP0 "%s", argm->name);
+        else
+            len = fprintf(stderr, ARG_MARK_OPT "%s", argm->name);
+
+        if(argm->help_string)
+            box_output(len, ARG_FIELD_WIDTH,
+            SCREEN_WIDTH - ARG_FIELD_WIDTH,
+                    argm->help_string, argm->name);
+
+        fprintf(stderr, "\n");
+    }
+
+    return;
+}
+
+void CLIF_print_usage(const char *header, const char *progname,
+        const CLIF_option *option_list,
+        const CLIF_argument *argument_list) {
+
+    if(!progname && curr.argv)
+        progname = curr.argv[0];
+
+    if(!header) {
+        if(progname)
+            fprintf(stderr, "Usage: %s", progname);
+        else
+            fprintf(stderr, "Command line options:");
+    } else {
+        if(progname)
+            fprintf(stderr, "%s\n" OPT_START_DLM "%s", header, progname);
+        else
+            fprintf(stderr, "%s", header);
+    }
+
+    if(option_list) {
+        const CLIF_option *optn;
+        char m_buf[256], p_buf[256], mp_buf[256];
+        char *m = m_buf, *p = p_buf, *mp = mp_buf;
+        char *end_m = m_buf + sizeof(m_buf) - 1;
+        char *end_p = p_buf + sizeof(p_buf) - 1;
+        char *end_mp = mp_buf + sizeof(mp_buf) - 1;
+        char *excl;
+        int excl_cnt = 0;
+
+        /*  first, show exclusive option list, if any...  */
+
+        excl = show_excl(option_list, &excl_cnt);
+        if(excl_cnt > 0) {
+            if((curr.parse_flags & CLIF_STRICT_EXCL) &&
+                    curr.option_list == option_list
+                            ) {
+                if(excl_cnt == 1)
+                    fprintf(stderr, " %s", excl);
+                else
+                    fprintf(stderr, " { %s }", excl);
+            } else
+                fprintf(stderr, " [ %s ]", excl);
+        }
+
+        /*  second, find short options without arguments...  */
+
+        for(optn = option_list;
+                optn->short_opt || optn->long_opt;
+                optn++
+                ) {
+            /*  We don`t exclude CLIF_EXTRA hear:
+             simple one char don`t eat a lot of space...
+             */
+
+            if(!optn->short_opt ||
+                    optn->arg_name ||
+                    (optn->flags & CLIF_EXCL)
+                    )
+                continue;
+
+            if(optn->function_plus) {
+                if(optn->function) {
+                    if(mp < end_mp)
+                        *mp++ = optn->short_opt[0];
+                } else {
+                    if(p < end_p)
+                        *p++ = optn->short_opt[0];
+                }
+            } else {
+                if(m < end_m)
+                    *m++ = optn->short_opt[0];
+            }
+        }
+
+        if(m > (char *) m_buf) {
+            *m = '\0';
+            fprintf(stderr, " [ -%s ]", m_buf);
+        }
+        if(p > (char *) p_buf) {
+            *p = '\0';
+            fprintf(stderr, " [ +%s ]", p_buf);
+        }
+        if(mp > (char *) mp_buf) {
+            *mp = '\0';
+            fprintf(stderr, " [ " SHORT_PLUS_MINUS "%s ]", mp_buf);
+        }
+
+        /*  third, print all another...  */
+
+        for(optn = option_list;
+                optn->short_opt || optn->long_opt;
+                optn++
+                ) {
+            if(optn->flags & CLIF_EXTRA)
+                continue;
+
+            if(optn->flags & CLIF_EXCL)
+                continue; /*  already handled   */
+
+            if(optn->short_opt) {
+                if(optn->arg_name)
+                    fprintf(stderr, " [ %s ]", show_short(optn));
+                //else
+                /*  already handled   */
+            } else
+                fprintf(stderr, " [ %s ]", show_long(optn));
+        }
+    }
+
+    if(argument_list) {
+        const CLIF_argument *argm;
+        int deep = 0;
+
+        for(argm = argument_list; argm->name; argm++) {
+
+            if(argm->flags & CLIF_STRICT) {
+                if(deep > 0) {
+                    fputc(' ', stderr);
+                    while(deep--)
+                        fputc(']', stderr);
+                    deep = 0;
+                }
+
+                fprintf(stderr, " %s", argm->name);
+            } else {
+                if(argm->flags & CLIF_MORE)
+                    fprintf(stderr, " [ %s ...", argm->name);
+                else if(argm->flags & CLIF_ACC_PREV) {
+                    fprintf(stderr, " %s", argm->name);
+                    --deep; /*  ugly, but easy   */
+                } else
+                    fprintf(stderr, " [ %s", argm->name);
+
+                deep++;
+            }
+        }
+
+        if(deep > 0) {
+            fputc(' ', stderr);
+            while(deep--)
+                fputc(']', stderr);
+        }
+    }
+
+    fprintf(stderr, "\n");
+}
+
+int CLIF_current_help(void) {
+
+    if(!curr.argc)
+        return -1; /*  i.e., not inited...  */
+
+    CLIF_print_usage("Usage:", curr.argv[0], curr.option_list,
+            curr.argument_list);
+
+    if(curr.option_list)
+        CLIF_print_options("Options:", curr.option_list);
+
+    if(curr.argument_list)
+        CLIF_print_arguments("\nArguments:", curr.argument_list);
+
+    return 0;
+}
+
+/*  Common useful option handlers.  */
+
+int CLIF_version_handler(CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    if(!optn->data)
+        return -1;
+
+    fprintf(stderr, "%s\n", ((char *) optn->data));
+
+    return 0; /*  be happy   */
+}
+
+int CLIF_set_flag(CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    if(!optn->data)
+        return -1;
+
+    *((int *) optn->data) = 1;
+
+    return 0;
+}
+
+int CLIF_unset_flag(CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    if(!optn->data)
+        return -1;
+
+    *((int *) optn->data) = 0;
+
+    return 0;
+}
+
+static int set_string(char **data, char *arg) {
+
+    if(!data)
+        return -1;
+
+    *data = arg;
+
+    return 0;
+}
+
+int CLIF_set_string(CLIF_option *optn, char *arg) {
+
+    return set_string(optn->data, arg);
+}
+
+int CLIF_arg_string(CLIF_argument *argm, char *arg, int index) {
+    UNUSED(index);
+    return set_string(argm->data, arg);
+}
+
+static int set_int(int *data, char *arg) {
+    char *q;
+
+    if(!data)
+        return -1;
+
+    *data = (int) strtol(arg, &q, 0);
+
+    return (q == arg || *q) ? -1 : 0;
+}
+
+static int set_uint(unsigned int *data, char *arg) {
+    char *q;
+
+    if(!data)
+        return -1;
+
+    *data = (unsigned int) strtoul(arg, &q, 0);
+
+    return (q == arg || *q) ? -1 : 0;
+}
+
+static int set_double(double *data, char *arg) {
+    char *q;
+
+    if(!data)
+        return -1;
+
+    *data = strtod(arg, &q);
+
+    return (q == arg || *q) ? -1 : 0;
+}
+
+int CLIF_set_int(CLIF_option *optn, char *arg) {
+
+    return set_int(optn->data, arg);
+}
+
+int CLIF_set_uint(CLIF_option *optn, char *arg) {
+
+    return set_uint(optn->data, arg);
+}
+
+int CLIF_set_double(CLIF_option *optn, char *arg) {
+
+    return set_double(optn->data, arg);
+}
+
+int CLIF_arg_int(CLIF_argument *argm, char *arg, int index) {
+    UNUSED(index);
+    return set_int(argm->data, arg);
+}
+
+int CLIF_arg_uint(CLIF_argument *argm, char *arg, int index) {
+    UNUSED(index);
+    return set_uint(argm->data, arg);
+}
+
+int CLIF_arg_double(CLIF_argument *argm, char *arg, int index) {
+    UNUSED(index);
+    return set_double(argm->data, arg);
+}
+
+int CLIF_call_func(CLIF_option *optn, char *arg) {
+
+    if(!optn->data)
+        return -1;
+
+    if(optn->arg_name) {
+        int (*func)(char *) = optn->data;
+
+        return func(arg);
+    } else {
+        int (*func)(void) = optn->data;
+
+        return func();
+    }
+}
+
+int CLIF_arg_func(CLIF_argument *argm, char *arg, int index) {
+    int (*func)(char *, int);
+
+    if(!argm->data)
+        return -1;
+
+    func = (int (*)(char *, int)) argm->data;
+
+    return func(arg, index);
+}
+
diff --git a/modules/net/iputils/traceroute/clif.h b/modules/net/iputils/traceroute/clif.h
new file mode 100644
index 0000000000..c798a8df8f
--- /dev/null
+++ b/modules/net/iputils/traceroute/clif.h
@@ -0,0 +1,121 @@
+/*
+    Copyright (c)  2000, 2003		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  LGPL v2.1 or any later
+
+    See COPYING.LIB for the status of this software.
+*/
+
+#ifndef _CLIF_H
+#define _CLIF_H
+
+
+typedef struct CLIF_option_struct CLIF_option;
+struct CLIF_option_struct {
+	const char *short_opt;
+	const char *long_opt;
+	const char *arg_name;
+	const char *help_string;
+	int (*function) (CLIF_option *optn, char *arg);
+	void *data;
+	int (*function_plus) (CLIF_option *optn, char *arg);
+	unsigned int flags;
+};
+#define CLIF_END_OPTION	    { 0, 0, 0, 0, 0, 0, 0, 0 }
+
+typedef struct CLIF_argument_struct CLIF_argument;
+struct CLIF_argument_struct {
+	const char *name;
+	const char *help_string;
+	int (*function) (CLIF_argument *argm, char *arg, int index);
+	void *data;
+	unsigned int flags;
+};
+#define CLIF_END_ARGUMENT   { 0, 0, 0, 0, 0 }
+
+/*  Argument flag bits.  */
+#define CLIF_MORE	(0x01)	/*  null or several  */
+#define CLIF_STRICT	(0x02)	/*  arg must be present   */
+#define CLIF_ACC_PREV	(0x04)  /*  arg must be accompanied with previous  */
+
+
+/*  Option flag bits.  */
+
+/*  affected only by per-option flags   */
+#define CLIF_EXTRA		(0x0001)  /*  don`t show in usage line   */
+#define CLIF_EXIT		(0x0002)  /*  exit after handler return   */
+#define CLIF_EXCL		(0x0004)  /*  at exclusive area  */
+
+/*  affected by per-option flags and by common `parse_flags' argument
+  of CLIF_parse_cmdline(). In last case appropriate bits are translated
+  for all the options.
+*/
+#define CLIF_MAY_JOIN_ARG	(0x0010)
+#define _CLIF_STRICT_JOIN_ARG	(0x0020)
+#define CLIF_JOIN_ARG		(CLIF_MAY_JOIN_ARG|_CLIF_STRICT_JOIN_ARG)
+#define CLIF_MAY_NOEQUAL	(0x0040)
+#define _CLIF_STRICT_NOEQUAL	(0x0080)
+#define CLIF_NOEQUAL		(CLIF_MAY_NOEQUAL|_CLIF_STRICT_NOEQUAL)
+#define CLIF_MAY_KEYWORD	(0x0100)
+#define _CLIF_STRICT_KEYWORD	(0x0200)
+#define CLIF_KEYWORD		(CLIF_MAY_KEYWORD|_CLIF_STRICT_KEYWORD)
+#define CLIF_MAY_ONEDASH	(0x0400)
+#define _CLIF_STRICT_ONEDASH	(0x0800)
+#define CLIF_ONEDASH		(CLIF_MAY_ONEDASH|_CLIF_STRICT_ONEDASH)
+#define CLIF_OPTARG		(0x1000)  /*  allow missing optarg   */
+#define CLIF_ABBREV		(0x2000)  /*  allow long opt abbreviation  */
+#define CLIF_SEVERAL		(0x4000)  /*  several args in one opt`s arg  */
+
+/*  affected only by common `parse_flags' arg of CLIF_parse_cmdline() .  */
+#define CLIF_HELP_EMPTY		(0x10000) /*  print help on empty cmdline  */
+#define CLIF_POSIX		(0x20000) /*  follow POSIX standard  */
+#define CLIF_FIRST_GROUP	(0x40000) /*  first arg - options` group   */
+#define CLIF_STRICT_EXCL	(0x80000) /*  at least one exclusive  */
+#define CLIF_SILENT		(0x100000)	/*  no errors on stderr   */
+
+#define CLIF_MIN_ABBREV	2	/*  a minimal match length in abbrev  */
+
+
+extern int CLIF_parse (int argc, char **argv, CLIF_option *option_list,
+			    CLIF_argument *arg_list, unsigned int parse_flags);
+/*  history compatibility...  */
+#define CLIF_parse_cmdline(ARGC,ARGV,OPTN,ARGS,FLAGS)	\
+		CLIF_parse (ARGC, ARGV, OPTN, ARGS, FLAGS)
+
+extern void CLIF_print_options (const char *header,
+					const CLIF_option *option_list);
+extern void CLIF_print_arguments (const char *header,
+					const CLIF_argument *argument_list);
+extern void CLIF_print_usage (const char *header, const char *progname, 
+					const CLIF_option *option_list,
+					const CLIF_argument *argument_list);
+
+extern int CLIF_current_help (void);
+
+/*  Common useful option handlers.  */
+extern int CLIF_version_handler (CLIF_option *optn, char *arg);
+extern int CLIF_set_flag (CLIF_option *optn, char *arg);
+extern int CLIF_unset_flag (CLIF_option *optn, char *arg);
+extern int CLIF_set_string (CLIF_option *optn, char *arg);
+extern int CLIF_set_int (CLIF_option *optn, char *arg);
+extern int CLIF_set_uint (CLIF_option *optn, char *arg);
+extern int CLIF_set_double (CLIF_option *optn, char *arg);
+extern int CLIF_call_func (CLIF_option *optn, char *arg);
+
+extern int CLIF_arg_string (CLIF_argument *argm, char *arg, int index);
+extern int CLIF_arg_int (CLIF_argument *argm, char *arg, int index);
+extern int CLIF_arg_uint (CLIF_argument *argm, char *arg, int index);
+extern int CLIF_arg_double (CLIF_argument *argm, char *arg, int index);
+extern int CLIF_arg_func (CLIF_argument *argm, char *arg, int index);
+
+
+/*  Some useful macros.  */
+
+#define CLIF_HELP_OPTION    \
+	{ 0, "help", 0, "Read this help and exit",	\
+		CLIF_call_func, CLIF_current_help, 0, CLIF_EXTRA | CLIF_EXIT }
+#define CLIF_VERSION_OPTION(STR)  \
+	{ "V", "version", 0, "Print version info and exit",	\
+		CLIF_version_handler, STR, 0, CLIF_EXTRA | CLIF_EXIT }
+
+#endif	/*  _CLIF_H   */
diff --git a/modules/net/iputils/traceroute/csum.c b/modules/net/iputils/traceroute/csum.c
new file mode 100644
index 0000000000..ea3a50da04
--- /dev/null
+++ b/modules/net/iputils/traceroute/csum.c
@@ -0,0 +1,34 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "traceroute.h"
+
+
+uint16_t in_csum (const void *ptr, size_t len) {
+	const uint16_t *p = (const uint16_t *) ptr;
+	size_t nw = len / 2;
+	unsigned int sum = 0;
+	uint16_t res;
+
+	while (nw--)  sum += *p++;
+
+	if (len & 0x1)
+	    sum += htons (*((unsigned char *) p) << 8);
+
+	sum = (sum >> 16) + (sum & 0xffff);
+	sum += (sum >> 16);
+
+	res = ~sum;
+	if (!res)  res = ~0;
+
+	return res;
+}
+
diff --git a/modules/net/iputils/traceroute/extension.c b/modules/net/iputils/traceroute/extension.c
new file mode 100644
index 0000000000..515a8dbed7
--- /dev/null
+++ b/modules/net/iputils/traceroute/extension.c
@@ -0,0 +1,132 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "traceroute.h"
+
+
+struct icmp_ext_header {
+#if __BYTE_ORDER == __BIG_ENDIAN
+	unsigned int version:4;
+	unsigned int reserved:4;
+#else
+	unsigned int reserved:4;
+	unsigned int version:4;
+#endif
+	uint8_t reserved1;
+	uint16_t checksum;
+} __attribute__ ((packed));
+
+
+struct icmp_ext_object {
+	uint16_t length;
+	uint8_t class;
+	uint8_t c_type;
+	uint8_t data[0];
+};
+
+#define MPLS_CLASS 1
+#define MPLS_C_TYPE 1
+
+
+#define do_snprintf(CURR, END, FMT, ARGS...)	\
+	do {					\
+	    CURR += snprintf (CURR, END - CURR, (FMT), ## ARGS);\
+	    if (CURR > END)  CURR = END;			\
+	} while (0)
+
+
+static int try_extension (probe *pb, char *buf, size_t len) {
+	struct icmp_ext_header *iext = (struct icmp_ext_header *) buf;
+	char str[1024];
+	char *curr = str;
+	char *end = str + sizeof (str) / sizeof (*str);
+	
+
+	/*  a check for len >= 8 already done for all cases   */
+
+	if (iext->version != 2)  return -1;
+
+	if (iext->checksum &&
+	    in_csum (iext, len) != (uint16_t) ~0
+	)  return -1;
+
+	buf += sizeof (*iext);
+	len -= sizeof (*iext);
+
+
+	while (len >= sizeof (struct icmp_ext_object)) {
+	    struct icmp_ext_object *obj = (struct icmp_ext_object *) buf;
+	    size_t objlen = ntohs (obj->length);
+	    size_t data_len;
+	    uint32_t *ui = (uint32_t *) obj->data;
+	    int i, n;
+
+	    if (objlen < sizeof (*obj) ||
+		objlen > len
+	    )  return -1;
+
+	    data_len = objlen - sizeof (*obj);
+	    if (data_len % sizeof (uint32_t))
+		    return -1;	/*  must be 32bit rounded...  */
+
+	    n = data_len / sizeof (*ui);
+
+
+	    if (curr > (char *) str && curr < end)
+		    *curr++ = ';';	/*  a separator   */
+
+	    if (obj->class == MPLS_CLASS &&
+		obj->c_type == MPLS_C_TYPE &&
+		n >= 1
+	    ) {    /*  people prefer MPLS to be parsed...  */
+
+		do_snprintf (curr, end, "MPLS:");
+
+		for (i = 0; i < n; i++, ui++) {
+		    uint32_t mpls = ntohl (*ui);
+
+		    do_snprintf (curr, end, "%sL=%u,E=%u,S=%u,T=%u",
+					i ? "/" : "",
+					mpls >> 12,
+					(mpls >> 9) & 0x7,
+					(mpls >> 8) & 0x1,
+					mpls & 0xff);
+		}
+
+	    }
+	    else {	/*  common case...  */
+
+		do_snprintf (curr, end, "%u/%u:", obj->class, obj->c_type);
+
+		for (i = 0; i < n && curr < end; i++, ui++)
+		    do_snprintf (curr, end, "%s%08x", i ? "," : "", ntohl(*ui));
+	    }
+
+	    buf += objlen;
+	    len -= objlen;
+	}
+
+	if (len)  return -1;
+
+
+	pb->ext = strdup (str);
+
+	return 0;
+}
+
+
+void handle_extensions (probe *pb, char *buf, int len, int step) {
+
+	if (!step)
+	    try_extension (pb, buf, len);
+	else {
+	    for ( ; len >= 8; buf += step, len -= step)
+		if (try_extension (pb, buf, len) == 0)
+			break;
+	}
+
+	return;
+}
+
diff --git a/modules/net/iputils/traceroute/flowlabel.h b/modules/net/iputils/traceroute/flowlabel.h
new file mode 100755
index 0000000000..e6241c4f8e
--- /dev/null
+++ b/modules/net/iputils/traceroute/flowlabel.h
@@ -0,0 +1,40 @@
+/*
+   It is just a stripped copy of the kernel header "linux/in6.h"
+
+   "Flow label" things are still not defined in "netinet/in*.h" headers,
+   but we cannot use "linux/in6.h" immediately because it currently
+   conflicts with "netinet/in.h" .
+*/
+
+struct in6_flowlabel_req_
+{
+	struct in6_addr	flr_dst;
+	__u32	flr_label;
+	__u8	flr_action;
+	__u8	flr_share;
+	__u16	flr_flags;
+	__u16 	flr_expires;
+	__u16	flr_linger;
+	__u32	__flr_pad;
+	/* Options in format of IPV6_PKTOPTIONS */
+};
+
+#define IPV6_FL_A_GET	0
+#define IPV6_FL_A_PUT	1
+#define IPV6_FL_A_RENEW	2
+
+#define IPV6_FL_F_CREATE	1
+#define IPV6_FL_F_EXCL		2
+
+#define IPV6_FL_S_NONE		0
+#define IPV6_FL_S_EXCL		1
+#define IPV6_FL_S_PROCESS	2
+#define IPV6_FL_S_USER		3
+#define IPV6_FL_S_ANY		255
+
+#define IPV6_FLOWINFO_FLOWLABEL		0x000fffff
+#define IPV6_FLOWINFO_PRIORITY		0x0ff00000
+
+#define IPV6_FLOWLABEL_MGR	32
+#define IPV6_FLOWINFO_SEND	33
+
diff --git a/modules/net/iputils/traceroute/mod-dccp.c b/modules/net/iputils/traceroute/mod-dccp.c
new file mode 100644
index 0000000000..26f2c653bf
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-dccp.c
@@ -0,0 +1,295 @@
+/*
+    Copyright (c)  2012		Samuel Jero <sj323707@ohio.edu>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <linux/dccp.h>
+
+
+#include "traceroute.h"
+
+
+#define DEF_SERVICE_CODE 	1885957735
+
+#define DCCP_HEADER_LEN		(sizeof (struct dccp_hdr) + \
+				 sizeof (struct dccp_hdr_ext) \
+				 + sizeof (struct dccp_hdr_request))
+
+static sockaddr_any dest_addr = {{ 0, }, };
+static unsigned int dest_port = 0;
+
+static int raw_sk = -1;
+static int last_ttl = 0;
+
+static uint8_t buf[1024];	/*  enough, enough...  */
+static size_t csum_len = 0;
+static struct dccp_hdr *dh = NULL;
+static struct dccp_hdr_ext *dhe = NULL;
+static struct dccp_hdr_request *dhr = NULL;
+static unsigned int service_code = DEF_SERVICE_CODE;
+
+
+static CLIF_option dccp_options[] = {
+	{ 0, "service", "NUM", "Set DCCP service code to %s (default is "
+				_TEXT (DEF_SERVICE_CODE) ")",
+				CLIF_set_uint, &service_code, 0, CLIF_ABBREV },
+	CLIF_END_OPTION
+};
+
+
+static int dccp_init (const sockaddr_any *dest,
+				unsigned int port_seq, size_t *packet_len_p) {
+	int af = dest->sa.sa_family;
+	sockaddr_any src;
+	socklen_t len;
+	uint8_t *ptr;
+	uint16_t *lenp;
+
+
+	dest_addr = *dest;
+	dest_addr.sin.sin_port = 0;	/*  raw sockets can be confused   */
+
+	if (!port_seq)  port_seq = DEF_DCCP_PORT;
+	dest_port = htons (port_seq);
+
+
+	/*  Create raw socket for DCCP   */
+	raw_sk = socket (af, SOCK_RAW, IPPROTO_DCCP);
+	if (raw_sk < 0)
+		error_or_perm ("socket");
+
+	tune_socket (raw_sk);	    /*  including bind, if any   */
+
+	if (connect (raw_sk, &dest_addr.sa, sizeof (dest_addr)) < 0)
+		error ("connect");
+
+	len = sizeof (src);
+	if (getsockname (raw_sk, &src.sa, &len) < 0)
+		error ("getsockname");
+
+
+	if (!raw_can_connect ()) {	/*  work-around for buggy kernels  */
+		close (raw_sk);
+		raw_sk = socket (af, SOCK_RAW, IPPROTO_DCCP);
+		if (raw_sk < 0)  error ("socket");
+		tune_socket (raw_sk);
+		/*  but do not connect it...  */
+	}
+
+
+	use_recverr (raw_sk);
+
+	add_poll (raw_sk, POLLIN | POLLERR);
+
+
+	/*  Now create the sample packet.  */
+
+	/*  For easy checksum computing:
+		saddr
+		daddr
+		length
+		protocol
+		dccphdr
+	*/
+
+	ptr = buf;
+
+	if (af == AF_INET) {
+		len = sizeof (src.sin.sin_addr);
+		memcpy (ptr, &src.sin.sin_addr, len);
+		ptr += len;
+		memcpy (ptr, &dest_addr.sin.sin_addr, len);
+		ptr += len;
+	} else {
+		len = sizeof (src.sin6.sin6_addr);
+		memcpy (ptr, &src.sin6.sin6_addr, len);
+		ptr += len;
+		memcpy (ptr, &dest_addr.sin6.sin6_addr, len);
+		ptr += len;
+	}
+
+	lenp = (uint16_t *) ptr;
+	ptr += sizeof (uint16_t);
+	*((uint16_t *) ptr) = htons ((uint16_t) IPPROTO_DCCP);
+	ptr += sizeof (uint16_t);
+
+
+	/*  Construct DCCP header   */
+	dh = (struct dccp_hdr *) ptr;
+
+	dh->dccph_ccval = 0;
+	dh->dccph_checksum = 0;
+	dh->dccph_cscov = 0;
+	dh->dccph_dport = dest_port;
+	dh->dccph_reserved = 0;
+	dh->dccph_sport = 0;	/*  temporary   */
+	dh->dccph_x = 1;
+	dh->dccph_type = DCCP_PKT_REQUEST;
+	dh->dccph_seq2 = 0;	/*  reserved if using 48 bit sequence numbers  */
+	/*  high 16 bits of sequence number. Always make 0 for simplicity.  */
+	dh->dccph_seq = 0;
+	ptr += sizeof (struct dccp_hdr);
+
+	dhe = (struct dccp_hdr_ext *) ptr;
+	dhe->dccph_seq_low = 0;		/*  temporary   */
+	ptr += sizeof (struct dccp_hdr_ext);
+
+	dhr = (struct dccp_hdr_request *) ptr;
+	dhr->dccph_req_service = htonl (service_code);
+	ptr += sizeof (struct dccp_hdr_request);
+
+
+	csum_len = ptr - buf;
+
+	if (csum_len > sizeof (buf))
+		error ("impossible");	/*  paranoia   */
+
+	len = ptr - (uint8_t *) dh;
+	if (len & 0x03)  error ("impossible");  /*  as >>2 ...  */
+
+	*lenp = htons (len);
+	dh->dccph_doff = len >> 2;
+
+
+	*packet_len_p = len;
+
+	return 0;
+}
+
+
+static void dccp_send_probe (probe *pb, int ttl) {
+	int sk;
+	int af = dest_addr.sa.sa_family;
+	sockaddr_any addr;
+	socklen_t len = sizeof (addr);
+
+
+	/*  To make sure we have chosen a free unused "source port",
+	   just create, (auto)bind and hold a socket while the port is needed.
+	*/
+
+	sk = socket (af, SOCK_DCCP, IPPROTO_DCCP);
+	if (sk < 0)  error ("socket");
+
+	bind_socket (sk);
+
+	if (getsockname (sk, &addr.sa, &len) < 0)
+		error ("getsockname");
+
+	/*  When we reach the target host, it can send us either Reset or Response.
+	  For Reset all is OK (we and kernel just answer nothing), but
+	  for Response we should reply with our Close.
+	    It is well-known "half-open technique", used by port scanners etc.
+	  This way we do not touch remote applications at all, unlike
+	  the ordinary connect(2) call.
+	    As the port-holding socket neither connect() nor listen(),
+	  it means "no such port yet" for remote ends, and kernel always
+	  send Reset in such a situation automatically (we have to do nothing).
+	*/
+
+
+	dh->dccph_sport = addr.sin.sin_port;
+
+	dhe->dccph_seq_low = random_seq ();
+
+	dh->dccph_checksum = 0;
+	dh->dccph_checksum = in_csum (buf, csum_len);
+
+
+	if (ttl != last_ttl) {
+		set_ttl (raw_sk, ttl);
+		last_ttl = ttl;
+	}
+
+
+	pb->send_time = get_time ();
+
+	if (do_send (raw_sk, dh, dh->dccph_doff << 2, &dest_addr) < 0) {
+		close (sk);
+		pb->send_time = 0;
+		return;
+	}
+
+
+	pb->seq = dh->dccph_sport;
+
+	pb->sk = sk;
+
+	return;
+}
+
+
+static probe *dccp_check_reply (int sk, int err, sockaddr_any *from,
+						    char *buf, size_t len) {
+    UNUSED(sk);
+	probe *pb;
+	struct dccp_hdr *ndh = (struct dccp_hdr *) buf;
+	uint16_t sport, dport;
+
+
+	if (len < 8)  return NULL;	    /*  too short   */
+
+
+	if (err) {
+	    sport = ndh->dccph_sport;
+	    dport = ndh->dccph_dport;
+	} else {
+	    sport = ndh->dccph_dport;
+	    dport = ndh->dccph_sport;
+	}
+
+
+	if (dport != dest_port)
+		return NULL;
+
+	if (!equal_addr (&dest_addr, from))
+		return NULL;
+
+	pb = probe_by_seq (sport);
+	if (!pb)  return NULL;
+
+	if (!err)  pb->final = 1;
+
+	return pb;
+}
+
+
+static void dccp_recv_probe (int sk, int revents) {
+
+	if (!(revents & (POLLIN | POLLERR)))
+		return;
+
+	recv_reply (sk, !!(revents & POLLERR), dccp_check_reply);
+}
+
+
+static void dccp_expire_probe (probe *pb) {
+
+	probe_done (pb);
+}
+
+
+static tr_module dccp_ops = {
+	.name = "dccp",
+	.init = dccp_init,
+	.send_probe = dccp_send_probe,
+	.recv_probe = dccp_recv_probe,
+	.expire_probe = dccp_expire_probe,
+	.options = dccp_options,
+};
+
+TR_MODULE (dccp_ops);
+
+void tr_module_dccp_insert()
+{
+
+}
diff --git a/modules/net/iputils/traceroute/mod-icmp.c b/modules/net/iputils/traceroute/mod-icmp.c
new file mode 100644
index 0000000000..e2194d9aa4
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-icmp.c
@@ -0,0 +1,240 @@
+/*
+ Copyright (c)  2006, 2007		Dmitry Butskoy
+ <buc@citadel.stu.neva.ru>
+ License:  GPL v2 or any later
+
+ See COPYING for the status of this software.
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/icmp6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+
+#include "traceroute.h"
+
+static sockaddr_any dest_addr = { { 0, }, };
+static uint16_t seq = 1;
+static uint16_t ident = 0;
+
+static char *data;
+static size_t *length_p;
+
+static int icmp_sk = -1;
+static int last_ttl = 0;
+
+static int raw = 0;
+static int dgram = 0;
+
+static CLIF_option icmp_options[] = {
+    { 0, "raw", 0, "Use raw sockets way only. Default is try this way "
+            "first (probably not allowed for unprivileged users), "
+            "then try dgram",
+        CLIF_set_flag, &raw, 0, CLIF_EXCL },
+    { 0, "dgram", 0, "Use dgram sockets way only. May be not implemented "
+            "by old kernels or restricted by sysadmins",
+        CLIF_set_flag, &dgram, 0, CLIF_EXCL },
+    CLIF_END_OPTION
+    };
+
+static int icmp_init(const sockaddr_any *dest,
+        unsigned int port_seq, size_t *packet_len_p) {
+    int i;
+    int af = dest->sa.sa_family;
+    int protocol;
+
+    dest_addr = *dest;
+    dest_addr.sin.sin_port = 0;
+
+    if(port_seq)
+        seq = port_seq;
+
+    length_p = packet_len_p;
+    if(*length_p < sizeof(struct icmphdr))
+        *length_p = sizeof(struct icmphdr);
+
+    data = malloc(*length_p);
+    if(!data)
+        error("malloc");
+
+    for(i = (int) sizeof(struct icmphdr); i < (int)*length_p; i++)
+        data[i] = 0x40 + (i & 0x3f);
+
+    protocol = (af == AF_INET) ? IPPROTO_ICMP : IPPROTO_ICMPV6;
+
+    if(!raw) {
+        icmp_sk = socket(af, SOCK_DGRAM, protocol);
+        if(icmp_sk < 0 && dgram)
+            error("socket");
+    }
+
+    if(!dgram) {
+        int raw_sk = socket(af, SOCK_RAW, protocol);
+        if(raw_sk < 0) {
+            if(raw || icmp_sk < 0)
+                error_or_perm("socket");
+            dgram = 1;
+        } else {
+            /*  prefer the traditional "raw" way when possible   */
+            close(icmp_sk);
+            icmp_sk = raw_sk;
+        }
+    }
+
+    tune_socket(icmp_sk);
+
+    /*  Don't want to catch packets from another hosts   */
+    if(raw_can_connect() &&
+            connect(icmp_sk, &dest_addr.sa, sizeof(dest_addr)) < 0
+                    )
+        error("connect");
+
+    use_recverr(icmp_sk);
+
+    if(dgram) {
+        sockaddr_any addr;
+        socklen_t len = sizeof(addr);
+
+        if(getsockname(icmp_sk, &addr.sa, &len) < 0)
+            error("getsockname");
+        ident = ntohs(addr.sin.sin_port); /*  both IPv4 and IPv6   */
+
+    } else
+        ident = getpid() & 0xffff;
+
+    add_poll(icmp_sk, POLLIN | POLLERR);
+
+    return 0;
+}
+
+static void icmp_send_probe(probe *pb, int ttl) {
+    int af = dest_addr.sa.sa_family;
+
+    if(ttl != last_ttl) {
+
+        set_ttl(icmp_sk, ttl);
+
+        last_ttl = ttl;
+    }
+
+    if(af == AF_INET) {
+        struct icmp *icmp = (struct icmp *) data;
+
+        icmp->icmp_type = ICMP_ECHO;
+        icmp->icmp_code = 0;
+        icmp->icmp_cksum = 0;
+        icmp->icmp_id = htons(ident);
+        icmp->icmp_seq = htons(seq);
+
+        icmp->icmp_cksum = in_csum(data, *length_p);
+    }
+    else if(af == AF_INET6) {
+        struct icmp6_hdr *icmp6 = (struct icmp6_hdr *) data;
+
+        icmp6->icmp6_type = ICMP6_ECHO_REQUEST;
+        icmp6->icmp6_code = 0;
+        icmp6->icmp6_cksum = 0;
+        icmp6->icmp6_id= htons (ident);
+        icmp6->icmp6_seq= htons(seq);
+
+        /*  icmp6->icmp6_cksum always computed by kernel internally   */
+    }
+
+    pb->send_time = get_time();
+
+    if(do_send(icmp_sk, data, *length_p, &dest_addr) < 0) {
+        pb->send_time = 0;
+        return;
+    }
+
+    pb->seq = seq;
+
+    seq++;
+
+    return;
+}
+
+static probe *icmp_check_reply(int sk, int err, sockaddr_any *from,
+        char *buf, size_t len) {
+    UNUSED(sk);
+    UNUSED(from);
+    int af = dest_addr.sa.sa_family;
+    int type;
+    uint16_t recv_id, recv_seq;
+    probe *pb;
+
+    if(len < sizeof(struct icmphdr))
+        return NULL;
+
+    if(af == AF_INET) {
+        struct icmp *icmp = (struct icmp *) buf;
+
+        type = icmp->icmp_type;
+
+        recv_id = ntohs(icmp->icmp_id);
+        recv_seq = ntohs(icmp->icmp_seq);
+
+    }
+    else { /*  AF_INET6   */
+        struct icmp6_hdr *icmp6 = (struct icmp6_hdr *) buf;
+
+        type = icmp6->icmp6_type;
+
+        recv_id = ntohs(icmp6->icmp6_id);
+        recv_seq = ntohs(icmp6->icmp6_seq);
+    }
+
+    if(recv_id != ident)
+        return NULL;
+
+    pb = probe_by_seq(recv_seq);
+    if(!pb)
+        return NULL;
+
+    if(!err) {
+
+        if(!(af == AF_INET && type == ICMP_ECHOREPLY) &&
+                !(af == AF_INET6 && type == ICMP6_ECHO_REPLY)
+                )
+            return NULL;
+
+        pb->final = 1;
+    }
+
+    return pb;
+}
+
+static void icmp_recv_probe(int sk, int revents) {
+
+    if(!(revents & (POLLIN | POLLERR)))
+        return;
+
+    recv_reply(sk, !!(revents & POLLERR), icmp_check_reply);
+}
+
+static void icmp_expire_probe(probe *pb) {
+
+    probe_done(pb);
+}
+
+static tr_module icmp_ops = {
+    .name = "icmp",
+    .init = icmp_init,
+    .send_probe = icmp_send_probe,
+    .recv_probe = icmp_recv_probe,
+    .expire_probe = icmp_expire_probe,
+    .options = icmp_options,
+};
+
+TR_MODULE(icmp_ops);
+
+void tr_module_icmp_insert()
+{
+
+}
+
diff --git a/modules/net/iputils/traceroute/mod-raw.c b/modules/net/iputils/traceroute/mod-raw.c
new file mode 100644
index 0000000000..bd9f05ba61
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-raw.c
@@ -0,0 +1,172 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/icmp6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netdb.h>
+
+#include "traceroute.h"
+
+
+static sockaddr_any dest_addr = {{ 0, }, };
+static int protocol = DEF_RAW_PROT;
+
+static char *data = NULL;
+static size_t *length_p;
+
+static int raw_sk = -1;
+static int last_ttl = 0;
+static int seq = 0;
+
+
+static int set_protocol (CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    char *q;
+
+	protocol = strtoul (arg, &q, 0);
+	if (q == arg) {
+	    struct protoent *p = getprotobyname (arg);
+
+	    if (!p)  return -1;
+	    protocol = p->p_proto;
+	}
+
+	return 0;
+}
+
+
+static CLIF_option raw_options[] = {
+	{ 0, "protocol", "PROT", "Use protocol %s (default is "
+			_TEXT (DEF_RAW_PROT) ")",
+			set_protocol, 0, 0, CLIF_ABBREV },
+	CLIF_END_OPTION
+};
+
+
+static int raw_init (const sockaddr_any *dest,
+			    unsigned int port_seq, size_t *packet_len_p) {
+	int i;
+	int af = dest->sa.sa_family;
+
+	dest_addr = *dest;
+	dest_addr.sin.sin_port = 0;
+
+	if (port_seq)  protocol = port_seq;
+
+
+	length_p = packet_len_p;
+
+	if (*length_p &&
+	    !(data = malloc (*length_p))
+	)  error ("malloc");
+
+        for (i = 0; i < (int)*length_p; i++)
+                data[i] = 0x40 + (i & 0x3f);
+
+
+	raw_sk = socket (af, SOCK_RAW, protocol);
+	if (raw_sk < 0)
+		error_or_perm ("socket");
+
+	tune_socket (raw_sk);
+
+	/*  Don't want to catch packets from another hosts   */
+	if (raw_can_connect () &&
+	    connect (raw_sk, &dest_addr.sa, sizeof (dest_addr)) < 0
+	)  error ("connect");
+
+	use_recverr (raw_sk);
+
+
+	add_poll (raw_sk, POLLIN | POLLERR);
+
+	return 0;
+}
+
+
+static void raw_send_probe (probe *pb, int ttl) {
+
+	if (ttl != last_ttl) {
+
+	    set_ttl (raw_sk, ttl);
+
+	    last_ttl = ttl;
+	}
+
+
+	pb->send_time = get_time ();
+
+	if (do_send (raw_sk, data, *length_p, &dest_addr) < 0) {
+	    pb->send_time = 0;
+	    return;
+	}
+
+
+	pb->seq = ++seq;
+
+	return;
+}
+
+
+static probe *raw_check_reply (int sk, int err, sockaddr_any *from,
+						    char *buf, size_t len) {
+    UNUSED(sk);
+    UNUSED(len);
+    UNUSED(buf);
+    probe *pb;
+
+	if (!equal_addr (&dest_addr, from))
+		return NULL;
+
+	pb = probe_by_seq (seq);
+	if (!pb)  return NULL;
+
+	if (!err)  pb->final = 1;
+
+	return pb;
+}
+
+
+static void raw_recv_probe (int sk, int revents) {
+
+	if (!(revents & (POLLIN | POLLERR)))
+		return;
+
+	recv_reply (sk, !!(revents & POLLERR), raw_check_reply);
+}
+
+
+static void raw_expire_probe (probe *pb) {
+
+	probe_done (pb);
+}
+
+
+static tr_module raw_ops = {
+	.name = "raw",
+	.init = raw_init,
+	.send_probe = raw_send_probe,
+	.recv_probe = raw_recv_probe,
+	.expire_probe = raw_expire_probe,
+	.options = raw_options,
+	.one_per_time = 1,
+};
+
+TR_MODULE (raw_ops);
+
+void tr_module_raw_insert()
+{
+
+}
diff --git a/modules/net/iputils/traceroute/mod-tcp.c b/modules/net/iputils/traceroute/mod-tcp.c
new file mode 100644
index 0000000000..32d2f1027e
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-tcp.c
@@ -0,0 +1,515 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/icmp6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netinet/tcp.h>
+
+
+#include "traceroute.h"
+
+
+#ifndef IP_MTU
+#define IP_MTU	14
+#endif
+
+
+static sockaddr_any dest_addr = {{ 0, }, };
+static unsigned int dest_port = 0;
+
+static int raw_sk = -1;
+static int last_ttl = 0;
+
+static uint8_t buf[1024];	    /*  enough, enough...  */
+static size_t csum_len = 0;
+static struct tcphdr *th = NULL;
+
+#define TH_FLAGS(TH)	(((uint8_t *) (TH))[13])
+#define TH_FIN	0x01
+#define TH_SYN	0x02
+#define TH_RST	0x04
+#define TH_PSH	0x08
+#define TH_ACK	0x10
+#define TH_URG	0x20
+#define TH_ECE	0x40
+#define TH_CWR	0x80
+
+
+static int flags = 0;	    /*  & 0xff == tcp_flags ...  */
+static int sysctl = 0;
+static int reuse = 0;
+static unsigned int mss = 0;
+static int info = 0;
+
+#define FL_FLAGS	0x0100
+#define FL_ECN		0x0200
+#define FL_SACK		0x0400
+#define FL_TSTAMP	0x0800
+#define FL_WSCALE	0x1000
+
+
+static struct {
+	const char *name;
+	unsigned int flag;
+} tcp_flags[] = {
+	{ "fin", TH_FIN },
+	{ "syn", TH_SYN },
+	{ "rst", TH_RST },
+	{ "psh", TH_PSH },
+	{ "ack", TH_ACK },
+	{ "urg", TH_URG },
+	{ "ece", TH_ECE },
+	{ "cwr", TH_CWR },
+};
+
+static char *names_by_flags (unsigned int flags) {
+	int i;
+	char str[64];	/*  enough...  */
+	char *curr = str;
+	char *end = str + sizeof (str) / sizeof (*str);
+
+	for (i = 0; i < (int)(sizeof (tcp_flags) / sizeof (*tcp_flags)); i++) {
+	    const char *p;
+
+	    if (!(flags & tcp_flags[i].flag))  continue;
+
+	    if (curr > str && curr < end)  *curr++ = ',';
+	    for (p = tcp_flags[i].name; *p && curr < end; *curr++ = *p++) ;
+	}
+
+	*curr = '\0';
+
+	return  strdup (str);
+}
+
+static int set_tcp_flag (CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    int i;
+
+	for (i = 0; i < (int)(sizeof (tcp_flags) / sizeof (*tcp_flags)); i++) {
+	    if (!strcmp (optn->long_opt, tcp_flags[i].name)) {
+		    flags |= tcp_flags[i].flag;
+		    return 0;
+	    }
+	}
+
+	return -1;
+}
+
+static int set_tcp_flags (CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    char *q;
+	unsigned long value;
+
+	value = strtoul (arg, &q, 0);
+	if (q == arg)  return -1;
+
+	flags = (flags & ~0xff) | (value & 0xff) | FL_FLAGS;
+	return 0;
+}
+
+static int set_flag (CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+	flags |= (unsigned long) optn->data;
+
+	return 0;
+}
+
+static CLIF_option tcp_options[] = {
+	{ 0, "syn", 0, "Set tcp flag SYN (default if no other "
+			"tcp flags specified)", set_tcp_flag, 0, 0, 0 },
+	{ 0, "ack", 0, "Set tcp flag ACK,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "fin", 0, "FIN,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "rst", 0, "RST,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "psh", 0, "PSH,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "urg", 0, "URG,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "ece", 0, "ECE,", set_tcp_flag, 0, 0, 0 },
+	{ 0, "cwr", 0, "CWR", set_tcp_flag, 0, 0, 0 },
+	{ 0, "flags", "NUM", "Set tcp flags exactly to value %s",
+				set_tcp_flags, 0, 0, CLIF_ABBREV },
+	{ 0, "ecn", 0, "Send syn packet with tcp flags ECE and CWR "
+			"(for Explicit Congestion Notification, rfc3168)",
+				set_flag, (void *) FL_ECN, 0, 0 },
+	{ 0, "sack", 0, "Use sack,",
+				set_flag, (void *) FL_SACK, 0, 0 },
+	{ 0, "timestamps", 0, "timestamps,",
+				set_flag, (void *) FL_TSTAMP, 0, CLIF_ABBREV },
+	{ 0, "window_scaling", 0, "window_scaling option for tcp",
+				set_flag, (void *) FL_WSCALE, 0, CLIF_ABBREV },
+	{ 0, "sysctl", 0, "Use current sysctl (/proc/sys/net/*) setting "
+			"for the tcp options and ecn. Always set by default "
+			"(with \"syn\") if nothing else specified",
+				CLIF_set_flag, &sysctl, 0, 0 },
+	{ 0, "reuse", 0, "Allow to reuse local port numbers "
+			"for the huge workloads (SO_REUSEADDR)",
+				CLIF_set_flag, &reuse, 0, 0 },
+	{ 0, "mss", "NUM", "Use value of %s for maxseg tcp option (when syn)",
+				CLIF_set_uint, &mss, 0, 0 },
+	{ 0, "info", 0, "Print tcp flags of final tcp replies when target "
+			"host is reached. Useful to determine whether "
+			"an application listens the port etc.",
+				CLIF_set_flag, &info, 0, 0 },
+	CLIF_END_OPTION
+};
+
+
+#define SYSCTL_PREFIX	"/proc/sys/net/ipv4/tcp_"
+static int check_sysctl (const char *name) {
+	int fd, res;
+	char buf[sizeof (SYSCTL_PREFIX) + strlen (name) + 1];
+	uint8_t ch;
+
+	strcpy (buf, SYSCTL_PREFIX);
+	strcat (buf, name);
+
+	fd = open (buf, O_RDONLY, 0);
+	if (fd < 0)  return 0;
+
+	res = read (fd, &ch, sizeof (ch));
+	close (fd);
+
+	if (res != sizeof (ch))
+		return 0;
+
+	/*  since kernel 2.6.31 "tcp_ecn" can have value of '2'...  */
+	if (ch == '1')  return 1;
+
+	return 0;
+}
+
+
+static int tcp_init (const sockaddr_any *dest,
+			    unsigned int port_seq, size_t *packet_len_p) {
+	int af = dest->sa.sa_family;
+	sockaddr_any src;
+	int mtu;
+	socklen_t len;
+	uint8_t *ptr;
+	uint16_t *lenp;
+
+
+	dest_addr = *dest;
+	dest_addr.sin.sin_port = 0;	/*  raw sockets can be confused   */
+
+	if (!port_seq)  port_seq = DEF_TCP_PORT;
+	dest_port = htons (port_seq);
+
+
+	/*  Create raw socket for tcp   */
+
+	raw_sk = socket (af, SOCK_RAW, IPPROTO_TCP);
+	if (raw_sk < 0)
+		error_or_perm ("socket");
+
+	tune_socket (raw_sk);	    /*  including bind, if any   */
+
+	if (connect (raw_sk, &dest_addr.sa, sizeof (dest_addr)) < 0)
+		error ("connect");
+
+	len = sizeof (src);
+	if (getsockname (raw_sk, &src.sa, &len) < 0)
+		error ("getsockname");
+
+
+	len = sizeof (mtu);
+	if (getsockopt (raw_sk, af == AF_INET ? SOL_IP : SOL_IPV6,
+				af == AF_INET ? IP_MTU : IPV6_MTU,
+				&mtu, &len) < 0 || mtu < 576
+	)  mtu = 576;
+
+	/*  mss = mtu - headers   */
+	mtu -= af == AF_INET ? sizeof (struct iphdr) : sizeof (struct ip6_hdr);
+	mtu -= sizeof (struct tcphdr);
+
+
+	if (!raw_can_connect ()) {	/*  work-around for buggy kernels  */
+	    close (raw_sk);
+	    raw_sk = socket (af, SOCK_RAW, IPPROTO_TCP);
+	    if (raw_sk < 0)  error ("socket");
+	    tune_socket (raw_sk);
+	    /*  but do not connect it...  */
+	}
+
+
+	use_recverr (raw_sk);
+
+	add_poll (raw_sk, POLLIN | POLLERR);
+
+
+	/*  Now create the sample packet.  */
+
+	if (!flags)  sysctl = 1;
+
+	if (sysctl) {
+	    if (check_sysctl ("ecn"))  flags |= FL_ECN;
+	    if (check_sysctl ("sack"))  flags |= FL_SACK;
+	    if (check_sysctl ("timestamps"))  flags |= FL_TSTAMP;
+	    if (check_sysctl ("window_scaling"))  flags |= FL_WSCALE;
+	}
+
+	if (!(flags & (FL_FLAGS | 0xff))) {	/*  no any tcp flag set   */
+	    flags |= TH_SYN;
+	    if (flags & FL_ECN)
+		    flags |= TH_ECE | TH_CWR;
+	}
+
+
+	/*  For easy checksum computing:
+	    saddr
+	    daddr
+	    length
+	    protocol
+	    tcphdr
+	    tcpoptions
+	*/
+
+	ptr = buf;
+
+	if (af == AF_INET) {
+	    len = sizeof (src.sin.sin_addr);
+	    memcpy (ptr, &src.sin.sin_addr, len);
+	    ptr += len;
+	    memcpy (ptr, &dest_addr.sin.sin_addr, len);
+	    ptr += len;
+	} else {
+	    len = sizeof (src.sin6.sin6_addr);
+	    memcpy (ptr, &src.sin6.sin6_addr, len);
+	    ptr += len;
+	    memcpy (ptr, &dest_addr.sin6.sin6_addr, len);
+	    ptr += len;
+	}
+
+	lenp = (uint16_t *) ptr;
+	ptr += sizeof (uint16_t);
+	*((uint16_t *) ptr) = htons ((uint16_t) IPPROTO_TCP);
+	ptr += sizeof (uint16_t);
+
+
+	/*  Construct TCP header   */
+
+	th = (struct tcphdr *) ptr;
+
+	th->source = 0;	    /*  temporary   */
+	th->dest = dest_port;
+	th->seq = 0;	    /*  temporary   */
+	th->ack_seq = 0;
+	th->doff = 0;	    /*  later...  */
+	TH_FLAGS(th) = flags & 0xff;
+	th->window = htons (4 * mtu);
+	th->check = 0;
+	th->urg_ptr = 0;
+
+
+	/*  Build TCP options   */
+
+	ptr = (uint8_t *) (th + 1);
+
+	if (flags & TH_SYN) {
+	    *ptr++ = TCPOPT_MAXSEG;	/*  2   */
+	    *ptr++ = TCPOLEN_MAXSEG;	/*  4   */
+	    *((uint16_t *) ptr) = htons (mss ? mss : (unsigned int)mtu);
+	    ptr += sizeof (uint16_t);
+	}
+
+	if (flags & FL_TSTAMP) {
+
+	    if (flags & FL_SACK) {
+		*ptr++ = TCPOPT_SACK_PERMITTED;	/*  4   */
+		*ptr++ = TCPOLEN_SACK_PERMITTED;/*  2   */
+	    } else {
+		*ptr++ = TCPOPT_NOP;	/*  1   */
+		*ptr++ = TCPOPT_NOP;	/*  1   */
+	    }
+	    *ptr++ = TCPOPT_TIMESTAMP;	/*  8   */
+	    *ptr++ = TCPOLEN_TIMESTAMP;	/*  10  */
+
+	    *((uint32_t *) ptr) = random_seq ();	/*  really!  */
+	    ptr += sizeof (uint32_t);
+	    *((uint32_t *) ptr) = (flags & TH_ACK) ? random_seq () : 0;
+	    ptr += sizeof (uint32_t);
+	}
+	else if (flags & FL_SACK) {
+	    *ptr++ = TCPOPT_NOP;	/*  1   */
+	    *ptr++ = TCPOPT_NOP;	/*  1   */
+	    *ptr++ = TCPOPT_SACK_PERMITTED;	/*  4   */
+	    *ptr++ = TCPOLEN_SACK_PERMITTED;	/*  2   */
+	}
+
+	if (flags & FL_WSCALE) {
+	    *ptr++ = TCPOPT_NOP;	/*  1   */
+	    *ptr++ = TCPOPT_WINDOW;	/*  3   */
+	    *ptr++ = TCPOLEN_WINDOW;	/*  3   */
+	    *ptr++ = 2;	/*  assume some corect value...  */
+	}
+
+
+	csum_len = ptr - buf;
+
+	if (csum_len > sizeof (buf))
+		error ("impossible");	/*  paranoia   */
+
+	len = ptr - (uint8_t *) th;
+	if (len & 0x03)  error ("impossible");	/*  as >>2 ...  */
+
+	*lenp = htons (len);
+	th->doff = len >> 2;
+
+
+	*packet_len_p = len;
+
+	return 0;
+}
+
+
+static void tcp_send_probe (probe *pb, int ttl) {
+	int sk;
+	int af = dest_addr.sa.sa_family;
+	sockaddr_any addr;
+	socklen_t len = sizeof (addr);
+
+
+	/*  To make sure we have chosen a free unused "source port",
+	   just create, (auto)bind and hold a socket while the port is needed.
+	*/
+
+	sk = socket (af, SOCK_STREAM, 0);
+	if (sk < 0)  error ("socket");
+
+	if (reuse && setsockopt (sk, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0)
+		error ("setsockopt SO_REUSEADDR");
+
+	bind_socket (sk);
+
+	if (getsockname (sk, &addr.sa, &len) < 0)
+		error ("getsockname");
+
+	/*  When we reach the target host, it can send us either RST or SYN+ACK.
+	  For RST all is OK (we and kernel just answer nothing), but
+	  for SYN+ACK we should reply with our RST.
+	    It is well-known "half-open technique", used by port scanners etc.
+	  This way we do not touch remote applications at all, unlike
+	  the ordinary connect(2) call.
+	    As the port-holding socket neither connect() nor listen(),
+	  it means "no such port yet" for remote ends, and kernel always
+	  send RST in such a situation automatically (we have to do nothing).
+	*/
+
+
+	th->source = addr.sin.sin_port;
+
+	th->seq = random_seq ();
+
+	th->check = 0;
+	th->check = in_csum (buf, csum_len);
+
+
+	if (ttl != last_ttl) {
+
+	    set_ttl (raw_sk, ttl);
+
+	    last_ttl = ttl;
+	}
+
+
+	pb->send_time = get_time ();
+
+	if (do_send (raw_sk, th, th->doff << 2, &dest_addr) < 0) {
+	    close (sk);
+	    pb->send_time = 0;
+	    return;
+	}
+
+
+	pb->seq = th->source;
+
+	pb->sk = sk;
+
+	return;
+}
+
+
+static probe *tcp_check_reply (int sk, int err, sockaddr_any *from,
+						    char *buf, size_t len) {
+    UNUSED(sk);
+	probe *pb;
+	struct tcphdr *tcp = (struct tcphdr *) buf;
+	uint16_t sport, dport;
+
+
+	if (len < 8)  return NULL;	    /*  too short   */
+
+
+	if (err) {
+	    sport = tcp->source;
+	    dport = tcp->dest;
+	} else {
+	    sport = tcp->dest;
+	    dport = tcp->source;
+	}
+
+
+	if (dport != dest_port)
+		return NULL;
+
+	if (!equal_addr (&dest_addr, from))
+		return NULL;
+
+	pb = probe_by_seq (sport);
+	if (!pb)  return NULL;
+
+
+	if (!err) {
+
+	    pb->final = 1;
+
+	    if (info)
+		pb->ext = names_by_flags (TH_FLAGS(tcp));
+	}
+
+	return pb;
+}
+
+
+static void tcp_recv_probe (int sk, int revents) {
+
+	if (!(revents & (POLLIN | POLLERR)))
+		return;
+
+	recv_reply (sk, !!(revents & POLLERR), tcp_check_reply);
+}
+
+
+static void tcp_expire_probe (probe *pb) {
+
+	probe_done (pb);
+}
+
+
+static tr_module tcp_ops = {
+	.name = "tcp",
+	.init = tcp_init,
+	.send_probe = tcp_send_probe,
+	.recv_probe = tcp_recv_probe,
+	.expire_probe = tcp_expire_probe,
+	.options = tcp_options,
+};
+
+TR_MODULE (tcp_ops);
+
+void tr_module_tcp_insert()
+{
+
+}
diff --git a/modules/net/iputils/traceroute/mod-tcpconn.c b/modules/net/iputils/traceroute/mod-tcpconn.c
new file mode 100644
index 0000000000..13e2398647
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-tcpconn.c
@@ -0,0 +1,237 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/icmp6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netinet/tcp.h>
+#include <errno.h>
+
+#include "traceroute.h"
+
+
+static sockaddr_any dest_addr = {{ 0, }, };
+
+static int icmp_sk = -1;
+
+
+static int tcp_init (const sockaddr_any *dest,
+			    unsigned int port_seq, size_t *packet_len_p) {
+    UNUSED(packet_len_p);
+	int af = dest->sa.sa_family;
+
+	dest_addr = *dest;
+	dest_addr.sin.sin_port = htons (DEF_TCP_PORT);
+
+	if (port_seq)
+	    dest_addr.sin.sin_port = htons (port_seq);
+
+
+	/*  Currently an ICMP socket is the only way
+	  to obtain the needed info...
+	*/
+	icmp_sk = socket (af, SOCK_RAW, (af == AF_INET) ? IPPROTO_ICMP
+							: IPPROTO_ICMPV6);
+	if (icmp_sk < 0)
+		error_or_perm ("socket");
+
+	/*  icmp_sk not need full tune_socket() here, just a receiving one  */
+	bind_socket (icmp_sk);
+	use_timestamp (icmp_sk);
+	use_recv_ttl (icmp_sk);
+
+	add_poll (icmp_sk, POLLIN);
+
+	return 0;
+}
+
+
+static void tcp_send_probe (probe *pb, int ttl) {
+	int sk;
+	int af = dest_addr.sa.sa_family;
+	sockaddr_any addr;
+	socklen_t length = sizeof (addr);
+
+
+	sk = socket (af, SOCK_STREAM, 0);
+	if (sk < 0)  error ("socket");
+
+	tune_socket (sk);	/*  common stuff   */
+
+	set_ttl (sk, ttl);
+
+
+	pb->send_time = get_time ();
+
+	if (connect (sk, &dest_addr.sa, sizeof (dest_addr)) < 0) {
+	    if (errno != EINPROGRESS)
+		    error ("connect");
+	}
+
+
+	if (getsockname (sk, &addr.sa, &length) < 0)
+		error ("getsockname");
+
+	pb->seq = addr.sin.sin_port;	/*  both ipv4/ipv6  */
+
+	pb->sk = sk;
+
+	add_poll (sk, POLLERR | POLLHUP | POLLOUT);
+
+	return;
+}
+
+
+static probe *tcp_check_reply (int sk, int err, sockaddr_any *from,
+						    char *buf, size_t len) {
+    UNUSED(sk);
+    UNUSED(err);
+    UNUSED(from);
+	int af = dest_addr.sa.sa_family;
+	int type, code, info;
+	probe *pb;
+	struct tcphdr *tcp;
+
+
+	if (len < sizeof (struct icmphdr))
+		return NULL;
+
+
+	if (af == AF_INET) {
+	    struct icmp *icmp = (struct icmp *) buf;
+	    struct iphdr *ip;
+	    int hlen;
+
+	    type = icmp->icmp_type;
+	    code = icmp->icmp_code;
+	    info = icmp->icmp_void;
+
+	    if (type != ICMP_TIME_EXCEEDED && type != ICMP_DEST_UNREACH)
+		    return NULL;
+
+	    if (len < sizeof (struct icmphdr) + sizeof (struct iphdr) + 8)
+		    /* `8' - rfc1122: 3.2.2  */
+		    return NULL;
+
+	    ip = (struct iphdr *) (((char *)icmp) + sizeof(struct icmphdr));
+	    hlen = ip->ihl << 2;
+
+	    if (len < sizeof (struct icmphdr) + hlen + 8)
+		    return NULL;
+	    if (ip->protocol != IPPROTO_TCP)
+		    return NULL;
+
+	    tcp = (struct tcphdr *) (((char *) ip) + hlen);
+
+	}
+	else {	    /*  AF_INET6   */
+	    struct icmp6_hdr *icmp6 = (struct icmp6_hdr *) buf;
+	    struct ip6_hdr *ip6;
+
+	    type = icmp6->icmp6_type;
+	    code = icmp6->icmp6_code;
+	    info = icmp6->icmp6_mtu;
+
+	    if (type != ICMP6_TIME_EXCEEDED &&
+		type != ICMP6_DST_UNREACH &&
+		type != ICMP6_PACKET_TOO_BIG
+	    )  return NULL;
+
+	    if (len < sizeof(struct icmp6_hdr) + sizeof(struct ip6_hdr) + 8)
+		    return NULL;
+
+	    ip6 = (struct ip6_hdr *) (icmp6 + 1);
+	    if (ip6->ip6_nxt != IPPROTO_TCP)
+		    return NULL;
+
+	    tcp = (struct tcphdr *) (ip6 + 1);
+
+	}
+
+
+	if (tcp->dest != dest_addr.sin.sin_port)
+		return NULL;
+
+	pb = probe_by_seq (tcp->source);
+	if (!pb)  return NULL;
+
+
+	/*  here only, high level has no data to do this   */
+	parse_icmp_res (pb, type, code, info);
+
+	return pb;
+}
+
+
+static void tcp_recv_probe (int sk, int revents) {
+
+	if (sk != icmp_sk) {	/*  a tcp socket   */
+	    probe *pb;
+
+	    pb = probe_by_sk (sk);
+	    if (!pb) {
+		del_poll (sk);
+		return;
+	    }
+
+
+	    /*  do connect() again and check errno, regardless of revents  */
+	    if (connect (sk, &dest_addr.sa, sizeof (dest_addr)) < 0) {
+		if (errno != EISCONN && errno != ECONNREFUSED)
+			return;	/*  ICMP say more   */
+	    }
+
+	    /*  we have reached the dest host (either connected or refused)  */
+
+	    memcpy (&pb->res, &dest_addr, sizeof (pb->res));
+
+	    pb->final = 1;
+
+	    pb->recv_time = get_time ();
+
+	    probe_done (pb);
+
+	    return;
+	}
+
+
+	/*  ICMP stuff   */
+
+	if (!(revents & POLLIN))
+		return;
+
+	recv_reply (icmp_sk, 0, tcp_check_reply);
+}
+
+
+static void tcp_expire_probe (probe *pb) {
+
+	probe_done (pb);
+}
+
+
+static tr_module tcp_ops = {
+	.name = "tcpconn",
+	.init = tcp_init,
+	.send_probe = tcp_send_probe,
+	.recv_probe = tcp_recv_probe,
+	.expire_probe = tcp_expire_probe,
+};
+
+TR_MODULE (tcp_ops);
+
+void tr_module_tcpconn_insert()
+{
+
+}
diff --git a/modules/net/iputils/traceroute/mod-udp.c b/modules/net/iputils/traceroute/mod-udp.c
new file mode 100644
index 0000000000..e24d0271c8
--- /dev/null
+++ b/modules/net/iputils/traceroute/mod-udp.c
@@ -0,0 +1,241 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/in.h>
+#include <netinet/udp.h>
+
+#include "traceroute.h"
+
+
+#ifndef IPPROTO_UDPLITE
+#define IPPROTO_UDPLITE	136
+#endif
+
+#ifndef UDPLITE_SEND_CSCOV
+#define UDPLITE_SEND_CSCOV	10
+#define UDPLITE_RECV_CSCOV	11
+#endif
+
+
+static sockaddr_any dest_addr = {{ 0, }, };
+static unsigned int curr_port = 0;
+static unsigned int protocol = IPPROTO_UDP;
+
+
+static char *data = NULL;
+static size_t *length_p;
+
+static void fill_data (size_t *packet_len_p) {
+	int i;
+
+	length_p = packet_len_p;
+
+	if (*length_p &&
+	    !(data = malloc (*length_p))
+	)  error ("malloc");
+
+        for (i = 0; i < (int)*length_p; i++)
+                data[i] = 0x40 + (i & 0x3f);
+ 
+	return;
+}
+
+
+static int udp_default_init (const sockaddr_any *dest,
+				unsigned int port_seq, size_t *packet_len_p) {
+
+	curr_port = port_seq ? port_seq : DEF_START_PORT;
+
+	dest_addr = *dest;
+	dest_addr.sin.sin_port = htons (curr_port);
+
+	fill_data (packet_len_p);
+
+	return 0;
+}
+
+
+static int udp_init (const sockaddr_any *dest,
+			    unsigned int port_seq, size_t *packet_len_p) {
+
+	dest_addr = *dest;
+
+	if (!port_seq)  port_seq = DEF_UDP_PORT;
+	dest_addr.sin.sin_port = htons ((uint16_t) port_seq);
+	
+	fill_data (packet_len_p);
+ 
+	return 0;
+}
+
+
+static unsigned int coverage = 0;
+#define MIN_COVERAGE	(sizeof (struct udphdr))
+
+static void set_coverage (int sk) {
+	int val = MIN_COVERAGE;
+
+	if (setsockopt (sk, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV,
+					    &coverage, sizeof (coverage)) < 0
+	)  error ("UDPLITE_SEND_CSCOV");
+
+	if (setsockopt (sk, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV,
+					    &val, sizeof (val)) < 0
+	)  error ("UDPLITE_RECV_CSCOV");
+}
+	
+static CLIF_option udplite_options[] = {
+	{ 0, "coverage", "NUM", "Set udplite send coverage to %s (default is "
+				_TEXT(MIN_COVERAGE) ")",
+				CLIF_set_uint, &coverage, 0, CLIF_ABBREV },
+	CLIF_END_OPTION
+};
+
+static int udplite_init (const sockaddr_any *dest,
+			    unsigned int port_seq, size_t *packet_len_p) {
+
+	dest_addr = *dest;
+
+	if (!port_seq)  port_seq = DEF_UDP_PORT;    /*  XXX: Hmmm...   */
+	dest_addr.sin.sin_port = htons ((uint16_t) port_seq);
+
+	protocol = IPPROTO_UDPLITE;
+
+	if (!coverage)  coverage = MIN_COVERAGE;
+	
+	fill_data (packet_len_p);
+ 
+	return 0;
+}
+
+
+static void udp_send_probe (probe *pb, int ttl) {
+	int sk;
+	int af = dest_addr.sa.sa_family;
+
+
+	sk = socket (af, SOCK_DGRAM, protocol);
+	if (sk < 0)  error ("socket");
+
+	tune_socket (sk);	/*  common stuff   */
+
+	if (coverage)  set_coverage (sk);	/*  udplite case   */
+
+	set_ttl (sk, ttl);
+
+
+	if (connect (sk, &dest_addr.sa, sizeof (dest_addr)) < 0)
+		error ("connect");
+
+	use_recverr (sk);
+
+
+	pb->send_time = get_time ();
+
+	if (do_send (sk, data, *length_p, NULL) < 0) {
+	    close (sk);
+	    pb->send_time = 0;
+	    return;
+	}
+
+
+	pb->sk = sk;
+
+	add_poll (sk, POLLIN | POLLERR);
+
+	pb->seq = dest_addr.sin.sin_port;
+
+	if (curr_port) {	/*  traditional udp method   */
+	    curr_port++;
+	    dest_addr.sin.sin_port = htons (curr_port);	/* both ipv4 and ipv6 */
+	}
+
+	return;
+}
+
+
+static probe *udp_check_reply (int sk, int err, sockaddr_any *from,
+						    char *buf, size_t len) {
+	UNUSED(buf);
+	UNUSED(len);
+    probe *pb;
+
+	pb = probe_by_sk (sk);
+	if (!pb)  return NULL;
+
+	if (pb->seq != from->sin.sin_port)
+		return NULL;
+
+	if (!err)  pb->final = 1;
+
+	return pb;
+}
+
+
+static void udp_recv_probe (int sk, int revents) {
+
+	if (!(revents & (POLLIN | POLLERR)))
+		return;
+
+	recv_reply (sk, !!(revents & POLLERR), udp_check_reply);
+}
+
+
+static void udp_expire_probe (probe *pb) {
+
+	probe_done (pb);
+}
+
+
+/*  All three modules share the same methods except the init...  */
+
+static tr_module default_ops = {
+	.name = "default",
+	.init = udp_default_init,
+	.send_probe = udp_send_probe,
+	.recv_probe = udp_recv_probe,
+	.expire_probe = udp_expire_probe,
+	.header_len = sizeof (struct udphdr),
+};
+
+TR_MODULE (default_ops);
+
+
+static tr_module udp_ops = {
+	.name = "udp",
+	.init = udp_init,
+	.send_probe = udp_send_probe,
+	.recv_probe = udp_recv_probe,
+	.expire_probe = udp_expire_probe,
+	.header_len = sizeof (struct udphdr),
+};
+
+TR_MODULE (udp_ops);
+
+
+static tr_module udplite_ops = {
+	.name = "udplite",
+	.init = udplite_init,
+	.send_probe = udp_send_probe,
+	.recv_probe = udp_recv_probe,
+	.expire_probe = udp_expire_probe,
+	.header_len = sizeof (struct udphdr),
+	.options = udplite_options,
+};
+
+TR_MODULE (udplite_ops);
+
+void tr_module_udp_insert()
+{
+
+}
diff --git a/modules/net/iputils/traceroute/module.c b/modules/net/iputils/traceroute/module.c
new file mode 100644
index 0000000000..f8f228ef63
--- /dev/null
+++ b/modules/net/iputils/traceroute/module.c
@@ -0,0 +1,51 @@
+/*
+ Copyright (c)  2006, 2007		Dmitry Butskoy
+ <buc@citadel.stu.neva.ru>
+ License:  GPL v2 or any later
+
+ See COPYING for the status of this software.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include "traceroute.h"
+
+void tr_module_icmp_insert();
+void tr_module_udp_insert();
+void tr_module_tcp_insert();
+void tr_module_tcpconn_insert();
+void tr_module_raw_insert();
+void tr_module_dccp_insert();
+
+static tr_module *base = NULL;
+
+void tr_register_module(tr_module *ops) {
+
+    ops->next = base;
+    base = ops;
+//    printf("tr_register_module name=%s\n", ops->name);
+}
+
+const tr_module *tr_get_module(const char *name) {
+    const tr_module *ops;
+
+    tr_module_icmp_insert();
+    tr_module_udp_insert();
+    tr_module_tcp_insert();
+    tr_module_tcpconn_insert();
+    tr_module_raw_insert();
+    tr_module_dccp_insert();
+
+    if(!name)
+        return 0;
+
+    for(ops = base; ops; ops = ops->next) {
+        if(!strcasecmp(name, ops->name))
+            return ops;
+    }
+
+    return NULL;
+}
diff --git a/modules/net/iputils/traceroute/poll.c b/modules/net/iputils/traceroute/poll.c
new file mode 100644
index 0000000000..232a83395b
--- /dev/null
+++ b/modules/net/iputils/traceroute/poll.c
@@ -0,0 +1,93 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <poll.h>
+#include <errno.h>
+#include <math.h>
+
+#include "traceroute.h"
+
+
+static struct pollfd *pfd = NULL;
+static unsigned int num_polls = 0;
+
+
+void add_poll (int fd, int events) {
+	int i;
+
+	for (i = 0; i < (int)num_polls && pfd[i].fd > 0; i++) ;
+
+	if (i == (int)num_polls) {
+	    pfd = realloc (pfd, ++num_polls * sizeof (*pfd));
+	    if (!pfd)  error ("realloc");
+	}
+
+	pfd[i].fd = fd;
+	pfd[i].events = events;
+}
+
+
+void del_poll (int fd) {
+	int i;
+
+	for (i = 0; i < (int)num_polls && pfd[i].fd != fd; i++) ;
+
+	if (i < (int)num_polls)  pfd[i].fd = -1;    /*  or just zero it...  */
+}
+
+
+static int cleanup_polls (void) {
+	int i;
+
+	for (i = 0; i < (int)num_polls && pfd[i].fd > 0; i++) ;
+
+	if (i < (int)num_polls) {	/*  a hole have found   */
+	    int j;
+
+	    for (j = i + 1; j < (int)num_polls; j++) {
+		if (pfd[j].fd > 0) {
+		    pfd[i++] = pfd[j];
+		    pfd[j].fd = -1;
+		}
+	    }
+	}
+
+	return i;
+}
+
+
+void do_poll (double timeout, void (*callback) (int fd, int revents)) {
+	int nfds;
+	int msecs = ceil (timeout * 1000);
+
+	while ((nfds = cleanup_polls ()) > 0) {
+	    int i, n;
+
+	    n = poll (pfd, nfds, msecs);
+
+	    if (n <= 0) {
+		if (n == 0 || errno == EINTR)
+			return;
+		error ("poll");
+	    }
+
+	    for (i = 0; n && i < (int)num_polls; i++) {
+		if (pfd[i].revents) {
+		    callback (pfd[i].fd, pfd[i].revents);
+		    n--;
+		}
+	    }
+
+	    msecs = 0;	    /*  no more wait, just eat all the pending   */
+	}
+
+	return;
+}
+
diff --git a/modules/net/iputils/traceroute/random.c b/modules/net/iputils/traceroute/random.c
new file mode 100644
index 0000000000..5a8f911e14
--- /dev/null
+++ b/modules/net/iputils/traceroute/random.c
@@ -0,0 +1,28 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/times.h>
+
+#include "traceroute.h"
+
+
+static void __init_random_seq (void) __attribute__ ((constructor));
+static void __init_random_seq (void) {
+
+	srand (times (NULL) + getpid ());
+}
+
+
+unsigned int random_seq (void) {
+
+	/*  To not worry about RANDOM_MAX and precision...  */
+	return  (rand () << 16) ^ (rand () << 8) ^ rand () ^ (rand () >> 8);
+}
+
diff --git a/modules/net/iputils/traceroute/time.c b/modules/net/iputils/traceroute/time.c
new file mode 100644
index 0000000000..16ea82483c
--- /dev/null
+++ b/modules/net/iputils/traceroute/time.c
@@ -0,0 +1,27 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/time.h>
+
+#include "traceroute.h"
+
+
+/*  Just returns current time as double, with most possible precision...  */
+
+double get_time (void) {
+	struct timeval tv;
+	double d;
+
+	gettimeofday (&tv, NULL);
+
+	d = ((double) tv.tv_usec) / 1000000. + (unsigned long) tv.tv_sec;
+
+	return d;
+}
diff --git a/modules/net/iputils/traceroute/traceroute.c b/modules/net/iputils/traceroute/traceroute.c
new file mode 100755
index 0000000000..a0dbeb2e23
--- /dev/null
+++ b/modules/net/iputils/traceroute/traceroute.c
@@ -0,0 +1,1758 @@
+/*
+ Copyright (c)  2006, 2007    Dmitry Butskoy
+ <buc@citadel.stu.neva.ru>
+ License:  GPL v2 or any later
+
+ See COPYING for the status of this software.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+#include <poll.h>
+#include <netinet/icmp6.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/in.h>
+#include <netinet/ip6.h>
+#include <netdb.h>
+#include <errno.h>
+#include <locale.h>
+#include <sys/utsname.h>
+#include <linux/types.h>
+#include <linux/errqueue.h>
+
+/*  XXX: Remove this when things will be defined properly in netinet/ ...  */
+#include "flowlabel.h"
+
+//#include "version.h"
+#include <stdbool.h>
+//#include <glib.h>
+#include "traceroute.h"
+
+#ifndef ICMP6_DST_UNREACH_BEYONDSCOPE
+#ifdef ICMP6_DST_UNREACH_NOTNEIGHBOR
+#define ICMP6_DST_UNREACH_BEYONDSCOPE ICMP6_DST_UNREACH_NOTNEIGHBOR
+#else
+#define ICMP6_DST_UNREACH_BEYONDSCOPE 2
+#endif
+#endif
+
+#ifndef IPV6_RECVHOPLIMIT
+#define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT
+#endif
+
+#ifndef IP_PMTUDISC_PROBE
+#define IP_PMTUDISC_PROBE 3
+#endif
+
+#ifndef IPV6_PMTUDISC_PROBE
+#define IPV6_PMTUDISC_PROBE 3
+#endif
+
+#ifndef AI_IDN
+#define AI_IDN  0
+#endif
+
+#ifndef NI_IDN
+#define NI_IDN  0
+#endif
+
+#define MAX_HOPS  255
+#define MAX_PROBES  10
+#define MAX_GATEWAYS_4  8
+#define MAX_GATEWAYS_6  127
+#define DEF_HOPS  30
+#define DEF_SIM_PROBES  16  /*  including several hops   */
+#define DEF_NUM_PROBES  3 //1
+#define DEF_WAIT_SECS 5.0
+#define DEF_HERE_FACTOR 3
+#define DEF_NEAR_FACTOR 10
+#ifndef DEF_WAIT_PREC
+#define DEF_WAIT_PREC 0.001 /*  +1 ms  to avoid precision issues   */
+#endif
+#define DEF_SEND_SECS 0
+#define DEF_DATA_LEN  40  /*  all but IP header...  */
+#define MAX_PACKET_LEN  65000
+#ifndef DEF_AF
+#define DEF_AF    AF_INET
+#endif
+
+#define ttl2hops(X) (((X) <= 64 ? 65 : ((X) <= 128 ? 129 : 256)) - (X))
+
+static char version_string[] = "Modern traceroute for Linux, "
+        "version " _TEXT(VERSION)
+"\nCopyright (c) 2016  Dmitry Butskoy, "
+"  License: GPL v2 or any later";
+static int debug = 0;
+static unsigned int first_hop = 1;
+static unsigned int max_hops = DEF_HOPS;
+static unsigned int sim_probes = DEF_SIM_PROBES;
+static unsigned int probes_per_hop = DEF_NUM_PROBES;
+
+static char **gateways = NULL;
+static int num_gateways = 0;
+static unsigned char *rtbuf = NULL;
+static size_t rtbuf_len = 0;
+static unsigned int ipv6_rthdr_type = 2; /*  IPV6_RTHDR_TYPE_2   */
+
+static size_t header_len = 0;
+static size_t data_len = 0;
+
+static int dontfrag = 0;
+static int noresolve = 0;
+static int extension = 0;
+static int as_lookups = 0;
+static unsigned int dst_port_seq = 0;
+static unsigned int tos = 0;
+static unsigned int flow_label = 0;
+static int noroute = 0;
+static unsigned int fwmark = 0;
+static int packet_len = -1;
+static double wait_secs = DEF_WAIT_SECS;
+static double here_factor = DEF_HERE_FACTOR;
+static double near_factor = DEF_NEAR_FACTOR;
+static double send_secs = DEF_SEND_SECS;
+static int mtudisc = 0;
+static int backward = 0;
+
+static sockaddr_any dst_addr = { { 0, }, };
+static char *dst_name = NULL;
+static char *device = NULL;
+static sockaddr_any src_addr = { { 0, }, };
+static unsigned int src_port = 0;
+
+static const char *module = "default";
+static const tr_module *ops = NULL;
+
+static char *opts[16] = { NULL, }; /*  assume enough   */
+static unsigned int opts_idx = 1; /*  first one reserved...   */
+
+static int af = 0;
+
+static probe *probes = NULL;
+static unsigned int num_probes = 0;
+
+static void ex_error(const char *format, ...) {
+    va_list ap;
+
+    va_start(ap, format);
+    vfprintf(stderr, format, ap);
+    va_end(ap);
+
+    fprintf(stderr, "\n");
+
+    //exit(2);
+}
+
+void error(const char *str) {
+
+    fprintf(stderr, "\n");
+
+    perror(str);
+
+    exit(1);
+}
+
+void error_or_perm(const char *str) {
+
+    if(errno == EPERM)
+        fprintf(stderr, "You do not have enough privileges to use "
+                "this traceroute method.");
+    error(str);
+}
+
+/*  Set initial parameters according to how we was called   */
+
+static void check_progname(const char *name) {
+    const char *p;
+    int l;
+
+    p = strrchr(name, '/');
+    if(p)
+        p++;
+    else
+        p = name;
+
+    l = strlen(p);
+    if(l <= 0)
+        return;
+    l--;
+
+    if(p[l] == '6')
+        af = AF_INET6;
+    else if(p[l] == '4')
+        af = AF_INET;
+
+    if(!strncmp(p, "tcp", 3))
+        module = "tcp";
+    if(!strncmp(p, "tracert", 7))
+        module = "icmp";
+
+    return;
+}
+
+static int getaddr(const char *name, sockaddr_any *addr) {
+    int ret;
+    struct addrinfo hints, *ai, *res = NULL;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = af;
+    hints.ai_flags = AI_IDN;
+
+    ret = getaddrinfo(name, NULL, &hints, &res);
+    if(ret) {
+        fprintf(stderr, "%s: %s\n", name, gai_strerror(ret));
+        return -1;
+    }
+
+    for(ai = res; ai; ai = ai->ai_next) {
+        if(ai->ai_family == af)
+            break;
+        /*  when af not specified, choose DEF_AF if present   */
+        if(!af && ai->ai_family == DEF_AF)
+            break;
+    }
+    if(!ai)
+        ai = res; /*  anything...  */
+
+    if(ai->ai_addrlen > sizeof(*addr))
+        return -1; /*  paranoia   */
+    memcpy(addr, ai->ai_addr, ai->ai_addrlen);
+
+    freeaddrinfo(res);
+
+    return 0;
+}
+
+static void make_fd_used(int fd) {
+    int nfd;
+
+    if(fcntl(fd, F_GETFL) != -1)
+        return;
+
+    if(errno != EBADF)
+        error("fcntl F_GETFL");
+
+    nfd = open("/dev/null", O_RDONLY);
+    if(nfd < 0)
+        error("open /dev/null");
+
+    if(nfd != fd) {
+        dup2(nfd, fd);
+        close(nfd);
+    }
+
+    return;
+}
+
+static char addr2str_buf[INET6_ADDRSTRLEN];
+
+static const char *addr2str(const sockaddr_any *addr) {
+
+    getnameinfo(&addr->sa, sizeof(*addr),
+            addr2str_buf, sizeof(addr2str_buf), 0, 0, NI_NUMERICHOST);
+
+    return addr2str_buf;
+}
+
+/*  IP  options  stuff      */
+
+static int init_ip_options(void) {
+    sockaddr_any *gates;
+    int i, max;
+
+    if(!num_gateways)
+        return 0;
+
+    /*  check for TYPE,ADDR,ADDR... form   */
+    if(af == AF_INET6 && num_gateways > 1 && gateways[0]) {
+        char *q;
+        unsigned int value = strtoul(gateways[0], &q, 0);
+
+        if(!*q) {
+            ipv6_rthdr_type = value;
+            num_gateways--;
+            for(i = 0; i < num_gateways; i++)
+                gateways[i] = gateways[i + 1];
+        }
+    }
+
+    max = af == AF_INET ? MAX_GATEWAYS_4 : MAX_GATEWAYS_6;
+    if(num_gateways > max) {
+        ex_error("Too many gateways specified. No more than %d", max);
+        return -1;
+    }
+
+    gates = alloca(num_gateways * sizeof(*gates));
+
+    for(i = 0; i < num_gateways; i++) {
+
+        if(!gateways[i])
+            error("strdup");
+
+        if(getaddr(gateways[i], &gates[i]) < 0) {
+            ex_error(""); /*  already reported   */
+            return -1;
+        }
+        if(gates[i].sa.sa_family != af) {
+            ex_error("IP versions mismatch in gateway addresses");
+            return -1;
+        }
+
+        free(gateways[i]);
+    }
+
+    free(gateways);
+    gateways = NULL;
+
+    if(af == AF_INET) {
+        struct in_addr *in;
+
+        rtbuf_len = 4 + (num_gateways + 1) * sizeof(*in);
+        rtbuf = malloc(rtbuf_len);
+        if(!rtbuf)
+            error("malloc");
+
+        in = (struct in_addr *) &rtbuf[4];
+        for(i = 0; i < num_gateways; i++)
+            memcpy(&in[i], &gates[i].sin.sin_addr, sizeof(*in));
+        /*  final hop   */
+        memcpy(&in[i], &dst_addr.sin.sin_addr, sizeof(*in));
+        i++;
+
+        rtbuf[0] = IPOPT_NOP;
+        rtbuf[1] = IPOPT_LSRR;
+        rtbuf[2] = (i * sizeof(*in)) + 3;
+        rtbuf[3] = IPOPT_MINOFF;
+
+    }
+    else if(af == AF_INET6) {
+        struct in6_addr *in6;
+        struct ip6_rthdr *rth;
+
+        /*  IPV6_RTHDR_TYPE_0 length is 8   */
+        rtbuf_len = 8 + num_gateways * sizeof(*in6);
+        rtbuf = malloc(rtbuf_len);
+        if(!rtbuf)
+            error("malloc");
+
+        rth = (struct ip6_rthdr *) rtbuf;
+        rth->ip6r_nxt = 0;
+        rth->ip6r_len = 2 * num_gateways;
+        rth->ip6r_type = ipv6_rthdr_type;
+        rth->ip6r_segleft = num_gateways;
+
+        *((uint32_t *) (rth + 1)) = 0;
+
+        in6 = (struct in6_addr *) (rtbuf + 8);
+        for(i = 0; i < num_gateways; i++)
+            memcpy(&in6[i], &gates[i].sin6.sin6_addr, sizeof(*in6));
+    }
+
+    return 0;
+}
+
+/*  Command line stuff      */
+__attribute__((unused))
+static int set_af(CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    int vers = (long) optn->data;
+
+    if(vers == 4)
+        af = AF_INET;
+    else if(vers == 6)
+        af = AF_INET6;
+    else
+        return -1;
+
+    return 0;
+}
+
+static int add_gateway(CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    if(num_gateways >= MAX_GATEWAYS_6) { /*  127 > 8 ... :)   */
+        fprintf(stderr, "Too many gateways specified.");
+        return -1;
+    }
+
+    gateways = realloc(gateways, (num_gateways + 1) * sizeof(*gateways));
+    if(!gateways)
+        error("malloc");
+    gateways[num_gateways++] = strdup(arg);
+
+    return 0;
+}
+
+static int set_source(CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    return getaddr(arg, &src_addr);
+}
+
+static int set_port(CLIF_option *optn, char *arg) {
+    unsigned int *up = (unsigned int *) optn->data;
+    char *q;
+
+    *up = strtoul(arg, &q, 0);
+    if(q == arg) {
+        struct servent *s = getservbyname(arg, NULL);
+
+        if(!s)
+            return -1;
+        *up = ntohs(s->s_port);
+    }
+
+    return 0;
+}
+
+static int set_module(CLIF_option *optn, char *arg) {
+    UNUSED(arg);
+    module = (char *) optn->data;
+
+    return 0;
+}
+
+static int set_mod_option(CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    if(!strcmp(arg, "help")) {
+        const tr_module *mod = tr_get_module(module);
+
+        if(mod && mod->options) {
+            /*  just to set common keyword flag...  */
+            CLIF_parse(1, &arg, 0, 0, CLIF_KEYWORD);
+            CLIF_print_options(NULL, mod->options);
+        } else
+            fprintf(stderr, "No options for module `%s'\n", module);
+
+        exit(0);
+    }
+
+    if(opts_idx >= sizeof(opts) / sizeof(*opts)) {
+        fprintf(stderr, "Too many module options\n");
+        return -1;
+    }
+
+    opts[opts_idx] = strdup(arg);
+    if(!opts[opts_idx])
+        error("strdup");
+    opts_idx++;
+
+    return 0;
+}
+
+static int set_raw(CLIF_option *optn, char *arg) {
+    char buf[1024];
+
+    module = "raw";
+
+    snprintf(buf, sizeof(buf), "protocol=%s", arg);
+    return set_mod_option(optn, buf);
+}
+
+static int set_wait_specs(CLIF_option *optn, char *arg) {
+    UNUSED(optn);
+    char *p, *q;
+
+    here_factor = near_factor = 0;
+
+    wait_secs = strtod(p = arg, &q);
+    if(q == p)
+        return -1;
+    if(!*q++)
+        return 0;
+
+    here_factor = strtod(p = q, &q);
+    if(q == p)
+        return -1;
+    if(!*q++)
+        return 0;
+
+    near_factor = strtod(p = q, &q);
+    if(q == p || *q)
+        return -1;
+
+    return 0;
+}
+
+static int set_host(CLIF_argument *argm, char *arg, int index) {
+    UNUSED(argm);
+    UNUSED(index);
+    if(getaddr(arg, &dst_addr) < 0)
+        return -1;
+
+    dst_name = arg;
+
+    /*  i.e., guess it by the addr in cmdline...  */
+    if(!af)
+        af = dst_addr.sa.sa_family;
+
+    return 0;
+}
+
+static CLIF_option option_list[] = {
+    { "4", 0, 0, "Use IPv4", set_af, (void *) 4, 0, CLIF_EXTRA },
+    { "6", 0, 0, "Use IPv6", set_af, (void *) 6, 0, 0 },
+    { "d", "debug", 0, "Enable socket level debugging",
+        CLIF_set_flag, &debug, 0, 0 },
+    { "F", "dont-fragment", 0, "Do not fragment packets",
+        CLIF_set_flag, &dontfrag, 0, CLIF_ABBREV },
+    { "f", "first", "first_ttl", "Start from the %s hop (instead from 1)",
+        CLIF_set_uint, &first_hop, 0, 0 },
+    { "g", "gateway", "gate", "Route packets through the specified gateway "
+            "(maximum " _TEXT(MAX_GATEWAYS_4) " for IPv4 and "
+    _TEXT(MAX_GATEWAYS_6) " for IPv6)",
+        add_gateway, 0, 0, CLIF_SEVERAL },
+    { "I", "icmp", 0, "Use ICMP ECHO for tracerouting",
+        set_module, "icmp", 0, 0 },
+    { "T", "tcp", 0, "Use TCP SYN for tracerouting (default "
+            "port is " _TEXT(DEF_TCP_PORT) ")",
+        set_module, "tcp", 0, 0 },
+    { "i", "interface", "device", "Specify a network interface "
+            "to operate with",
+        CLIF_set_string, &device, 0, 0 },
+    { "m", "max-hops", "max_ttl", "Set the max number of hops (max TTL "
+            "to be reached). Default is " _TEXT(DEF_HOPS),
+        CLIF_set_uint, &max_hops, 0, 0 },
+    { "N", "sim-queries", "squeries", "Set the number of probes "
+            "to be tried simultaneously (default is "
+    _TEXT(DEF_SIM_PROBES) ")",
+        CLIF_set_uint, &sim_probes, 0, 0 },
+    { "n", 0, 0, "Do not resolve IP addresses to their domain names",
+        CLIF_set_flag, &noresolve, 0, 0 },
+    { "p", "port", "port", "Set the destination port to use. "
+            "It is either initial udp port value for "
+            "\"default\" method (incremented by each probe, "
+            "default is " _TEXT(DEF_START_PORT) "), "
+    "or initial seq for \"icmp\" (incremented as well, "
+    "default from 1), or some constant destination port"
+    " for other methods (with default of "
+    _TEXT(DEF_TCP_PORT) " for \"tcp\", "
+    _TEXT(DEF_UDP_PORT) " for \"udp\", etc.)",
+        set_port, &dst_port_seq, 0, 0 },
+    { "t", "tos", "tos", "Set the TOS (IPv4 type of service) or TC "
+            "(IPv6 traffic class) value for outgoing packets",
+        CLIF_set_uint, &tos, 0, 0 },
+    { "l", "flowlabel", "flow_label", "Use specified %s for IPv6 packets",
+        CLIF_set_uint, &flow_label, 0, 0 },
+    { "w", "wait", "MAX,HERE,NEAR", "Wait for a probe no more than HERE "
+            "(default " _TEXT(DEF_HERE_FACTOR) ") times longer "
+    "than a response from the same hop, or no more "
+    "than NEAR (default " _TEXT(DEF_NEAR_FACTOR) ") "
+    "times than some next hop, or MAX (default "
+    _TEXT(DEF_WAIT_SECS) ") seconds "
+    "(float point values allowed too)",
+        set_wait_specs, 0, 0, 0 },
+    { "q", "queries", "nqueries", "Set the number of probes per each hop. "
+            "Default is " _TEXT(DEF_NUM_PROBES),
+        CLIF_set_uint, &probes_per_hop, 0, 0 },
+    { "r", 0, 0, "Bypass the normal routing and send directly to a host "
+            "on an attached network",
+        CLIF_set_flag, &noroute, 0, 0 },
+    { "s", "source", "src_addr", "Use source %s for outgoing packets",
+        set_source, 0, 0, 0 },
+    { "z", "sendwait", "sendwait", "Minimal time interval between probes "
+            "(default " _TEXT(DEF_SEND_SECS) "). If the value "
+    "is more than 10, then it specifies a number "
+    "in milliseconds, else it is a number of seconds "
+    "(float point values allowed too)",
+        CLIF_set_double, &send_secs, 0, 0 },
+    { "e", "extensions", 0, "Show ICMP extensions (if present), "
+            "including MPLS",
+        CLIF_set_flag, &extension, 0, CLIF_ABBREV },
+    { "A", "as-path-lookups", 0, "Perform AS path lookups in routing "
+            "registries and print results directly after "
+            "the corresponding addresses",
+        CLIF_set_flag, &as_lookups, 0, 0 },
+    { "M", "module", "name", "Use specified module (either builtin or "
+            "external) for traceroute operations. Most methods "
+            "have their shortcuts (`-I' means `-M icmp' etc.)",
+        CLIF_set_string, &module, 0, CLIF_EXTRA },
+    { "O", "options", "OPTS", "Use module-specific option %s for the "
+            "traceroute module. Several %s allowed, separated "
+            "by comma. If %s is \"help\", print info about "
+            "available options",
+        set_mod_option, 0, 0, CLIF_SEVERAL | CLIF_EXTRA },
+    { 0, "sport", "num", "Use source port %s for outgoing packets. "
+            "Implies `-N 1'",
+        set_port, &src_port, 0, CLIF_EXTRA },
+    #ifdef SO_MARK
+    { 0, "fwmark", "num", "Set firewall mark for outgoing packets",
+        CLIF_set_uint, &fwmark, 0, 0 },
+    #endif
+    { "U", "udp", 0, "Use UDP to particular port for tracerouting "
+            "(instead of increasing the port per each probe), "
+            "default port is " _TEXT(DEF_UDP_PORT),
+        set_module, "udp", 0, CLIF_EXTRA },
+    { 0, "UL", 0, "Use UDPLITE for tracerouting (default dest port is "
+    _TEXT(DEF_UDP_PORT) ")",
+        set_module, "udplite", 0, CLIF_ONEDASH | CLIF_EXTRA },
+    { "D", "dccp", 0, "Use DCCP Request for tracerouting (default "
+            "port is " _TEXT(DEF_DCCP_PORT) ")",
+        set_module, "dccp", 0, CLIF_EXTRA },
+    { "P", "protocol", "prot", "Use raw packet of protocol %s "
+            "for tracerouting",
+        set_raw, 0, 0, CLIF_EXTRA },
+    { 0, "mtu", 0, "Discover MTU along the path being traced. "
+            "Implies `-F -N 1'",
+        CLIF_set_flag, &mtudisc, 0, CLIF_EXTRA },
+    { 0, "back", 0, "Guess the number of hops in the backward path "
+            "and print if it differs",
+        CLIF_set_flag, &backward, 0, CLIF_EXTRA },
+    CLIF_VERSION_OPTION (version_string),
+    CLIF_HELP_OPTION,
+    CLIF_END_OPTION
+    };
+
+static CLIF_argument arg_list[] = {
+    { "host", "The host to traceroute to",
+        set_host, 0, CLIF_STRICT },
+    { "packetlen", "The full packet length (default is the length of "
+            "an IP header plus " _TEXT(DEF_DATA_LEN) "). Can be "
+    "ignored or increased to a minimal allowed value",
+        CLIF_arg_int, &packet_len, 0 },
+    CLIF_END_ARGUMENT
+    };
+
+static void do_it(void);
+
+int traceroute_main(int argc, char *argv[]) {
+
+    setlocale(LC_ALL, "");
+    setlocale(LC_NUMERIC, "C"); /*  avoid commas in msec printed  */
+
+    check_progname(argv[0]);
+
+    if(CLIF_parse(argc, argv, option_list, arg_list,
+    CLIF_MAY_JOIN_ARG | CLIF_HELP_EMPTY) < 0
+            )
+        return -EADDRNOTAVAIL; //exit(2);
+
+    ops = tr_get_module(module);
+    if(!ops) {
+        ex_error("Unknown traceroute module %s", module);
+        return -2;
+    }
+
+    if(!first_hop || first_hop > max_hops) {
+        ex_error("first hop out of range");
+        return -3;
+    }
+    if(max_hops > MAX_HOPS) {
+        ex_error("max hops cannot be more than " _TEXT(MAX_HOPS));
+        return -4;
+    }
+    if(!probes_per_hop || probes_per_hop > MAX_PROBES) {
+        ex_error("no more than " _TEXT(MAX_PROBES) " probes per hop");
+        return -5;
+    }
+    if(wait_secs < 0 || here_factor < 0 || near_factor < 0) {
+        ex_error("bad wait specifications `%g,%g,%g' used",
+                wait_secs, here_factor, near_factor);
+        return -6;
+    }
+    if(packet_len > MAX_PACKET_LEN) {
+        ex_error("too big packetlen %d specified", packet_len);
+        return -7;
+    }
+    if(src_addr.sa.sa_family && src_addr.sa.sa_family != af) {
+        ex_error("IP version mismatch in addresses specified");
+        return -8;
+    }
+    if(send_secs < 0) {
+        ex_error("bad sendtime `%g' specified", send_secs);
+        return -9;
+    }
+    if(send_secs >= 10) /*  it is milliseconds   */
+        send_secs /= 1000;
+
+    if(af == AF_INET6 && (tos || flow_label))
+        dst_addr.sin6.sin6_flowinfo =
+                htonl(((tos & 0xff) << 20) | (flow_label & 0x000fffff));
+
+    if(src_port) {
+        src_addr.sin.sin_port = htons((uint16_t) src_port);
+        src_addr.sa.sa_family = af;
+    }
+
+    if(src_port || ops->one_per_time) {
+        sim_probes = 1;
+        here_factor = near_factor = 0;
+    }
+
+    /*  make sure we don't std{in,out,err} to open sockets  */
+    make_fd_used(0);
+    make_fd_used(1);
+    make_fd_used(2);
+
+    if(init_ip_options() == -1)
+        return -10;
+
+    header_len = (af == AF_INET ? sizeof(struct iphdr)
+                                  :
+                                  sizeof(struct ip6_hdr)) +
+            rtbuf_len + ops->header_len;
+
+    if(mtudisc) {
+        dontfrag = 1;
+        sim_probes = 1;
+        if(packet_len < 0)
+            packet_len = MAX_PACKET_LEN;
+    }
+
+    if(packet_len < 0) {
+        if(DEF_DATA_LEN >= ops->header_len)
+            data_len = DEF_DATA_LEN - ops->header_len;
+    } else {
+        if(packet_len >= (int) header_len)
+            data_len = packet_len - header_len;
+    }
+
+    num_probes = max_hops * probes_per_hop;
+    probes = calloc(num_probes, sizeof(*probes));
+    if(!probes) {
+        error("calloc");
+        return -11;
+    }
+
+    if(ops->options && opts_idx > 1) {
+        opts[0] = strdup(module); /*  aka argv[0] ...  */
+        if(CLIF_parse(opts_idx, opts, ops->options, 0, CLIF_KEYWORD) < 0)
+            return -12; //exit(2);
+    }
+
+    if(ops->init(&dst_addr, dst_port_seq, &data_len) < 0) {
+        ex_error("trace method's init failed");
+        return -13;
+    }
+
+    do_it();
+    return 0;
+}
+
+/*  PRINT  STUFF      */
+
+static void print_header(void) {
+
+    /*  Note, without ending new-line!  */
+    log_printf("traceroute to %s (%s), %u hops max, %zu byte packets",
+            dst_name, addr2str(&dst_addr), max_hops,
+            header_len + data_len);
+    fflush(stdout);
+}
+
+static bool print_addr(sockaddr_any *res) {
+    bool is_final = false;
+    const char *str;
+
+    if(!res->sa.sa_family)
+        return is_final;
+
+    str = addr2str(res);
+
+    if(noresolve) {
+        log_printf("%s", str);
+        if(str && !strcmp(dst_name, str))
+            is_final = true;
+    }
+    else {
+        char buf[1024];
+
+        buf[0] = '\0';
+        getnameinfo(&res->sa, sizeof(*res), buf, sizeof(buf),
+                0, 0, NI_IDN);
+        log_printf(" %s (%s)", buf[0] ? buf : str, str);
+        if(buf[0] && !strcmp(dst_name, buf))
+            is_final = true;
+        else
+        if(str && !strcmp(dst_name, str))
+            is_final = true;
+    }
+
+    if(as_lookups)
+        log_printf(" [%s]", get_as_path(str));
+
+    return is_final;
+}
+
+static bool print_probe(probe *pb) {
+    bool is_final = false;
+    unsigned int idx = (pb - probes);
+    unsigned int ttl = idx / probes_per_hop + 1;
+    unsigned int np = idx % probes_per_hop;
+
+    if(np == 0)
+        log_printf("\n%2u ", ttl);
+
+    if(!pb->res.sa.sa_family)
+        log_printf(" *");
+    else {
+        int prn = !np; /*  print if the first...  */
+
+        if(np) { /*  ...and if differs with previous   */
+            probe *p;
+
+            /*  skip expired   */
+            for(p = pb - 1; np && !p->res.sa.sa_family; p--, np--)
+                ;
+
+            if(!np ||
+                    !equal_addr(&p->res, &pb->res) ||
+                    (p->ext != pb->ext &&
+                            !(p->ext && pb->ext && !strcmp(p->ext, pb->ext))) ||
+                    (backward && p->recv_ttl != pb->recv_ttl)
+                    )
+                prn = 1;
+        }
+
+        if(prn) {
+            is_final = print_addr(&pb->res);
+            if(pb->ext)
+                log_printf(" <%s>", pb->ext);
+
+            if(backward && pb->recv_ttl) {
+                int hops = ttl2hops(pb->recv_ttl);
+                if(hops != (int) ttl)
+                    log_printf(" '-%d'", hops);
+            }
+        }
+    }
+
+    if(pb->recv_time) {
+        double diff = pb->recv_time - pb->send_time;
+
+        log_printf("  %.3f ms", diff * 1000);
+    }
+
+    if(pb->err_str[0])
+        log_printf(" %s", pb->err_str);
+
+    fflush(stdout);
+
+    return is_final;
+}
+
+static void print_end(void) {
+
+    log_printf("\n");
+}
+
+/*  Compute  timeout  stuff   */
+
+static double get_timeout(probe *pb) {
+    double value;
+
+    if(here_factor) {
+        /*  check for already replied from the same hop   */
+        int i, idx = (pb - probes);
+        probe *p = &probes[idx - (idx % probes_per_hop)];
+
+        for(i = 0; i < (int) probes_per_hop; i++, p++) {
+            /*   `p == pb' skipped since  !pb->done   */
+
+            if(p->done && (value = p->recv_time - p->send_time) > 0) {
+                value += DEF_WAIT_PREC;
+                value *= here_factor;
+                return value < wait_secs ? value : wait_secs;
+            }
+        }
+    }
+
+    if(near_factor) {
+        /*  check forward for already replied   */
+        probe *p, *endp = probes + num_probes;
+
+        for(p = pb + 1; p < endp && p->send_time; p++) {
+
+            if(p->done && (value = p->recv_time - p->send_time) > 0) {
+                value += DEF_WAIT_PREC;
+                value *= near_factor;
+                return value < wait_secs ? value : wait_secs;
+            }
+        }
+    }
+
+    return wait_secs;
+}
+
+/*  Check  expiration  stuff  */
+
+static void check_expired(probe *pb) {
+    int idx = (pb - probes);
+    probe *p, *endp = probes + num_probes;
+    probe *fp = NULL, *pfp = NULL;
+
+    if(!pb->done) /*  an ops method still not release it  */
+        return;
+
+    /*  check all the previous in the same hop   */
+    for(p = &probes[idx - (idx % probes_per_hop)]; p < pb; p++) {
+
+        if(!p->done || /*  too early to decide something  */
+        !p->final /*  already ttl-exceeded in the same hop  */
+        )
+            return;
+
+        pfp = p; /*  some of the previous probes is final   */
+    }
+
+    /*  check forward all the sent probes   */
+    for(p = pb + 1; p < endp && p->send_time; p++) {
+
+        if(p->done) { /*  some next probe already done...  */
+            if(!p->final) /*  ...was ttl-exceeded. OK, we are expired.  */
+                return;
+            else {
+                fp = p;
+                break;
+            }
+        }
+    }
+
+    if(!fp) /*  no any final probe found. Assume expired.   */
+        return;
+
+    /*  Well. There is a situation "*(this) * * * * ... * * final"
+     We cannot guarantee that "final" is in its right place.
+     We've sent "sim_probes" simultaneously, and the final hop
+     can drop some of them and answer only for latest ones.
+     If we can detect/assume that it so, then just put "final"
+     to the (pseudo-expired) "this" place.
+     */
+
+    /*  It seems that the case of "answers for latest ones only"
+     occurs mostly with icmp_unreach error answers ("!H" etc.).
+     Icmp_echoreply, tcp_reset and even icmp_port_unreach looks
+     like going in the right order.
+     */
+    if(!fp->err_str[0]) /*  not an icmp_unreach error report...  */
+        return;
+
+    if(pfp ||
+            (idx % probes_per_hop) + (fp - pb) < probes_per_hop
+                    ) {
+        /*  Either some previous (pfp) or some next probe
+         in this hop is final. It means that the whole hop is final.
+         Do the replace (it also causes further "final"s to be shifted
+         here too).
+         */
+        goto replace_by_final;
+    }
+
+    /*  If the final probe is an icmp_unreachable report
+     (either in a case of some error, like "!H", or just port_unreach),
+     it could follow the "time-exceed" report from the *same* hop.
+     */
+    for(p = pb - 1; p >= probes; p--) {
+        if(equal_addr(&p->res, &fp->res)) {
+            /*  ...Yes. Put "final" to the "this" place.  */
+            goto replace_by_final;
+        }
+    }
+
+    if(fp->recv_ttl) {
+        /*  Consider the ttl value of the report packet and guess where
+         the "final" should be. If it seems that it should be
+         in the same hop as "this", then do replace.
+         */
+        int back_hops, ttl;
+
+        /*  We assume that the reporting one has an initial ttl value
+         of either 64, or 128, or 255. It is most widely used
+         in the modern routers and computers.
+         The idea comes from tracepath(1) routine.
+         */
+        back_hops = ttl2hops(fp->recv_ttl);
+
+        /*  It is possible that the back path differs from the forward
+         and therefore has different number of hops. To minimize
+         such an influence, get the nearest previous time-exceeded
+         probe and compare with it.
+         */
+        for(p = pb - 1; p >= probes; p--) {
+            if(p->done && !p->final && p->recv_ttl) {
+                int hops = ttl2hops(p->recv_ttl);
+
+                if(hops < back_hops) {
+                    ttl = (p - probes) / probes_per_hop + 1;
+                    back_hops = (back_hops - hops) + ttl;
+                    break;
+                }
+            }
+        }
+
+        ttl = idx / probes_per_hop + 1;
+        if(back_hops == ttl)
+            /*  Yes! It seems that "final" should be at "this" place   */
+            goto replace_by_final;
+        else if(back_hops < ttl)
+            /*  Hmmm... Assume better to replace here too...  */
+            goto replace_by_final;
+
+    }
+
+    /*  No idea what to do. Assume expired.  */
+
+    return;
+
+    replace_by_final:
+
+    *pb = *fp;
+
+    memset(fp, 0, sizeof(*fp));
+    /*  block extra re-send  */
+    fp->send_time = 1.;
+
+    return;
+}
+
+probe *probe_by_seq(int seq) {
+    int n;
+
+    if(seq <= 0)
+        return NULL;
+
+    for(n = 0; n < (int) num_probes; n++) {
+        if(probes[n].seq == seq)
+            return &probes[n];
+    }
+
+    return NULL;
+}
+
+probe *probe_by_sk(int sk) {
+    int n;
+
+    if(sk <= 0)
+        return NULL;
+
+    for(n = 0; n < (int) num_probes; n++) {
+        if(probes[n].sk == sk)
+            return &probes[n];
+    }
+
+    return NULL;
+}
+
+static void poll_callback(int fd, int revents) {
+
+    ops->recv_probe(fd, revents);
+}
+
+static void do_it(void) {
+    int start = (first_hop - 1) * probes_per_hop;
+    int end = num_probes;
+    double last_send = 0;
+
+    print_header();
+
+    while(start < end) {
+        int n, num = 0;
+        double next_time = 0;
+        double now_time = get_time();
+
+        for(n = start; n < end; n++) {
+            probe *pb = &probes[n];
+
+            if(n == start && /*  probably time to print...  */
+            !pb->done && pb->send_time /*  ...but yet not replied   */
+            ) {
+                double expire_time = pb->send_time + get_timeout(pb);
+
+                if(expire_time > now_time)
+                    next_time = expire_time;
+                else {
+                    ops->expire_probe(pb);
+                    check_expired(pb);
+                }
+            }
+
+            if(pb->done) {
+
+                if(n == start) { /*  can print it now   */
+                    if(print_probe(pb)) {
+                        pb->final = 1;
+                    }
+                    //log_printf("(host=%s,%s recv_ttl=%d)", dst_name, (host) ? host : "-", pb->recv_ttl);
+                    start++;
+                }
+
+                /*                {
+                 char buf[1024];
+                 buf[0] = '\0';
+                 getnameinfo(&(pb->res.sa), sizeof((pb->res)), buf, sizeof(buf),0, 0, NI_IDN);
+                 if(buf[0] && !strcmp(dst_name, buf))
+                 pb->real_final = true;
+                 //else
+                 //if(str && !strcmp(dst_name, str))
+                 //  pb->real_final = true;
+                 }*/
+
+                if(pb->final)
+                    end = (n / probes_per_hop + 1) * probes_per_hop;
+
+                continue;
+            }
+
+            if(!pb->send_time) {
+                int ttl;
+                double next;
+
+                if(send_secs && (next = last_send + send_secs) > now_time) {
+                    next_time = next;
+                    break;
+                }
+
+                ttl = n / probes_per_hop + 1;
+
+                ops->send_probe(pb, ttl);
+
+                if(!pb->send_time) {
+                    if(next_time)
+                        break; /*  have chances later   */
+                    else
+                        error("send probe");
+                }
+
+                last_send = pb->send_time;
+            }
+
+            if(!next_time)
+                next_time = pb->send_time + get_timeout(pb);
+
+            num++;
+            if(num >= (int) sim_probes)
+                break;
+        }
+
+        if(next_time) {
+            double timeout = next_time - get_time();
+
+            if(timeout < 0)
+                timeout = 0;
+
+            do_poll(timeout, poll_callback);
+        }
+
+    }
+
+    print_end();
+
+    return;
+}
+
+void tune_socket(int sk) {
+    int i = 0;
+
+    if(debug) {
+        i = 1;
+        if(setsockopt(sk, SOL_SOCKET, SO_DEBUG, &i, sizeof(i)) < 0)
+            error("setsockopt SO_DEBUG");
+    }
+
+#ifdef SO_MARK
+    if(fwmark) {
+        if(setsockopt(sk, SOL_SOCKET, SO_MARK,
+                &fwmark, sizeof(fwmark)) < 0
+                )
+            error("setsockopt SO_MARK");
+    }
+#endif
+
+    if(rtbuf && rtbuf_len) {
+        if(af == AF_INET) {
+            if(setsockopt(sk, IPPROTO_IP, IP_OPTIONS,
+                    rtbuf, rtbuf_len) < 0
+                    )
+                error("setsockopt IP_OPTIONS");
+        }
+        else if(af == AF_INET6) {
+            if(setsockopt(sk, IPPROTO_IPV6, IPV6_RTHDR,
+                    rtbuf, rtbuf_len) < 0
+                    )
+                error("setsockopt IPV6_RTHDR");
+        }
+    }
+
+    bind_socket(sk);
+
+    if(af == AF_INET) {
+
+        i = dontfrag ? IP_PMTUDISC_PROBE : IP_PMTUDISC_DONT;
+        if(setsockopt(sk, SOL_IP, IP_MTU_DISCOVER, &i, sizeof(i)) < 0 &&
+                (!dontfrag || (i = IP_PMTUDISC_DO,
+                        setsockopt(sk, SOL_IP, IP_MTU_DISCOVER, &i, sizeof(i)) < 0))
+                )
+            error("setsockopt IP_MTU_DISCOVER");
+
+        if(tos) {
+            i = tos;
+            if(setsockopt(sk, SOL_IP, IP_TOS, &i, sizeof(i)) < 0)
+                error("setsockopt IP_TOS");
+        }
+
+    }
+    else if(af == AF_INET6) {
+
+        i = dontfrag ? IPV6_PMTUDISC_PROBE : IPV6_PMTUDISC_DONT;
+        if(setsockopt(sk, SOL_IPV6, IPV6_MTU_DISCOVER, &i, sizeof(i)) < 0 &&
+                (!dontfrag || (i = IPV6_PMTUDISC_DO,
+                        setsockopt(sk, SOL_IPV6, IPV6_MTU_DISCOVER, &i, sizeof(i)) < 0))
+                )
+            error("setsockopt IPV6_MTU_DISCOVER");
+
+        if(flow_label) {
+            struct in6_flowlabel_req_ flr;
+
+            memset(&flr, 0, sizeof(flr));
+            flr.flr_label = htonl(flow_label & 0x000fffff);
+            flr.flr_action = IPV6_FL_A_GET;
+            flr.flr_flags = IPV6_FL_F_CREATE;
+            flr.flr_share = IPV6_FL_S_ANY;
+            memcpy(&flr.flr_dst, &dst_addr.sin6.sin6_addr,
+                    sizeof(flr.flr_dst));
+
+            if(setsockopt(sk, IPPROTO_IPV6, IPV6_FLOWLABEL_MGR,
+                    &flr, sizeof(flr)) < 0
+                    )
+                error("setsockopt IPV6_FLOWLABEL_MGR");
+        }
+
+        if(tos) {
+            i = tos;
+            if(setsockopt(sk, IPPROTO_IPV6, IPV6_TCLASS,
+                    &i, sizeof(i)) < 0
+                    )
+                error("setsockopt IPV6_TCLASS");
+        }
+
+        if(tos || flow_label) {
+            i = 1;
+            if(setsockopt(sk, IPPROTO_IPV6, IPV6_FLOWINFO_SEND,
+                    &i, sizeof(i)) < 0
+                    )
+                error("setsockopt IPV6_FLOWINFO_SEND");
+        }
+    }
+
+    if(noroute) {
+        i = noroute;
+        if(setsockopt(sk, SOL_SOCKET, SO_DONTROUTE, &i, sizeof(i)) < 0)
+            error("setsockopt SO_DONTROUTE");
+    }
+
+    use_timestamp(sk);
+
+    use_recv_ttl(sk);
+
+    fcntl(sk, F_SETFL, O_NONBLOCK);
+
+    return;
+}
+
+void parse_icmp_res(probe *pb, int type, int code, int info) {
+    char *str = NULL;
+    char buf[sizeof(pb->err_str)];
+
+    if(af == AF_INET) {
+
+        if(type == ICMP_TIME_EXCEEDED) {
+            if(code == ICMP_EXC_TTL)
+                return;
+        }
+        else if(type == ICMP_DEST_UNREACH) {
+
+            switch (code) {
+            case ICMP_UNREACH_NET:
+                case ICMP_UNREACH_NET_UNKNOWN:
+                case ICMP_UNREACH_ISOLATED:
+                case ICMP_UNREACH_TOSNET:
+                str = "!N";
+                break;
+
+            case ICMP_UNREACH_HOST:
+                case ICMP_UNREACH_HOST_UNKNOWN:
+                case ICMP_UNREACH_TOSHOST:
+                str = "!H";
+                break;
+
+            case ICMP_UNREACH_NET_PROHIB:
+                case ICMP_UNREACH_HOST_PROHIB:
+                case ICMP_UNREACH_FILTER_PROHIB:
+                str = "!X";
+                break;
+
+            case ICMP_UNREACH_PORT:
+                /*  dest host is reached   */
+                str = "";
+                break;
+
+            case ICMP_UNREACH_PROTOCOL:
+                str = "!P";
+                break;
+
+            case ICMP_UNREACH_NEEDFRAG:
+                snprintf(buf, sizeof(buf), "!F-%d", info);
+                str = buf;
+                break;
+
+            case ICMP_UNREACH_SRCFAIL:
+                str = "!S";
+                break;
+
+            case ICMP_UNREACH_HOST_PRECEDENCE:
+                str = "!V";
+                break;
+
+            case ICMP_UNREACH_PRECEDENCE_CUTOFF:
+                str = "!C";
+                break;
+
+            default:
+                snprintf(buf, sizeof(buf), "!<%u>", code);
+                str = buf;
+                break;
+            }
+        }
+
+    }
+    else if(af == AF_INET6) {
+
+        if(type == ICMP6_TIME_EXCEEDED) {
+            if(code == ICMP6_TIME_EXCEED_TRANSIT)
+                return;
+        }
+        else if(type == ICMP6_DST_UNREACH) {
+
+            switch (code) {
+
+            case ICMP6_DST_UNREACH_NOROUTE:
+                str = "!N";
+                break;
+
+            case ICMP6_DST_UNREACH_BEYONDSCOPE:
+                case ICMP6_DST_UNREACH_ADDR:
+                str = "!H";
+                break;
+
+            case ICMP6_DST_UNREACH_ADMIN:
+                str = "!X";
+                break;
+
+            case ICMP6_DST_UNREACH_NOPORT:
+                /*  dest host is reached   */
+                str = "";
+                break;
+
+            default:
+                snprintf(buf, sizeof(buf), "!<%u>", code);
+                str = buf;
+                break;
+            }
+        }
+        else if(type == ICMP6_PACKET_TOO_BIG) {
+            snprintf(buf, sizeof(buf), "!F-%d", info);
+            str = buf;
+        }
+    }
+
+    if(!str) {
+        snprintf(buf, sizeof(buf), "!<%u-%u>", type, code);
+        str = buf;
+    }
+
+    if(*str) {
+        strncpy(pb->err_str, str, sizeof(pb->err_str));
+        pb->err_str[sizeof(pb->err_str) - 1] = '\0';
+    }
+    // final present
+    pb->final = 1;
+
+    return;
+}
+
+static void parse_local_res(probe *pb, int ee_errno, int info) {
+
+    if(ee_errno == EMSGSIZE && info != 0) {
+        snprintf(pb->err_str, sizeof(pb->err_str) - 1, "!F-%d", info);
+        pb->final = 1;
+        return;
+    }
+
+    errno = ee_errno;
+    error("local recverr");
+}
+
+void probe_done(probe *pb) {
+
+    if(pb->sk) {
+        del_poll(pb->sk);
+        close(pb->sk);
+        pb->sk = 0;
+    }
+
+    pb->seq = 0;
+
+    pb->done = 1;
+}
+
+void recv_reply(int sk, int err, check_reply_t check_reply) {
+    struct msghdr msg;
+    sockaddr_any from;
+    struct iovec iov;
+    int n;
+    probe *pb;
+    char buf[1280]; /*  min mtu for ipv6 ( >= 576 for ipv4)  */
+    char *bufp = buf;
+    char control[1024];
+    struct cmsghdr *cm;
+    double recv_time = 0;
+    int recv_ttl = 0;
+    struct sock_extended_err *ee = NULL;
+
+    memset(&msg, 0, sizeof(msg));
+    msg.msg_name = &from;
+    msg.msg_namelen = sizeof(from);
+    msg.msg_control = control;
+    msg.msg_controllen = sizeof(control);
+    iov.iov_base = buf;
+    iov.iov_len = sizeof(buf);
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+
+    n = recvmsg(sk, &msg, err ? MSG_ERRQUEUE : 0);
+    if(n < 0)
+        return;
+
+    /*  when not MSG_ERRQUEUE, AF_INET returns full ipv4 header
+     on raw sockets...
+     */
+
+    if(!err &&
+            af == AF_INET &&
+            /*  XXX: Assume that the presence of an extra header means
+             that it is not a raw socket...
+             */
+            ops->header_len == 0
+                    ) {
+        struct iphdr *ip = (struct iphdr *) bufp;
+        int hlen;
+
+        if(n < (int) sizeof(struct iphdr))
+            return;
+
+        hlen = ip->ihl << 2;
+        if(n < hlen)
+            return;
+
+        bufp += hlen;
+        n -= hlen;
+    }
+
+    pb = check_reply(sk, err, &from, bufp, n);
+    if(!pb) {
+
+        /*  for `frag needed' case at the local host,
+         kernel >= 3.13 sends local error (no more icmp)
+         */
+        if(!n && err && dontfrag) {
+            pb = &probes[(first_hop - 1) * probes_per_hop];
+            if(pb->done)
+                return;
+        } else
+            return;
+    }
+
+    /*  Parse CMSG stuff   */
+
+    for(cm = CMSG_FIRSTHDR(&msg); cm; cm = CMSG_NXTHDR(&msg, cm)) {
+        void *ptr = CMSG_DATA(cm);
+
+        if(cm->cmsg_level == SOL_SOCKET) {
+
+            if(cm->cmsg_type == SO_TIMESTAMP) {
+                struct timeval *tv = (struct timeval *) ptr;
+
+                recv_time = tv->tv_sec + tv->tv_usec / 1000000.;
+            }
+        }
+        else if(cm->cmsg_level == SOL_IP) {
+
+            if(cm->cmsg_type == IP_TTL)
+                recv_ttl = *((int *) ptr);
+            else if(cm->cmsg_type == IP_RECVERR) {
+
+                ee = (struct sock_extended_err *) ptr;
+
+                if(ee->ee_origin != SO_EE_ORIGIN_ICMP &&
+                        ee->ee_origin != SO_EE_ORIGIN_LOCAL
+                )
+                    return;
+
+                /*  dgram icmp sockets might return extra things...  */
+                if(ee->ee_origin == SO_EE_ORIGIN_ICMP &&
+                        (ee->ee_type == ICMP_SOURCE_QUENCH ||
+                                ee->ee_type == ICMP_REDIRECT)
+                        )
+                    return;
+            }
+        }
+        else if(cm->cmsg_level == SOL_IPV6) {
+
+            if(cm->cmsg_type == IPV6_HOPLIMIT)
+                recv_ttl = *((int *) ptr);
+            else if(cm->cmsg_type == IPV6_RECVERR) {
+
+                ee = (struct sock_extended_err *) ptr;
+
+                if(ee->ee_origin != SO_EE_ORIGIN_ICMP6 &&
+                        ee->ee_origin != SO_EE_ORIGIN_LOCAL
+                )
+                    return;
+            }
+        }
+    }
+
+    if(!recv_time)
+        recv_time = get_time();
+
+    if(!err)
+        memcpy(&pb->res, &from, sizeof(pb->res));
+
+    pb->recv_time = recv_time;
+
+    pb->recv_ttl = recv_ttl;
+
+    if(ee && ee->ee_origin != SO_EE_ORIGIN_LOCAL) { /*  icmp or icmp6   */
+        memcpy(&pb->res, SO_EE_OFFENDER(ee), sizeof(pb->res));
+        parse_icmp_res(pb, ee->ee_type, ee->ee_code, ee->ee_info);
+    }
+
+    if(ee && ee->ee_origin == SO_EE_ORIGIN_LOCAL)
+        parse_local_res(pb, ee->ee_errno, ee->ee_info);
+
+    if(ee &&
+            mtudisc &&
+            ee->ee_info >= header_len &&
+            ee->ee_info < header_len + data_len
+                    ) {
+        data_len = ee->ee_info - header_len;
+
+        probe_done(pb);
+
+        /*  clear this probe (as actually the previous hop answers here)
+         but fill its `err_str' by the info obtained. Ugly, but easy...
+         */
+        memset(pb, 0, sizeof(*pb));
+        snprintf(pb->err_str, sizeof(pb->err_str) - 1, "F=%d", ee->ee_info);
+
+        return;
+    }
+
+    if(ee &&
+            extension &&
+            header_len + n >= (128 + 8) && /*  at least... (rfc4884)  */
+            header_len <= 128 && /*  paranoia   */
+            ((af == AF_INET && (ee->ee_type == ICMP_TIME_EXCEEDED ||
+                    ee->ee_type == ICMP_DEST_UNREACH ||
+                    ee->ee_type == ICMP_PARAMETERPROB)) ||
+                    (af == AF_INET6 && (ee->ee_type == ICMP6_TIME_EXCEEDED ||
+                            ee->ee_type == ICMP6_DST_UNREACH))
+            )
+            ) {
+        int step;
+        int offs = 128 - header_len;
+
+        if(n > (int) data_len)
+            step = 0; /*  guaranteed at 128 ...  */
+        else
+            step = af == AF_INET ? 4 : 8;
+
+        handle_extensions(pb, bufp + offs, n - offs, step);
+    }
+
+    probe_done(pb);
+}
+
+int equal_addr(const sockaddr_any *a, const sockaddr_any *b) {
+
+    if(!a->sa.sa_family)
+        return 0;
+
+    if(a->sa.sa_family != b->sa.sa_family)
+        return 0;
+
+    if(a->sa.sa_family == AF_INET6)
+        return !memcmp(&a->sin6.sin6_addr, &b->sin6.sin6_addr,
+                sizeof(a->sin6.sin6_addr));
+    else
+        return !memcmp(&a->sin.sin_addr, &b->sin.sin_addr,
+                sizeof(a->sin.sin_addr));
+    return 0; /*  not reached   */
+}
+
+void bind_socket(int sk) {
+    sockaddr_any *addr, tmp;
+
+    if(device) {
+        if(setsockopt(sk, SOL_SOCKET, SO_BINDTODEVICE,
+                device, strlen(device) + 1) < 0
+                )
+            error("setsockopt SO_BINDTODEVICE");
+    }
+
+    if(!src_addr.sa.sa_family) {
+        memset(&tmp, 0, sizeof(tmp));
+        tmp.sa.sa_family = af;
+        addr = &tmp;
+    } else
+        addr = &src_addr;
+
+    if(bind(sk, &addr->sa, sizeof(*addr)) < 0)
+        error("bind");
+
+    return;
+}
+
+void use_timestamp(int sk) {
+    int n = 1;
+
+    setsockopt(sk, SOL_SOCKET, SO_TIMESTAMP, &n, sizeof(n));
+    /*  foo on errors...  */
+}
+
+void use_recv_ttl(int sk) {
+    int n = 1;
+
+    if(af == AF_INET)
+        setsockopt(sk, SOL_IP, IP_RECVTTL, &n, sizeof(n));
+    else if(af == AF_INET6)
+        setsockopt(sk, SOL_IPV6, IPV6_RECVHOPLIMIT, &n, sizeof(n));
+    /*  foo on errors   */
+}
+
+void use_recverr(int sk) {
+    int val = 1;
+
+    if(af == AF_INET) {
+        if(setsockopt(sk, SOL_IP, IP_RECVERR, &val, sizeof(val)) < 0)
+            error("setsockopt IP_RECVERR");
+    }
+    else if(af == AF_INET6) {
+        if(setsockopt(sk, SOL_IPV6, IPV6_RECVERR, &val, sizeof(val)) < 0)
+            error("setsockopt IPV6_RECVERR");
+    }
+}
+
+void set_ttl(int sk, int ttl) {
+
+    if(af == AF_INET) {
+        if(setsockopt(sk, SOL_IP, IP_TTL, &ttl, sizeof(ttl)) < 0)
+            error("setsockopt IP_TTL");
+    }
+    else if(af == AF_INET6) {
+        if(setsockopt(sk, SOL_IPV6, IPV6_UNICAST_HOPS,
+                &ttl, sizeof(ttl)) < 0
+                )
+            error("setsockopt IPV6_UNICAST_HOPS");
+    }
+}
+
+int do_send(int sk, const void *data, size_t len, const sockaddr_any *addr) {
+    int res;
+
+    if(!addr || raw_can_connect())
+        res = send(sk, data, len, 0);
+    else
+        res = sendto(sk, data, len, 0, &addr->sa, sizeof(*addr));
+
+    if(res < 0) {
+        if(errno == ENOBUFS || errno == EAGAIN)
+            return res;
+        if(errno == EMSGSIZE)
+            return 0; /*  recverr will say more...  */
+        error("send"); /*  not recoverable   */
+    }
+
+    return res;
+}
+
+/*  There is a bug in the kernel before 2.6.25, which prevents icmp errors
+ to be obtained by MSG_ERRQUEUE for ipv6 connected raw sockets.
+ */
+static int can_connect = -1;
+
+#define VER(A,B,C,D)  (((((((A) << 8) | (B)) << 8) | (C)) << 8) | (D))
+
+int raw_can_connect(void) {
+
+    if(can_connect < 0) {
+
+        if(af == AF_INET)
+            can_connect = 1;
+        else { /*  AF_INET6   */
+            struct utsname uts;
+            int n;
+            unsigned int a, b, c, d = 0;
+
+            if(uname(&uts) < 0)
+                return 0;
+
+            n = sscanf(uts.release, "%u.%u.%u.%u", &a, &b, &c, &d);
+            can_connect = (n >= 3 && VER (a, b, c, d) >= VER(2, 6, 25, 0));
+        }
+    }
+
+    return can_connect;
+}
+
+/**
+ * Traceroute host
+ *
+ * @addr[in] host name or IP address
+ * @hops[out] hops count
+ * @time_usec[out] latency in microseconds
+ * @return 0 Ok, -1 error
+ */
+int traceroute_util(const char *addr, int *hops, int *time_usec)
+{
+    UNUSED(hops);
+    int type = 6; // ipv4 or ipv6
+    int argc = 3;
+    const char *argv[argc];
+    if(type != 4)
+        argv[0] = "traceroute6";
+    else
+        argv[0] = "traceroute4";
+    argv[1] = "-4"; // ipv4
+    argv[2] = addr;
+
+    *hops = 0;
+    *time_usec = 0;
+
+    int ret = traceroute_main(argc, (char**) argv);
+    if(!ret) {
+        ret = -1;
+        for(int i = 0; i < (int) num_probes; i++) {
+            probe *one_probe = probes + i;
+            if(one_probe->done && one_probe->final && one_probe->recv_ttl) {
+                *hops = i / DEF_NUM_PROBES + 1;
+                *time_usec = (int) ((one_probe->recv_time - one_probe->send_time) * 1000000);
+                // if error -> not found host
+                if(!strlen(one_probe->err_str))
+                    ret = 1;
+                break;
+            }
+        }
+        /*if(one_probe->done)
+         printf("%d(%d) dseq=%d sk=%d done=%d final=%d recv_ttl=%d dt=%lf err='%s'\n", i + 1,
+         i / DEF_NUM_PROBES + 1,
+         one_probe->seq, one_probe->sk, one_probe->done,
+         one_probe->final, one_probe->recv_ttl, one_probe->recv_time - one_probe->send_time,
+         one_probe->err_str);*/
+    }
+    free(probes);
+
+    return (ret == 1) ? 0 : ret;
+}
diff --git a/modules/net/iputils/traceroute/traceroute.h b/modules/net/iputils/traceroute/traceroute.h
new file mode 100644
index 0000000000..0db40c544e
--- /dev/null
+++ b/modules/net/iputils/traceroute/traceroute.h
@@ -0,0 +1,107 @@
+/*
+    Copyright (c)  2006, 2007		Dmitry Butskoy
+					<buc@citadel.stu.neva.ru>
+    License:  GPL v2 or any later
+
+    See COPYING for the status of this software.
+*/
+
+#include <netinet/in.h>
+
+#include "clif.h"
+#include "../iputils.h"
+
+union common_sockaddr {
+	struct sockaddr sa;
+	struct sockaddr_in sin;
+	struct sockaddr_in6 sin6;
+};
+typedef union common_sockaddr sockaddr_any;
+
+struct probe_struct {
+	int done;
+	int final;
+	sockaddr_any res;
+	double send_time;
+	double recv_time;
+	int recv_ttl;
+	int sk;
+	int seq;
+	char *ext;
+	char err_str[16];	/*  assume enough   */
+};
+typedef struct probe_struct probe;
+
+
+struct tr_module_struct {
+	struct tr_module_struct *next;
+	const char *name;
+	int (*init) (const sockaddr_any *dest,
+				unsigned int port_seq, size_t *packet_len);
+	void (*send_probe) (probe *pb, int ttl);
+	void (*recv_probe) (int fd, int revents);
+	void (*expire_probe) (probe *pb);
+	CLIF_option *options;	/*  per module options, if any   */
+	int one_per_time;	/*  no simultaneous probes   */
+	size_t header_len;	/*  additional header length (aka for udp)   */
+};
+typedef struct tr_module_struct tr_module;
+
+
+#define __TEXT(X)       #X
+#define _TEXT(X)        __TEXT(X)
+
+#define DEF_START_PORT	33434	/*  start for traditional udp method   */
+#define DEF_UDP_PORT	53	/*  dns   */
+#define DEF_TCP_PORT	80	/*  web   */
+#define DEF_DCCP_PORT	DEF_START_PORT	/*  is it a good choice?...  */
+#define DEF_RAW_PROT	253	/*  for experimentation and testing, rfc3692  */
+
+
+void error (const char *str) __attribute__((noreturn));
+void error_or_perm (const char *str) __attribute__((noreturn));
+
+double get_time (void);
+void tune_socket (int sk);
+void parse_icmp_res (probe *pb, int type, int code, int info);
+void probe_done (probe *pb);
+
+typedef probe *(*check_reply_t) (int sk, int err, sockaddr_any *from,
+							char *buf, size_t len);
+void recv_reply (int sk, int err, check_reply_t check_reply);
+
+int equal_addr (const sockaddr_any *a, const sockaddr_any *b);
+
+probe *probe_by_seq (int seq);
+probe *probe_by_sk (int sk);
+
+void bind_socket (int sk);
+void use_timestamp (int sk);
+void use_recv_ttl (int sk);
+void use_recverr (int sk);
+void set_ttl (int sk, int ttl);
+int do_send (int sk, const void *data, size_t len, const sockaddr_any *addr);
+
+void add_poll (int fd, int events);
+void del_poll (int fd);
+void do_poll (double timeout, void (*callback) (int fd, int revents));
+
+void handle_extensions (probe *pb, char *buf, int len, int step);
+const char *get_as_path (const char *query);
+
+int raw_can_connect (void);
+
+unsigned int random_seq (void);
+uint16_t in_csum (const void *ptr, size_t len);
+
+
+void tr_register_module (tr_module *module);
+const tr_module *tr_get_module (const char *name);
+
+#define TR_MODULE(MOD)	\
+static void __init_ ## MOD (void) __attribute__ ((constructor));	\
+static void __init_ ## MOD (void) {	\
+				\
+	tr_register_module (&MOD);	\
+}
+
diff --git a/modules/net/srv/CMakeLists.txt b/modules/net/srv/CMakeLists.txt
index a59328f7d3..2e61dfc244 100644
--- a/modules/net/srv/CMakeLists.txt
+++ b/modules/net/srv/CMakeLists.txt
@@ -1,12 +1,13 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv)
 
-set(DAP_CHAIN_NET_SRV_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRV_SRCS *.c)
 
-set(DAP_CHAIN_NET_SRV_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_SRCS} ${DAP_CHAIN_NET_SRV_HEADERS})
 
 target_link_libraries(dap_chain_net_srv dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_net dap_chain_wallet)
 
 target_include_directories(dap_chain_net_srv INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/net/win32/ip.h b/modules/net/win32/ip.h
new file mode 100644
index 0000000000..df3d54a834
--- /dev/null
+++ b/modules/net/win32/ip.h
@@ -0,0 +1,301 @@
+#pragma once
+
+/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef __NETINET_IP_H
+#define __NETINET_IP_H 1
+
+//#include <features.h>
+//#include <sys/types.h>
+
+//#include <netinet/in.h>
+
+struct timestamp
+  {
+    uint8_t len;
+    uint8_t ptr;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+    unsigned int flags:4;
+    unsigned int overflow:4;
+#elif __BYTE_ORDER == __BIG_ENDIAN
+    unsigned int overflow:4;
+    unsigned int flags:4;
+#else
+# error "Please fix <bits/endian.h>"
+#endif
+    uint32_t data[9];
+  };
+
+struct iphdr
+  {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+    unsigned int ihl:4;
+    unsigned int version:4;
+#elif __BYTE_ORDER == __BIG_ENDIAN
+    unsigned int version:4;
+    unsigned int ihl:4;
+#else
+# error "Please fix <bits/endian.h>"
+#endif
+    uint8_t tos;
+    uint16_t tot_len;
+    uint16_t id;
+    uint16_t frag_off;
+    uint8_t ttl;
+    uint8_t protocol;
+    uint16_t check;
+    uint32_t saddr;
+    uint32_t daddr;
+    /*The options start here. */
+  };
+
+#ifdef __USE_MISC
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *  @(#)ip.h  8.1 (Berkeley) 6/10/93
+ */
+
+/*
+ * Definitions for internet protocol version 4.
+ * Per RFC 791, September 1981.
+ */
+
+/*
+ * Structure of an internet header, naked of options.
+ */
+struct ip
+  {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+    unsigned int ip_hl:4;   /* header length */
+    unsigned int ip_v:4;    /* version */
+#endif
+#if __BYTE_ORDER == __BIG_ENDIAN
+    unsigned int ip_v:4;    /* version */
+    unsigned int ip_hl:4;   /* header length */
+#endif
+    uint8_t ip_tos;     /* type of service */
+    unsigned short ip_len;    /* total length */
+    unsigned short ip_id;   /* identification */
+    unsigned short ip_off;    /* fragment offset field */
+#define IP_RF 0x8000      /* reserved fragment flag */
+#define IP_DF 0x4000      /* dont fragment flag */
+#define IP_MF 0x2000      /* more fragments flag */
+#define IP_OFFMASK 0x1fff   /* mask for fragmenting bits */
+    uint8_t ip_ttl;     /* time to live */
+    uint8_t ip_p;     /* protocol */
+    unsigned short ip_sum;    /* checksum */
+    struct in_addr ip_src, ip_dst;  /* source and dest address */
+  };
+
+/*
+ * Time stamp option structure.
+ */
+struct ip_timestamp
+  {
+    uint8_t ipt_code;     /* IPOPT_TS */
+    uint8_t ipt_len;      /* size of structure (variable) */
+    uint8_t ipt_ptr;      /* index of current entry */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+    unsigned int ipt_flg:4;   /* flags, see below */
+    unsigned int ipt_oflw:4;    /* overflow counter */
+#endif
+#if __BYTE_ORDER == __BIG_ENDIAN
+    unsigned int ipt_oflw:4;    /* overflow counter */
+    unsigned int ipt_flg:4;   /* flags, see below */
+#endif
+    uint32_t data[9];
+  };
+#endif /* __USE_MISC */
+
+#define IPVERSION 4               /* IP version number */
+#define IP_MAXPACKET  65535   /* maximum packet size */
+
+/*
+ * Definitions for Explicit Congestion Notification (ECN)
+ *
+ * Taken from RFC-3168, Section 5.
+ */
+
+#define IPTOS_ECN_MASK    0x03
+#define IPTOS_ECN(x)    ((x) & IPTOS_ECN_MASK)
+#define IPTOS_ECN_NOT_ECT 0x00
+#define IPTOS_ECN_ECT1    0x01
+#define IPTOS_ECN_ECT0    0x02
+#define IPTOS_ECN_CE    0x03
+
+/*
+ * Definitions for IP differentiated services code points (DSCP)
+ *
+ * Taken from RFC-2597, Section 6 and RFC-2598, Section 2.3.
+ */
+
+#define IPTOS_DSCP_MASK   0xfc
+#define IPTOS_DSCP(x)   ((x) & IPTOS_DSCP_MASK)
+#define IPTOS_DSCP_AF11   0x28
+#define IPTOS_DSCP_AF12   0x30
+#define IPTOS_DSCP_AF13   0x38
+#define IPTOS_DSCP_AF21   0x48
+#define IPTOS_DSCP_AF22   0x50
+#define IPTOS_DSCP_AF23   0x58
+#define IPTOS_DSCP_AF31   0x68
+#define IPTOS_DSCP_AF32   0x70
+#define IPTOS_DSCP_AF33   0x78
+#define IPTOS_DSCP_AF41   0x88
+#define IPTOS_DSCP_AF42   0x90
+#define IPTOS_DSCP_AF43   0x98
+#define IPTOS_DSCP_EF   0xb8
+
+/*
+ * In RFC 2474, Section 4.2.2.1, the Class Selector Codepoints subsume
+ * the old ToS Precedence values.
+ */
+
+#define IPTOS_CLASS_MASK    0xe0
+#define IPTOS_CLASS(class)    ((class) & IPTOS_CLASS_MASK)
+#define IPTOS_CLASS_CS0     0x00
+#define IPTOS_CLASS_CS1     0x20
+#define IPTOS_CLASS_CS2     0x40
+#define IPTOS_CLASS_CS3     0x60
+#define IPTOS_CLASS_CS4     0x80
+#define IPTOS_CLASS_CS5     0xa0
+#define IPTOS_CLASS_CS6     0xc0
+#define IPTOS_CLASS_CS7     0xe0
+
+#define IPTOS_CLASS_DEFAULT   IPTOS_CLASS_CS0
+
+/*
+ * Definitions for IP type of service (ip_tos) [deprecated; use DSCP
+ * and CS definitions above instead.]
+ */
+#define IPTOS_TOS_MASK    0x1E
+#define IPTOS_TOS(tos)    ((tos) & IPTOS_TOS_MASK)
+#define IPTOS_LOWDELAY    0x10
+#define IPTOS_THROUGHPUT  0x08
+#define IPTOS_RELIABILITY 0x04
+#define IPTOS_LOWCOST   0x02
+#define IPTOS_MINCOST   IPTOS_LOWCOST
+
+/*
+ * Definitions for IP precedence (also in ip_tos) [also deprecated.]
+ */
+#define IPTOS_PREC_MASK     IPTOS_CLASS_MASK
+#define IPTOS_PREC(tos)     IPTOS_CLASS(tos)
+#define IPTOS_PREC_NETCONTROL   IPTOS_CLASS_CS7
+#define IPTOS_PREC_INTERNETCONTROL  IPTOS_CLASS_CS6
+#define IPTOS_PREC_CRITIC_ECP   IPTOS_CLASS_CS5
+#define IPTOS_PREC_FLASHOVERRIDE  IPTOS_CLASS_CS4
+#define IPTOS_PREC_FLASH    IPTOS_CLASS_CS3
+#define IPTOS_PREC_IMMEDIATE    IPTOS_CLASS_CS2
+#define IPTOS_PREC_PRIORITY   IPTOS_CLASS_CS1
+#define IPTOS_PREC_ROUTINE    IPTOS_CLASS_CS0
+
+/*
+ * Definitions for options.
+ */
+#define IPOPT_COPY    0x80
+#define IPOPT_CLASS_MASK  0x60
+#define IPOPT_NUMBER_MASK 0x1f
+
+#define IPOPT_COPIED(o)   ((o) & IPOPT_COPY)
+#define IPOPT_CLASS(o)    ((o) & IPOPT_CLASS_MASK)
+#define IPOPT_NUMBER(o)   ((o) & IPOPT_NUMBER_MASK)
+
+#define IPOPT_CONTROL   0x00
+#define IPOPT_RESERVED1   0x20
+#define IPOPT_DEBMEAS   0x40
+#define IPOPT_MEASUREMENT       IPOPT_DEBMEAS
+#define IPOPT_RESERVED2   0x60
+
+#define IPOPT_EOL   0   /* end of option list */
+#define IPOPT_END   IPOPT_EOL
+#define IPOPT_NOP   1   /* no operation */
+#define IPOPT_NOOP    IPOPT_NOP
+
+#define IPOPT_RR    7   /* record packet route */
+#define IPOPT_TS    68    /* timestamp */
+#define IPOPT_TIMESTAMP   IPOPT_TS
+#define IPOPT_SECURITY    130   /* provide s,c,h,tcc */
+#define IPOPT_SEC   IPOPT_SECURITY
+#define IPOPT_LSRR    131   /* loose source route */
+#define IPOPT_SATID   136   /* satnet id */
+#define IPOPT_SID   IPOPT_SATID
+#define IPOPT_SSRR    137   /* strict source route */
+#define IPOPT_RA    148   /* router alert */
+
+/*
+ * Offsets to fields in options other than EOL and NOP.
+ */
+#define IPOPT_OPTVAL    0   /* option ID */
+#define IPOPT_OLEN    1   /* option length */
+#define IPOPT_OFFSET    2   /* offset within option */
+#define IPOPT_MINOFF    4   /* min value of above */
+
+#define MAX_IPOPTLEN    40
+
+/* flag bits for ipt_flg */
+#define IPOPT_TS_TSONLY   0   /* timestamps only */
+#define IPOPT_TS_TSANDADDR  1   /* timestamps and addresses */
+#define IPOPT_TS_PRESPEC  3   /* specified modules only */
+
+/* bits for security (not byte swapped) */
+#define IPOPT_SECUR_UNCLASS 0x0000
+#define IPOPT_SECUR_CONFID  0xf135
+#define IPOPT_SECUR_EFTO  0x789a
+#define IPOPT_SECUR_MMMM  0xbc4d
+#define IPOPT_SECUR_RESTR 0xaf13
+#define IPOPT_SECUR_SECRET  0xd788
+#define IPOPT_SECUR_TOPSECRET 0x6bc5
+
+/*
+ * Internet implementation parameters.
+ */
+#define MAXTTL    255   /* maximum time to live (seconds) */
+#define IPDEFTTL  64    /* default ttl, from RFC 1340 */
+#define IPFRAGTTL 60    /* time to live for frags, slowhz */
+#define IPTTLDEC  1   /* subtracted when forwarding */
+
+#define IP_MSS    576   /* default maximum segment size */
+
+
+#endif /* netinet/ip.h */
diff --git a/modules/net/win32/iphdr.h b/modules/net/win32/iphdr.h
new file mode 100644
index 0000000000..f2533f910c
--- /dev/null
+++ b/modules/net/win32/iphdr.h
@@ -0,0 +1,112 @@
+#pragma once
+
+// Align on a 1-byte boundary
+//#include <pshpack1.h>
+
+#pragma pack(push,1)
+
+// IPv4 header
+typedef struct ip_hdr
+{
+  unsigned char  ip_verlen;        // 4-bit IPv4 version
+                                     // 4-bit header length (in 32-bit words)
+  unsigned char  ip_tos;           // IP type of service
+  unsigned short ip_totallength;   // Total length
+  unsigned short ip_id;            // Unique identifier 
+  unsigned short ip_offset;        // Fragment offset field
+  unsigned char  ip_ttl;           // Time to live
+  unsigned char  ip_protocol;      // Protocol(TCP,UDP etc)
+  unsigned short ip_checksum;      // IP checksum
+  unsigned int   ip_srcaddr;       // Source address
+  unsigned int   ip_destaddr;      // Source address
+
+} IPV4_HDR, *PIPV4_HDR, FAR * LPIPV4_HDR;
+
+// IPv4 option header
+typedef struct ipv4_option_hdr
+{
+  unsigned char   opt_code;           // option type
+  unsigned char   opt_len;            // length of the option header
+  unsigned char   opt_ptr;            // offset into options
+  unsigned long   opt_addr[9];        // list of IPv4 addresses
+} IPV4_OPTION_HDR, *PIPV4_OPTION_HDR, FAR *LPIPV4_OPTION_HDR;
+
+// ICMP header
+typedef struct icmp_hdr
+{
+  unsigned char   icmp_type;
+  unsigned char   icmp_code;
+  unsigned short  icmp_checksum;
+  unsigned short  icmp_id;
+  unsigned short  icmp_sequence;
+} ICMP_HDR, *PICMP_HDR, FAR *LPICMP_HDR;
+
+// IPv6 protocol header
+typedef struct ipv6_hdr
+{
+  unsigned long   ipv6_vertcflow;        // 4-bit IPv6 version
+                                           // 8-bit traffic class
+                                           // 20-bit flow label
+  unsigned short  ipv6_payloadlen;       // payload length
+  unsigned char   ipv6_nexthdr;          // next header protocol value
+  unsigned char   ipv6_hoplimit;         // TTL 
+  struct in6_addr ipv6_srcaddr;          // Source address
+  struct in6_addr ipv6_destaddr;         // Destination address
+} IPV6_HDR, *PIPV6_HDR, FAR * LPIPV6_HDR;
+
+// IPv6 fragment header
+typedef struct ipv6_fragment_hdr
+{
+  unsigned char   ipv6_frag_nexthdr;
+  unsigned char   ipv6_frag_reserved;
+  unsigned short  ipv6_frag_offset;
+  unsigned long   ipv6_frag_id;
+} IPV6_FRAGMENT_HDR, *PIPV6_FRAGMENT_HDR, FAR * LPIPV6_FRAGMENT_HDR;
+
+// ICMPv6 header
+typedef struct icmpv6_hdr {
+  unsigned char   icmp6_type;
+  unsigned char   icmp6_code;
+  unsigned short  icmp6_checksum;
+} ICMPV6_HDR;
+
+// ICMPv6 echo request body
+typedef struct icmpv6_echo_request
+{
+  unsigned short  icmp6_echo_id;
+  unsigned short  icmp6_echo_sequence;
+} ICMPV6_ECHO_REQUEST;
+
+// Define the UDP header 
+typedef struct udp_hdr
+{
+  unsigned short src_portno;       // Source port no.
+  unsigned short dst_portno;       // Dest. port no.
+  unsigned short udp_length;       // Udp packet length
+  unsigned short udp_checksum;     // Udp checksum (optional)
+} UDP_HDR, *PUDP_HDR;
+
+// IPv4 option for record route
+#define IP_RECORD_ROUTE     0x7
+
+// ICMP6 protocol value (used in the socket call and IPv6 header)
+#define IPPROTO_ICMP6       58
+
+// ICMP types and codes
+#define ICMPV4_ECHO_REQUEST_TYPE   8
+#define ICMPV4_ECHO_REQUEST_CODE   0
+#define ICMPV4_ECHO_REPLY_TYPE     0
+#define ICMPV4_ECHO_REPLY_CODE     0
+#define ICMPV4_MINIMUM_HEADER      8
+
+// ICPM6 types and codes
+#define ICMPV6_ECHO_REQUEST_TYPE   128
+#define ICMPV6_ECHO_REQUEST_CODE   0
+#define ICMPV6_ECHO_REPLY_TYPE     129
+#define ICMPV6_ECHO_REPLY_CODE     0
+
+#pragma pack(pop)
+
+// Restore byte alignment back to default
+
+//#include <poppack.h>
diff --git a/modules/service/app-db/CMakeLists.txt b/modules/service/app-db/CMakeLists.txt
index f985c4768b..07e2032d56 100644
--- a/modules/service/app-db/CMakeLists.txt
+++ b/modules/service/app-db/CMakeLists.txt
@@ -1,12 +1,13 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv_app_db)
   
-set(DAP_CHAIN_NET_SRV_APP_DB_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRV_APP_DB_SRCS *.c)
 
-set(DAP_CHAIN_NET_SRV_APP_DB_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_APP_DB_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_APP_DB_SRCS} ${DAP_CHAIN_NET_SRV_APP_DB_HEADERS})
 
 target_link_libraries(dap_chain_net_srv_app_db dap_chain_net_srv dap_chain_net_srv_app)
 target_include_directories(dap_chain_net_srv_app_db INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
diff --git a/modules/service/app/CMakeLists.txt b/modules/service/app/CMakeLists.txt
index 9e3e5248f7..1c01d2e7eb 100644
--- a/modules/service/app/CMakeLists.txt
+++ b/modules/service/app/CMakeLists.txt
@@ -1,12 +1,12 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv_app)
   
-set(DAP_CHAIN_NET_SRV_APP_SRCS  *.c)
+file(GLOB DAP_CHAIN_NET_SRV_APP_SRCS  *.c)
 
-set(DAP_CHAIN_NET_SRV_APP_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_APP_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_APP_SRCS} ${DAP_CHAIN_NET_SRV_APP_HEADERS})
 
 target_link_libraries(dap_chain_net_srv_app dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_net dap_chain_net_srv)
 target_include_directories(dap_chain_net_srv_app INTERFACE .)
-
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/service/datum/CMakeLists.txt b/modules/service/datum/CMakeLists.txt
index fdd050dd60..63a0dcfb2e 100644
--- a/modules/service/datum/CMakeLists.txt
+++ b/modules/service/datum/CMakeLists.txt
@@ -1,12 +1,13 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv_datum)
   
-set(DAP_CHAIN_NET_SRV_DATUM_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRV_DATUM_SRCS *.c)
 
-set(DAP_CHAIN_NET_SRV_DATUM_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_DATUM_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_DATUM_SRCS} ${DAP_CHAIN_NET_SRV_DATUM_HEADERS})
 
 target_link_libraries(dap_chain_net_srv_datum dap_chain_net_srv)
 target_include_directories(dap_chain_net_srv_datum INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
diff --git a/modules/service/mining-pool/CMakeLists.txt b/modules/service/mining-pool/CMakeLists.txt
index 275db11120..449cc79415 100644
--- a/modules/service/mining-pool/CMakeLists.txt
+++ b/modules/service/mining-pool/CMakeLists.txt
@@ -1,11 +1,12 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv_datum_pool)
   
-set(DAP_CHAIN_NET_SRV_DATUM_POOL_SRCS *.c)
-set(DAP_CHAIN_NET_SRV_DATUM_POOL_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_DATUM_POOL_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRV_DATUM_POOL_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_DATUM_POOL_SRCS} ${DAP_CHAIN_NET_SRV_DATUM_POOL_HEADERS})
 
 target_link_libraries(dap_chain_net_srv_datum_pool dap_chain_net_srv dap_chain_net_srv_datum)
 target_include_directories(dap_chain_net_srv_datum_pool INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
diff --git a/modules/service/vpn/CMakeLists.txt b/modules/service/vpn/CMakeLists.txt
index 3f295e39c7..b5aff03684 100644
--- a/modules/service/vpn/CMakeLists.txt
+++ b/modules/service/vpn/CMakeLists.txt
@@ -1,9 +1,9 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_net_srv_vpn)
   
-set(DAP_CHAIN_NET_SRV_VPN_SRCS *.c)
+file(GLOB DAP_CHAIN_NET_SRV_VPN_SRCS *.c)
 
-set(DAP_CHAIN_NET_SRV_VPN_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_NET_SRV_VPN_HEADERS include/*.h)
 
 if(WIN32)
   include_directories(../../../os/win32/)
@@ -15,7 +15,8 @@ endif()
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRV_VPN_SRCS} ${DAP_CHAIN_NET_SRV_VPN_HEADERS})
 
-target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_net dap_chain_net_srv)
+target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_stream dap_chain dap_chain_crypto dap_chain_net dap_chain_net_srv)
 
 target_include_directories(${PROJECT_NAME} INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
 
diff --git a/modules/type/block/CMakeLists.txt b/modules/type/block/CMakeLists.txt
index 054678eae7..9ad9afa0a1 100644
--- a/modules/type/block/CMakeLists.txt
+++ b/modules/type/block/CMakeLists.txt
@@ -1,12 +1,12 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_block)
   
-set(DAP_CHAIN_BLOCK_SRCS *.c)
-set(DAP_CHAIN_BLOCK_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_BLOCK_SRCS *.c)
+file(GLOB DAP_CHAIN_BLOCK_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_BLOCK_SRCS} ${DAP_CHAIN_BLOCK_HEADERS})
 
 
 target_link_libraries(dap_chain_cs_block dap_core dap_crypto dap_chain dap_chain_crypto )
 target_include_directories(dap_chain_cs_block INTERFACE .)
-
+target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/modules/type/dag/CMakeLists.txt b/modules/type/dag/CMakeLists.txt
index 6bc479d756..9682f2ec10 100644
--- a/modules/type/dag/CMakeLists.txt
+++ b/modules/type/dag/CMakeLists.txt
@@ -1,10 +1,10 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_cs_dag)
   
-set(DAP_CHAIN_DAG_SRCS *.c)
-set(DAP_CHAIN_DAG_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_DAG_SRCS *.c)
+file(GLOB DAP_CHAIN_DAG_HEADERS include/*.h)
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_DAG_SRCS} ${DAP_CHAIN_DAG_HEADERS})
 
 target_link_libraries(dap_chain_cs_dag dap_core dap_crypto dap_chain dap_chain_net dap_chain_crypto dap_chain_global_db)
 target_include_directories(dap_chain_cs_dag INTERFACE .)
-
+target_include_directories(${PROJECT_NAME} PUBLIC include)
\ No newline at end of file
diff --git a/modules/wallet/CMakeLists.txt b/modules/wallet/CMakeLists.txt
index 5ca6539127..534f7e44fc 100644
--- a/modules/wallet/CMakeLists.txt
+++ b/modules/wallet/CMakeLists.txt
@@ -1,11 +1,12 @@
 cmake_minimum_required(VERSION 2.8)
 project (dap_chain_wallet)
   
-set(DAP_CHAIN_WALLET_SRCS *.c)
-set(DAP_CHAIN_WALLET_HEADERS include/*.h)
+file(GLOB DAP_CHAIN_WALLET_SRCS *.c)
+file(GLOB DAP_CHAIN_WALLET_HEADERS include/*.h)
 
 add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_WALLET_SRCS} ${DAP_CHAIN_WALLET_HEADERS})
 
 target_link_libraries(dap_chain_wallet dap_core dap_crypto dap_chain dap_chain_crypto dap_chain_net)
 
 target_include_directories(dap_chain_wallet INTERFACE .)
+target_include_directories(${PROJECT_NAME} PUBLIC include)
-- 
GitLab