[tor-commits] [torsocks/master] Make tests compile and run on OpenBSD

hoganrobert at torproject.org hoganrobert at torproject.org
Sun Feb 20 15:21:50 UTC 2011


commit 6bec541ad5398625f14757199df26ce5a4755f9c
Author: Robert Hogan <robert at roberthogan.net>
Date:   Sun Feb 20 11:04:54 2011 +0000

    Make tests compile and run on OpenBSD
---
 test/Makefile.am     |    2 -
 test/test_torsocks.c |   74 ++++++++++++++++++++++++++++++++++++-------------
 2 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/test/Makefile.am b/test/Makefile.am
index c03c387..84e4859 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,6 +1,4 @@
 noinst_PROGRAMS= test_torsocks
 
-LIBS = -lresolv
-
 test_torsocks_SOURCES= test_torsocks.c
 CLEANFILES= test_torsocks
diff --git a/test/test_torsocks.c b/test/test_torsocks.c
index a262303..902a216 100644
--- a/test/test_torsocks.c
+++ b/test/test_torsocks.c
@@ -19,13 +19,24 @@
  *   Free Software Foundation, Inc.,                                       *
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
+/* PreProcessor Defines */
+#include <config.h>
 
-#include <arpa/inet.h>
-#include <arpa/nameser.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <netdb.h>
+#ifdef OPENBSD
+#include <netinet/in_systm.h>
+#endif
+#include <sys/types.h>
+#include <sys/socket.h>
+#ifndef HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#ifndef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#include <arpa/nameser.h>
 #include <netinet/ip.h>
 #include <netinet/ip_icmp.h>
 #include <pthread.h>
@@ -33,9 +44,10 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/socket.h>
 #include <sys/time.h>
-#include <sys/types.h>
+#ifdef OPENBSD
+#include <sys/uio.h>
+#endif
 #include <sys/un.h>
 #include <sysexits.h>
 #include <syslog.h>
@@ -68,7 +80,11 @@ static int icmp_test()
     char datagram[400];
     struct sockaddr_in dest;
     struct ip *iphdr=(struct ip *) datagram;
+#ifdef OPENBSD
+    struct icmp *icmphdr=(struct icmp *)(iphdr +1);
+#else
     struct icmphdr *icmphdr=(struct icmphdr *)(iphdr +1);
+#endif
     char *buff=(char *)(icmphdr +1);
     printf("\n----------------icmp() TEST----------------------------\n\n");
 
@@ -96,16 +112,21 @@ static int icmp_test()
     iphdr->ip_dst.s_addr=dest.sin_addr.s_addr;
     iphdr->ip_sum=csum((unsigned short *)datagram,iphdr->ip_len >> 1);
 
+#ifdef OPENBSD
+    icmphdr->icmp_type=130;
+    icmphdr->icmp_code=0;
+    icmphdr->icmp_cksum=htons(0xc3b0);
+#else
     icmphdr->type=130;
     icmphdr->code=0;
     icmphdr->checksum=htons(0xc3b0);
     icmphdr->un.echo.sequence=0;
     icmphdr->un.echo.id=0;
-
-        int one=1;
-        int *val=&one;
-        if(setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,val,sizeof(one))<0)
-            printf("cannot set HDRINCL!\n");
+#endif
+    int one=1;
+    int *val=&one;
+    if(setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,val,sizeof(one))<0)
+        printf("cannot set HDRINCL!\n");
 
 
     if(sendto(sockfd,datagram,35,0,(struct sockaddr *)&dest,sizeof(dest))<0)
@@ -228,7 +249,6 @@ static int res_tests(char *ip, char *test) {
       return -1;
     }
 
-    inet_ntop(AF_INET, &_res.nsaddr_list[0].sin_addr.s_addr, buf, sizeof(buf));
 
     addr.sin_family=AF_INET;
     addr.sin_port=htons(53);
@@ -240,29 +260,43 @@ static int res_tests(char *ip, char *test) {
     inet_ntop(AF_INET, &_res.nsaddr_list[0].sin_addr.s_addr, buf, sizeof(buf));
     printf("nameserver for test: %s\n", buf);
 
+    /* Modifying _res directly doesn't work, so we have to use res_n* where available.
+       See: http://sourceware.org/ml/libc-help/2009-11/msg00013.html */
     printf("\n---------------------- %s res_query() TEST----------------------\n\n", test);
     snprintf((char *)host, 127, "www.google.com");
-    ret = res_nquery( &_res, (char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
-//     printf("RES_QUERY results: %s.\n", dnsreply);
+#ifndef OPENBSD
+    ret = res_nquery(&_res, (char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#else
+    ret = res_query((char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#endif
     printf("return code: %i\n", ret);
 
     printf("\n---------------------- %s res_search() TEST----------------------\n\n", test);
     memset( dnsreply, '\0', sizeof( dnsreply ));
-    ret = res_nsearch( &_res,  (char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
-//     printf("RES_SEARCH results: %s.\n", dnsreply);
+#ifndef OPENBSD
+    ret = res_nsearch(&_res, (char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#else
+    ret = res_search((char *) host, C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#endif
     printf("return code: %i\n", ret);
 
     printf("\n--------------- %s res_querydomain() TEST----------------------\n\n", test);
     memset( dnsreply, '\0', sizeof( dnsreply ));
-    ret = res_nquerydomain( &_res,  "www.google.com", "google.com", C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
-//     printf("RES_QUERYDOMAIN results: %s.\n", dnsreply);
+#ifndef OPENBSD
+    ret = res_nquerydomain(&_res,  "www.google.com", "google.com", C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#else
+    ret = res_querydomain("www.google.com", "google.com", C_IN, T_TXT, dnsreply, sizeof( dnsreply ));
+#endif
     printf("return code: %i\n", ret);
 
     printf("\n---------------------- %s res_send() TEST----------------------\n\n", test);
     memset( dnsreply, '\0', sizeof( dnsreply ));
-    ret = res_nsend( &_res,  host, 32, dnsreply, sizeof( dnsreply ));
-//     printf("RES_SEND results: %s.\n", dnsreply);
-    printf("return code: %i\n", ret);
+#ifndef OPENBSD
+    ret = res_nsend(&_res,  host, 32, dnsreply, sizeof( dnsreply ));
+#else
+    ret = res_send(host, 32, dnsreply, sizeof( dnsreply ));
+#endif
+printf("return code: %i\n", ret);
 
     return ret;
 }
@@ -353,7 +387,7 @@ static int gethostbyaddr_test() {
 
     printf("\n----------------------gethostbyaddr() TEST-----------------\n\n");
 
-    inet_aton("38.229.70.16",&bar);
+    inet_aton("38.229.70.16", &bar);
     foo=gethostbyaddr(&bar,4,AF_INET);
     if (foo) {
       int i;

_______________________________________________
tor-commits mailing list
tor-commits at lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits



More information about the tor-commits mailing list