From 8eb0b9b1189dfb090465e9b1af001797c7b741bf Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sat, 10 Aug 2013 14:47:37 +0800 Subject: [PATCH] build pass --- configure.ac | 2 + src/Makefile.am | 11 +- src/Makefile.in | 507 +++++++++++++++++++++++++++++++++++++++--------- src/cache.c | 1 - src/cache.h | 3 +- src/encrypt.c | 9 +- src/encrypt.h | 8 +- src/local.c | 153 +++++++-------- src/local.h | 9 +- src/redir.c | 8 +- src/server.c | 6 +- src/udprelay.c | 107 +++++----- src/udprelay.h | 36 ++-- 13 files changed, 604 insertions(+), 256 deletions(-) diff --git a/configure.ac b/configure.ac index fbcc7757..020698a1 100755 --- a/configure.ac +++ b/configure.ac @@ -15,6 +15,8 @@ AC_PROG_INSTALL AC_PROG_LIBTOOL AC_PROG_LN_S AC_PROG_MAKE_SET +AC_LANG_SOURCE +AM_PROG_CC_C_O dnl Checks for libev m4_include([libev/libev.m4]) diff --git a/src/Makefile.am b/src/Makefile.am index 8b278776..45df2157 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,17 +10,24 @@ bin_PROGRAMS = ss-local ss-server ss_local_SOURCES = utils.c \ jconf.c \ json.c \ - encrypt.c \ - local.c + encrypt.c \ + udprelay.c \ + cache.c \ + local.c ss_server_SOURCES = utils.c \ jconf.c \ json.c \ encrypt.c \ + udprelay.c \ + cache.c \ server.c ss_local_LDADD = $(SS_COMMON_LIBS) ss_server_LDADD = $(SS_COMMON_LIBS) ss_server_LDADD += $(top_builddir)/libasyncns/libasyncns.la +ss_local_CFLAGS = -DUDPRELAY_LOCAL +ss_server_CFLAGS = -DUDPRELAY_REMOTE + if BUILD_REDIRECTOR bin_PROGRAMS += ss-redir ss_redir_SOURCES = utils.c \ diff --git a/src/Makefile.in b/src/Makefile.in index 14d559dc..1d137fff 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,6 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -37,7 +81,8 @@ host_triplet = @host@ bin_PROGRAMS = ss-local$(EXEEXT) ss-server$(EXEEXT) $(am__EXEEXT_1) @BUILD_REDIRECTOR_TRUE@am__append_1 = ss-redir subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/inet_ntop.m4 $(top_srcdir)/m4/libtool.m4 \ @@ -54,45 +99,103 @@ CONFIG_CLEAN_VPATH_FILES = @BUILD_REDIRECTOR_TRUE@am__EXEEXT_1 = ss-redir$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) -am_ss_local_OBJECTS = utils.$(OBJEXT) jconf.$(OBJEXT) json.$(OBJEXT) \ - encrypt.$(OBJEXT) local.$(OBJEXT) +am_ss_local_OBJECTS = ss_local-utils.$(OBJEXT) \ + ss_local-jconf.$(OBJEXT) ss_local-json.$(OBJEXT) \ + ss_local-encrypt.$(OBJEXT) ss_local-udprelay.$(OBJEXT) \ + ss_local-cache.$(OBJEXT) ss_local-local.$(OBJEXT) ss_local_OBJECTS = $(am_ss_local_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(top_builddir)/libev/libev.la \ $(am__DEPENDENCIES_1) ss_local_DEPENDENCIES = $(am__DEPENDENCIES_2) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +ss_local_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ss_local_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__ss_redir_SOURCES_DIST = utils.c jconf.c json.c encrypt.c redir.c @BUILD_REDIRECTOR_TRUE@am_ss_redir_OBJECTS = utils.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ jconf.$(OBJEXT) json.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ encrypt.$(OBJEXT) redir.$(OBJEXT) ss_redir_OBJECTS = $(am_ss_redir_OBJECTS) @BUILD_REDIRECTOR_TRUE@ss_redir_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_ss_server_OBJECTS = utils.$(OBJEXT) jconf.$(OBJEXT) json.$(OBJEXT) \ - encrypt.$(OBJEXT) server.$(OBJEXT) +am_ss_server_OBJECTS = ss_server-utils.$(OBJEXT) \ + ss_server-jconf.$(OBJEXT) ss_server-json.$(OBJEXT) \ + ss_server-encrypt.$(OBJEXT) ss_server-udprelay.$(OBJEXT) \ + ss_server-cache.$(OBJEXT) ss_server-server.$(OBJEXT) ss_server_OBJECTS = $(am_ss_server_OBJECTS) ss_server_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(top_builddir)/libasyncns/libasyncns.la +ss_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ss_server_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(ss_local_SOURCES) $(ss_redir_SOURCES) $(ss_server_SOURCES) DIST_SOURCES = $(ss_local_SOURCES) $(am__ss_redir_SOURCES_DIST) \ $(ss_server_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -106,6 +209,7 @@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -130,6 +234,7 @@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ @@ -158,6 +263,7 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ acx_pthread_config = @acx_pthread_config@ @@ -191,7 +297,6 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -214,18 +319,24 @@ SS_COMMON_LIBS = $(top_builddir)/libev/libev.la $(INET_NTOP_LIB) ss_local_SOURCES = utils.c \ jconf.c \ json.c \ - encrypt.c \ - local.c + encrypt.c \ + udprelay.c \ + cache.c \ + local.c ss_server_SOURCES = utils.c \ jconf.c \ json.c \ encrypt.c \ + udprelay.c \ + cache.c \ server.c ss_local_LDADD = $(SS_COMMON_LIBS) ss_server_LDADD = $(SS_COMMON_LIBS) \ $(top_builddir)/libasyncns/libasyncns.la +ss_local_CFLAGS = -DUDPRELAY_LOCAL +ss_server_CFLAGS = -DUDPRELAY_REMOTE @BUILD_REDIRECTOR_TRUE@ss_redir_SOURCES = utils.c \ @BUILD_REDIRECTOR_TRUE@ jconf.c \ @BUILD_REDIRECTOR_TRUE@ json.c \ @@ -269,14 +380,19 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -297,7 +413,8 @@ uninstall-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -310,15 +427,18 @@ clean-binPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -ss-local$(EXEEXT): $(ss_local_OBJECTS) $(ss_local_DEPENDENCIES) + +ss-local$(EXEEXT): $(ss_local_OBJECTS) $(ss_local_DEPENDENCIES) $(EXTRA_ss_local_DEPENDENCIES) @rm -f ss-local$(EXEEXT) - $(LINK) $(ss_local_OBJECTS) $(ss_local_LDADD) $(LIBS) -ss-redir$(EXEEXT): $(ss_redir_OBJECTS) $(ss_redir_DEPENDENCIES) + $(AM_V_CCLD)$(ss_local_LINK) $(ss_local_OBJECTS) $(ss_local_LDADD) $(LIBS) + +ss-redir$(EXEEXT): $(ss_redir_OBJECTS) $(ss_redir_DEPENDENCIES) $(EXTRA_ss_redir_DEPENDENCIES) @rm -f ss-redir$(EXEEXT) - $(LINK) $(ss_redir_OBJECTS) $(ss_redir_LDADD) $(LIBS) -ss-server$(EXEEXT): $(ss_server_OBJECTS) $(ss_server_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(ss_redir_OBJECTS) $(ss_redir_LDADD) $(LIBS) + +ss-server$(EXEEXT): $(ss_server_OBJECTS) $(ss_server_DEPENDENCIES) $(EXTRA_ss_server_DEPENDENCIES) @rm -f ss-server$(EXEEXT) - $(LINK) $(ss_server_OBJECTS) $(ss_server_LDADD) $(LIBS) + $(AM_V_CCLD)$(ss_server_LINK) $(ss_server_OBJECTS) $(ss_server_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -329,31 +449,239 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encrypt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jconf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-cache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-encrypt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-jconf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-json.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-local.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-udprelay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_local-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-cache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-encrypt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-jconf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-json.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-udprelay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +ss_local-utils.o: utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-utils.o -MD -MP -MF $(DEPDIR)/ss_local-utils.Tpo -c -o ss_local-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-utils.Tpo $(DEPDIR)/ss_local-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='ss_local-utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c + +ss_local-utils.obj: utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-utils.obj -MD -MP -MF $(DEPDIR)/ss_local-utils.Tpo -c -o ss_local-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-utils.Tpo $(DEPDIR)/ss_local-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='ss_local-utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` + +ss_local-jconf.o: jconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-jconf.o -MD -MP -MF $(DEPDIR)/ss_local-jconf.Tpo -c -o ss_local-jconf.o `test -f 'jconf.c' || echo '$(srcdir)/'`jconf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-jconf.Tpo $(DEPDIR)/ss_local-jconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jconf.c' object='ss_local-jconf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-jconf.o `test -f 'jconf.c' || echo '$(srcdir)/'`jconf.c + +ss_local-jconf.obj: jconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-jconf.obj -MD -MP -MF $(DEPDIR)/ss_local-jconf.Tpo -c -o ss_local-jconf.obj `if test -f 'jconf.c'; then $(CYGPATH_W) 'jconf.c'; else $(CYGPATH_W) '$(srcdir)/jconf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-jconf.Tpo $(DEPDIR)/ss_local-jconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jconf.c' object='ss_local-jconf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-jconf.obj `if test -f 'jconf.c'; then $(CYGPATH_W) 'jconf.c'; else $(CYGPATH_W) '$(srcdir)/jconf.c'; fi` + +ss_local-json.o: json.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-json.o -MD -MP -MF $(DEPDIR)/ss_local-json.Tpo -c -o ss_local-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-json.Tpo $(DEPDIR)/ss_local-json.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='ss_local-json.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c + +ss_local-json.obj: json.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-json.obj -MD -MP -MF $(DEPDIR)/ss_local-json.Tpo -c -o ss_local-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-json.Tpo $(DEPDIR)/ss_local-json.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='ss_local-json.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi` + +ss_local-encrypt.o: encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-encrypt.o -MD -MP -MF $(DEPDIR)/ss_local-encrypt.Tpo -c -o ss_local-encrypt.o `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-encrypt.Tpo $(DEPDIR)/ss_local-encrypt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encrypt.c' object='ss_local-encrypt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-encrypt.o `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c + +ss_local-encrypt.obj: encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-encrypt.obj -MD -MP -MF $(DEPDIR)/ss_local-encrypt.Tpo -c -o ss_local-encrypt.obj `if test -f 'encrypt.c'; then $(CYGPATH_W) 'encrypt.c'; else $(CYGPATH_W) '$(srcdir)/encrypt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-encrypt.Tpo $(DEPDIR)/ss_local-encrypt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encrypt.c' object='ss_local-encrypt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-encrypt.obj `if test -f 'encrypt.c'; then $(CYGPATH_W) 'encrypt.c'; else $(CYGPATH_W) '$(srcdir)/encrypt.c'; fi` + +ss_local-udprelay.o: udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-udprelay.o -MD -MP -MF $(DEPDIR)/ss_local-udprelay.Tpo -c -o ss_local-udprelay.o `test -f 'udprelay.c' || echo '$(srcdir)/'`udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-udprelay.Tpo $(DEPDIR)/ss_local-udprelay.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udprelay.c' object='ss_local-udprelay.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-udprelay.o `test -f 'udprelay.c' || echo '$(srcdir)/'`udprelay.c + +ss_local-udprelay.obj: udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-udprelay.obj -MD -MP -MF $(DEPDIR)/ss_local-udprelay.Tpo -c -o ss_local-udprelay.obj `if test -f 'udprelay.c'; then $(CYGPATH_W) 'udprelay.c'; else $(CYGPATH_W) '$(srcdir)/udprelay.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-udprelay.Tpo $(DEPDIR)/ss_local-udprelay.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udprelay.c' object='ss_local-udprelay.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-udprelay.obj `if test -f 'udprelay.c'; then $(CYGPATH_W) 'udprelay.c'; else $(CYGPATH_W) '$(srcdir)/udprelay.c'; fi` + +ss_local-cache.o: cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-cache.o -MD -MP -MF $(DEPDIR)/ss_local-cache.Tpo -c -o ss_local-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-cache.Tpo $(DEPDIR)/ss_local-cache.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='ss_local-cache.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c + +ss_local-cache.obj: cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-cache.obj -MD -MP -MF $(DEPDIR)/ss_local-cache.Tpo -c -o ss_local-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-cache.Tpo $(DEPDIR)/ss_local-cache.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='ss_local-cache.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` + +ss_local-local.o: local.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-local.o -MD -MP -MF $(DEPDIR)/ss_local-local.Tpo -c -o ss_local-local.o `test -f 'local.c' || echo '$(srcdir)/'`local.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-local.Tpo $(DEPDIR)/ss_local-local.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='local.c' object='ss_local-local.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-local.o `test -f 'local.c' || echo '$(srcdir)/'`local.c + +ss_local-local.obj: local.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-local.obj -MD -MP -MF $(DEPDIR)/ss_local-local.Tpo -c -o ss_local-local.obj `if test -f 'local.c'; then $(CYGPATH_W) 'local.c'; else $(CYGPATH_W) '$(srcdir)/local.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-local.Tpo $(DEPDIR)/ss_local-local.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='local.c' object='ss_local-local.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-local.obj `if test -f 'local.c'; then $(CYGPATH_W) 'local.c'; else $(CYGPATH_W) '$(srcdir)/local.c'; fi` + +ss_server-utils.o: utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-utils.o -MD -MP -MF $(DEPDIR)/ss_server-utils.Tpo -c -o ss_server-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-utils.Tpo $(DEPDIR)/ss_server-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='ss_server-utils.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c + +ss_server-utils.obj: utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-utils.obj -MD -MP -MF $(DEPDIR)/ss_server-utils.Tpo -c -o ss_server-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-utils.Tpo $(DEPDIR)/ss_server-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='ss_server-utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` + +ss_server-jconf.o: jconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-jconf.o -MD -MP -MF $(DEPDIR)/ss_server-jconf.Tpo -c -o ss_server-jconf.o `test -f 'jconf.c' || echo '$(srcdir)/'`jconf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-jconf.Tpo $(DEPDIR)/ss_server-jconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jconf.c' object='ss_server-jconf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-jconf.o `test -f 'jconf.c' || echo '$(srcdir)/'`jconf.c + +ss_server-jconf.obj: jconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-jconf.obj -MD -MP -MF $(DEPDIR)/ss_server-jconf.Tpo -c -o ss_server-jconf.obj `if test -f 'jconf.c'; then $(CYGPATH_W) 'jconf.c'; else $(CYGPATH_W) '$(srcdir)/jconf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-jconf.Tpo $(DEPDIR)/ss_server-jconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jconf.c' object='ss_server-jconf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-jconf.obj `if test -f 'jconf.c'; then $(CYGPATH_W) 'jconf.c'; else $(CYGPATH_W) '$(srcdir)/jconf.c'; fi` + +ss_server-json.o: json.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-json.o -MD -MP -MF $(DEPDIR)/ss_server-json.Tpo -c -o ss_server-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-json.Tpo $(DEPDIR)/ss_server-json.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='ss_server-json.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c + +ss_server-json.obj: json.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-json.obj -MD -MP -MF $(DEPDIR)/ss_server-json.Tpo -c -o ss_server-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-json.Tpo $(DEPDIR)/ss_server-json.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='ss_server-json.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi` + +ss_server-encrypt.o: encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-encrypt.o -MD -MP -MF $(DEPDIR)/ss_server-encrypt.Tpo -c -o ss_server-encrypt.o `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-encrypt.Tpo $(DEPDIR)/ss_server-encrypt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encrypt.c' object='ss_server-encrypt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-encrypt.o `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c + +ss_server-encrypt.obj: encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-encrypt.obj -MD -MP -MF $(DEPDIR)/ss_server-encrypt.Tpo -c -o ss_server-encrypt.obj `if test -f 'encrypt.c'; then $(CYGPATH_W) 'encrypt.c'; else $(CYGPATH_W) '$(srcdir)/encrypt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-encrypt.Tpo $(DEPDIR)/ss_server-encrypt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encrypt.c' object='ss_server-encrypt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-encrypt.obj `if test -f 'encrypt.c'; then $(CYGPATH_W) 'encrypt.c'; else $(CYGPATH_W) '$(srcdir)/encrypt.c'; fi` + +ss_server-udprelay.o: udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-udprelay.o -MD -MP -MF $(DEPDIR)/ss_server-udprelay.Tpo -c -o ss_server-udprelay.o `test -f 'udprelay.c' || echo '$(srcdir)/'`udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-udprelay.Tpo $(DEPDIR)/ss_server-udprelay.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udprelay.c' object='ss_server-udprelay.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-udprelay.o `test -f 'udprelay.c' || echo '$(srcdir)/'`udprelay.c + +ss_server-udprelay.obj: udprelay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-udprelay.obj -MD -MP -MF $(DEPDIR)/ss_server-udprelay.Tpo -c -o ss_server-udprelay.obj `if test -f 'udprelay.c'; then $(CYGPATH_W) 'udprelay.c'; else $(CYGPATH_W) '$(srcdir)/udprelay.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-udprelay.Tpo $(DEPDIR)/ss_server-udprelay.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udprelay.c' object='ss_server-udprelay.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-udprelay.obj `if test -f 'udprelay.c'; then $(CYGPATH_W) 'udprelay.c'; else $(CYGPATH_W) '$(srcdir)/udprelay.c'; fi` + +ss_server-cache.o: cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-cache.o -MD -MP -MF $(DEPDIR)/ss_server-cache.Tpo -c -o ss_server-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-cache.Tpo $(DEPDIR)/ss_server-cache.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='ss_server-cache.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c + +ss_server-cache.obj: cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-cache.obj -MD -MP -MF $(DEPDIR)/ss_server-cache.Tpo -c -o ss_server-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-cache.Tpo $(DEPDIR)/ss_server-cache.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='ss_server-cache.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` + +ss_server-server.o: server.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-server.o -MD -MP -MF $(DEPDIR)/ss_server-server.Tpo -c -o ss_server-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-server.Tpo $(DEPDIR)/ss_server-server.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='ss_server-server.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c + +ss_server-server.obj: server.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-server.obj -MD -MP -MF $(DEPDIR)/ss_server-server.Tpo -c -o ss_server-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-server.Tpo $(DEPDIR)/ss_server-server.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='ss_server-server.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -361,26 +689,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -392,15 +709,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -409,6 +722,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -460,10 +788,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -547,19 +880,19 @@ uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/cache.c b/src/cache.c index 0f2aa05e..e9d5b2fe 100644 --- a/src/cache.c +++ b/src/cache.c @@ -6,7 +6,6 @@ #include #include #include "cache.h" -#include "uthash.h" /** Creates a new cache object diff --git a/src/cache.h b/src/cache.h index 83ae79d4..ae1743ed 100644 --- a/src/cache.h +++ b/src/cache.h @@ -6,6 +6,8 @@ #ifndef _CACHE_ #define _CACHE_ +#include "uthash.h" + #define KEY_MAX_LENGTH 32 /** @@ -22,7 +24,6 @@ struct cache_entry { */ struct cache { size_t max_entries; /** TABLE) { - const EVP_CIPHER *cipher = EVP_get_cipherbyname(supported_ciphers[method]); if (cipher == NULL) { LOGE("Cipher %s not found in OpenSSL library", supported_ciphers[method]); @@ -160,7 +159,7 @@ char* ss_encrypt_all(int buf_size, char *plaintext, ssize_t *len, int method) { } EVP_CIPHER_CTX evp; EVP_CIPHER_CTX_init(&evp); - if (!EVP_CipherInit_ex&(evp, cipher, NULL, NULL, NULL, enc)) { + if (!EVP_CipherInit_ex&(evp, cipher, NULL, NULL, NULL, 1)) { LOGE("Cannot initialize cipher %s", supported_ciphers[method]); exit(EXIT_FAILURE); } @@ -188,7 +187,7 @@ char* ss_encrypt_all(int buf_size, char *plaintext, ssize_t *len, int method) { dump("IV", iv); #endif - err = EVP_EncryptUpdate(&ctx->evp, (uint8_t*)(ciphertext+iv_len), + err = EVP_EncryptUpdate(&evp, (uint8_t*)(ciphertext+iv_len), &c_len, (const uint8_t *)plaintext, *len); if (!err) { @@ -273,7 +272,7 @@ char* ss_decrypt_all(int buf_size, char *ciphertext, ssize_t *len, int method) { } EVP_CIPHER_CTX evp; EVP_CIPHER_CTX_init(&evp); - if (!EVP_CipherInit_ex&(evp, cipher, NULL, NULL, NULL, enc)) { + if (!EVP_CipherInit_ex&(evp, cipher, NULL, NULL, NULL, 0)) { LOGE("Cannot initialize cipher %s", supported_ciphers[method]); exit(EXIT_FAILURE); } @@ -300,7 +299,7 @@ char* ss_decrypt_all(int buf_size, char *ciphertext, ssize_t *len, int method) { dump("IV", iv); #endif - err = EVP_DecryptUpdate(&ctx->evp, (uint8_t*)plaintext, &p_len, + err = EVP_DecryptUpdate(&evp, (uint8_t*)plaintext, &p_len, (const uint8_t*)(ciphertext + iv_len), *len - iv_len); if (!err) { free(ciphertext); diff --git a/src/encrypt.h b/src/encrypt.h index 8a754908..e3b91e33 100644 --- a/src/encrypt.h +++ b/src/encrypt.h @@ -43,10 +43,10 @@ struct enc_ctx { EVP_CIPHER_CTX evp; }; -char* ss_encrypt_all(char *plaintext, ssize_t *len, int method); -char* ss_decrypt_all(char *ciphertext, ssize_t *len, int method); -char* ss_encrypt(char *plaintext, ssize_t *len, struct enc_ctx *ctx); -char* ss_decrypt(char *ciphertext, ssize_t *len, struct enc_ctx *ctx); +char* ss_encrypt_all(int buf_size, char *plaintext, ssize_t *len, int method); +char* ss_decrypt_all(int buf_size, char *ciphertext, ssize_t *len, int method); +char* ss_encrypt(int buf_size, char *plaintext, ssize_t *len, struct enc_ctx *ctx); +char* ss_decrypt(int buf_size, char *ciphertext, ssize_t *len, struct enc_ctx *ctx); void enc_ctx_init(int method, struct enc_ctx *ctx, int enc); int enc_init(const char *pass, const char *method); int enc_get_iv_len(void); diff --git a/src/local.c b/src/local.c index bede8ad8..1f022add 100644 --- a/src/local.c +++ b/src/local.c @@ -35,13 +35,13 @@ #define EWOULDBLOCK EAGAIN #endif -#ifndef BLOCK_SIZE -#define BLOCK_SIZE 512 +#ifndef BUF_SIZE +#define BUF_SIZE 512 #endif static int verbose = 0; -int setnonblocking(int fd) { +static int setnonblocking(int fd) { int flags; if (-1 ==(flags = fcntl(fd, F_GETFL, 0))) flags = 0; @@ -186,7 +186,6 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { if (verbose) { LOGD("udp assc request accepted."); } - goto fake_reply; } else if (request->cmd != 1) { LOGE("unsupported cmd: %d", request->cmd); struct socks5_response response; @@ -199,85 +198,83 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { close_and_free_remote(EV_A_ remote); close_and_free_server(EV_A_ server); return; - } + } else { + char *addr_to_send = malloc(BUF_SIZE); + ssize_t addr_len = 0; + addr_to_send[addr_len++] = request->atyp; + + // get remote addr and port + if (request->atyp == 1) { + // IP V4 + size_t in_addr_len = sizeof(struct in_addr); + memcpy(addr_to_send + addr_len, remote->buf + 4, in_addr_len + 2); + addr_len += in_addr_len + 2; + + if (verbose) { + char host[INET_ADDRSTRLEN]; + uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + in_addr_len)); + inet_ntop(AF_INET, (const void *)(remote->buf + 4), + host, INET_ADDRSTRLEN); + LOGD("connect to %s:%d", host, port); + } - char *addr_to_send = malloc(BUF_SIZE); - ssize_t addr_len = 0; - addr_to_send[addr_len++] = request->atyp; + } else if (request->atyp == 3) { + // Domain name + uint8_t name_len = *(uint8_t *)(remote->buf + 4); + addr_to_send[addr_len++] = name_len; + memcpy(addr_to_send + addr_len, remote->buf + 4 + 1, name_len + 2); + addr_len += name_len + 2; + + if (verbose) { + char host[256]; + uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + 1 + name_len)); + memcpy(host, remote->buf + 4 + 1, name_len); + host[name_len] = '\0'; + LOGD("connect to %s:%d", host, port); + } - // get remote addr and port - if (request->atyp == 1) { - // IP V4 - size_t in_addr_len = sizeof(struct in_addr); - memcpy(addr_to_send + addr_len, remote->buf + 4, in_addr_len + 2); - addr_len += in_addr_len + 2; + } else if (request->atyp == 4) { + // IP V6 + size_t in6_addr_len = sizeof(struct in6_addr); + memcpy(addr_to_send + addr_len, remote->buf + 4, in6_addr_len + 2); + addr_len += in6_addr_len + 2; + + if (verbose) { + char host[INET6_ADDRSTRLEN]; + uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + in6_addr_len)); + inet_ntop(AF_INET6, (const void *)(remote->buf + 4), + host, INET6_ADDRSTRLEN); + LOGD("connect to %s:%d", host, port); + } - if (verbose) { - char host[INET_ADDRSTRLEN]; - uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + in_addr_len)); - inet_ntop(AF_INET, (const void *)(remote->buf + 4), - host, INET_ADDRSTRLEN); - LOGD("connect to %s:%d", host, port); + } else { + LOGE("unsupported addrtype: %d", request->atyp); + close_and_free_remote(EV_A_ remote); + close_and_free_server(EV_A_ server); + return; } - } else if (request->atyp == 3) { - // Domain name - uint8_t name_len = *(uint8_t *)(remote->buf + 4); - addr_to_send[addr_len++] = name_len; - memcpy(addr_to_send + addr_len, remote->buf + 4 + 1, name_len + 2); - addr_len += name_len + 2; - - if (verbose) { - char host[256]; - uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + 1 + name_len)); - memcpy(host, remote->buf + 4 + 1, name_len); - host[name_len] = '\0'; - LOGD("connect to %s:%d", host, port); + addr_to_send = ss_encrypt(BUF_SIZE, addr_to_send, &addr_len, server->e_ctx); + if (addr_to_send == NULL) { + LOGE("invalid password or cipher"); + close_and_free_remote(EV_A_ remote); + close_and_free_server(EV_A_ server); + return; } + int s = send(remote->fd, addr_to_send, addr_len, 0); + free(addr_to_send); - } else if (request->atyp == 4) { - // IP V6 - size_t in6_addr_len = sizeof(struct in6_addr); - memcpy(addr_to_send + addr_len, remote->buf + 4, in6_addr_len + 2); - addr_len += in6_addr_len + 2; - - if (verbose) { - char host[INET6_ADDRSTRLEN]; - uint16_t port = ntohs(*(uint16_t *)(remote->buf + 4 + in6_addr_len)); - inet_ntop(AF_INET6, (const void *)(remote->buf + 4), - host, INET6_ADDRSTRLEN); - LOGD("connect to %s:%d", host, port); + if (s < addr_len) { + LOGE("failed to send remote addr."); + close_and_free_remote(EV_A_ remote); + close_and_free_server(EV_A_ server); + return; } - } else { - LOGE("unsupported addrtype: %d", request->atyp); - close_and_free_remote(EV_A_ remote); - close_and_free_server(EV_A_ server); - return; - } - - addr_to_send = ss_encrypt(addr_to_send, &addr_len, server->e_ctx); - if (addr_to_send == NULL) { - LOGE("invalid password or cipher"); - close_and_free_remote(EV_A_ remote); - close_and_free_server(EV_A_ server); - return; - } - int s = send(remote->fd, addr_to_send, addr_len, 0); - free(addr_to_send); - - if (s < addr_len) { - LOGE("failed to send remote addr."); - close_and_free_remote(EV_A_ remote); - close_and_free_server(EV_A_ server); - return; + server->stage = 5; + ev_io_start(EV_A_ &remote->recv_ctx->io); } - server->stage = 5; - ev_io_start(EV_A_ &remote->recv_ctx->io); - -fake_reply: - // Fake reply struct socks5_response response; response.ver = SVERSION; @@ -292,7 +289,7 @@ fake_reply: memset(server->buf + sizeof(struct socks5_response), 0, sizeof(struct in_addr) + sizeof(uint16_t)); int reply_size = sizeof(struct socks5_response) + sizeof(struct in_addr) + sizeof(uint16_t); - s = send(server->fd, server->buf, reply_size, 0); + int s = send(server->fd, server->buf, reply_size, 0); if (s < reply_size) { LOGE("failed to send fake reply."); close_and_free_remote(EV_A_ remote); @@ -395,7 +392,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { } } - server->buf = ss_decrypt(BLOCK_SIZE, server->buf, &r, server->d_ctx); + server->buf = ss_decrypt(BUF_SIZE, server->buf, &r, server->d_ctx); if (server->buf == NULL) { LOGE("invalid password or cipher"); close_and_free_remote(EV_A_ remote); @@ -510,7 +507,7 @@ struct remote* new_remote(int fd, int timeout) { return remote; } -void free_remote(struct remote *remote) { +static void free_remote(struct remote *remote) { if (remote != NULL) { if (remote->server != NULL) { remote->server->remote = NULL; @@ -524,7 +521,7 @@ void free_remote(struct remote *remote) { } } -void close_and_free_remote(EV_P_ struct remote *remote) { +static void close_and_free_remote(EV_P_ struct remote *remote) { if (remote != NULL) { ev_timer_stop(EV_A_ &remote->send_ctx->watcher); ev_io_stop(EV_A_ &remote->send_ctx->io); @@ -562,7 +559,7 @@ struct server* new_server(int fd, int method) { return server; } -void free_server(struct server *server) { +static void free_server(struct server *server) { if (server != NULL) { if (server->remote != NULL) { server->remote->server = NULL; @@ -584,7 +581,7 @@ void free_server(struct server *server) { } } -void close_and_free_server(EV_P_ struct server *server) { +static void close_and_free_server(EV_P_ struct server *server) { if (server != NULL) { ev_io_stop(EV_A_ &server->send_ctx->io); ev_io_stop(EV_A_ &server->recv_ctx->io); diff --git a/src/local.h b/src/local.h index bd9aa952..7bfa5c49 100644 --- a/src/local.h +++ b/src/local.h @@ -59,11 +59,12 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents); static void server_send_cb (EV_P_ ev_io *w, int revents); static void remote_recv_cb (EV_P_ ev_io *w, int revents); static void remote_send_cb (EV_P_ ev_io *w, int revents); +static void free_remote(struct remote *remote); +static void close_and_free_remote(EV_P_ struct remote *remote); +static void free_server(struct server *server); +static void close_and_free_server(EV_P_ struct server *server); + struct remote* new_remote(int fd, int timeout); -void free_remote(struct remote *remote); -void close_and_free_remote(EV_P_ struct remote *remote); struct server* new_server(int fd, int method); -void free_server(struct server *server); -void close_and_free_server(EV_P_ struct server *server); #endif // _LOCAL_H diff --git a/src/redir.c b/src/redir.c index 05fde5a2..34b02d8e 100644 --- a/src/redir.c +++ b/src/redir.c @@ -31,8 +31,8 @@ #define EWOULDBLOCK EAGAIN #endif -#ifndef BLOCK_SIZE -#define BLOCK_SIZE 512 +#ifndef BUF_SIZE +#define BUF_SIZE 512 #endif int getdestaddr(int fd, struct sockaddr_in *destaddr) { @@ -261,7 +261,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { } } - server->buf = ss_decrypt(BLOCK_SIZE, server->buf, &r, server->d_ctx); + server->buf = ss_decrypt(BUF_SIZE, server->buf, &r, server->d_ctx); if (server->buf == NULL) { LOGE("invalid password or cipher"); close_and_free_remote(EV_A_ remote); @@ -319,7 +319,7 @@ static void remote_send_cb (EV_P_ ev_io *w, int revents) { addr_len += in_addr_len; memcpy(addr_to_send + addr_len, &server->destaddr.sin_port, 2); addr_len += 2; - addr_to_send = ss_encrypt(BLOCK_SIZE, addr_to_send, &addr_len, server->e_ctx); + addr_to_send = ss_encrypt(BUF_SIZE, addr_to_send, &addr_len, server->e_ctx); if (addr_to_send == NULL) { LOGE("invalid password or cipher"); close_and_free_remote(EV_A_ remote); diff --git a/src/server.c b/src/server.c index dcdbd243..9770f22e 100644 --- a/src/server.c +++ b/src/server.c @@ -35,8 +35,8 @@ #define EWOULDBLOCK EAGAIN #endif -#ifndef BLOCK_SIZE -#define BLOCK_SIZE 512 +#ifndef BUF_SIZE +#define BUF_SIZE 512 #endif static int verbose = 0; @@ -492,7 +492,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { } } - server->buf = ss_encrypt(BLOCK_SIZE, server->buf, &r, server->e_ctx); + server->buf = ss_encrypt(BUF_SIZE, server->buf, &r, server->e_ctx); if (server->buf == NULL) { LOGE("invalid password or cipher"); diff --git a/src/udprelay.c b/src/udprelay.c index 71596801..22dbffeb 100644 --- a/src/udprelay.c +++ b/src/udprelay.c @@ -33,15 +33,14 @@ #ifdef UDPRELAY_REMOTE struct udprelay_header { uint8_t atyp; -} +}; #else #ifdef UDPRELAY_LOCAL struct udprelay_header { uint16_t rsv; uint8_t frag; uint8_t atyp; -} -struct remote *remote = NULL; +}; #else #error "No UDPRELAY defined" #endif @@ -61,13 +60,13 @@ struct remote *remote = NULL; #define EWOULDBLOCK EAGAIN #endif -#define BLOCK_SIZE MAX_UDP_PACKET_SIZE +#define BUF_SIZE MAX_UDP_PACKET_SIZE static int verbose = 0; static int remote_conn = 0; static int server_conn = 0; -int setnonblocking(int fd) { +static int setnonblocking(int fd) { int flags; if (-1 ==(flags = fcntl(fd, F_GETFL, 0))) flags = 0; @@ -85,16 +84,16 @@ int setinterface(int socket_fd, const char* interface_name) } #endif -static char *hash_key(const char *header, const int header_len, const sockaddr *addr) { +static char *hash_key(const char *header, const int header_len, const struct sockaddr *addr) { char key[384]; // calculate hash key // assert header_len < 256 memset(key, 0, 384); - memcpy(key, addr, sizeof(sockaddr)); - memcpy(key + sizeof(sockaddr), header, header_len); + memcpy(key, addr, sizeof(struct sockaddr)); + memcpy(key + sizeof(struct sockaddr), header, header_len); - return (char*) MD5((const uint8_t *)key, sizeof(sockaddr) + header_len, NULL); + return (char*) MD5((const uint8_t *)key, sizeof(struct sockaddr) + header_len, NULL); } static int parse_udprealy_header(const char* buf, const int buf_len, @@ -105,12 +104,12 @@ static int parse_udprealy_header(const char* buf, const int buf_len, if (atyp == 1) { // IP V4 size_t in_addr_len = sizeof(struct in_addr); - if (buf_len > in_addbuf_len_len) { + if (buf_len > in_addr_len) { if (host != NULL) { inet_ntop(AF_INET, (const void *)(buf + offset), host, INET_ADDRSTRLEN); } - offset += in_addbuf_len_len; + offset += in_addr_len; } } else if (atyp == 3) { // Domain name @@ -124,7 +123,7 @@ static int parse_udprealy_header(const char* buf, const int buf_len, } else if (atyp == 4) { // IP V6 size_t in6_addr_len = sizeof(struct in6_addr); - if (buf_len > in6_addbuf_len_len) { + if (buf_len > in6_addr_len) { if (host != NULL) { inet_ntop(AF_INET6, (const void*)(buf + offset), host, INET6_ADDRSTRLEN); @@ -152,14 +151,15 @@ int create_remote_socket(int ipv6) { if (ipv6) { // Try to bind IPv6 first - struct sockaddr_in6 addr_in6; - memset(&addr, 0, sizeof(addr_in6)); - addr_in6.sin_family = AF_INET6; - addr_in6.sin_addr.s_addr = htonl(IN6ADDR_ANY); - addr_in6.sin_port = htons(0); + struct sockaddr_in6 addr; + memset(&addr, 0, sizeof(struct sockaddr_in6)); + addr.sin6_len = sizeof(addr); + addr.sin6_family = AF_INET6; + addr.sin6_addr = in6addr_any; + addr.sin6_port = htons(0); remote_sock = socket(AF_INET6, SOCK_DGRAM , 0); if (remote_sock != -1) { - if (bind(remote_sock, &addr_in6, sizeof(addr_in6)) != -1) { + if (bind(remote_sock, (struct sockaddr *)&addr, sizeof(addr)) != -1) { return remote_sock; } } @@ -177,7 +177,7 @@ int create_remote_socket(int ipv6) { return -1; } - if (bind(remote_sock, &addr, sizeof(addr)) != 0) { + if (bind(remote_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) { FATAL("Cannot bind remote."); return -1; } @@ -246,16 +246,15 @@ struct server_ctx * new_server_ctx(int fd) { struct server_ctx *ctx = malloc(sizeof(struct server_ctx)); memset(ctx, 0, sizeof(struct server_ctx)); ctx->buf = malloc(BUF_SIZE); - ctx->remote_ctx = NULL; ctx->fd = fd; - ev_io_init(&ctx.io, server_recv_cb, fd, EV_READ); + ev_io_init(&ctx->io, server_recv_cb, fd, EV_READ); return ctx; } #ifdef UDPRELAY_REMOTE struct query_ctx *new_query_ctx(asyncns_query_t *query, const uint8_t *buf, const int buf_len) { - struct query_ctx *ctx = malloc(sizeof(struct query_ctx)) + struct query_ctx *ctx = malloc(sizeof(struct query_ctx)); memset(ctx, 0, sizeof(struct query_ctx)); ctx->buf = malloc(buf_len); ctx->buf_len = buf_len; @@ -265,9 +264,9 @@ struct query_ctx *new_query_ctx(asyncns_query_t *query, return ctx; } -void close_and_free_query(EN_P_ struct query_ctx *ctx) { +void close_and_free_query(EV_P_ struct query_ctx *ctx) { if (ctx != NULL) { - ev_io_stop(EV_A_ &ctx->io); + ev_timer_stop(EV_A_ &ctx->watcher); if (ctx->buf != NULL) { free(ctx->buf); } @@ -277,7 +276,7 @@ void close_and_free_query(EN_P_ struct query_ctx *ctx) { #endif -void close_and_free_remote(EN_P_ struct remote_ctx *ctx) { +void close_and_free_remote(EV_P_ struct remote_ctx *ctx) { if (ctx != NULL) { close(ctx->fd); ev_timer_stop(EV_A_ &ctx->watcher); @@ -300,14 +299,15 @@ static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents) { char *key = hash_key(remote_ctx->addr_header, remote_ctx->addr_header_len, &remote_ctx->src_addr); cache_remove(remote_ctx->server_ctx->conn_cache, key); - close_and_free_remote(remote_ctx); + close_and_free_remote(EV_A_ remote_ctx); } +#ifdef UDPRELAY_REMOTE static void query_resolve_cb(EV_P_ ev_timer *watcher, int revents) { int err; struct addrinfo *result, *rp; struct query_ctx *query_ctx = (struct query_ctx *)((void*)watcher); - asyncns_t *asyncns = query_ctx->asyncns; + asyncns_t *asyncns = query_ctx->server_ctx->asyncns; asyncns_query_t *query = query_ctx->query; if (asyncns == NULL || query == NULL) { @@ -366,13 +366,15 @@ static void query_resolve_cb(EV_P_ ev_timer *watcher, int revents) { memcpy(remote_ctx->addr_header, query_ctx->addr_header, query_ctx->addr_header_len); // Add to conn cache + char *key = hash_key(remote_ctx->addr_header, + remote_ctx->addr_header_len, &remote_ctx->src_addr); cache_insert(query_ctx->server_ctx->conn_cache, key, (void *)remote_ctx); ev_io_start(EV_A_ &remote_ctx->io); - int w = sendto(remote_ctx->fd, query_ctx->buf, query_ctx->buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); + int s = sendto(remote_ctx->fd, query_ctx->buf, query_ctx->buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); - if (w == -1) { + if (s == -1) { ERROR("udprelay_sendto_remote"); close_and_free_remote(EV_A_ remote_ctx); } @@ -386,6 +388,7 @@ static void query_resolve_cb(EV_P_ ev_timer *watcher, int revents) { asyncns_freeaddrinfo(result); close_and_free_query(EV_A_ query_ctx); } +#endif static void remote_recv_cb (EV_P_ ev_io *w, int revents) { struct remote_ctx *remote_ctx = (struct remote_ctx *)w; @@ -394,7 +397,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { // server has been closed if (server_ctx == NULL) { LOGE("invalid server."); - close_and_free_remote(EV_A_ remote); + close_and_free_remote(EV_A_ remote_ctx); return; } @@ -427,7 +430,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { uint8_t atyp = *(uint8_t*)buf; int offset = 1; int len = parse_udprealy_header(buf + offset, - buf_len - offset, udprelay_header->atyp, host, port); + buf_len - offset, atyp, NULL, NULL); if (len == 0 || len != addr_header_len) { // error in parse header return; @@ -437,22 +440,17 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { #endif #ifdef UDPRELAY_REMOTE - if (src_addr != remote_ctx->dst_addr) { - LOGE("dest addr not match."); - return; - } - - char *tmp_buf = malloc(buf_len + addr_header_len); + char *tmpbuf = malloc(buf_len + addr_header_len); memcpy(tmpbuf, remote_ctx->addr_header, addr_header_len); memcpy(tmpbuf + addr_header_len, buf, buf_len); free(buf); - buf = tmp_buf; + buf = tmpbuf; buf_len += addr_header_len; #endif - int w = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->src_addr, sizeof(remote_ctx->src_addr)); + int s = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->src_addr, sizeof(remote_ctx->src_addr)); - if (w == -1) { + if (s == -1) { ERROR("udprelay_sendto_remote"); } @@ -539,7 +537,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { } char *addr_header = buf + offset - sizeof(udprelay_header->atyp); char *key = hash_key(addr_header, addr_header_len, &src_addr); - struct *conn_cache = server_ctx->conn_cache; + struct cache *conn_cache = server_ctx->conn_cache; #ifdef UDPRELAY_LOCAL @@ -600,16 +598,16 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { ss_encrypt_all(BLOCK_SIZE, buf, &buf_len, server_ctx->method); - int w = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); + int s = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); - if (w == -1) { + if (s == -1) { ERROR("udprelay_sendto_remote"); } #else buf_len -= offset; - memmove(server->buf, buf + offset, buf_len); + memmove(buf, buf + offset, buf_len); if (verbose) { LOGD("send to: %s:%s", host, port); @@ -643,9 +641,9 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { } else { - int w = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); + int s = sendto(remote_ctx->fd, buf, buf_len, 0, &remote_ctx->dst_addr, sizeof(remote_ctx->dst_addr)); - if (w == -1) { + if (s == -1) { ERROR("udprelay_sendto_remote"); } @@ -656,12 +654,15 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { void free_cb(void *element) { struct remote_ctx *remote_ctx = (struct remote_ctx *)element; - close_and_free_remote(remote_ctx); + close_and_free_remote(EV_DEFAULT, remote_ctx); } int udprelay(const char *server_host, const char *server_port, #ifdef UDPRELAY_LOCAL const char *remote_host, const char *remote_port, +#endif +#ifdef UDPRELAY_REMOTE + asyncns_t *asyncns, #endif int method, const char *iface) { @@ -676,7 +677,7 @@ int udprelay(const char *server_host, const char *server_port, // Setup server context // Bind to port - int serverfd = create_server_socket(host, server_port); + int serverfd = create_server_socket(server_host, server_port); if (serverfd < 0) { FATAL("udprelay bind() error.."); } @@ -685,10 +686,16 @@ int udprelay(const char *server_host, const char *server_port, struct server_ctx *server_ctx = new_server_ctx(serverfd); server_ctx->method = method; server_ctx->iface = iface; - server_ctx->asyncns = asyncns; server_ctx->conn_cache = conn_cache; +#ifdef UDPRELAY_LOCAL + server_ctx->remote_host = remote_host; + server_ctx->remote_port = remote_port; +#endif +#ifdef UDPRELAY_REMOTE + server_ctx->asyncns = asyncns; +#endif - ev_io_start(loop, &server_ctx.io); + ev_io_start(loop, &server_ctx->io); return 0; } diff --git a/src/udprelay.h b/src/udprelay.h index d1b5264a..e3f0108d 100644 --- a/src/udprelay.h +++ b/src/udprelay.h @@ -1,5 +1,5 @@ -#ifndef _SERVER_H -#define _SERVER_H +#ifndef _UDPRELAY_H +#define _UDPRELAY_H #include #include @@ -25,11 +25,15 @@ struct server_ctx { #ifdef UDPRELAY_REMOTE asyncns_t *asyncns; #endif +#ifdef UDPRELAY_LOCAL + char *remote_host; + char *remote_port; +#endif }; -#ifdef UDPRELAY_LOCAL +#ifdef UDPRELAY_REMOTE struct query_ctx { - ev_timer resolve_watcher; + ev_timer watcher; asyncns_query_t *query; struct sockaddr src_addr; int buf_len; @@ -37,14 +41,12 @@ struct query_ctx { int addr_header_len; char addr_header[384]; struct server_ctx *server_ctx; -} +}; #endif struct remote_ctx { ev_io io; -#ifdef UDPRELAY_REMOTE ev_timer watcher; -#endif int fd; char *buf; // server send from, remote recv into int addr_header_len; @@ -55,17 +57,17 @@ struct remote_ctx { }; static void server_recv_cb (EV_P_ ev_io *w, int revents); -static void server_send_cb (EV_P_ ev_io *w, int revents); static void remote_recv_cb (EV_P_ ev_io *w, int revents); -static void remote_send_cb (EV_P_ ev_io *w, int revents); static void server_resolve_cb(EV_P_ ev_timer *watcher, int revents); +static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents); +static char *hash_key(const char *header, const int header_len, const struct sockaddr *addr); +#ifdef UDPRELAY_REMOTE +static void query_resolve_cb(EV_P_ ev_timer *watcher, int revents); +#endif +static void close_and_free_remote(EV_P_ struct remote_ctx *ctx); +static void close_and_free_server(EV_P_ struct server_ctx *server_ctx); -struct remote* new_remote(int fd); -struct remote *connect_to_remote(struct addrinfo *res, const char *iface); -void free_remote(struct remote *remote); -void close_and_free_remote(EV_P_ struct remote *remote); -struct server* new_server(int fd, struct listen_ctx *listener); -void free_server(struct server *server); -void close_and_free_server(EV_P_ struct server *server); +struct remote_ctx* new_remote_ctx(int fd); +struct server_ctx* new_server(int fd); -#endif // _SERVER_H +#endif // _UDPRELAY_H