diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8f1bfc9 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ + +all: + make -C src + +clean: + make -C src clean + +ultra_clean: + make -C src ultra_clean diff --git a/data/Makefile b/data/Makefile new file mode 100644 index 0000000..476364a --- /dev/null +++ b/data/Makefile @@ -0,0 +1,31 @@ +IP_DATA = ../src/ip_data.c +PROVIDERS = afrinic arin apnic lacnic ripencc +DEST = prefix_res_ipv4 +MD5 = $(addsuffix .md5,$(PROVIDERS)) + +all: clean_md5 $(MD5) $(IP_DATA) + +clean_md5: + @rm -f $(MD5) + +$(PROVIDERS): + @$(foreach provider, $(PROVIDERS),\ + wget "ftp://ftp.ripe.net/pub/stats/${provider}/delegated-${provider}-extended-latest" -O $(provider);) + +%.md5:% + @wget -q "ftp://ftp.ripe.net/pub/stats/$(basename $@)/delegated-$(basename $@)-extended-latest.md5" -O $@ + @cat $@ | grep -oP '[0-9a-f]{32}' | tr -d '\n' > $@.tmp + @echo " $(basename $@)" >> $@.tmp + @rm -f $@ + @mv $@.tmp $@ + @md5sum -c $@ || wget "ftp://ftp.ripe.net/pub/stats/$(basename $@)/delegated-$(basename $@)-extended-latest" -O $(basename $@) ; true + +$(DEST): $(PROVIDERS) + @cat $(PROVIDERS) | grep -v asn | grep -v summary | grep -v '#' | grep ipv4 | sort -n -k 4 -t '|' > $(DEST) + +$(IP_DATA): $(DEST) + @echo "Rebuild ip_data.c" + @./build_c_array.py > ../src/ip_data.c + +clean: + rm -f $(PROVIDERS) $(DEST) $(SHA1_FILE) $(MD5) \ No newline at end of file diff --git a/data/get_prefixs.sh b/data/get_prefixs.sh deleted file mode 100755 index 25a1d58..0000000 --- a/data/get_prefixs.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -PROVIDERS="afrinic arin apnic lacnic ripencc" -DEST=prefix_res_ipv4 -SHA1_FILE=prefix_res_ipv4.sha1 - -for provider in $PROVIDERS; do - wget "ftp://ftp.ripe.net/pub/stats/${provider}/delegated-${provider}-extended-latest" -O $provider -done - -cat $PROVIDERS | grep -v asn | grep -v summary | grep -v '#' | grep ipv4 | sort -n -k 4 -t '|' > $DEST - -sha1sum -c $SHA1_FILE && exit - -sha1sum $DEST > $SHA1_FILE - -echo "Rebuild ip_data.c" - -./build_c_array.py > ../src/ip_data.c diff --git a/src/Makefile b/src/Makefile index f3af0f9..6a8efec 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,18 +1,32 @@ +BIN_DIR=../bin SRCS = ip_to_geo.c test.c cmdline.c server.c -TARGET = ip_to_geo -CFLAGS = -Wall -lpthread -ggdb -O0 +TARGET = $(BIN_DIR)/ip_to_geo +CFLAGS = -Wall +LDFLAGS= -lpthread -all: $(TARGET) +ifneq ($(DEBUG),) +CFLAGS += -ggdb -O0 +else +CFLAGS += -O2 +endif + +all: $(BIN_DIR) ip_data.c $(TARGET) + +$(BIN_DIR): + @mkdir $(BIN_DIR) ip_data.c: - ../data/get_prefixs.sh + make -C ../data cmdline.c: cmdline.ggo gengetopt --input $^ $(TARGET): $(SRCS) - gcc $(CFLAGS) $^ -o $@ + gcc $(CFLAGS) $^ $(LDFLAGS) -o $@ clean: rm -f *~ $(TARGET) + +ultra_clean: clean + rm -f ip_data.c diff --git a/src/ip_data.c b/src/ip_data.c index dcf0d10..4cabfdc 100644 --- a/src/ip_data.c +++ b/src/ip_data.c @@ -658907,6 +658907,7 @@ static const ip_level ip__168_0_156_0__168_0_159_255; static const ip_level ip__168_0_160_0__168_0_163_255; static const ip_level ip__168_0_164_0__168_0_167_255; static const ip_level ip__168_0_168_0__168_0_171_255; +static const ip_level ip__168_0_172_0__168_0_175_255; static const ip_level ip__168_0_176_0__168_0_179_255; static const ip_level ip__168_0_180_0__168_0_183_255; static const ip_level ip__168_0_184_0__168_0_187_255; @@ -659298,15 +659299,24 @@ static const ip_level ip__168_0_164_0__168_0_167_255 = { }; static const ip_level ip__168_0_168_0__168_0_171_255 = { .prev = &ip__168_0_164_0__168_0_167_255, - .next = &ip__168_0_176_0__168_0_179_255, + .next = &ip__168_0_172_0__168_0_175_255, .childs = NULL, .start = 168, .end = 171, .average = 0, .code = 190, }; -static const ip_level ip__168_0_176_0__168_0_179_255 = { +static const ip_level ip__168_0_172_0__168_0_175_255 = { .prev = &ip__168_0_168_0__168_0_171_255, + .next = &ip__168_0_176_0__168_0_179_255, + .childs = NULL, + .start = 172, + .end = 175, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_0_176_0__168_0_179_255 = { + .prev = &ip__168_0_172_0__168_0_175_255, .next = &ip__168_0_180_0__168_0_183_255, .childs = NULL, .start = 176, @@ -659535,6 +659545,7 @@ static const ip_level ip__168_90_84_0__168_90_87_255; static const ip_level ip__168_90_88_0__168_90_91_255; static const ip_level ip__168_90_92_0__168_90_95_255; static const ip_level ip__168_90_96_0__168_90_99_255; +static const ip_level ip__168_90_100_0__168_90_103_255; static const ip_level ip__168_90_108_0__168_90_111_255; static const ip_level ip__168_90_112_0__168_90_115_255; static const ip_level ip__168_90_116_0__168_90_119_255; @@ -659770,15 +659781,24 @@ static const ip_level ip__168_90_92_0__168_90_95_255 = { }; static const ip_level ip__168_90_96_0__168_90_99_255 = { .prev = &ip__168_90_92_0__168_90_95_255, - .next = &ip__168_90_108_0__168_90_111_255, + .next = &ip__168_90_100_0__168_90_103_255, .childs = NULL, .start = 96, .end = 99, .average = 0, .code = 206, }; -static const ip_level ip__168_90_108_0__168_90_111_255 = { +static const ip_level ip__168_90_100_0__168_90_103_255 = { .prev = &ip__168_90_96_0__168_90_99_255, + .next = &ip__168_90_108_0__168_90_111_255, + .childs = NULL, + .start = 100, + .end = 103, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_90_108_0__168_90_111_255 = { + .prev = &ip__168_90_100_0__168_90_103_255, .next = &ip__168_90_112_0__168_90_115_255, .childs = NULL, .start = 108, @@ -660113,32 +660133,56 @@ static const ip_level ip__168_118_0_0__168_118_255_255; static const ip_level ip__168_119_0_0__168_119_255_255; static const ip_level ip__168_120_0_0__168_120_255_255; static const ip_level ip__168_121_0_0__168_121_3_255; +static const ip_level ip__168_121_4_0__168_121_7_255; +static const ip_level ip__168_121_8_0__168_121_11_255; static const ip_level ip__168_121_12_0__168_121_15_255; static const ip_level ip__168_121_20_0__168_121_23_255; static const ip_level ip__168_121_24_0__168_121_27_255; +static const ip_level ip__168_121_28_0__168_121_31_255; static const ip_level ip__168_121_32_0__168_121_35_255; static const ip_level ip__168_121_36_0__168_121_39_255; static const ip_level ip__168_121_40_0__168_121_43_255; static const ip_level ip__168_121_44_0__168_121_47_255; static const ip_level ip__168_121_48_0__168_121_51_255; static const ip_level ip__168_121_52_0__168_121_55_255; +static const ip_level ip__168_121_60_0__168_121_63_255; static const ip_level ip__168_121_64_0__168_121_67_255; static const ip_level ip__168_121_68_0__168_121_71_255; static const ip_level ip__168_121_72_0__168_121_75_255; static const ip_level ip__168_121_76_0__168_121_79_255; static const ip_level ip__168_121_84_0__168_121_87_255; +static const ip_level ip__168_121_88_0__168_121_91_255; +static const ip_level ip__168_121_116_0__168_121_119_255; static const ip_level ip__168_121_0_0__168_121_3_255 = { .prev = NULL, - .next = &ip__168_121_12_0__168_121_15_255, + .next = &ip__168_121_4_0__168_121_7_255, .childs = NULL, .start = 0, .end = 3, .average = 0, .code = 190, }; -static const ip_level ip__168_121_12_0__168_121_15_255 = { +static const ip_level ip__168_121_4_0__168_121_7_255 = { .prev = &ip__168_121_0_0__168_121_3_255, + .next = &ip__168_121_8_0__168_121_11_255, + .childs = NULL, + .start = 4, + .end = 7, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_121_8_0__168_121_11_255 = { + .prev = &ip__168_121_4_0__168_121_7_255, + .next = &ip__168_121_12_0__168_121_15_255, + .childs = NULL, + .start = 8, + .end = 11, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_121_12_0__168_121_15_255 = { + .prev = &ip__168_121_8_0__168_121_11_255, .next = &ip__168_121_20_0__168_121_23_255, .childs = NULL, .start = 12, @@ -660157,15 +660201,24 @@ static const ip_level ip__168_121_20_0__168_121_23_255 = { }; static const ip_level ip__168_121_24_0__168_121_27_255 = { .prev = &ip__168_121_20_0__168_121_23_255, - .next = &ip__168_121_32_0__168_121_35_255, + .next = &ip__168_121_28_0__168_121_31_255, .childs = NULL, .start = 24, .end = 27, .average = 0, .code = 190, }; -static const ip_level ip__168_121_32_0__168_121_35_255 = { +static const ip_level ip__168_121_28_0__168_121_31_255 = { .prev = &ip__168_121_24_0__168_121_27_255, + .next = &ip__168_121_32_0__168_121_35_255, + .childs = NULL, + .start = 28, + .end = 31, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_121_32_0__168_121_35_255 = { + .prev = &ip__168_121_28_0__168_121_31_255, .next = &ip__168_121_36_0__168_121_39_255, .childs = NULL, .start = 32, @@ -660211,15 +660264,24 @@ static const ip_level ip__168_121_48_0__168_121_51_255 = { }; static const ip_level ip__168_121_52_0__168_121_55_255 = { .prev = &ip__168_121_48_0__168_121_51_255, - .next = &ip__168_121_64_0__168_121_67_255, + .next = &ip__168_121_60_0__168_121_63_255, .childs = NULL, .start = 52, .end = 55, .average = 0, .code = 190, }; -static const ip_level ip__168_121_64_0__168_121_67_255 = { +static const ip_level ip__168_121_60_0__168_121_63_255 = { .prev = &ip__168_121_52_0__168_121_55_255, + .next = &ip__168_121_64_0__168_121_67_255, + .childs = NULL, + .start = 60, + .end = 63, + .average = 0, + .code = 207, +}; +static const ip_level ip__168_121_64_0__168_121_67_255 = { + .prev = &ip__168_121_60_0__168_121_63_255, .next = &ip__168_121_68_0__168_121_71_255, .childs = NULL, .start = 64, @@ -660256,13 +660318,31 @@ static const ip_level ip__168_121_76_0__168_121_79_255 = { }; static const ip_level ip__168_121_84_0__168_121_87_255 = { .prev = &ip__168_121_76_0__168_121_79_255, - .next = NULL, + .next = &ip__168_121_88_0__168_121_91_255, .childs = NULL, .start = 84, .end = 87, .average = 0, .code = 226, }; +static const ip_level ip__168_121_88_0__168_121_91_255 = { + .prev = &ip__168_121_84_0__168_121_87_255, + .next = &ip__168_121_116_0__168_121_119_255, + .childs = NULL, + .start = 88, + .end = 91, + .average = 0, + .code = 190, +}; +static const ip_level ip__168_121_116_0__168_121_119_255 = { + .prev = &ip__168_121_88_0__168_121_91_255, + .next = NULL, + .childs = NULL, + .start = 116, + .end = 119, + .average = 0, + .code = 84, +}; static const ip_level ip__168_121_0_0__168_121_0_0; static const ip_level ip__168_122_0_0__168_122_255_255; static const ip_level ip__168_123_0_0__168_123_255_255; @@ -816144,6 +816224,15 @@ static const ip_level ip__185_136_88_0__185_136_91_255; static const ip_level ip__185_136_92_0__185_136_95_255; static const ip_level ip__185_136_96_0__185_136_99_255; static const ip_level ip__185_136_100_0__185_136_103_255; +static const ip_level ip__185_136_104_0__185_136_107_255; +static const ip_level ip__185_136_108_0__185_136_111_255; +static const ip_level ip__185_136_112_0__185_136_115_255; +static const ip_level ip__185_136_116_0__185_136_119_255; +static const ip_level ip__185_136_120_0__185_136_123_255; +static const ip_level ip__185_136_124_0__185_136_127_255; +static const ip_level ip__185_136_128_0__185_136_131_255; +static const ip_level ip__185_136_132_0__185_136_135_255; +static const ip_level ip__185_136_136_0__185_136_139_255; static const ip_level ip__185_136_0_0__185_136_3_255 = { .prev = NULL, @@ -816372,13 +816461,94 @@ static const ip_level ip__185_136_96_0__185_136_99_255 = { }; static const ip_level ip__185_136_100_0__185_136_103_255 = { .prev = &ip__185_136_96_0__185_136_99_255, - .next = NULL, + .next = &ip__185_136_104_0__185_136_107_255, .childs = NULL, .start = 100, .end = 103, .average = 0, .code = 21, }; +static const ip_level ip__185_136_104_0__185_136_107_255 = { + .prev = &ip__185_136_100_0__185_136_103_255, + .next = &ip__185_136_108_0__185_136_111_255, + .childs = NULL, + .start = 104, + .end = 107, + .average = 0, + .code = 18, +}; +static const ip_level ip__185_136_108_0__185_136_111_255 = { + .prev = &ip__185_136_104_0__185_136_107_255, + .next = &ip__185_136_112_0__185_136_115_255, + .childs = NULL, + .start = 108, + .end = 111, + .average = 0, + .code = 39, +}; +static const ip_level ip__185_136_112_0__185_136_115_255 = { + .prev = &ip__185_136_108_0__185_136_111_255, + .next = &ip__185_136_116_0__185_136_119_255, + .childs = NULL, + .start = 112, + .end = 115, + .average = 0, + .code = 13, +}; +static const ip_level ip__185_136_116_0__185_136_119_255 = { + .prev = &ip__185_136_112_0__185_136_115_255, + .next = &ip__185_136_120_0__185_136_123_255, + .childs = NULL, + .start = 116, + .end = 119, + .average = 0, + .code = 14, +}; +static const ip_level ip__185_136_120_0__185_136_123_255 = { + .prev = &ip__185_136_116_0__185_136_119_255, + .next = &ip__185_136_124_0__185_136_127_255, + .childs = NULL, + .start = 120, + .end = 123, + .average = 0, + .code = 37, +}; +static const ip_level ip__185_136_124_0__185_136_127_255 = { + .prev = &ip__185_136_120_0__185_136_123_255, + .next = &ip__185_136_128_0__185_136_131_255, + .childs = NULL, + .start = 124, + .end = 127, + .average = 0, + .code = 22, +}; +static const ip_level ip__185_136_128_0__185_136_131_255 = { + .prev = &ip__185_136_124_0__185_136_127_255, + .next = &ip__185_136_132_0__185_136_135_255, + .childs = NULL, + .start = 128, + .end = 131, + .average = 0, + .code = 24, +}; +static const ip_level ip__185_136_132_0__185_136_135_255 = { + .prev = &ip__185_136_128_0__185_136_131_255, + .next = &ip__185_136_136_0__185_136_139_255, + .childs = NULL, + .start = 132, + .end = 135, + .average = 0, + .code = 63, +}; +static const ip_level ip__185_136_136_0__185_136_139_255 = { + .prev = &ip__185_136_132_0__185_136_135_255, + .next = NULL, + .childs = NULL, + .start = 136, + .end = 139, + .average = 0, + .code = 22, +}; static const ip_level ip__185_136_0_0__185_136_0_0; static const ip_level ip__185_1_0_0__185_1_0_0 = { @@ -833564,7 +833734,8 @@ static const ip_level ip__188_114_96_0__188_114_111_255; static const ip_level ip__188_114_112_0__188_114_119_255; static const ip_level ip__188_114_120_0__188_114_127_255; static const ip_level ip__188_114_128_0__188_114_191_255; -static const ip_level ip__188_114_192_0__188_114_207_255; +static const ip_level ip__188_114_192_0__188_114_199_255; +static const ip_level ip__188_114_200_0__188_114_207_255; static const ip_level ip__188_114_208_0__188_114_223_255; static const ip_level ip__188_114_224_0__188_114_255_255; @@ -833615,24 +833786,33 @@ static const ip_level ip__188_114_120_0__188_114_127_255 = { }; static const ip_level ip__188_114_128_0__188_114_191_255 = { .prev = &ip__188_114_120_0__188_114_127_255, - .next = &ip__188_114_192_0__188_114_207_255, + .next = &ip__188_114_192_0__188_114_199_255, .childs = NULL, .start = 128, .end = 191, .average = 0, .code = 14, }; -static const ip_level ip__188_114_192_0__188_114_207_255 = { +static const ip_level ip__188_114_192_0__188_114_199_255 = { .prev = &ip__188_114_128_0__188_114_191_255, - .next = &ip__188_114_208_0__188_114_223_255, + .next = &ip__188_114_200_0__188_114_207_255, .childs = NULL, .start = 192, + .end = 199, + .average = 0, + .code = 26, +}; +static const ip_level ip__188_114_200_0__188_114_207_255 = { + .prev = &ip__188_114_192_0__188_114_199_255, + .next = &ip__188_114_208_0__188_114_223_255, + .childs = NULL, + .start = 200, .end = 207, .average = 0, .code = 26, }; static const ip_level ip__188_114_208_0__188_114_223_255 = { - .prev = &ip__188_114_192_0__188_114_207_255, + .prev = &ip__188_114_200_0__188_114_207_255, .next = &ip__188_114_224_0__188_114_255_255, .childs = NULL, .start = 208,