Skip to content

Commit

Permalink
Added IANA support:
Browse files Browse the repository at this point in the history
Handle IANA's "IPv4 Address Space Registry" and the
"IPv6 Global Unicast Address Assignments".

With a '[IANA] enable = 1' in the 'wsock-trace' config file,
print informtion on the network block in all Winsock functions
handling IPv4 or IPv6 addresses.
Like this in 'recvfrom()' :

  * 0.189 sec: src/lib/ares_process.c(132) (processfds+1945):
    recvfrom (688, 0x00EFE4B4, 4097, 0, 1.1.1.1:53) --> 59 bytes.
    0000: 4F 85 81 80 00 01 00 02 00 00 00 00 03 77 77 77  OàüÇ.........www
    0010: 02 76 67 02 6E 6F 00 00 01 00 01 C0 0C 00 01 00  .vg.no.....+....
    0020: 01 00 00 00 3D 00 04 C3 58 37 10 C0 0C 00 01 00  ....=..+X7.+....
    0030: 01 00 00 00 3D 00 04 C3 58 36 10                 ....=..+X6.
    geo-IP: US - United States, Los Angeles/California
    IANA:   001/8, APNIC, 2010-01, whois.apnic.net, https://rdap.apnic.net/, ALLOCATED

Or for IPv6 in 'getnameinfo()':
  * 0.422 sec: test.c(337) (test_getnameinfo+845):
    getnameinfo ([2a00:1450:4010:c07::63]:80, ..., NI_DGRAM) --> No error.
    name: lf-in-x63.1e100.net, serv: NULL
    geo-IP: FI - Finland, Lappeenranta/Etela-Karjala
    IANA:   2a00::/12, RIPE NCC, 2006-10-03, whois.ripe.net, https://rdap.db.ripe.net/, ALLOCATED
  • Loading branch information
gvanem committed Oct 3, 2020
1 parent fc003a8 commit 9d245ff
Show file tree
Hide file tree
Showing 15 changed files with 467 additions and 231 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ There is currently no `install.bat` file for Wsock-trace. So you should copy the
drop.txt
edrop.txt
dropv6.txt
ipv4-address-space.csv
ipv6-unicast-address-assignments.csv
```

These environment variables are on the form:
Expand Down
122 changes: 63 additions & 59 deletions appveyor-script.bat
Original file line number Diff line number Diff line change
Expand Up @@ -17,65 +17,69 @@ exit /b 1
:: The "CPU" and "BUILDER" agnostic init-stage.
::
echo Generating %CD%\wsock_trace.appveyor...
echo # > wsock_trace.appveyor
echo # This file was generated from %0. >> wsock_trace.appveyor
echo # >> wsock_trace.appveyor
echo [core] >> wsock_trace.appveyor
echo trace_level = %%WSOCK_TRACE_LEVEL%% >> wsock_trace.appveyor
echo trace_indent = 2 >> wsock_trace.appveyor
echo trace_caller = 1 >> wsock_trace.appveyor
echo trace_report = %%WSOCK_TRACE_LEVEL%% >> wsock_trace.appveyor
echo trace_time = relative >> wsock_trace.appveyor
echo trace_max_len = %%COLUMNS%% >> wsock_trace.appveyor
echo callee_level = 1 >> wsock_trace.appveyor
echo cpp_demangle = 1 >> wsock_trace.appveyor
echo short_errors = 1 >> wsock_trace.appveyor
echo use_full_path = 1 >> wsock_trace.appveyor
echo use_toolhlp32 = 1 >> wsock_trace.appveyor
echo dump_modules = 0 >> wsock_trace.appveyor
echo dump_select = 1 >> wsock_trace.appveyor
echo dump_hostent = 1 >> wsock_trace.appveyor
echo dump_protoent = 1 >> wsock_trace.appveyor
echo dump_servent = 1 >> wsock_trace.appveyor
echo dump_nameinfo = 1 >> wsock_trace.appveyor
echo dump_wsaprotocol_info = 1 >> wsock_trace.appveyor
echo dump_wsanetwork_events = 1 >> wsock_trace.appveyor
echo dump_data = 1 >> wsock_trace.appveyor
echo max_data = 5000 >> wsock_trace.appveyor
echo max_displacement = 1000 >> wsock_trace.appveyor
echo exclude = htons,htonl,inet_addr >> wsock_trace.appveyor
echo hosts_file = %CD%\appveyor-hosts >> wsock_trace.appveyor
echo use_winhttp = 0 >> wsock_trace.appveyor
echo [geoip] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo use_generated = 0 >> wsock_trace.appveyor
echo max_days = 10 >> wsock_trace.appveyor
echo geoip4_file = %CD%\geoip >> wsock_trace.appveyor
echo geoip6_file = %CD%\geoip6 >> wsock_trace.appveyor
echo ip2location_bin_file = %CD%\IP46-COUNTRY.BIN >> wsock_trace.appveyor
echo [idna] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo [lua] >> wsock_trace.appveyor
echo enable = %%USE_LUA%% >> wsock_trace.appveyor
echo trace_level = 1 >> wsock_trace.appveyor
echo lua_init = %CD%\src\wsock_trace_init.lua >> wsock_trace.appveyor
echo lua_exit = %CD%\src\wsock_trace_exit.lua >> wsock_trace.appveyor
echo [dnsbl] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo test = %%TEST_DNSBL%% >> wsock_trace.appveyor
echo max_days = 1 >> wsock_trace.appveyor
echo drop_file = %CD%\drop.txt >> wsock_trace.appveyor
echo edrop_file = %CD%\edrop.txt >> wsock_trace.appveyor
echo dropv6_file = %CD%\dropv6.txt >> wsock_trace.appveyor
echo drop_url = http://www.spamhaus.org/drop/drop.txt >> wsock_trace.appveyor
echo edrop_url = http://www.spamhaus.org/drop/edrop.txt >> wsock_trace.appveyor
echo dropv6_url = http://www.spamhaus.org/drop/dropv6.txt >> wsock_trace.appveyor
echo [firewall] >> wsock_trace.appveyor
echo enable = 0 >> wsock_trace.appveyor
echo show_ipv4 = 1 >> wsock_trace.appveyor
echo show_ipv6 = 0 >> wsock_trace.appveyor
echo show_all = 0 >> wsock_trace.appveyor
echo api_level = 3 >> wsock_trace.appveyor
echo # > wsock_trace.appveyor
echo # This file was generated from %0. >> wsock_trace.appveyor
echo # >> wsock_trace.appveyor
echo [core] >> wsock_trace.appveyor
echo trace_level = %%WSOCK_TRACE_LEVEL%% >> wsock_trace.appveyor
echo trace_indent = 2 >> wsock_trace.appveyor
echo trace_caller = 1 >> wsock_trace.appveyor
echo trace_report = %%WSOCK_TRACE_LEVEL%% >> wsock_trace.appveyor
echo trace_time = relative >> wsock_trace.appveyor
echo trace_max_len = %%COLUMNS%% >> wsock_trace.appveyor
echo callee_level = 1 >> wsock_trace.appveyor
echo cpp_demangle = 1 >> wsock_trace.appveyor
echo short_errors = 1 >> wsock_trace.appveyor
echo use_full_path = 1 >> wsock_trace.appveyor
echo use_toolhlp32 = 1 >> wsock_trace.appveyor
echo dump_modules = 0 >> wsock_trace.appveyor
echo dump_select = 1 >> wsock_trace.appveyor
echo dump_hostent = 1 >> wsock_trace.appveyor
echo dump_protoent = 1 >> wsock_trace.appveyor
echo dump_servent = 1 >> wsock_trace.appveyor
echo dump_nameinfo = 1 >> wsock_trace.appveyor
echo dump_wsaprotocol_info = 1 >> wsock_trace.appveyor
echo dump_wsanetwork_events = 1 >> wsock_trace.appveyor
echo dump_data = 1 >> wsock_trace.appveyor
echo max_data = 5000 >> wsock_trace.appveyor
echo max_displacement = 1000 >> wsock_trace.appveyor
echo exclude = htons,htonl,inet_addr >> wsock_trace.appveyor
echo hosts_file = %CD%\appveyor-hosts >> wsock_trace.appveyor
echo use_winhttp = 0 >> wsock_trace.appveyor
echo [geoip] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo use_generated = 0 >> wsock_trace.appveyor
echo max_days = 10 >> wsock_trace.appveyor
echo geoip4_file = %CD%\geoip >> wsock_trace.appveyor
echo geoip6_file = %CD%\geoip6 >> wsock_trace.appveyor
echo ip2location_bin_file = %CD%\IP46-COUNTRY.BIN >> wsock_trace.appveyor
echo [iana] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo ip4_file = %CD%\ipv4-address-space.csv >> wsock_trace.appveyor
echo ip6_file = %CD%\ipv6-address-space.csv >> wsock_trace.appveyor
echo [idna] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo [lua] >> wsock_trace.appveyor
echo enable = %%USE_LUA%% >> wsock_trace.appveyor
echo trace_level = 1 >> wsock_trace.appveyor
echo lua_init = %CD%\src\wsock_trace_init.lua >> wsock_trace.appveyor
echo lua_exit = %CD%\src\wsock_trace_exit.lua >> wsock_trace.appveyor
echo [dnsbl] >> wsock_trace.appveyor
echo enable = 1 >> wsock_trace.appveyor
echo test = %%TEST_DNSBL%% >> wsock_trace.appveyor
echo max_days = 1 >> wsock_trace.appveyor
echo drop_file = %CD%\drop.txt >> wsock_trace.appveyor
echo edrop_file = %CD%\edrop.txt >> wsock_trace.appveyor
echo dropv6_file = %CD%\dropv6.txt >> wsock_trace.appveyor
echo drop_url = http://www.spamhaus.org/drop/drop.txt >> wsock_trace.appveyor
echo edrop_url = http://www.spamhaus.org/drop/edrop.txt >> wsock_trace.appveyor
echo dropv6_url = http://www.spamhaus.org/drop/dropv6.txt >> wsock_trace.appveyor
echo [firewall] >> wsock_trace.appveyor
echo enable = 0 >> wsock_trace.appveyor
echo show_ipv4 = 1 >> wsock_trace.appveyor
echo show_ipv6 = 0 >> wsock_trace.appveyor
echo show_all = 0 >> wsock_trace.appveyor
echo api_level = 3 >> wsock_trace.appveyor

::
:: Windows-Defender thinks generating a 'hosts' file is suspicious.
Expand Down
47 changes: 25 additions & 22 deletions ipv4-address-space.csv
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Prefix,Designation,Date,WHOIS,RDAP,Status [1],Note
038/8,"PSINet, Inc.",1994-09,whois.arin.net, "https://rdap.arin.net/registry http://rdap.arin.net/registry", LEGACY,
000/8,IANA - Local Identification, 1981-09,,,RESERVED,[2]
000/8,IANA - Local Identification,1981-09,,,RESERVED,[2]
001/8,APNIC,2010-01,whois.apnic.net,https://rdap.apnic.net/,ALLOCATED,
002/8,RIPE NCC,2009-09,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
003/8, Administered by ARIN, 1994-05, whois.arin.net, "https://rdap.arin.net/registry http://rdap.arin.net/registry",LEGACY,
004/8, Administered by ARIN,1992-12,whois.arin.net,"https://rdap.arin.net/registry http://rdap.arin.net/registry", LEGACY,
003/8,Administered by ARIN,1994-05,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",LEGACY,
004/8,Administered by ARIN,1992-12,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",LEGACY,
005/8,RIPE NCC,2010-11,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
006/8,Army Information Systems Center,1994-02,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",LEGACY,
Expand Down Expand Up @@ -63,6 +64,8 @@ http://rdap.arin.net/registry",LEGACY,
http://rdap.arin.net/registry",LEGACY,
036/8,APNIC,2010-10,whois.apnic.net,https://rdap.apnic.net/,ALLOCATED,
037/8,RIPE NCC,2010-11,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
038/8,"PSINet, Inc.",1994-09,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",LEGACY,
039/8,APNIC,2011-01,whois.apnic.net,https://rdap.apnic.net/,ALLOCATED,
040/8,Administered by ARIN,1994-06,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",LEGACY,
Expand Down Expand Up @@ -126,24 +129,6 @@ http://rdap.arin.net/registry",ALLOCATED,
http://rdap.arin.net/registry",ALLOCATED,
076/8,ARIN,2005-06,whois.arin.net,"https://rdap.arin.net/registry
http://rdap.arin.net/registry",ALLOCATED,
238/8,Multicast,1981-09,,,RESERVED,[13]
239/8,Multicast,1981-09,,,RESERVED,[13][15]
240/8,Future use,1981-09,,,RESERVED,[16]
241/8,Future use,1981-09,,,RESERVED,[16]
242/8,Future use,1981-09,,,RESERVED,[16]
243/8,Future use,1981-09,,,RESERVED,[16]
244/8,Future use,1981-09,,,RESERVED,[16]
245/8,Future use,1981-09,,,RESERVED,[16]
246/8,Future use,1981-09,,,RESERVED,[16]
247/8,Future use,1981-09,,,RESERVED,[16]
248/8,Future use,1981-09,,,RESERVED,[16]
249/8,Future use,1981-09,,,RESERVED,[16]
250/8,Future use,1981-09,,,RESERVED,[16]
251/8,Future use,1981-09,,,RESERVED,[16]
252/8,Future use,1981-09,,,RESERVED,[16]
253/8,Future use,1981-09,,,RESERVED,[16]
254/8,Future use,1981-09,,,RESERVED,[16]
255/8,Future use,1981-09,,,RESERVED,[16][17]
077/8,RIPE NCC,2006-08,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
078/8,RIPE NCC,2006-08,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
079/8,RIPE NCC,2006-08,whois.ripe.net,https://rdap.db.ripe.net/,ALLOCATED,
Expand Down Expand Up @@ -369,3 +354,21 @@ http://rdap.arin.net/registry",ALLOCATED,
235/8,Multicast,1981-09,,,RESERVED,[13]
236/8,Multicast,1981-09,,,RESERVED,[13]
237/8,Multicast,1981-09,,,RESERVED,[13]
238/8,Multicast,1981-09,,,RESERVED,[13]
239/8,Multicast,1981-09,,,RESERVED,[13][15]
240/8,Future use,1981-09,,,RESERVED,[16]
241/8,Future use,1981-09,,,RESERVED,[16]
242/8,Future use,1981-09,,,RESERVED,[16]
243/8,Future use,1981-09,,,RESERVED,[16]
244/8,Future use,1981-09,,,RESERVED,[16]
245/8,Future use,1981-09,,,RESERVED,[16]
246/8,Future use,1981-09,,,RESERVED,[16]
247/8,Future use,1981-09,,,RESERVED,[16]
248/8,Future use,1981-09,,,RESERVED,[16]
249/8,Future use,1981-09,,,RESERVED,[16]
250/8,Future use,1981-09,,,RESERVED,[16]
251/8,Future use,1981-09,,,RESERVED,[16]
252/8,Future use,1981-09,,,RESERVED,[16]
253/8,Future use,1981-09,,,RESERVED,[16]
254/8,Future use,1981-09,,,RESERVED,[16]
255/8,Future use,1981-09,,,RESERVED,[16][17]
4 changes: 2 additions & 2 deletions src/Makefile.CygWin
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ EX_LIBS += -lole32 -ladvapi32

SOURCES = wsock_trace.c wsock_trace_lua.c hosts.c idna.c inet_util.c init.c \
common.c cpu.c dnsbl.c dump.c firewall.c geoip.c geoip-gen4.c geoip-gen6.c \
in_addr.c ip2loc.c overlap.c smartlist.c stkwalk.c bfd_gcc.c
iana.c in_addr.c ip2loc.c overlap.c smartlist.c stkwalk.c bfd_gcc.c

OBJECTS = $(addprefix $(OBJ_DIR)/, $(SOURCES:.c=.o) wsock_trace.res)
NON_EXPORT_OBJ = $(OBJ_DIR)/non-export.o
Expand Down Expand Up @@ -107,7 +107,7 @@ idna.exe: idna.c common.c smartlist.c $(WSOCK_TRACE_A)
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -DTEST_IDNA $^ -lole32 > idna.map
@echo

firewall_test.exe: common.c dnsbl.c firewall.c geoip.c geoip-gen4.c geoip-gen6.c idna.c in_addr.c inet_util.c init.c ip2loc.c smartlist.c
firewall_test.exe: common.c dnsbl.c firewall.c geoip.c geoip-gen4.c geoip-gen6.c iana.c idna.c in_addr.c inet_util.c init.c ip2loc.c smartlist.c
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -DTEST_FIREWALL -DTEST_GEOIP $^ -lws2_32 -lole32 -ladvapi32 -lwinmm > firewall_test.map
@echo

Expand Down
16 changes: 10 additions & 6 deletions src/Makefile.MingW
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ else
X_SUFFIX =
endif

CFLAGS = -Wall -m$(BITS) -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -Wno-unused-variable -Wno-unused-function
LDFLAGS = -m$(BITS) -Wl,--print-map,--sort-common -t
RCFLAGS = -O COFF -DDEBUG=$(USE_CRT_DEBUG) -D__MINGW32__ -DBITNESS=$(BITS)
CFLAGS = -Wall -m$(BITS) -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -Wno-unused-variable -Wno-unused-function
LDFLAGS = -m$(BITS) -Wl,--print-map,--sort-common -t
RCFLAGS += -O COFF -DDEBUG=$(USE_CRT_DEBUG) -D__MINGW32__ -DBITNESS=$(BITS)

ifeq ($(USE_LUA),1)
CFLAGS += -DUSE_LUA -I$(LUAJIT_ROOT)/src
Expand Down Expand Up @@ -78,13 +78,13 @@ EX_LIBS += -lole32 -ladvapi32

SOURCES = wsock_trace.c wsock_trace_lua.c hosts.c idna.c inet_util.c init.c \
common.c cpu.c dnsbl.c dump.c geoip.c geoip-gen4.c geoip-gen6.c \
overlap.c in_addr.c ip2loc.c smartlist.c stkwalk.c bfd_gcc.c \
overlap.c iana.c in_addr.c ip2loc.c smartlist.c stkwalk.c bfd_gcc.c \
firewall.c

OBJECTS = $(addprefix $(OBJ_DIR)/, $(SOURCES:.c=.o) wsock_trace.res)
NON_EXPORT_OBJ = $(OBJ_DIR)/non-export.o

GEOIP_SRC = geoip.c common.c dnsbl.c idna.c inet_util.c init.c in_addr.c ip2loc.c smartlist.c
GEOIP_SRC = geoip.c common.c dnsbl.c iana.c idna.c inet_util.c init.c in_addr.c ip2loc.c smartlist.c
GEOIP_OBJ = $(GEOIP_SRC:.c=.o)

all: message $(OBJ_DIR) libwsock_trace.a geoip.exe test.exe idna.exe firewall_test.exe
Expand Down Expand Up @@ -122,11 +122,15 @@ test.exe: $(OBJ_DIR)/test.o libwsock_trace.a
$(CC) -o $@ $(LDFLAGS) $^ > test.map
@echo

iana.exe: common.c dnsbl.c geoip.c geoip-null.c iana.c idna.c in_addr.c inet_util.c init.c smartlist.c
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -DTEST_IANA $^ -lws2_32 -lole32 -ladvapi32 > iana.map
@echo

idna.exe: idna.c common.c smartlist.c libwsock_trace.a
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -DTEST_IDNA $^ -lole32 > idna.map
@echo

firewall_test.exe: common.c dnsbl.c firewall.c geoip.c geoip-gen4.c geoip-gen6.c idna.c in_addr.c inet_util.c init.c ip2loc.c smartlist.c
firewall_test.exe: common.c dnsbl.c firewall.c geoip.c geoip-gen4.c geoip-gen6.c iana.c idna.c in_addr.c inet_util.c init.c ip2loc.c smartlist.c
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -DTEST_FIREWALL -DTEST_GEOIP $^ -lws2_32 -lole32 -ladvapi32 -lwinmm > firewall_test.map
@echo

Expand Down
Loading

0 comments on commit 9d245ff

Please sign in to comment.