freebsd-ports/net/l2tpd/files/patch-file.c
Ruslan Ermilov 5b063c8581 When l2tpd(8) runs on a multi-homed machine, and you attempt to
establish an L2TP VPN connection to its external IP address from
the Windows XP box on your LAN, l2tpd(8) will reply (UDP) from
its local IP address, and not external IP address.

Implement the new global option "address" to aid in overcoming
this problem.  Also helps in environments with complex NAT
configurations.

Bump PORTREVISION.

Approved by:	sobomax
2003-04-16 13:53:27 +00:00

54 lines
1.2 KiB
C

$FreeBSD$
--- file.c.orig Sat Aug 10 03:55:14 2002
+++ file.c Wed Apr 16 16:07:19 2003
@@ -18,10 +18,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <netdb.h>
-#include <netinet/in.h>
#include <time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
#include "l2tp.h"
@@ -207,6 +204,29 @@
return 0;
}
+int set_address (char *word, char *value, int context, void *item)
+{
+ switch (context & ~CONTEXT_DEFAULT)
+ {
+ case CONTEXT_GLOBAL:
+#ifdef DEBUG_FILE
+ log (LOG_DEBUG, "set_address: Setting global IP address to %s\n",
+ value);
+#endif
+ if (!inet_aton(value, &(((struct global *) item)->addr)))
+ {
+ snprintf (filerr, sizeof (filerr), "invalid address given\n");
+ return -1;
+ }
+ break;
+ default:
+ snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",
+ word);
+ return -1;
+ }
+ return 0;
+}
+
int set_port (char *word, char *value, int context, void *item)
{
switch (context & ~CONTEXT_DEFAULT)
@@ -1196,6 +1216,7 @@
}
struct keyword words[] = {
+ {"address", &set_address},
{"port", &set_port},
{"rand source", &set_rand_source},
{"auth file", &set_authfile},