chiark / gitweb /
noipv4 as well
authorRichard Kettlewell <rjk@greenend.org.uk>
Sun, 6 Feb 2011 12:49:32 +0000 (12:49 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sun, 6 Feb 2011 12:49:32 +0000 (12:49 +0000)
.gitignore
Makefile
gaise.c
noipv4.m4 [new file with mode: 0644]
noipv6.m4

index 3257201..61b78d7 100644 (file)
@@ -2,3 +2,4 @@
 *.lo
 *.so
 noipv6
+noipv4
index 178a886..41451ba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ include defs.$(shell uname -s)
 
 VERSION=0.1
 
-all: ${MODULE} noipv6
+all: ${MODULE} noipv6 noipv4
 
 noipv6: noipv6.m4 Makefile
        m4 -Dpkglibdir="${pkglibdir}" \
@@ -21,20 +21,33 @@ noipv6: noipv6.m4 Makefile
        mv noipv6.tmp noipv6
        chmod 755 noipv6
 
+noipv4: noipv4.m4 Makefile
+       m4 -Dpkglibdir="${pkglibdir}" \
+               -DVERSION="${VERSION}" \
+               -D__module__=${MODULE} \
+               -D__variable__=${VARIABLE} \
+               noipv4.m4 > noipv4.tmp
+       mv noipv4.tmp noipv4
+       chmod 755 noipv4
+
 $(MODULE): gaise.lo
        $(CC) $(CFLAGS) $(SHAREFLAGS) -o $@ $^ $(LIBS)
 
 install: installdirs
        $(INSTALL) -m 755 noipv6 $(bindir)/noipv6
+       $(INSTALL) -m 755 noipv4 $(bindir)/noipv4
        $(INSTALL) -m 644 ${MODULE} $(libdir)/gaise/${MODULE} 
        #$(INSTALL) -m 644 noipv6.1 $(man1dir)/noipv6
+       #$(INSTALL) -m 644 noipv4.1 $(man1dir)/noipv4
 
 install-strip: install
 
 uninstall:
        rm -f $(bindir)/noipv6
+       rm -f $(bindir)/noipv4
        rm -f $(libdir)/gaise/${MODULE}
        rm -f $(man1dir)/noipv6.1
+       rm -f $(man1dir)/noipv4.1
        -rmdir $(libdir)/gaise
 
 installdirs:
@@ -48,11 +61,14 @@ clean:
        rm -f *.lo
        rm -f *.dylib
        rm -f noipv6
+       rm -f noipv4
 
 dist:
        rm -rf gaise-${VERSION}
        mkdir gaise-${VERSION}
-       cp COPYING Makefile README *.c noipv6.m4 noipv6.1 gaise-${VERSION} 
+       cp COPYING Makefile README *.c gaise-${VERSION} 
+       cp noipv6.m4 noipv6.1 gaise-${VERSION} 
+       cp noipv4.m4 noipv4.1 gaise-${VERSION} 
        cp defs.Linux gaise-${VERSION}
        mkdir gaise-${VERSION}/debian
        cp debian/changelog gaise-${VERSION}/debian
diff --git a/gaise.c b/gaise.c
index 5d5116f..ecf962b 100644 (file)
--- a/gaise.c
+++ b/gaise.c
@@ -1,6 +1,7 @@
 #define _GNU_SOURCE
 #include <netdb.h>
 #include <dlfcn.h>
+#include <stdlib.h>
 
 #ifndef LIBC_GETADDRINFO
 # define LIBC_GETADDRINFO "getaddrinfo"
@@ -30,8 +31,12 @@ int __gaise_getaddrinfo(const char *node, const char *service,
   int rc;
   real_getaddrinfo = dlsym(RTLD_NEXT, LIBC_GETADDRINFO);
   rc = real_getaddrinfo(node, service, hints, res);
-  if(!rc)
-    addrinfo_remove(AF_INET6, res);
+  if(!rc) {
+    if(getenv("GAISE_REMOVE_IPV6"))
+      addrinfo_remove(AF_INET6, res);
+    if(getenv("GAISE_REMOVE_IPV4"))
+      addrinfo_remove(AF_INET, res);
+  }
   return rc;
 }
 
diff --git a/noipv4.m4 b/noipv4.m4
new file mode 100644 (file)
index 0000000..81dc337
--- /dev/null
+++ b/noipv4.m4
@@ -0,0 +1,37 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+-h | --help )
+  echo "Gaise VERSION"
+  echo
+  echo "Usage:"
+  echo
+  echo "  noipv4 [--] COMMAND ARGS..."
+  echo
+  exit 0
+  ;;
+-V | --version )
+  echo "Gaise VERSION"
+  exit 0
+  ;;
+-- )
+  shift
+  ;;
+-* )
+  echo "unknown option '$1'" 1>&2
+  exit 1
+  ;;
+esac
+
+if test "x$__variable__" = "x"; then
+  __variable__=pkglibdir/__module__
+else
+  __variable__="pkglibdir/__module__:$__VARIABLE__"
+fi
+export __variable__
+DYLD_FORCE_FLAT_NAMESPACE=yes
+export DYLD_FORCE_FLAT_NAMESPACE
+export GAISE_REMOVE_IPV4=yes
+exec "$@"
index 3deece2..0c99071 100644 (file)
--- a/noipv6.m4
+++ b/noipv6.m4
@@ -33,4 +33,5 @@ fi
 export __variable__
 DYLD_FORCE_FLAT_NAMESPACE=yes
 export DYLD_FORCE_FLAT_NAMESPACE
+export GAISE_REMOVE_IPV6=yes
 exec "$@"