summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@anytun.org>2009-02-18 10:17:44 +0000
committerOthmar Gsenger <otti@anytun.org>2009-02-18 10:17:44 +0000
commit9743a080833f6de98884708112dcfb0a3fed37dd (patch)
treef1cad9a890e3a258d7ae63efffa5dda785e8226a
parentadded strip Makefile target (diff)
static build mostly fixed
getsddrinfo still needs libc
-rw-r--r--src/Makefile9
-rw-r--r--src/anytun.cpp8
-rw-r--r--src/daemon.hpp2
3 files changed, 13 insertions, 6 deletions
diff --git a/src/Makefile b/src/Makefile
index e328929..87c3f47 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -117,16 +117,19 @@ strip: $(EXECUTABLE)
anytun: $(OBJS) $(SYNCOBJS) anytun.o
$(LD) $(OBJS) $(SYNCOBJS) anytun.o -o $@ $(LDFLAGS)
-anytun-static: $(OBJS) $(SYNCOBJS) anytun.o
- $(LD) $(OBJS) $(SYNCOBJS) anytun.o -o $@ -static-libgcc -static $(LDFLAGS) -lpthread
+anytun-static: $(OBJS) $(SYNCOBJS) anytun-noprivdrop.o
+ $(LD) $(OBJS) $(SYNCOBJS) anytun-noprivdrop.o -o $@ -Bstatic -lstdc++ -static $(LDFLAGS) -lpthread
strip -s anytun-static
anytun-nosync: $(OBJS) anytun-nosync.o
$(LD) $(OBJS) anytun-nosync.o -o $@ $(LDFLAGS)
-anytun-nosync.o: anytun.cpp anytun.o
+anytun-nosync.o: anytun.cpp
$(CXX) $(CXXFLAGS) -DANYTUN_NOSYNC $< -c -o anytun-nosync.o
+anytun-noprivdrop.o: anytun.cpp
+ $(CXX) $(CXXFLAGS) -DNO_PRIVDROP $< -c -o anytun-noprivdrop.o
+
anytun-showtables: $(OBJS) $(SYNCOBJS) anytun-showtables.o
$(LD) $(OBJS) $(SYNCOBJS) anytun-showtables.o -o $@ $(LDFLAGS)
diff --git a/src/anytun.cpp b/src/anytun.cpp
index 84e5582..ab847a8 100644
--- a/src/anytun.cpp
+++ b/src/anytun.cpp
@@ -338,7 +338,9 @@ int main(int argc, char* argv[])
}
#ifndef NO_DAEMON
- PrivInfo privs(gOpt.getUsername(), gOpt.getGroupname());
+#ifndef NO_PRIVDROP
+ PrivInfo privs(gOpt.getUsername(), gOpt.getGroupname());
+#endif
std::ofstream pidFile;
if(gOpt.getPidFile() != "") {
@@ -404,9 +406,9 @@ int main(int argc, char* argv[])
#ifndef NO_DAEMON
if(gOpt.getChrootDir() != "")
do_chroot(gOpt.getChrootDir());
-
+#ifndef NO_PRIVDROP
privs.drop();
-
+#endif
if(gOpt.getDaemonize()) {
daemonize();
daemonized = true;
diff --git a/src/daemon.hpp b/src/daemon.hpp
index 4b59661..cc9a2b2 100644
--- a/src/daemon.hpp
+++ b/src/daemon.hpp
@@ -45,6 +45,7 @@
#include "log.h"
+#ifndef NO_PRIVDROP
class PrivInfo
{
public:
@@ -101,6 +102,7 @@ private:
struct passwd* pw_;
struct group* gr_;
};
+#endif
void do_chroot(std::string const& chrootdir)
{