Browse Source

use ntop instead

pull/11/head
Max Lv 11 years ago
parent
commit
91d86cd656
6 changed files with 46 additions and 88 deletions
  1. 5
      configure.ac
  2. 41
      m4/inet_aton.m4
  3. 41
      m4/inet_ntoa.m4
  4. 41
      m4/inet_ntop.m4
  5. 2
      src/local.c
  6. 4
      src/server.c

5
configure.ac

@ -22,9 +22,8 @@ m4_include([libev/libev.m4])
dnl Checks for openssl
ss_OPENSSL
dnl Checks for inet_aton and inet_ntoa
ss_FUNC_INET_ATON
ss_FUNC_INET_NTOA
dnl Checks for inet_ntop
ss_FUNC_INET_NTOP
dnl Checks for host.
AC_MSG_CHECKING(for what kind of host)

41
m4/inet_aton.m4

@ -1,41 +0,0 @@
# inet_aton.m4 serial 19
dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([ss_FUNC_INET_ATON],
[
AC_REQUIRE([AC_C_RESTRICT])
dnl Most platforms that provide inet_aton define it in libc.
dnl Solaris 8..10 provide inet_aton in libnsl instead.
dnl Solaris 2.6..7 provide inet_aton in libresolv instead.
HAVE_INET_ATON=1
INET_ATON_LIB=
ss_save_LIBS=$LIBS
AC_SEARCH_LIBS([inet_aton], [nsl resolv], [],
[AC_CHECK_FUNCS([inet_aton])
if test $ac_cv_func_inet_aton = no; then
HAVE_INET_ATON=0
fi
])
LIBS=$ss_save_LIBS
if test "$ac_cv_search_inet_aton" != "no" \
&& test "$ac_cv_search_inet_aton" != "none required"; then
INET_ATON_LIB="$ac_cv_search_inet_aton"
fi
AC_CHECK_HEADERS_ONCE([netdb.h])
AC_CHECK_DECLS([inet_aton],,,
[[#include <arpa/inet.h>
#if HAVE_NETDB_H
# include <netdb.h>
#endif
]])
if test $ac_cv_have_decl_inet_aton = no; then
HAVE_DECL_INET_ATON=0
fi
AC_SUBST([INET_ATON_LIB])
])

41
m4/inet_ntoa.m4

@ -1,41 +0,0 @@
# inet_ntoa.m4 serial 19
dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([ss_FUNC_INET_NTOA],
[
AC_REQUIRE([AC_C_RESTRICT])
dnl Most platforms that provide inet_ntoa define it in libc.
dnl Solaris 8..10 provide inet_ntoa in libnsl instead.
dnl Solaris 2.6..7 provide inet_ntoa in libresolv instead.
HAVE_INET_NTOA=1
INET_NTOA_LIB=
ss_save_LIBS=$LIBS
AC_SEARCH_LIBS([inet_ntoa], [nsl resolv], [],
[AC_CHECK_FUNCS([inet_ntoa])
if test $ac_cv_func_inet_ntoa = no; then
HAVE_INET_NTOA=0
fi
])
LIBS=$ss_save_LIBS
if test "$ac_cv_search_inet_ntoa" != "no" \
&& test "$ac_cv_search_inet_ntoa" != "none required"; then
INET_NTOA_LIB="$ac_cv_search_inet_ntoa"
fi
AC_CHECK_HEADERS_ONCE([netdb.h])
AC_CHECK_DECLS([inet_ntoa],,,
[[#include <arpa/inet.h>
#if HAVE_NETDB_H
# include <netdb.h>
#endif
]])
if test $ac_cv_have_decl_inet_ntoa = no; then
HAVE_DECL_INET_NTOA=0
fi
AC_SUBST([INET_NTOA_LIB])
])

41
m4/inet_ntop.m4

@ -0,0 +1,41 @@
# inet_ntop.m4 serial 19
dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([ss_FUNC_INET_NTOP],
[
AC_REQUIRE([AC_C_RESTRICT])
dnl Most platforms that provide inet_ntop define it in libc.
dnl Solaris 8..10 provide inet_ntop in libnsl instead.
dnl Solaris 2.6..7 provide inet_ntop in libresolv instead.
HAVE_INET_NTOP=1
INET_NTOP_LIB=
ss_save_LIBS=$LIBS
AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [],
[AC_CHECK_FUNCS([inet_ntop])
if test $ac_cv_func_inet_ntop = no; then
HAVE_INET_NTOP=0
fi
])
LIBS=$ss_save_LIBS
if test "$ac_cv_search_inet_ntop" != "no" \
&& test "$ac_cv_search_inet_ntop" != "none required"; then
INET_NTOP_LIB="$ac_cv_search_inet_ntop"
fi
AC_CHECK_HEADERS_ONCE([netdb.h])
AC_CHECK_DECLS([inet_ntop],,,
[[#include <arpa/inet.h>
#if HAVE_NETDB_H
# include <netdb.h>
#endif
]])
if test $ac_cv_have_decl_inet_ntop = no; then
HAVE_DECL_INET_NTOP=0
fi
AC_SUBST([INET_NTOP_LIB])
])

2
src/local.c

@ -240,7 +240,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
response.atyp = 1;
struct in_addr sin_addr;
inet_aton("0.0.0.0", &sin_addr);
memset(&sin_addr, 0, sizeof(struct in_addr));
memcpy(server->buf, &response, sizeof(struct socks5_response));
memset(server->buf + sizeof(struct socks5_response), 0, sizeof(struct in_addr) + sizeof(uint16_t));

4
src/server.c

@ -220,8 +220,8 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
// IP V4
size_t in_addr_len = sizeof(struct in_addr);
if (r > in_addr_len) {
char *a = inet_ntoa(*(struct in_addr*)(server->buf + offset));
memcpy(host, a, strlen(a));
inet_ntop(AF_INET, (void *)server->buf[offset],
host, in_addr_len);
offset += in_addr_len;
}

Loading…
Cancel
Save