diff options
-rw-r--r-- | src/common/util.c | 12 | ||||
-rw-r--r-- | src/common/util.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/common/util.c b/src/common/util.c index 98930a639..c00406338 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -686,6 +686,18 @@ try_next_line: return 1; } +int is_internal_IP(uint32_t ip) { + + if (((ip & 0xff000000) == 0xa0000000) || /* 10/8 */ + ((ip & 0xff000000) == 0x00000000) || /* 0/8 */ + ((ip & 0xff000000) == 0x7f000000) || /* 127/8 */ + ((ip & 0xffff0000) == 0xa9fe0000) || /* 169.254/16 */ + ((ip & 0xfff00000) == 0xac100000) || /* 172.16/12 */ + ((ip & 0xffff0000) == 0xc0a80000)) /* 192.168/16 */ + return 1; + return 0; +} + static char uname_result[256]; static int uname_result_is_set = 0; diff --git a/src/common/util.h b/src/common/util.h index 9f4654b92..63d55c6fe 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -84,6 +84,8 @@ void spawn_exit(); int tor_socketpair(int family, int type, int protocol, int fd[2]); +int is_internal_IP(uint32_t ip); + const char *get_uname(void); /* Start putting the process into daemon mode: fork and drop all resources |