summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--config.h3
-rw-r--r--fatvpn.c4
-rw-r--r--fatvpnd.c6
3 files changed, 13 insertions, 0 deletions
diff --git a/config.h b/config.h
index 0c43c86..f04c1d2 100644
--- a/config.h
+++ b/config.h
@@ -5,6 +5,9 @@
 /* do not forget to set MTU on tap: MAX_PKT_SZ - HMAC_SZ - NONCE_SZ - 14 */
 #define MAX_PKT_SZ 1440
 
+/* comment line below to disable ipv6 entirely */
+#define ENABLE_IPV6
+
 /* hardcode the password here if you don't want the program to ask for it
  * when it starts. */
 char password[PASSWORD_BUF_SZ];
diff --git a/fatvpn.c b/fatvpn.c
index 51f48e5..59eaa10 100644
--- a/fatvpn.c
+++ b/fatvpn.c
@@ -51,9 +51,11 @@ int main(int argc, char *argv[]){
 	case AF_INET:
 		memcpy(&srv, srvi->ai_addr, sizeof(struct sockaddr_in));
 		break;
+#ifdef ENABLE_IPV6
 	case AF_INET6:
 		memcpy(&srv, srvi->ai_addr, sizeof(struct sockaddr_in6));
 		break;
+#endif
 	default:
 		fprintf(stderr, "unsupported addrfamily: %s\n", argv[2]);
 		exit(1);
@@ -193,6 +195,7 @@ inf_loop:
 		             &((struct sockaddr_in*)&sender)->sin_addr.s_addr,
 		             4);
 		break;
+#ifdef ENABLE_IPV6
 	case AF_INET6:
 		if (((struct sockaddr_in6*)&srv)->sin6_port !=
 		    ((struct sockaddr_in6*)&sender)->sin6_port) goto inf_loop;
@@ -200,6 +203,7 @@ inf_loop:
 		             ((struct sockaddr_in6*)&sender)->sin6_addr.s6_addr,
 		             16);
 		break;
+#endif
 	}
 	if (tmp != 0) goto inf_loop;
 
diff --git a/fatvpnd.c b/fatvpnd.c
index f3f891b..b2fa145 100644
--- a/fatvpnd.c
+++ b/fatvpnd.c
@@ -38,20 +38,24 @@ int main(int argc, char *argv[]){
 	memset(&c, 0, sizeof(c));
 	c.ss_family = AF_INET;
 	(*(struct sockaddr_in*)&c).sin_port = htons((u16)atoi(argv[argc-1]));
+#ifdef ENABLE_IPV6
 	if (argc == 4){
 		res = inet_pton(AF_INET6, argv[2],
 		                ((struct sockaddr_in6*)&c)->sin6_addr.s6_addr);
 		if (res != 1){
+#endif
 			res = inet_pton(AF_INET, argv[2], &psz);
 			if (res != 1){
 				fprintf(stderr, "wrong addr: %s\n",argv[2]);
 				exit(1);
 			}
 			memcpy(&((struct sockaddr_in*)&c)->sin_addr.s_addr, &psz, 4);
+#ifdef ENABLE_IPV6
 		} else {
 			c.ss_family = AF_INET6;
 		}
 	}
+#endif
 
 	if (strlen(argv[1]) + 1 > IFNAMSIZ)
 		fputs("tap name is too long\n", stderr), exit(1);
@@ -197,6 +201,7 @@ inf_loop:
 				((struct sockaddr_in*)&c)->sin_addr.s_addr ==
 					((struct sockaddr_in*)&peer[i].a)->sin_addr.s_addr) break;
 		break;
+#ifdef ENABLE_IPV6
 	case AF_INET6:
 		for (i=0; i < ccnt; i++)
 			if (((struct sockaddr_in6*)&c)->sin6_port ==
@@ -204,6 +209,7 @@ inf_loop:
 				0 == memcmp(((struct sockaddr_in6*)&c)->sin6_addr.s6_addr,
 					((struct sockaddr_in6*)&peer[i].a)->sin6_addr.s6_addr, 16)) break;
 		break;
+#endif
 	}
 
 	if (i == ccnt){