summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/Config.in1
-rw-r--r--package/l2tp/Config.in8
-rw-r--r--package/l2tp/l2tp-legacy.patch14
-rw-r--r--package/l2tp/l2tp-no-gnu-extensions.patch33
-rw-r--r--package/l2tp/l2tp-rename-func-log.patch2902
-rw-r--r--package/l2tp/l2tp-sanity.patch49
-rw-r--r--package/l2tp/l2tp.mk59
7 files changed, 3066 insertions, 0 deletions
diff --git a/package/Config.in b/package/Config.in
index ca2221f5b..db6f3f5c7 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -130,6 +130,7 @@ source "package/hostap/Config.in"
source "package/iproute2/Config.in"
source "package/ipsec-tools/Config.in"
source "package/iptables/Config.in"
+source "package/l2tp/Config.in"
source "package/libcgi/Config.in"
source "package/libcgicc/Config.in"
source "package/libpcap/Config.in"
diff --git a/package/l2tp/Config.in b/package/l2tp/Config.in
new file mode 100644
index 000000000..9295f7df8
--- /dev/null
+++ b/package/l2tp/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_L2TP
+ bool "l2tp"
+ default n
+ help
+ Layer 2 Tunnelling Protocol (RFC2661).
+
+ http://sourceforge.net/projects/l2tpd/
+
diff --git a/package/l2tp/l2tp-legacy.patch b/package/l2tp/l2tp-legacy.patch
new file mode 100644
index 000000000..39506d881
--- /dev/null
+++ b/package/l2tp/l2tp-legacy.patch
@@ -0,0 +1,14 @@
+--- l2tpd-0.70-pre20031121.oorig/osport.h 2004-07-08 22:47:52.000000000 +0200
++++ l2tpd-0.70-pre20031121/osport.h 2006-12-28 15:32:50.000000000 +0100
+@@ -37,4 +37,11 @@
+
+ #endif /* defined(SOLARIS) */
+
++#if defined __UCLIBC__ && !defined UCLIBC_SUSV3_LEGACY_MACROS
++# define index(x, y) strchr(x, y)
++# define bcopy(S1, S2, LEN) ((void)memmove(S2, S1, LEN))
++# define bzero(S1, LEN) ((void)memset(S1, 0, LEN))
++# define bcmp(S1,S2,LEN) ((memcmp(S2, S1, LEN)==0)?0:1)
++#endif /* defined __UCLIBC__ && !defined UCLIBC_SUSV3_LEGACY_MACROS */
++
+ #endif /* _OSPORT_H_ */
diff --git a/package/l2tp/l2tp-no-gnu-extensions.patch b/package/l2tp/l2tp-no-gnu-extensions.patch
new file mode 100644
index 000000000..ef07e26f5
--- /dev/null
+++ b/package/l2tp/l2tp-no-gnu-extensions.patch
@@ -0,0 +1,33 @@
+--- l2tpd-0.70-pre20031121.oorig/avpsend.c 2006-12-28 16:00:26.000000000 +0100
++++ l2tpd-0.70-pre20031121/avpsend.c 2006-12-28 16:21:06.000000000 +0100
+@@ -98,19 +98,26 @@ int add_hostname_avp(struct buffer *buf,
+ int sz = 0;
+ if(t->lac && t->lac->hostname[0]) {
+ strncpy(n,t->lac->hostname, sizeof(n));
+- sz = strnlen(t->lac->hostname, sizeof(t->lac->hostname));
++ sz = strlen(t->lac->hostname);
++ if (sz > sizeof(t->lac->hostname))
++ sz = sizeof(t->lac->hostname);
+ }
+ else if(t->lns && t->lns->hostname[0]) {
+ strncpy(n,t->lns->hostname, sizeof(n));
+- sz = strnlen(t->lns->hostname, sizeof(t->lns->hostname));
++ sz = strlen(t->lns->hostname);
++ if (sz > sizeof(t->lns->hostname))
++ sz = sizeof(t->lns->hostname);
+ }
+ else {
+ if(gethostname(n, STRLEN)) {
+ strcpy(n,"eriwan");
+ sz = 6;
+ }
+- else
+- sz = strnlen(n, sizeof(n));
++ else {
++ sz = strlen(n);
++ if (sz > sizeof(n))
++ sz = sizeof(n);
++ }
+ }
+ if(add_avp(buf, HOSTNAME_AVP, n, sz, 1))
+ return 1;
diff --git a/package/l2tp/l2tp-rename-func-log.patch b/package/l2tp/l2tp-rename-func-log.patch
new file mode 100644
index 000000000..51b5182b6
--- /dev/null
+++ b/package/l2tp/l2tp-rename-func-log.patch
@@ -0,0 +1,2902 @@
+diff -rdup l2tpd-0.70-pre20031121.oorig/aaa.c l2tpd-0.70-pre20031121/aaa.c
+--- l2tpd-0.70-pre20031121.oorig/aaa.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/aaa.c 2006-12-28 16:41:59.000000000 +0100
+@@ -144,7 +144,7 @@ int get_secret (char *us, char *them, ch
+ f = fopen (gconfig.authfile, "r");
+ if (!f)
+ {
+- log (LOG_WARN, "%s : Unable to open '%s' for authentication\n",
++ do_log (LOG_WARN, "%s : Unable to open '%s' for authentication\n",
+ __FUNCTION__, gconfig.authfile);
+ return 0;
+ }
+@@ -168,7 +168,7 @@ int get_secret (char *us, char *them, ch
+ /* us */
+ if (!*u)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: Invalid authentication info (no us), line %d\n",
+ __FUNCTION__, num);
+ continue;
+@@ -182,7 +182,7 @@ int get_secret (char *us, char *them, ch
+ /* them */
+ if (!*t)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: Invalid authentication info (nothem), line %d\n",
+ __FUNCTION__, num);
+ continue;
+@@ -195,7 +195,7 @@ int get_secret (char *us, char *them, ch
+ s++;
+ if (!*s)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: Invalid authentication info (no secret), line %d\n",
+ __FUNCTION__, num);
+ continue;
+@@ -204,7 +204,7 @@ int get_secret (char *us, char *them, ch
+ (!strcasecmp (t, them) || !strcasecmp (t, "*")))
+ {
+ #ifdef DEBUG_AUTH
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: we are '%s', they are '%s', secret is '%s'\n",
+ __FUNCTION__, u, t, s);
+ #endif
+@@ -223,12 +223,12 @@ int handle_challenge (struct tunnel *t,
+ char *them;
+ if (!t->lns && !t->lac)
+ {
+- log (LOG_DEBUG, "%s: No LNS or LAC to handle challenge!\n",
++ do_log (LOG_DEBUG, "%s: No LNS or LAC to handle challenge!\n",
+ __FUNCTION__);
+ return -1;
+ }
+ #ifdef DEBUG_AUTH
+- log (LOG_DEBUG, "%s: making response for tunnel: %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: making response for tunnel: %d\n", __FUNCTION__,
+ t->ourtid);
+ #endif
+ if (t->lns)
+@@ -255,19 +255,19 @@ int handle_challenge (struct tunnel *t,
+ }
+ if (!get_secret (us, them, chal->secret, sizeof (chal->secret)))
+ {
+- log (LOG_DEBUG, "%s: no secret found for us='%s' and them='%s'\n",
++ do_log (LOG_DEBUG, "%s: no secret found for us='%s' and them='%s'\n",
+ __FUNCTION__, us, them);
+ return -1;
+ }
+
+ #if DEBUG_AUTH
+- log (LOG_DEBUG, "*%s: Here comes the chal->ss:\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "*%s: Here comes the chal->ss:\n", __FUNCTION__);
+ bufferDump (&chal->ss, 1);
+
+- log (LOG_DEBUG, "%s: Here comes the secret\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Here comes the secret\n", __FUNCTION__);
+ bufferDump (chal->secret, strlen (chal->secret));
+
+- log (LOG_DEBUG, "%s: Here comes the challenge\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Here comes the challenge\n", __FUNCTION__);
+ bufferDump (chal->challenge, strlen (chal->challenge));
+ #endif
+
+@@ -278,7 +278,7 @@ int handle_challenge (struct tunnel *t,
+ MD5Update (&chal->md5, chal->challenge, strlen(chal->challenge));
+ MD5Final (chal->response, &chal->md5);
+ #ifdef DEBUG_AUTH
+- log (LOG_DEBUG, "response is %X%X%X%X to '%s' and %X%X%X%X, %d\n",
++ do_log (LOG_DEBUG, "response is %X%X%X%X to '%s' and %X%X%X%X, %d\n",
+ *((int *) &chal->response[0]),
+ *((int *) &chal->response[4]),
+ *((int *) &chal->response[8]),
+@@ -321,7 +321,7 @@ struct lns *get_lns (struct tunnel *t)
+ (ntohl (t->peer.sin_addr.s_addr) <= ntohl (ipr->end)))
+ {
+ #ifdef DEBUG_AAA
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "get_lns: Rule %s to %s, sense %s matched %s\n",
+ IPADDY (ipr->start), IPADDY (ipr->end),
+ (ipr->sense ? "allow" : "deny"), IPADDY (t->addr));
+@@ -349,14 +349,14 @@ struct lns *get_lns (struct tunnel *t)
+ void print_md5 (void *md5)
+ {
+ int *i = (int *) md5;
+- log (LOG_DEBUG, "%X%X%X%X\n", i[0], i[1], i[2], i[3], i[4]);
++ do_log (LOG_DEBUG, "%X%X%X%X\n", i[0], i[1], i[2], i[3], i[4]);
+ }
+
+ inline void print_challenge (struct challenge *chal)
+ {
+- log (LOG_DEBUG, "vector: ");
++ do_log (LOG_DEBUG, "vector: ");
+ print_md5 (chal->vector);
+- log (LOG_DEBUG, "secret: %s\n", chal->secret);
++ do_log (LOG_DEBUG, "secret: %s\n", chal->secret);
+ }
+ #endif
+ void encrypt_avp (struct buffer *buf, _u16 len, struct tunnel *t)
+@@ -405,9 +405,9 @@ void encrypt_avp (struct buffer *buf, _u
+ while (ptr < end)
+ {
+ #if DEBUG_HIDDEN
+- log (LOG_DEBUG, "%s: The digest to be XOR'ed\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: The digest to be XOR'ed\n", __FUNCTION__);
+ bufferDump (digest, MD_SIG_SIZE);
+- log (LOG_DEBUG, "%s: The plaintext to be XOR'ed\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: The plaintext to be XOR'ed\n", __FUNCTION__);
+ bufferDump (ptr, MD_SIG_SIZE);
+ #endif
+ for (cnt = 0; cnt < MD_SIG_SIZE; cnt++, ptr++)
+@@ -415,7 +415,7 @@ void encrypt_avp (struct buffer *buf, _u
+ *ptr = *ptr ^ digest[cnt];
+ }
+ #if DEBUG_HIDDEN
+- log (LOG_DEBUG, "%s: The result of XOR\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: The result of XOR\n", __FUNCTION__);
+ bufferDump (previous_segment, MD_SIG_SIZE);
+ #endif
+ if (ptr < end)
+@@ -449,7 +449,7 @@ int decrypt_avp (char *buf, struct tunne
+ end = buf + olen;
+ if (!t->chal_us.vector)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "decrypt_avp: Hidden bit set, but no random vector specified!\n");
+ return -EINVAL;
+ }
+@@ -464,9 +464,9 @@ int decrypt_avp (char *buf, struct tunne
+ MD5Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
+ MD5Final (digest, &t->chal_us.md5);
+ #ifdef DEBUG_HIDDEN
+- log (LOG_DEBUG, "attribute is %d and challenge is: ", attr);
++ do_log (LOG_DEBUG, "attribute is %d and challenge is: ", attr);
+ print_challenge (&t->chal_us);
+- log (LOG_DEBUG, "md5 is: ");
++ do_log (LOG_DEBUG, "md5 is: ");
+ print_md5 (digest);
+ #endif
+ while (ptr < end)
+@@ -498,7 +498,7 @@ int decrypt_avp (char *buf, struct tunne
+ len = ntohs (new_hdr->attr) + sizeof (struct avp_hdr);
+ if (len > olen - 2)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "decrypt_avp: Decrypted length is too long (%d > %d)\n", len,
+ olen - 2);
+ return -EINVAL;
+diff -rdup l2tpd-0.70-pre20031121.oorig/avp.c l2tpd-0.70-pre20031121/avp.c
+--- l2tpd-0.70-pre20031121.oorig/avp.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/avp.c 2006-12-28 16:41:59.000000000 +0100
+@@ -156,7 +156,7 @@ int validate_msgtype_avp(int attr, stru
+ if ((c != t->self) && (c->msgtype < Hello))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate tunnel inside a call!\n",
+ __func__);
+ return -EINVAL;
+@@ -173,7 +173,7 @@ int validate_msgtype_avp(int attr, stru
+ */
+
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate SCCRQ with state != 0\n",
+ __func__);
+ return -EINVAL;
+@@ -183,7 +183,7 @@ int validate_msgtype_avp(int attr, stru
+ if (t->state != SCCRQ)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate SCCRP with state != SCCRQ!\n",
+ __func__);
+ return -EINVAL;
+@@ -193,7 +193,7 @@ int validate_msgtype_avp(int attr, stru
+ if (t->state != SCCRP)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate SCCCN with state != SCCRP!\n",
+ __func__);
+ return -EINVAL;
+@@ -203,7 +203,7 @@ int validate_msgtype_avp(int attr, stru
+ if (t->state != SCCCN)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate ICRQ when state != SCCCN\n",
+ __func__);
+ return -EINVAL;
+@@ -211,7 +211,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c != t->self)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate ICRQ on a call!\n",
+ __func__);
+ return -EINVAL;
+@@ -221,7 +221,7 @@ int validate_msgtype_avp(int attr, stru
+ if (t->state != SCCCN)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate ICRP on tunnel!=SCCCN\n",
+ __func__);
+ return -EINVAL;
+@@ -229,7 +229,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c->state != ICRQ)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate ICRP when state != ICRQ\n",
+ __func__);
+ return -EINVAL;
+@@ -239,7 +239,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c->state != ICRP)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate ICCN when state != ICRP\n",
+ __func__);
+ return -EINVAL;
+@@ -249,7 +249,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c->state != ICCN)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate SLI when state != ICCN\n",
+ __func__);
+ return -EINVAL;
+@@ -259,7 +259,7 @@ int validate_msgtype_avp(int attr, stru
+ if (t->state != SCCCN)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate OCRP on tunnel!=SCCCN\n",
+ __func__);
+ return -EINVAL;
+@@ -267,7 +267,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c->state != OCRQ)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate OCRP when state != OCRQ\n",
+ __func__);
+ return -EINVAL;
+@@ -278,7 +278,7 @@ int validate_msgtype_avp(int attr, stru
+ if (c->state != OCRQ)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: attempting to negotiate OCCN when state != OCRQ\n",
+ __func__);
+ return -EINVAL;
+@@ -289,7 +289,7 @@ int validate_msgtype_avp(int attr, stru
+ case Hello:
+ break;
+ default:
+- log (LOG_WARN, "%s: unknown messages type %d\n",
++ do_log (LOG_WARN, "%s: unknown messages type %d\n",
+ __func__, get16(p));
+ return -EINVAL;
+ }
+@@ -332,7 +332,7 @@ int ignore_avp (struct tunnel *t, struct
+ *
+ */
+ if (debug_avp)
+- log (LOG_DEBUG, "%s : Ignoring AVP\n", __func__);
++ do_log (LOG_DEBUG, "%s : Ignoring AVP\n", __func__);
+ return 0;
+ }
+
+@@ -347,22 +347,22 @@ int message_type_avp (struct tunnel *t,
+
+ if ((c->msgtype > MAX_MSG) || (!msgtypes[c->msgtype]))
+ {
+- log (LOG_DEBUG, "%s: unknown message type %d\n", __func__,
++ do_log (LOG_DEBUG, "%s: unknown message type %d\n", __func__,
+ c->msgtype);
+ return -EINVAL;
+ }
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: message type %d (%s)\n", __func__,
++ do_log (LOG_DEBUG, "%s: message type %d (%s)\n", __func__,
+ c->msgtype, msgtypes[c->msgtype]);
+ if (c->msgtype == ICRQ)
+ {
+ struct call *tmp;
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: new incoming call\n", __func__);
++ do_log (LOG_DEBUG, "%s: new incoming call\n", __func__);
+ tmp = new_call (t);
+ if (!tmp)
+ {
+- log (LOG_WARN, "%s: unable to create new call\n", __func__);
++ do_log (LOG_WARN, "%s: unable to create new call\n", __func__);
+ return -EINVAL;
+ }
+ tmp->next = t->call_head;
+@@ -384,7 +384,7 @@ int rand_vector_avp (struct tunnel *t, s
+ u_int8_t *p = data + sizeof(struct avp_hdr);
+ int datalen = avplen - sizeof(struct avp_hdr);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: random vector len %d\n", __func__, datalen);
++ do_log (LOG_DEBUG, "%s: random vector len %d\n", __func__, datalen);
+ t->chal_us.vector = (unsigned char *)p;
+ t->chal_us.vector_len = datalen;
+ return 0;
+@@ -394,7 +394,7 @@ int rand_vector_avp (struct tunnel *t, s
+ int seq_reqd_avp (struct tunnel *t, struct call *c, void *data, int datalen)
+ {
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer requires sequencing.\n", __func__);
++ do_log (LOG_DEBUG, "%s: peer requires sequencing.\n", __func__);
+ c->seq_reqd = -1;
+ return 0;
+ }
+@@ -411,7 +411,7 @@ int result_code_avp (struct tunnel *t, s
+ if ((c->msgtype == StopCCN) && ((result > 7) || (result < 1)))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: (StopCCN) result code out of range ! (1 < %d < 7)\n",
+ __func__, result);
+ return 0;
+@@ -420,7 +420,7 @@ int result_code_avp (struct tunnel *t, s
+ if ((c->msgtype == CDN) && ((result > 11) || (result < 1)))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: (CDN) result code out of range !(1 < %d < 11)\n",
+ __func__, result);
+ return 0;
+@@ -435,14 +435,14 @@ int result_code_avp (struct tunnel *t, s
+ {
+ if(c->msgtype == StopCCN)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: peer closing for reason %d (%s), error = %d (%s)\n",
+ __func__, result, stopccn_result_codes[result], error,
+ c->errormsg);
+ }
+ else
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: peer closing for reason %d (%s), error = %d (%s)\n",
+ __func__, result, cdn_result_codes[result], error,
+ c->errormsg);
+@@ -458,7 +458,7 @@ int protocol_version_avp (struct tunnel
+ u_int8_t *p = data + sizeof(struct avp_hdr);
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer is using version %d, revision %d.\n",
++ do_log (LOG_DEBUG, "%s: peer is using version %d, revision %d.\n",
+ __func__,*p, *(p+1));
+ return 0;
+ }
+@@ -471,7 +471,7 @@ int framing_caps_avp (struct tunnel *t,
+ u_int16_t caps = get16(p + 2);
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: supported peer frames:%s %s\n", __func__,
++ do_log (LOG_DEBUG, "%s: supported peer frames:%s %s\n", __func__,
+ caps & ASYNC_FRAMING ? "async" : "",
+ caps & SYNC_FRAMING ? "sync" : "");
+
+@@ -487,7 +487,7 @@ int bearer_caps_avp (struct tunnel *t, s
+ u_int16_t caps = get16(p + 2);
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: supported peer bearers:%s %s\n",
++ do_log (LOG_DEBUG, "%s: supported peer bearers:%s %s\n",
+ __func__,
+ caps & ANALOG_BEARER ? "analog" : "",
+ caps & DIGITAL_BEARER ? "digital" : "");
+@@ -504,7 +504,7 @@ int firmware_rev_avp (struct tunnel *t,
+
+ t->firmware = get16(p);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports firmware version %d (0x%.4X)\n",
++ do_log (LOG_DEBUG, "%s: peer reports firmware version %d (0x%.4X)\n",
+ __func__, t->firmware, t->firmware);
+ return 0;
+ }
+@@ -517,7 +517,7 @@ int bearer_type_avp (struct tunnel *t, s
+
+ t->call_head->bearer = get16(p + 2);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer bears: %s\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer bears: %s\n", __func__,
+ (t->call_head->bearer & ANALOG_BEARER) ? "analog" : "digital");
+ return 0;
+ }
+@@ -529,7 +529,7 @@ int frame_type_avp (struct tunnel *t, st
+
+ c->frame = get16(p + 2);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer uses:%s frames\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer uses:%s frames\n", __func__,
+ (c->frame & ASYNC_FRAMING) ? "async" : "sync");
+ return 0;
+ }
+@@ -544,7 +544,7 @@ int hostname_avp (struct tunnel *t, stru
+ t->hostname[datalen] = '\0';
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports hostname '%s'\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer reports hostname '%s'\n", __func__,
+ t->hostname);
+
+ return 0;
+@@ -561,7 +561,7 @@ int calling_number_avp (struct tunnel *t
+ t->call_head->dialing[datalen] = '\0';
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports dialing number '%s'\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer reports dialing number '%s'\n", __func__,
+ t->call_head->dialing);
+
+ return 0;
+@@ -578,7 +578,7 @@ int called_number_avp (struct tunnel *t,
+ t->call_head->dialed[datalen] = '\0';
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports dialed number '%s'\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer reports dialed number '%s'\n", __func__,
+ t->call_head->dialed);
+
+ return 0;
+@@ -595,7 +595,7 @@ int sub_address_avp (struct tunnel *t, s
+ t->call_head->subaddy[datalen] = '\0';
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports subaddress '%s'\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer reports subaddress '%s'\n", __func__,
+ t->call_head->subaddy);
+ return 0;
+ }
+@@ -610,7 +610,7 @@ int vendor_avp (struct tunnel *t, struct
+ t->vendor[datalen] = '\0';
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer reports vendor '%s'\n", __func__, t->vendor);
++ do_log (LOG_DEBUG, "%s: peer reports vendor '%s'\n", __func__, t->vendor);
+ return 0;
+ }
+
+@@ -627,7 +627,7 @@ int challenge_avp (struct tunnel *t, str
+ t->chal_us.state = STATE_CHALLENGED;
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: challenge avp found\n", __func__);
++ do_log (LOG_DEBUG, "%s: challenge avp found\n", __func__);
+
+ return 0;
+ }
+@@ -639,7 +639,7 @@ int chalresp_avp (struct tunnel *t, stru
+
+ memcpy(t->chal_them.reply, p, MD_SIG_SIZE);
+ if(debug_avp)
+- log(LOG_DEBUG, "%s: Challenge reply found\n", __func__);
++ do_log(LOG_DEBUG, "%s: Challenge reply found\n", __func__);
+ return 0;
+ }
+
+@@ -655,7 +655,7 @@ int assigned_tunnel_avp (struct tunnel *
+ else
+ t->tid = id;
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: using peer's tunnel %d\n", __func__, id);
++ do_log (LOG_DEBUG, "%s: using peer's tunnel %d\n", __func__, id);
+ return 0;
+ }
+
+@@ -678,7 +678,7 @@ int assigned_session_avp (struct tunnel
+ };
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: assigned session id: %d\n", __func__, id);
++ do_log (LOG_DEBUG, "%s: assigned session id: %d\n", __func__, id);
+ return 0;
+ }
+
+@@ -690,7 +690,7 @@ int packet_delay_avp (struct tunnel *t,
+
+ c->ppd = get16(p);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer's delay is %d 1/10's of a second\n", __func__,
++ do_log (LOG_DEBUG, "%s: peer's delay is %d 1/10's of a second\n", __func__,
+ c->ppd);
+ return 0;
+ }
+@@ -705,7 +705,7 @@ int call_serno_avp (struct tunnel *t, st
+
+ t->call_head->serno = get32(p);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: serial number is %d\n", __func__,
++ do_log (LOG_DEBUG, "%s: serial number is %d\n", __func__,
+ t->call_head->serno);
+ return 0;
+ }
+@@ -717,7 +717,7 @@ int rx_speed_avp (struct tunnel *t, stru
+
+ c->rxspeed = get32(p);
+ if(debug_avp)
+- log(LOG_DEBUG, "%s: receive baud rate is %d\n", __func__, c->rxspeed);
++ do_log(LOG_DEBUG, "%s: receive baud rate is %d\n", __func__, c->rxspeed);
+ return 0;
+ }
+
+@@ -728,7 +728,7 @@ int tx_speed_avp (struct tunnel *t, stru
+
+ c->txspeed = get32(p);
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: transmit baud rate is %d\n",
++ do_log (LOG_DEBUG, "%s: transmit baud rate is %d\n",
+ __func__, c->txspeed);
+ return 0;
+ }
+@@ -741,7 +741,7 @@ int call_physchan_avp (struct tunnel *t,
+
+ t->call_head->physchan = get32(p);
+ if (debug_avp)
+- log(LOG_DEBUG, "%s: physical channel is %d\n", __func__,
++ do_log(LOG_DEBUG, "%s: physical channel is %d\n", __func__,
+ t->call_head->physchan);
+ return 0;
+ }
+@@ -756,7 +756,7 @@ int receive_window_size_avp (struct tunn
+ /* if (c->rws >= 0)
+ c->fbit = FBIT; */
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: peer wants RWS of %d. Will use flow control.\n",
++ do_log (LOG_DEBUG, "%s: peer wants RWS of %d. Will use flow control.\n",
+ __func__, t->rws);
+ return 0;
+ }
+@@ -781,11 +781,11 @@ int handle_avps (struct buffer *buf, str
+ avp = (struct avp_hdr *) data;
+
+ if (debug_avp)
+- log (LOG_DEBUG, "%s: handling avp's for tunnel %d, call %d\n",
++ do_log (LOG_DEBUG, "%s: handling avp's for tunnel %d, call %d\n",
+ __func__, t->ourtid, c->ourcid);
+
+ if(len < 6) {
+- log (LOG_WARN, "%s: packet too small\n", __func__);
++ do_log (LOG_WARN, "%s: packet too small\n", __func__);
+ set_error(c, ERROR_LENGTH, "Invalid message length");
+ return -EINVAL;
+ }
+@@ -800,7 +800,7 @@ int handle_avps (struct buffer *buf, str
+ {
+ if (AMBIT(rlen))
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: unhandeled mandatory attribute %d. Closing %s.\n",
+ __func__, attr, (c != t->self) ? "call" : "tunnel");
+ set_error (c, VENDOR_ERROR,
+@@ -810,7 +810,7 @@ int handle_avps (struct buffer *buf, str
+ else
+ {
+ if (DEBUG)
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: handeled attribute %d.\n",
+ __func__, attr);
+ goto next;
+@@ -818,7 +818,7 @@ int handle_avps (struct buffer *buf, str
+ }
+ if (ALENGTH (rlen) > len)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: AVP reported length > remaining packet length\n",
+ __func__);
+ set_error (c, ERROR_LENGTH, "Invalid AVP length");
+@@ -826,7 +826,7 @@ int handle_avps (struct buffer *buf, str
+ }
+ if (ALENGTH (rlen) < sizeof (struct avp_hdr))
+ {
+- log (LOG_WARN, "%s: AVP reported length too small (%d).\n",
++ do_log (LOG_WARN, "%s: AVP reported length too small (%d).\n",
+ __func__, ALENGTH (rlen));
+ set_error (c, ERROR_LENGTH, "AVP too small");
+ return -EINVAL;
+@@ -835,7 +835,7 @@ int handle_avps (struct buffer *buf, str
+ if((avps[attr].flags & AVP_F_FIXLEN) ?
+ (ALENGTH(rlen) - sizeof(struct avp_hdr)) != avps[attr].sz :
+ (ALENGTH(rlen) - sizeof(struct avp_hdr)) > avps[attr].sz) {
+- log (LOG_DEBUG, "%s: %s avp size mismatch (%d %s %d)\n",
++ do_log (LOG_DEBUG, "%s: %s avp size mismatch (%d %s %d)\n",
+ __func__,
+ avps[attr].description,
+ (avps[attr].flags & AVP_F_FIXLEN) ? "!=" : "<",
+@@ -846,14 +846,14 @@ int handle_avps (struct buffer *buf, str
+ }
+ if (attr && firstavp)
+ {
+- log (LOG_WARN, "%s: First AVP was not message type.\n",
++ do_log (LOG_WARN, "%s: First AVP was not message type.\n",
+ __func__);
+ set_error (c, VENDOR_ERROR, "First AVP must be message type");
+ return -EINVAL;
+ }
+ if (AZBITS (rlen))
+ {
+- log (LOG_WARN, "%s: %sAVP has reserved bits set.\n", __func__,
++ do_log (LOG_WARN, "%s: %sAVP has reserved bits set.\n", __func__,
+ AMBIT (rlen) ? "Mandatory " : "");
+ if (AMBIT (rlen))
+ {
+@@ -866,7 +866,7 @@ int handle_avps (struct buffer *buf, str
+ /* decryption */
+ if (AHBIT (rlen))
+ {
+- log (LOG_DEBUG, "%s: Hidden bit set on AVP.\n", __func__);
++ do_log (LOG_DEBUG, "%s: Hidden bit set on AVP.\n", __func__);
+ /* We want to rewrite the AVP as an unhidden AVP
+ and then pass it along as normal. Remeber how
+ long the AVP was in the first place though! */
+@@ -874,7 +874,7 @@ int handle_avps (struct buffer *buf, str
+ if (decrypt_avp (data, t))
+ {
+ if (debug_avp)
+- log (LOG_WARN, "%s: Unable to handle hidden %sAVP\n:",
++ do_log (LOG_WARN, "%s: Unable to handle hidden %sAVP\n:",
+ __func__,
+ (AMBIT (rlen) ? "mandatory " : ""));
+ if (AMBIT (rlen))
+@@ -899,7 +899,7 @@ int handle_avps (struct buffer *buf, str
+ if(avps[attr].validate(attr, t, c, avp, ALENGTH (rlen))) {
+ if (AMBIT (rlen))
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: verification of AVP %d (%s) failed.\n",
+ __func__, attr,
+ avps[attr].description);
+@@ -909,7 +909,7 @@ int handle_avps (struct buffer *buf, str
+ else
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Bad exit status handling attribute %d (%s).\n",
+ __func__, attr,
+ avps[attr].description);
+@@ -924,7 +924,7 @@ int handle_avps (struct buffer *buf, str
+ {
+ if (AMBIT (rlen))
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: Bad exit status handling mandatory attribute %d (%s).\n",
+ __func__, attr,
+ avps[attr].description);
+@@ -934,7 +934,7 @@ int handle_avps (struct buffer *buf, str
+ else
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Bad exit status handling attribute %d (%s).\n",
+ __func__, attr,
+ avps[attr].description);
+@@ -945,7 +945,7 @@ int handle_avps (struct buffer *buf, str
+ {
+ if (AMBIT (rlen))
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: No handler for mandatory attribute %d (%s). Closing %s.\n",
+ __func__, attr,
+ avps[attr].description,
+@@ -958,7 +958,7 @@ int handle_avps (struct buffer *buf, str
+ else
+ {
+ if (DEBUG)
+- log (LOG_WARN, "%s: no handler for atribute %d (%s).\n",
++ do_log (LOG_WARN, "%s: no handler for atribute %d (%s).\n",
+ __func__, attr,
+ avps[attr].description);
+ }
+@@ -980,7 +980,7 @@ int handle_avps (struct buffer *buf, str
+ }
+ if (len != 0)
+ {
+- log (LOG_WARN, "%s: negative overall packet length\n", __func__);
++ do_log (LOG_WARN, "%s: negative overall packet length\n", __func__);
+ return -EINVAL;
+ }
+
+diff -rdup l2tpd-0.70-pre20031121.oorig/avpsend.c l2tpd-0.70-pre20031121/avpsend.c
+--- l2tpd-0.70-pre20031121.oorig/avpsend.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/avpsend.c 2006-12-28 16:41:59.000000000 +0100
+@@ -29,7 +29,7 @@ static int add_avp(struct buffer *buf, u
+ u_int8_t *p = buf->start + buf->len;
+
+ if(avpid > AVP_MAX || !avps[avpid].flags) {
+- log(LOG_DEBUG, "%s: invalid avp id %d\n", __func__, avpid);
++ do_log(LOG_DEBUG, "%s: invalid avp id %d\n", __func__, avpid);
+ return 1;
+ }
+
+diff -rdup l2tpd-0.70-pre20031121.oorig/call.c l2tpd-0.70-pre20031121/call.c
+--- l2tpd-0.70-pre20031121.oorig/call.c 2004-07-08 22:47:52.000000000 +0200
++++ l2tpd-0.70-pre20031121/call.c 2006-12-28 16:41:59.000000000 +0100
+@@ -138,11 +138,11 @@ int read_packet (struct buffer *buf, int
+ return 0;
+ }
+ errors++;
+- log (LOG_DEBUG, "%s: Error %d (%s)\n", __FUNCTION__, errno,
++ do_log (LOG_DEBUG, "%s: Error %d (%s)\n", __FUNCTION__, errno,
+ strerror (errno));
+ if (errors > 10)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Too many errors. Declaring call dead.\n",
+ __FUNCTION__);
+ return -errno;
+@@ -154,7 +154,7 @@ int read_packet (struct buffer *buf, int
+ case PPP_FLAG:
+ if (escape)
+ {
+- log (LOG_DEBUG, "%s: got an escaped PPP_FLAG\n",
++ do_log (LOG_DEBUG, "%s: got an escaped PPP_FLAG\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -190,12 +190,12 @@ int read_packet (struct buffer *buf, int
+ buf->len++;
+ break;
+ };
+- log (LOG_WARN, "%s: read overrun\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: read overrun\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+ /* I should never get here */
+- log (LOG_WARN, "%s: You should not see this message. If you do, please " \
++ do_log (LOG_WARN, "%s: You should not see this message. If you do, please " \
+ "enter a bug report at http://www.l2tpd.org", __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -207,7 +207,7 @@ void call_close (struct call *c)
+ struct call *tmp, *tmp2;
+ if (!c || !c->container)
+ {
+- log (LOG_DEBUG, "%s: called on null call or containerless call\n",
++ do_log (LOG_DEBUG, "%s: called on null call or containerless call\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -231,7 +231,7 @@ void call_close (struct call *c)
+ || ((struct tunnel *) se->data == c->container))
+ {
+ #ifdef DEBUG_CLOSE
+- log (LOG_DEBUG, "%s: Descheduling event\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Descheduling event\n", __FUNCTION__);
+ #endif
+ if (ose)
+ {
+@@ -262,7 +262,7 @@ void call_close (struct call *c)
+ /* Really close this tunnel, as our
+ StopCCN has been ack'd */
+ #ifdef DEBUG_CLOSE
+- log (LOG_DEBUG, "%s: Actually closing tunnel %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: Actually closing tunnel %d\n", __FUNCTION__,
+ c->container->ourtid);
+ #endif
+ #ifdef USE_KERNEL
+@@ -298,7 +298,7 @@ void call_close (struct call *c)
+ if (packet_dump)
+ do_packet_dump (buf);
+ #ifdef DEBUG_CLOSE
+- log (LOG_DEBUG, "%s: enqueing close message for tunnel\n",
++ do_log (LOG_DEBUG, "%s: enqueing close message for tunnel\n",
+ __FUNCTION__);
+ #endif
+ control_xmit (buf);
+@@ -315,7 +315,7 @@ void call_close (struct call *c)
+ call_close (tmp);
+ tmp = tmp2;
+ }
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s : Connection %d closed to %s, port %d (%s)\n", __FUNCTION__,
+ c->container->tid,
+ IPADDY (c->container->peer.sin_addr),
+@@ -335,7 +335,7 @@ void call_close (struct call *c)
+ if (c->closing)
+ {
+ #ifdef DEBUG_CLOSE
+- log (LOG_DEBUG, "%s: Actually closing call %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: Actually closing call %d\n", __FUNCTION__,
+ c->ourcid);
+ #endif
+ destroy_call (c);
+@@ -375,11 +375,11 @@ void call_close (struct call *c)
+ if (packet_dump)
+ do_packet_dump (buf);
+ #ifdef DEBUG_CLOSE
+- log (LOG_DEBUG, "%s: enqueuing close message for call %d\n",
++ do_log (LOG_DEBUG, "%s: enqueuing close message for call %d\n",
+ __FUNCTION__, c->ourcid);
+ #endif
+ control_xmit (buf);
+- log (LOG_LOG, "%s: Call %d to %s disconnected\n", __FUNCTION__,
++ do_log (LOG_LOG, "%s: Call %d to %s disconnected\n", __FUNCTION__,
+ c->ourcid, IPADDY (c->container->peer.sin_addr));
+ }
+ /*
+@@ -463,7 +463,7 @@ void destroy_call (struct call *c)
+ c->lac->active)
+ {
+ #ifdef DEBUG_MAGIC
+- log (LOG_LOG, "%s: Will redial in %d seconds\n", __FUNCTION__,
++ do_log (LOG_LOG, "%s: Will redial in %d seconds\n", __FUNCTION__,
+ c->lac->rtimeout);
+ #endif
+ tv.tv_sec = c->lac->rtimeout;
+@@ -519,7 +519,7 @@ struct call *new_call (struct tunnel *pa
+ temp = (int *)entropy_buf;
+ tmp->ourcid = *temp & 0xFFFF;
+ #ifdef DEBUG_ENTROPY
+- log(LOG_DEBUG, "ourcid = %u, entropy_buf = %hx\n", tmp->ourcid, *temp);
++ do_log(LOG_DEBUG, "ourcid = %u, entropy_buf = %hx\n", tmp->ourcid, *temp);
+ #endif
+ }
+ #else
+@@ -608,7 +608,7 @@ struct call *get_call (int tunnel, int c
+ return sc;
+ sc = sc->next;
+ }
+- log (LOG_DEBUG, "%s: can't find call %d in tunnel %d\n",
++ do_log (LOG_DEBUG, "%s: can't find call %d in tunnel %d\n",
+ __FUNCTION__, call, tunnel);
+ return NULL;
+ }
+@@ -619,7 +619,7 @@ struct call *get_call (int tunnel, int c
+ }
+ st = st->next;
+ }
+- log (LOG_DEBUG, "%s:can't find tunnel %d\n", __FUNCTION__, tunnel);
++ do_log (LOG_DEBUG, "%s:can't find tunnel %d\n", __FUNCTION__, tunnel);
+ return NULL;
+ }
+ else
+@@ -632,7 +632,7 @@ struct call *get_call (int tunnel, int c
+
+ if (call)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: call ID specified, but no tunnel ID specified. tossing.\n",
+ __FUNCTION__);
+ return NULL;
+@@ -643,13 +643,13 @@ struct call *get_call (int tunnel, int c
+ */
+ if (debug_tunnel)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: allocating new tunnel for host %s, port %d.\n",
+ __FUNCTION__, IPADDY (addr), ntohs (port));
+ }
+ if (!(st = new_tunnel ()))
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: unable to allocate new tunnel for host %s, port %d.\n",
+ __FUNCTION__, IPADDY (addr), ntohs (port));
+ return NULL;
+diff -rdup l2tpd-0.70-pre20031121.oorig/control.c l2tpd-0.70-pre20031121/control.c
+--- l2tpd-0.70-pre20031121.oorig/control.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/control.c 2006-12-28 16:41:59.000000000 +0100
+@@ -138,14 +138,14 @@ void hello (void *tun)
+ if (packet_dump)
+ do_packet_dump (buf);
+ #ifdef DEBUG_HELLO
+- log (LOG_DEBUG, "%s: sending Hello on %d\n", __FUNCTION__, t->ourtid);
++ do_log (LOG_DEBUG, "%s: sending Hello on %d\n", __FUNCTION__, t->ourtid);
+ #endif
+ control_xmit (buf);
+ /*
+ * Schedule another Hello in a little bit.
+ */
+ #ifdef DEBUG_HELLO
+- log (LOG_DEBUG, "%s: scheduling another Hello on %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: scheduling another Hello on %d\n", __FUNCTION__,
+ t->ourtid);
+ #endif
+ t->hello = schedule (tv, hello, (void *) t);
+@@ -157,7 +157,7 @@ void control_zlb (struct buffer *buf, st
+ add_control_hdr (t, c, buf);
+ t->control_seq_num--;
+ #ifdef DEBUG_ZLB
+- log (LOG_DEBUG, "%s: sending control ZLB on tunnel %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: sending control ZLB on tunnel %d\n", __FUNCTION__,
+ t->tid);
+ #endif
+ udp_xmit (buf);
+@@ -187,12 +187,12 @@ int control_finish (struct tunnel *t, st
+ char dummy_buf[128] = "/var/l2tp/"; /* jz: needed to read /etc/ppp/var.options - just kick it if you dont like */
+ if (c->msgtype < 0)
+ {
+- log (LOG_DEBUG, "%s: Whoa... non-ZLB with no message type!\n",
++ do_log (LOG_DEBUG, "%s: Whoa... non-ZLB with no message type!\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+ if (debug_state)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: message type is %s(%d). Tunnel is %d, call is %d.\n",
+ __FUNCTION__, msgtypes[c->msgtype], c->msgtype, t->tid, c->cid);
+ switch (c->msgtype)
+@@ -247,7 +247,7 @@ int control_finish (struct tunnel *t, st
+ if (packet_dump)
+ do_packet_dump (buf);
+ if (debug_state)
+- log (LOG_DEBUG, "%s: control_finish: sending SCCRQ\n",
++ do_log (LOG_DEBUG, "%s: control_finish: sending SCCRQ\n",
+ __FUNCTION__);
+ control_xmit (buf);
+ }
+@@ -289,7 +289,7 @@ int control_finish (struct tunnel *t, st
+ if (packet_dump)
+ do_packet_dump (buf);
+ if (debug_state)
+- log (LOG_DEBUG, "%s: sending ICRQ\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: sending ICRQ\n", __FUNCTION__);
+ control_xmit (buf);
+ }
+ else
+@@ -342,7 +342,7 @@ int control_finish (struct tunnel *t, st
+ if (t->tid <= 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify assigned tunnel ID. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify your assigned tunnel ID");
+@@ -351,7 +351,7 @@ int control_finish (struct tunnel *t, st
+ if (!(t->lns = get_lns (t)))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Denied connection to unauthorized peer %s\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr));
+ set_error (c, VENDOR_ERROR, "No Authorization");
+@@ -362,7 +362,7 @@ int control_finish (struct tunnel *t, st
+ if (t->fc < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify framing capability. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify framing capability");
+@@ -374,7 +374,7 @@ int control_finish (struct tunnel *t, st
+ * We shouldn't be requiring a bearer capabilities avp to be present in
+ * SCCRQ and SCCRP as they aren't required
+ if (t->bc < 0 ) {
+- if (DEBUG) log(LOG_DEBUG,
++ if (DEBUG) do_log(LOG_DEBUG,
+ "%s: Peer did not specify bearer capability. Closing.\n",__FUNCTION__);
+ set_error(c, VENDOR_ERROR, "Specify bearer capability");
+ return -EINVAL;
+@@ -382,7 +382,7 @@ int control_finish (struct tunnel *t, st
+ if ((!strlen (t->hostname)) && ((t->chal_us.state) || ((t->lns->challenge))))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify hostname. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify your hostname");
+@@ -401,7 +401,7 @@ int control_finish (struct tunnel *t, st
+ * But it is legitimate for two different remote systems
+ * to use the same tid
+ */
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer requested tunnel %d twice, ignoring second one.\n",
+ __FUNCTION__, t->tid);
+ c->needclose = 0;
+@@ -438,7 +438,7 @@ int control_finish (struct tunnel *t, st
+ t->chal_them.challenge = malloc(MD_SIG_SIZE);
+ if (!(t->chal_them.challenge))
+ {
+- log (LOG_WARN, "%s: malloc failed\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: malloc failed\n", __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "malloc failed");
+ toss (buf);
+ return -EINVAL;
+@@ -448,7 +448,7 @@ int control_finish (struct tunnel *t, st
+ if (handle_challenge (t, &t->chal_them))
+ {
+ /* We already know what to expect back */
+- log (LOG_WARN, "%s: No secret for '%s'\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: No secret for '%s'\n", __FUNCTION__,
+ t->hostname);
+ set_error (c, VENDOR_ERROR, "No secret on our side");
+ toss (buf);
+@@ -461,7 +461,7 @@ int control_finish (struct tunnel *t, st
+ do_packet_dump (buf);
+ c->cnu = 0;
+ if (debug_state)
+- log (LOG_DEBUG, "%s: sending SCCRP\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: sending SCCRP\n", __FUNCTION__);
+ control_xmit (buf);
+ break;
+ case SCCRP:
+@@ -472,7 +472,7 @@ int control_finish (struct tunnel *t, st
+ if (t->fc < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify framing capability. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify framing capability");
+@@ -484,7 +484,7 @@ int control_finish (struct tunnel *t, st
+ * We shouldn't be requiring a bearer capabilities avp to be present in
+ * SCCRQ and SCCRP as they aren't required
+ if (t->bc < 0 ) {
+- if (DEBUG) log(LOG_DEBUG,
++ if (DEBUG) do_log(LOG_DEBUG,
+ "%s: Peer did not specify bearer capability. Closing.\n",__FUNCTION__);
+ set_error(c, VENDOR_ERROR, "Specify bearer capability");
+ return -EINVAL;
+@@ -492,7 +492,7 @@ int control_finish (struct tunnel *t, st
+ if ((!strlen (t->hostname)) && ((t->chal_them.state) || ((t->chal_us.state))))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify hostname. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify your hostname");
+@@ -501,7 +501,7 @@ int control_finish (struct tunnel *t, st
+ if (t->tid <= 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify assigned tunnel ID. Closing.\n",
+ __FUNCTION__);
+ set_error (c, VENDOR_ERROR, "Specify your assigned tunnel ID");
+@@ -513,7 +513,7 @@ int control_finish (struct tunnel *t, st
+ if (handle_challenge (t, &t->chal_them))
+ {
+ set_error (c, VENDOR_ERROR, "No secret key on our side");
+- log (LOG_WARN, "%s: No secret key for authenticating '%s'\n",
++ do_log (LOG_WARN, "%s: No secret key for authenticating '%s'\n",
+ __FUNCTION__, t->hostname);
+ return -EINVAL;
+ }
+@@ -522,7 +522,7 @@ int control_finish (struct tunnel *t, st
+ {
+ set_error (c, VENDOR_ERROR,
+ "Invalid challenge authentication");
+- log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
++ do_log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
+ __FUNCTION__, t->hostname);
+ return -EINVAL;
+ }
+@@ -532,7 +532,7 @@ int control_finish (struct tunnel *t, st
+ t->chal_us.ss = SCCCN;
+ if (handle_challenge (t, &t->chal_us))
+ {
+- log (LOG_WARN, "%s: No secret for authenticating to '%s'\n",
++ do_log (LOG_WARN, "%s: No secret for authenticating to '%s'\n",
+ __FUNCTION__, t->hostname);
+ set_error (c, VENDOR_ERROR, "No secret key on our end");
+ return -EINVAL;
+@@ -563,17 +563,17 @@ int control_finish (struct tunnel *t, st
+ do_packet_dump (buf);
+ c->cnu = 0;
+ if (debug_state)
+- log (LOG_DEBUG, "%s: sending SCCCN\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: sending SCCCN\n", __FUNCTION__);
+ control_xmit (buf);
+ /* Schedule a HELLO */
+ tv.tv_sec = HELLO_DELAY;
+ tv.tv_usec = 0;
+ #ifdef DEBUG_HELLO
+- log (LOG_DEBUG, "%s: scheduling initial HELLO on %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: scheduling initial HELLO on %d\n", __FUNCTION__,
+ t->ourtid);
+ #endif
+ t->hello = schedule (tv, hello, (void *) t);
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Connection established to %s, %d. Local: %d, Remote: %d.\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr),
+ ntohs (t->peer.sin_port), t->ourtid, t->tid);
+@@ -592,7 +592,7 @@ int control_finish (struct tunnel *t, st
+ {
+ set_error (c, VENDOR_ERROR,
+ "Invalid challenge authentication");
+- log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
++ do_log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
+ __FUNCTION__, t->hostname);
+ return -EINVAL;
+ }
+@@ -608,7 +608,7 @@ int control_finish (struct tunnel *t, st
+ }
+ #endif
+ t->state = SCCCN;
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Connection established to %s, %d. Local: %d, Remote: %d. LNS session is '%s'\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr),
+ ntohs (t->peer.sin_port), t->ourtid, t->tid, t->lns->entname);
+@@ -616,7 +616,7 @@ int control_finish (struct tunnel *t, st
+ tv.tv_sec = HELLO_DELAY;
+ tv.tv_usec = 0;
+ #ifdef DEBUG_HELLO
+- log (LOG_DEBUG, "%s: scheduling initial HELLO on %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: scheduling initial HELLO on %d\n", __FUNCTION__,
+ t->ourtid);
+ #endif
+ t->hello = schedule (tv, hello, (void *) t);
+@@ -625,7 +625,7 @@ int control_finish (struct tunnel *t, st
+ if (t->qtid < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect without specifying tunnel ID\n",
+ __FUNCTION__);
+ return -EINVAL;
+@@ -633,7 +633,7 @@ int control_finish (struct tunnel *t, st
+ if ((t->qtid != t->tid) && (t->tid > 0))
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect with invalid TID (%d != %d)\n",
+ __FUNCTION__, t->qtid, t->tid);
+ return -EINVAL;
+@@ -644,12 +644,12 @@ int control_finish (struct tunnel *t, st
+ if (t->self->result < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect without specifying result code.\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Connection closed to %s, port %d (%s), Local: %d, Remote: %d\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr),
+ ntohs (t->peer.sin_port), t->self->errormsg, t->ourtid, t->tid);
+@@ -670,7 +670,7 @@ int control_finish (struct tunnel *t, st
+ if (p->cid < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to initiate call without call ID\n",
+ __FUNCTION__);
+ /* Here it doesn't make sense to use the needclose flag because
+@@ -685,7 +685,7 @@ int control_finish (struct tunnel *t, st
+ {
+ /* This can happen if we get a duplicate
+ ICRQ or if they don't get our ack packet */
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer requested call %d twice, ignoring second one.\n",
+ __FUNCTION__, p->cid);
+ p->needclose = 0;
+@@ -701,7 +701,7 @@ int control_finish (struct tunnel *t, st
+ * isn't a big deal, but it would be nice to have *some* sort of check
+ * for it and perhaps just log it and go on. */
+ /* JLM if (p->serno<1) {
+- if (DEBUG) log(LOG_DEBUG,
++ if (DEBUG) do_log(LOG_DEBUG,
+ "%s: Peer did not specify serial number when initiating call\n", __FUNCTION__);
+ call_close(p);
+ return -EINVAL;
+@@ -713,7 +713,7 @@ int control_finish (struct tunnel *t, st
+ {
+ set_error (p, ERROR_NORES, "No available IP address");
+ call_close (p);
+- log (LOG_DEBUG, "%s: Out of IP addresses on tunnel %d!\n",
++ do_log (LOG_DEBUG, "%s: Out of IP addresses on tunnel %d!\n",
+ __FUNCTION__, t->tid);
+ return -EINVAL;
+ }
+@@ -745,14 +745,14 @@ int control_finish (struct tunnel *t, st
+ do_packet_dump (buf);
+ p->cnu = 0;
+ if (debug_state)
+- log (LOG_DEBUG, "%s: Sending ICRP\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Sending ICRP\n", __FUNCTION__);
+ control_xmit (buf);
+ break;
+ case ICRP:
+ if (c->cid < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to negotiate ICRP without specifying call ID\n",
+ __FUNCTION__);
+ c->needclose = -1;
+@@ -800,8 +800,8 @@ int control_finish (struct tunnel *t, st
+ }
+ #endif
+ if (debug_state)
+- log (LOG_DEBUG, "%s: Sending ICCN\n", __FUNCTION__);
+- log (LOG_LOG,
++ do_log (LOG_DEBUG, "%s: Sending ICCN\n", __FUNCTION__);
++ do_log (LOG_LOG,
+ "%s: Call established with %s, Local: %d, Remote: %d, Serial: %d\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr), c->ourcid, c->cid,
+ c->serno);
+@@ -860,21 +860,21 @@ int control_finish (struct tunnel *t, st
+ case ICCN:
+ if (c == t->self)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer attempted ICCN on the actual tunnel, not the call",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+ if (c->txspeed < 1)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify transmit speed\n", __FUNCTION__);
+ c->needclose = -1;
+ return -EINVAL;
+ };
+ if (c->frame < 1)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer did not specify framing type\n", __FUNCTION__);
+ c->needclose = -1;
+ return -EINVAL;
+@@ -938,7 +938,7 @@ int control_finish (struct tunnel *t, st
+ }
+ start_pppd (c, po);
+ opt_destroy (po);
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Call established with %s, Local: %d, Remote: %d, Serial: %d\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr), c->ourcid, c->cid,
+ c->serno);
+@@ -996,7 +996,7 @@ int control_finish (struct tunnel *t, st
+ };
+ start_pppd (c, po);
+
+- log (LOG_LOG, "parameters: Local: %d , Remote: %d , Serial: %d , Pid: %d , Tunnelid: %d , Phoneid: %s\n", c->ourcid, c->cid, c->serno, c->pppd, t->ourtid, c->dial_no); /* jz: just show some information */
++ do_log (LOG_LOG, "parameters: Local: %d , Remote: %d , Serial: %d , Pid: %d , Tunnelid: %d , Phoneid: %s\n", c->ourcid, c->cid, c->serno, c->pppd, t->ourtid, c->dial_no); /* jz: just show some information */
+
+ opt_destroy (po);
+ if (c->lac)
+@@ -1008,7 +1008,7 @@ int control_finish (struct tunnel *t, st
+ if (c->qcid < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect without specifying call ID\n",
+ __FUNCTION__);
+ return -EINVAL;
+@@ -1021,7 +1021,7 @@ int control_finish (struct tunnel *t, st
+ if (!p)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Unable to determine call to be disconnected.\n",
+ __FUNCTION__);
+ return -EINVAL;
+@@ -1032,7 +1032,7 @@ int control_finish (struct tunnel *t, st
+ if ((c->qcid != p->cid) && p->cid > 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect with invalid CID (%d != %d)\n",
+ __FUNCTION__, c->qcid, c->cid);
+ return -EINVAL;
+@@ -1041,12 +1041,12 @@ int control_finish (struct tunnel *t, st
+ if (c->result < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Peer tried to disconnect without specifying result code.\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Connection closed to %s, serial %d (%s)\n", __FUNCTION__,
+ IPADDY (t->peer.sin_addr), c->serno, c->errormsg);
+ c->needclose = 0;
+@@ -1057,7 +1057,7 @@ int control_finish (struct tunnel *t, st
+ case SLI:
+ break;
+ default:
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Don't know how to finish a message of type %d\n",
+ __FUNCTION__, c->msgtype);
+ set_error (c, VENDOR_ERROR, "Unimplemented message %d\n", c->msgtype);
+@@ -1078,7 +1078,7 @@ inline int check_control (const struct b
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Received too small of packet\n", __FUNCTION__);
+ }
+ return -EINVAL;
+@@ -1088,7 +1088,7 @@ inline int check_control (const struct b
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Reported and actual sizes differ (%d != %d)\n",
+ __FUNCTION__, h->length, buf->len);
+ }
+@@ -1098,13 +1098,13 @@ inline int check_control (const struct b
+ * FIXME: H-bit handling goes here
+ */
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: control, cid = %d, Ns = %d, Nr = %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: control, cid = %d, Ns = %d, Nr = %d\n", __FUNCTION__,
+ c->cid, h->Ns, h->Nr);
+ #endif
+ if (h->Ns != t->control_rec_seq_num)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Received out of order control packet on tunnel %d (got %d, expected %d)\n",
+ __FUNCTION__, t->tid, h->Ns, t->control_rec_seq_num);
+ if (((h->Ns < t->control_rec_seq_num) &&
+@@ -1119,7 +1119,7 @@ inline int check_control (const struct b
+ */
+ #ifdef DEBUG_ZLB
+ if (DEBUG)
+- log (LOG_DEBUG, "%s: Sending an updated ZLB in reponse\n",
++ do_log (LOG_DEBUG, "%s: Sending an updated ZLB in reponse\n",
+ __FUNCTION__);
+ #endif
+ zlb = new_outgoing (t);
+@@ -1153,7 +1153,7 @@ inline int check_control (const struct b
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s: Control bit not set\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Control bit not set\n", __FUNCTION__);
+ }
+ return -EINVAL;
+ }
+@@ -1161,7 +1161,7 @@ inline int check_control (const struct b
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s: Length bit not set\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Length bit not set\n", __FUNCTION__);
+ }
+ return -EINVAL;
+ }
+@@ -1169,7 +1169,7 @@ inline int check_control (const struct b
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s: Flow bit not set\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: Flow bit not set\n", __FUNCTION__);
+ }
+ return -EINVAL;
+ }
+@@ -1179,17 +1179,17 @@ inline int check_control (const struct b
+ {
+ if (CVER (h->ver) == VER_PPTP)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: PPTP packet received\n", __FUNCTION__);
+ }
+ else if (CVER (h->ver) < VER_L2TP)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: L2F packet received\n", __FUNCTION__);
+ }
+ else
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Unknown version received\n", __FUNCTION__);
+ }
+ }
+@@ -1215,7 +1215,7 @@ inline int check_payload (struct buffer
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s: Aempted to send payload on tunnel\n",
++ do_log (LOG_DEBUG, "%s: Aempted to send payload on tunnel\n",
+ __FUNCTION__);
+ }
+ return -EINVAL;
+@@ -1226,7 +1226,7 @@ inline int check_payload (struct buffer
+ no matter what. we'll look more later */
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s:Recieved to small of packet\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s:Recieved to small of packet\n", __FUNCTION__);
+ }
+ return -EINVAL;
+ }
+@@ -1237,7 +1237,7 @@ inline int check_payload (struct buffer
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s Control bit set\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s Control bit set\n", __FUNCTION__);
+ }
+ return -EINVAL;
+ }
+@@ -1247,7 +1247,7 @@ inline int check_payload (struct buffer
+ {
+ /* if (!c->fbit && !c->ourfbit) {
+ if (DEBUG)
+- log(LOG_DEBUG,"%s: flow bit set, but no RWS negotiated.\n",__FUNCTION__);
++ do_log(LOG_DEBUG,"%s: flow bit set, but no RWS negotiated.\n",__FUNCTION__);
+ return -EINVAL;
+ } */
+ ehlen += 4; /* Should have Ns and Nr too */
+@@ -1255,7 +1255,7 @@ inline int check_payload (struct buffer
+ /* if (!PFBIT(h->ver)) {
+ if (c->fbit || c->ourfbit) {
+ if (DEBUG)
+- log(LOG_DEBUG, "%s: no flow bit, but RWS was negotiated.\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: no flow bit, but RWS was negotiated.\n",__FUNCTION__);
+ return -EINVAL;;
+ }
+ } */
+@@ -1269,17 +1269,17 @@ inline int check_payload (struct buffer
+ {
+ if (PVER (h->ver) == VER_PPTP)
+ {
+- log (LOG_DEBUG, "%s: PPTP packet received\n",
++ do_log (LOG_DEBUG, "%s: PPTP packet received\n",
+ __FUNCTION__);
+ }
+ else if (CVER (h->ver) < VER_L2TP)
+ {
+- log (LOG_DEBUG, "%s: L2F packet received\n",
++ do_log (LOG_DEBUG, "%s: L2F packet received\n",
+ __FUNCTION__);
+ }
+ else
+ {
+- log (LOG_DEBUG, "%s: Unknown version received\n",
++ do_log (LOG_DEBUG, "%s: Unknown version received\n",
+ __FUNCTION__);
+ }
+ }
+@@ -1289,7 +1289,7 @@ inline int check_payload (struct buffer
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s payload too small (%d < %d)\n",
++ do_log (LOG_DEBUG, "%s payload too small (%d < %d)\n",
+ __FUNCTION__, buf->len, ehlen);
+ }
+ return -EINVAL;
+@@ -1298,7 +1298,7 @@ inline int check_payload (struct buffer
+ {
+ if (DEBUG)
+ {
+- log (LOG_DEBUG, "%s: size mismatch (%d != %d)\n",
++ do_log (LOG_DEBUG, "%s: size mismatch (%d != %d)\n",
+ __FUNCTION__, buf->len, h->length);
+ }
+ return -EINVAL;
+@@ -1336,7 +1336,7 @@ inline int expand_payload (struct buffer
+ new_hdr = (struct payload_hdr *) (buf->start - ehlen);
+ if ((void *) new_hdr < (void *) buf->rstart)
+ {
+- log (LOG_WARN, "%s: not enough space to decompress frame\n",
++ do_log (LOG_WARN, "%s: not enough space to decompress frame\n",
+ __FUNCTION__);
+ return -EINVAL;
+
+@@ -1388,16 +1388,16 @@ inline int expand_payload (struct buffer
+ */
+ /* JLM if (PRBIT(new_hdr->ver)) {
+ if (c->pSr > new_hdr->Ns) {
+- log(LOG_DEBUG, "%s: R-bit set with Ns < pSr!\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: R-bit set with Ns < pSr!\n",__FUNCTION__);
+ return -EINVAL;
+ }
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: R-bit set on packet %d\n",__FUNCTION__,new_hdr->Ns);
++ do_log(LOG_DEBUG, "%s: R-bit set on packet %d\n",__FUNCTION__,new_hdr->Ns);
+ #endif
+ c->pSr=new_hdr->Ns;
+ } */
+ #ifdef DEBUG_PAYLOAD
+- log (LOG_DEBUG, "%s: payload, cid = %d, Ns = %d, Nr = %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: payload, cid = %d, Ns = %d, Nr = %d\n", __FUNCTION__,
+ c->cid, new_hdr->Ns, new_hdr->Nr);
+ #endif
+ if (new_hdr->Ns != c->data_seq_num)
+@@ -1410,7 +1410,7 @@ inline int expand_payload (struct buffer
+ {
+ #ifdef DEBUG_FLOW
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Already seen this packet before (%d < %d)\n",
+ __FUNCTION__, new_hdr->Ns, c->pSr);
+ #endif
+@@ -1421,7 +1421,7 @@ inline int expand_payload (struct buffer
+ /* FIXME: I should buffer for out of order packets */
+ #ifdef DEBUG_FLOW
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Oops, lost a packet or two (%d != %d). continuing...\n",
+ __FUNCTION__, new_hdr->Ns, c->pSr);
+ #endif
+@@ -1431,7 +1431,7 @@ inline int expand_payload (struct buffer
+ {
+ #ifdef DEBUG_FLOW
+ if (DEBUG)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Received out of order payload packet (%d != %d)\n",
+ __FUNCTION__, new_hdr->Ns, c->pSr);
+ #endif
+@@ -1464,13 +1464,13 @@ void send_zlb (void *data)
+ c = (struct call *) data;
+ if (!c)
+ {
+- log (LOG_WARN, "%s: called on NULL call\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: called on NULL call\n", __FUNCTION__);
+ return;
+ }
+ t = c->container;
+ if (!t)
+ {
+- log (LOG_WARN, "%s: called on call with NULL container\n",
++ do_log (LOG_WARN, "%s: called on call with NULL container\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -1481,7 +1481,7 @@ void send_zlb (void *data)
+ c->data_seq_num--; /* We don't increment on ZLB's */
+ c->zlb_xmit = NULL;
+ #ifdef DEBUG_ZLB
+- log (LOG_DEBUG, "%s: sending payload ZLB\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: sending payload ZLB\n", __FUNCTION__);
+ #endif
+ udp_xmit (buf);
+ toss (buf);
+@@ -1503,7 +1503,7 @@ inline int write_packet (struct buffer *
+ if (c->fd < 0)
+ {
+ if (DEBUG)
+- log (LOG_DEBUG, "%s: tty is not open yet.\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: tty is not open yet.\n", __FUNCTION__);
+ return -EIO;
+ }
+ /*
+@@ -1530,7 +1530,7 @@ inline int write_packet (struct buffer *
+ }
+ else if (err == 0)
+ {
+- log (LOG_WARN, "%s: wrote no bytes of async packet\n",
++ do_log (LOG_WARN, "%s: wrote no bytes of async packet\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -1542,19 +1542,19 @@ inline int write_packet (struct buffer *
+ }
+ else
+ {
+- log (LOG_WARN, "%s: async write failed: %s\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: async write failed: %s\n", __FUNCTION__,
+ strerror (errno));
+ }
+ }
+ else if (err < buf->len)
+ {
+- log (LOG_WARN, "%s: short write (%d of %d bytes)\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: short write (%d of %d bytes)\n", __FUNCTION__,
+ err, buf->len);
+ return -EINVAL;
+ }
+ else if (err > buf->len)
+ {
+- log (LOG_WARN, "%s: write returned LONGER than buffer length?\n",
++ do_log (LOG_WARN, "%s: write returned LONGER than buffer length?\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -1575,7 +1575,7 @@ inline int write_packet (struct buffer *
+ // 1 for a possible escape, 1 for the value and 1 to end the PPP stream.
+ if(pos >= (sizeof(wbuf) - 4)) {
+ if(DEBUG)
+- log(LOG_CRIT, "%s: rx packet is too big after PPP encoding (size %u, max is %u)\n",
++ do_log(LOG_CRIT, "%s: rx packet is too big after PPP encoding (size %u, max is %u)\n",
+ __FUNCTION__, buf->len, MAX_RECV_SIZE);
+ return -EINVAL;
+ }
+@@ -1599,7 +1599,7 @@ inline int write_packet (struct buffer *
+ * everything ended normally
+ */
+ if (DEBUG)
+- log (LOG_WARN, "%s: %s(%d)\n", __FUNCTION__, strerror (errno),
++ do_log (LOG_WARN, "%s: %s(%d)\n", __FUNCTION__, strerror (errno),
+ errno);
+ c->needclose = -1;
+ c->fd = -1;
+@@ -1633,7 +1633,7 @@ void handle_special (struct buffer *buf,
+ {
+ /* If it's a ZLB, we ignore it */
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: ZLB for closed call\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: ZLB for closed call\n", __FUNCTION__);
+ c->cid = 0;
+ return;
+ }
+@@ -1649,7 +1649,7 @@ void handle_special (struct buffer *buf,
+ {
+ c->cid = 0;
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: invalid control packet\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: invalid control packet\n", __FUNCTION__);
+ }
+ }
+
+@@ -1667,7 +1667,7 @@ inline int handle_packet (struct buffer
+ if (buf->len == sizeof (struct control_hdr))
+ {
+ #ifdef DEBUG_ZLB
+- log (LOG_DEBUG, "%s: control ZLB received\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: control ZLB received\n", __FUNCTION__);
+ #endif
+ t->control_rec_seq_num--;
+ c->cnu = 0;
+@@ -1676,7 +1676,7 @@ inline int handle_packet (struct buffer
+ if (c->container->cLr >= c->closeSs)
+ {
+ #ifdef DEBUG_ZLB
+- log (LOG_DEBUG, "%s: ZLB for closing message found\n",
++ do_log (LOG_DEBUG, "%s: ZLB for closing message found\n",
+ __FUNCTION__);
+ #endif
+ c->needclose = 0;
+@@ -1692,13 +1692,13 @@ inline int handle_packet (struct buffer
+ else
+ {
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: bad AVP handling!\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: bad AVP handling!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+ else
+ {
+- log (LOG_DEBUG, "%s: bad control packet!\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: bad control packet!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+@@ -1713,11 +1713,11 @@ inline int handle_packet (struct buffer
+ /* if (c->throttle) {
+ if (c->pSs > c->pLr + c->rws) {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: not yet dethrottling call\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: not yet dethrottling call\n",__FUNCTION__);
+ #endif
+ } else {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: dethrottling call\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: dethrottling call\n",__FUNCTION__);
+ #endif
+ if (c->dethrottle) deschedule(c->dethrottle);
+ c->dethrottle=NULL;
+@@ -1739,7 +1739,7 @@ inline int handle_packet (struct buffer
+ We've received enough to fill our receive window. At
+ this point, we should immediately send a ZLB!
+ #ifdef DEBUG_ZLB
+- log(LOG_DEBUG, "%s: Sending immediate ZLB!\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: Sending immediate ZLB!\n",__FUNCTION__);
+ #endif
+ if (c->zlb_xmit) {
+ Deschedule any existing zlb_xmit's
+@@ -1756,7 +1756,7 @@ inline int handle_packet (struct buffer
+ if (c->zlb_xmit)
+ deschedule(c->zlb_xmit);
+ #ifdef DEBUG_ZLB
+- log(LOG_DEBUG, "%s: scheduling ZLB\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: scheduling ZLB\n",__FUNCTION__);
+ #endif
+ c->zlb_xmit = schedule(tv, &send_zlb, (void *)c);
+ }
+@@ -1766,17 +1766,17 @@ inline int handle_packet (struct buffer
+ else if (buf->len == sizeof (struct payload_hdr))
+ {
+ #ifdef DEBUG_ZLB
+- log (LOG_DEBUG, "%s: payload ZLB received\n",
++ do_log (LOG_DEBUG, "%s: payload ZLB received\n",
+ __FUNCTION__);
+ #endif
+ /* if (c->throttle) {
+ if (c->pSs > c->pLr + c->rws) {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: not yet dethrottling call\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: not yet dethrottling call\n",__FUNCTION__);
+ #endif
+ } else {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: dethrottling call\n",__FUNCTION__);
++ do_log(LOG_DEBUG, "%s: dethrottling call\n",__FUNCTION__);
+ #endif
+ if (c->dethrottle)
+ deschedule(c->dethrottle);
+@@ -1789,21 +1789,21 @@ inline int handle_packet (struct buffer
+ }
+ else
+ {
+- log (LOG_DEBUG, "%s: payload too small!\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: payload too small!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+ else
+ {
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: unable to expand payload!\n",
++ do_log (LOG_DEBUG, "%s: unable to expand payload!\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+ else
+ {
+- log (LOG_DEBUG, "%s: invalid payload packet!\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: invalid payload packet!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ }
+diff -rdup l2tpd-0.70-pre20031121.oorig/file.c l2tpd-0.70-pre20031121/file.c
+--- l2tpd-0.70-pre20031121.oorig/file.c 2004-07-08 22:47:52.000000000 +0200
++++ l2tpd-0.70-pre20031121/file.c 2006-12-28 16:41:59.000000000 +0100
+@@ -59,7 +59,7 @@ int init_config ()
+ }
+ else
+ {
+- log (LOG_CRIT, "%s: Unable to open config file %s or %s\n",
++ do_log (LOG_CRIT, "%s: Unable to open config file %s or %s\n",
+ __FUNCTION__, gconfig.configfile, gconfig.altconfigfile);
+ return -1;
+ }
+@@ -77,7 +77,7 @@ struct lns *new_lns ()
+ tmp = (struct lns *) malloc (sizeof (struct lns));
+ if (!tmp)
+ {
+- log (LOG_CRIT, "%s: Unable to allocate memory for new LNS\n",
++ do_log (LOG_CRIT, "%s: Unable to allocate memory for new LNS\n",
+ __FUNCTION__);
+ return NULL;
+ }
+@@ -121,7 +121,7 @@ struct lac *new_lac ()
+ tmp = (struct lac *) malloc (sizeof (struct lac));
+ if (!tmp)
+ {
+- log (LOG_CRIT, "%s: Unable to allocate memory for lac entry!\n",
++ do_log (LOG_CRIT, "%s: Unable to allocate memory for lac entry!\n",
+ __FUNCTION__);
+ return NULL;
+ }
+@@ -174,7 +174,7 @@ int set_boolean (char *word, char *value
+ {
+ int val;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
++ do_log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
+ #endif /* ; */
+ if ((val = yesno (value)) < 0)
+ {
+@@ -190,7 +190,7 @@ int set_int (char *word, char *value, in
+ {
+ int val;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
++ do_log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
+ #endif /* ; */
+ if ((val = atoi (value)) < 0)
+ {
+@@ -204,7 +204,7 @@ int set_int (char *word, char *value, in
+ int set_string (char *word, char *value, char *ptr, int len)
+ {
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
++ do_log (LOG_DEBUG, "set_%s: %s flag to '%s'\n", word, word, value);
+ #endif /* ; */
+ strncpy (ptr, value, len);
+ return 0;
+@@ -216,7 +216,7 @@ int set_port (char *word, char *value, i
+ {
+ case CONTEXT_GLOBAL:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_port: Setting global port number to %s\n",
++ do_log (LOG_DEBUG, "set_port: Setting global port number to %s\n",
+ value);
+ #endif
+ set_int (word, value, &(((struct global *) item)->port));
+@@ -241,7 +241,7 @@ int set_rtimeout (char *word, char *valu
+ {
+ case CONTEXT_LAC:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_rtimeout: Setting redial timeout to %s\n",
++ do_log (LOG_DEBUG, "set_rtimeout: Setting redial timeout to %s\n",
+ value);
+ #endif
+ set_int (word, value, &(((struct lac *) item)->rtimeout));
+@@ -311,7 +311,7 @@ int set_rmax (char *word, char *value, i
+ {
+ case CONTEXT_LAC:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_rmax: Setting max redials to %s\n", value);
++ do_log (LOG_DEBUG, "set_rmax: Setting max redials to %s\n", value);
+ #endif
+ set_int (word, value, &(((struct lac *) item)->rmax));
+ break;
+@@ -335,7 +335,7 @@ int set_authfile (char *word, char *valu
+ {
+ case CONTEXT_GLOBAL:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_authfile: Setting global auth file to '%s'\n",
++ do_log (LOG_DEBUG, "set_authfile: Setting global auth file to '%s'\n",
+ value);
+ #endif /* ; */
+ strncpy (((struct global *) item)->authfile, value,
+@@ -766,7 +766,7 @@ int set_iprange (char *word, char *value
+ if (!lns->range)
+ return -1;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "range start = %x, end = %x, sense=%ud\n",
++ do_log (LOG_DEBUG, "range start = %x, end = %x, sense=%ud\n",
+ ntohl (ipr->start), ntohl (ipr->end), ipr->sense);
+ #endif
+ return 0;
+@@ -788,7 +788,7 @@ int set_lac (char *word, char *value, in
+ if (!lns->lacs)
+ return -1;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "lac start = %x, end = %x, sense=%ud\n",
++ do_log (LOG_DEBUG, "lac start = %x, end = %x, sense=%ud\n",
+ ntohl (ipr->start), ntohl (ipr->end), ipr->sense);
+ #endif
+ return 0;
+@@ -830,7 +830,7 @@ int set_listenaddr (char *word, char *va
+ {
+ case CONTEXT_GLOBAL:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_listenaddr: Setting listen address to %s\n",
++ do_log (LOG_DEBUG, "set_listenaddr: Setting listen address to %s\n",
+ value);
+ #endif
+ if (set_ip (word, value, &(((struct global *) item)->listenaddr)))
+@@ -890,7 +890,7 @@ int set_lns (char *word, char *value, in
+ {
+ case CONTEXT_LAC:
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "set_lns: setting LNS to '%s'\n", value);
++ do_log (LOG_DEBUG, "set_lns: setting LNS to '%s'\n", value);
+ #endif
+ l = (struct lac *) item;
+ d = strchr (value, ':');
+@@ -934,7 +934,7 @@ int set_lns (char *word, char *value, in
+
+ int set_rand_sys ()
+ {
+- log(LOG_WARN, "The \"rand()\" function call is not a very good source"
++ do_log(LOG_WARN, "The \"rand()\" function call is not a very good source"
+ "of randomness\n");
+ rand_source = RAND_SYS;
+ return 0;
+@@ -948,7 +948,7 @@ int set_rand_dev ()
+
+ int set_rand_egd (char *value)
+ {
+- log(LOG_WARN, "%s: not yet implemented!\n", __FUNCTION__);
++ do_log(LOG_WARN, "%s: not yet implemented!\n", __FUNCTION__);
+ rand_source = RAND_EGD;
+ return -1;
+ }
+@@ -976,7 +976,7 @@ int set_rand_source (char *word, char *v
+
+ if (context != CONTEXT_GLOBAL)
+ {
+- log(LOG_WARN, "%s: %s not valid in context %d\n",
++ do_log(LOG_WARN, "%s: %s not valid in context %d\n",
+ __FUNCTION__, word, context);
+ return -1;
+ }
+@@ -1000,7 +1000,7 @@ int set_rand_source (char *word, char *v
+ }
+ else
+ {
+- log(LOG_WARN, "%s: %s is not a valid randomness source\n",
++ do_log(LOG_WARN, "%s: %s is not a valid randomness source\n",
+ __FUNCTION__, value);
+ return -1;
+
+@@ -1046,7 +1046,7 @@ int parse_config (FILE * f)
+ /* We've got a context description */
+ if (!(t = strchr (s, ']')))
+ {
+- log (LOG_CRIT, "parse_config: line %d: No closing bracket\n",
++ do_log (LOG_CRIT, "parse_config: line %d: No closing bracket\n",
+ linenum);
+ return -1;
+ }
+@@ -1066,7 +1066,7 @@ int parse_config (FILE * f)
+ {
+ context = CONTEXT_GLOBAL;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "parse_config: global context descriptor %s\n",
+ d ? d : "");
+ #endif
+@@ -1111,7 +1111,7 @@ int parse_config (FILE * f)
+ strncpy (((struct lns *) data)->entname,
+ d, sizeof (((struct lns *) data)->entname));
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "parse_config: lns context descriptor %s\n",
++ do_log (LOG_DEBUG, "parse_config: lns context descriptor %s\n",
+ d ? d : "");
+ #endif
+ }
+@@ -1154,13 +1154,13 @@ int parse_config (FILE * f)
+ strncpy (((struct lac *) data)->entname,
+ d, sizeof (((struct lac *) data)->entname));
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "parse_config: lac context descriptor %s\n",
++ do_log (LOG_DEBUG, "parse_config: lac context descriptor %s\n",
+ d ? d : "");
+ #endif
+ }
+ else
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "parse_config: line %d: unknown context '%s'\n", linenum,
+ s);
+ return -1;
+@@ -1170,14 +1170,14 @@ int parse_config (FILE * f)
+ {
+ if (!context)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "parse_config: line %d: data '%s' occurs with no context\n",
+ linenum, s);
+ return -1;
+ }
+ if (!(t = strchr (s, '=')))
+ {
+- log (LOG_WARN, "parse_config: line %d: no '=' in data\n",
++ do_log (LOG_WARN, "parse_config: line %d: no '=' in data\n",
+ linenum);
+ return -1;
+ }
+@@ -1191,7 +1191,7 @@ int parse_config (FILE * f)
+ while (*t && (*t < 33))
+ t++;
+ #ifdef DEBUG_FILE
+- log (LOG_DEBUG, "parse_config: field is %s, value is %s\n", s, t);
++ do_log (LOG_DEBUG, "parse_config: field is %s, value is %s\n", s, t);
+ #endif
+ /* Okay, bit twidling is done. Let's handle this */
+ for (kw = words; kw->keyword; kw++)
+@@ -1200,7 +1200,7 @@ int parse_config (FILE * f)
+ {
+ if (kw->handler (s, t, context | def, data))
+ {
+- log (LOG_WARN, "parse_config: line %d: %s", linenum,
++ do_log (LOG_WARN, "parse_config: line %d: %s", linenum,
+ filerr);
+ return -1;
+ }
+@@ -1209,7 +1209,7 @@ int parse_config (FILE * f)
+ }
+ if (!kw->keyword)
+ {
+- log (LOG_CRIT, "parse_config: line %d: Unknown field '%s'\n",
++ do_log (LOG_CRIT, "parse_config: line %d: Unknown field '%s'\n",
+ linenum, s);
+ return -1;
+ }
+diff -rdup l2tpd-0.70-pre20031121.oorig/l2tpd.c l2tpd-0.70-pre20031121/l2tpd.c
+--- l2tpd-0.70-pre20031121.oorig/l2tpd.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/l2tpd.c 2006-12-28 16:41:59.000000000 +0100
+@@ -71,8 +71,8 @@ void show_status (void)
+ struct lac *tlac;
+ struct host *h;
+ int s = 0;
+- log (LOG_WARN, "====== l2tpd statistics ========\n");
+- log (LOG_WARN, " Scheduler entries:\n");
++ do_log (LOG_WARN, "====== l2tpd statistics ========\n");
++ do_log (LOG_WARN, " Scheduler entries:\n");
+ se = events;
+ while (se)
+ {
+@@ -82,32 +82,32 @@ void show_status (void)
+ c = (struct call *) se->data;
+ if (se->func == &hello)
+ {
+- log (LOG_WARN, "%d: HELLO to %d\n", s, t->tid);
++ do_log (LOG_WARN, "%d: HELLO to %d\n", s, t->tid);
+ }
+ else if (se->func == &magic_lac_dial)
+ {
+- log (LOG_WARN, "%d: Magic dial on %s\n", s, tlac->entname);
++ do_log (LOG_WARN, "%d: Magic dial on %s\n", s, tlac->entname);
+ }
+ else if (se->func == &send_zlb)
+ {
+- log (LOG_WARN, "%d: Send payload ZLB on call %d:%d\n", s,
++ do_log (LOG_WARN, "%d: Send payload ZLB on call %d:%d\n", s,
+ c->container->tid, c->cid);
+ }
+ else if (se->func == &dethrottle)
+ {
+- log (LOG_WARN, "%d: Dethrottle call %d:%d\n", s, c->container->tid,
++ do_log (LOG_WARN, "%d: Dethrottle call %d:%d\n", s, c->container->tid,
+ c->cid);
+ }
+ else
+- log (LOG_WARN, "%d: Unknown event\n", s);
++ do_log (LOG_WARN, "%d: Unknown event\n", s);
+ se = se->next;
+ };
+- log (LOG_WARN, "Total Events scheduled: %d\n", s);
+- log (LOG_WARN, "Number of tunnels open: %d\n", tunnels.count);
++ do_log (LOG_WARN, "Total Events scheduled: %d\n", s);
++ do_log (LOG_WARN, "Number of tunnels open: %d\n", tunnels.count);
+ t = tunnels.head;
+ while (t)
+ {
+- log (LOG_WARN, "Tunnel %s, ID = %d (local), %d (remote) to %s:%d\n"
++ do_log (LOG_WARN, "Tunnel %s, ID = %d (local), %d (remote) to %s:%d\n"
+ " control_seq_num = %d, control_rec_seq_num = %d,\n"
+ " cLr = %d\n",
+ (t->lac ? t->lac->entname : (t->lns ? t->lns->entname : "")),
+@@ -117,7 +117,7 @@ void show_status (void)
+ c = t->call_head;
+ while (c)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "Call %s, ID = %d (local), %d (remote), serno = %u,\n"
+ " data_seq_num = %d, data_rec_seq_num = %d,\n"
+ " pLr = %d, tx = %u bytes (%u), rx= %u bytes (%u)\n",
+@@ -129,34 +129,34 @@ void show_status (void)
+ }
+ t = t->next;
+ }
+- log (LOG_WARN, "==========Config File===========\n");
++ do_log (LOG_WARN, "==========Config File===========\n");
+ tlns = lnslist;
+ while (tlns)
+ {
+- log (LOG_WARN, "LNS entry %s\n",
++ do_log (LOG_WARN, "LNS entry %s\n",
+ tlns->entname[0] ? tlns->entname : "(unnamed)");
+ tlns = tlns->next;
+ };
+ tlac = laclist;
+ while (tlac)
+ {
+- log (LOG_WARN, "LAC entry %s, LNS is/are:",
++ do_log (LOG_WARN, "LAC entry %s, LNS is/are:",
+ tlac->entname[0] ? tlac->entname : "(unnamed)");
+ h = tlac->lns;
+ if (h)
+ {
+ while (h)
+ {
+- log (LOG_WARN, " %s", h->hostname);
++ do_log (LOG_WARN, " %s", h->hostname);
+ h = h->next;
+ }
+ }
+ else
+- log (LOG_WARN, " [none]");
+- log (LOG_WARN, "\n");
++ do_log (LOG_WARN, " [none]");
++ do_log (LOG_WARN, "\n");
+ tlac = tlac->next;
+ };
+- log (LOG_WARN, "================================\n");
++ do_log (LOG_WARN, "================================\n");
+ }
+
+ void null_handler(int sig)
+@@ -206,17 +206,17 @@ void child_handler (int signal)
+ {
+ if ( WIFEXITED( status ) )
+ {
+- log (LOG_DEBUG, "%s : pppd exited for call %d with code %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s : pppd exited for call %d with code %d\n", __FUNCTION__,
+ c->cid, WEXITSTATUS( status ) );
+ }
+ else if( WIFSIGNALED( status ) )
+ {
+- log (LOG_DEBUG, "%s : pppd terminated for call %d by signal %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s : pppd terminated for call %d by signal %d\n", __FUNCTION__,
+ c->cid, WTERMSIG( status ) );
+ }
+ else
+ {
+- log (LOG_DEBUG, "%s : pppd exited for call %d for unknown reason\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s : pppd exited for call %d for unknown reason\n", __FUNCTION__,
+ c->cid );
+ }
+ c->needclose = -1;
+@@ -245,7 +245,7 @@ void death_handler (int signal)
+ */
+ struct tunnel *st, *st2;
+ int sec;
+- log (LOG_CRIT, "%s: Fatal signal %d received\n", __FUNCTION__, signal);
++ do_log (LOG_CRIT, "%s: Fatal signal %d received\n", __FUNCTION__, signal);
+ st = tunnels.head;
+ while (st)
+ {
+@@ -300,12 +300,12 @@ int start_pppd (struct call *c, struct p
+ stropt[pos] = NULL;
+ if (c->pppd > 0)
+ {
+- log (LOG_WARN, "%s: PPP already started on call!\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: PPP already started on call!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ if (c->fd > -1)
+ {
+- log (LOG_WARN, "%s: file descriptor already assigned!\n",
++ do_log (LOG_WARN, "%s: file descriptor already assigned!\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -326,7 +326,7 @@ int start_pppd (struct call *c, struct p
+ #endif
+ if ((c->fd = getPtyMaster (&a, &b)) < 0)
+ {
+- log (LOG_WARN, "%s: unable to allocate pty, abandoning!\n",
++ do_log (LOG_WARN, "%s: unable to allocate pty, abandoning!\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+@@ -342,7 +342,7 @@ int start_pppd (struct call *c, struct p
+ snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b);
+ fd2 = open (tty, O_RDWR);
+ if(!fd2)
+- log(LOG_WARN, "unable to open tty %s", tty);
++ do_log(LOG_WARN, "unable to open tty %s", tty);
+
+ /* XXX JEF: CHECK ME */
+ stropt[pos++] = strdup(tty);
+@@ -353,17 +353,17 @@ int start_pppd (struct call *c, struct p
+ #endif
+ str = stropt[0];
+ #ifdef DEBUG_PPPD
+- log (LOG_DEBUG, "%s: I'm running: ", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: I'm running: ", __FUNCTION__);
+ for (x = 0; stropt[x]; x++)
+ {
+- log (LOG_DEBUG, "\"%s\" ", stropt[x]);
++ do_log (LOG_DEBUG, "\"%s\" ", stropt[x]);
+ };
+- log (LOG_DEBUG, "\n");
++ do_log (LOG_DEBUG, "\n");
+ #endif
+ c->pppd = fork ();
+ if (c->pppd < 0)
+ {
+- log (LOG_WARN, "%s: unable to fork(), abandoning!\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: unable to fork(), abandoning!\n", __FUNCTION__);
+ return -EINVAL;
+ }
+ else if (!c->pppd)
+@@ -380,7 +380,7 @@ int start_pppd (struct call *c, struct p
+ if (fd2 < 0)
+ #endif
+ {
+- log (LOG_WARN, "%s: Unable to open %s to launch pppd!\n",
++ do_log (LOG_WARN, "%s: Unable to open %s to launch pppd!\n",
+ __FUNCTION__, tty);
+ exit (1);
+ }
+@@ -412,7 +412,7 @@ int start_pppd (struct call *c, struct p
+ setenv( "CALLER_ID", c->dialing, 1 );
+ }
+ execv (PPPD, stropt);
+- log (LOG_WARN, "%s: Exec of %s failed!\n", __FUNCTION__, PPPD);
++ do_log (LOG_WARN, "%s: Exec of %s failed!\n", __FUNCTION__, PPPD);
+ exit (1);
+ };
+ close (fd2);
+@@ -481,14 +481,14 @@ void destroy_tunnel (struct tunnel *t)
+ }
+ else
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: unable to locate tunnel in tunnel list\n",
+ __FUNCTION__);
+ }
+ }
+ else
+ {
+- log (LOG_WARN, "%s: tunnel list is empty!\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: tunnel list is empty!\n", __FUNCTION__);
+ }
+ }
+ if (t->lac)
+@@ -497,7 +497,7 @@ void destroy_tunnel (struct tunnel *t)
+ if (t->lac->redial && (t->lac->rtimeout > 0) && !t->lac->rsched &&
+ t->lac->active)
+ {
+- log (LOG_LOG, "%s: Will redial in %d seconds\n", __FUNCTION__,
++ do_log (LOG_LOG, "%s: Will redial in %d seconds\n", __FUNCTION__,
+ t->lac->rtimeout);
+ tv.tv_sec = t->lac->rtimeout;
+ tv.tv_usec = 0;
+@@ -527,7 +527,7 @@ struct tunnel *l2tp_call (char *host, in
+ hp = gethostbyname (host);
+ if (!hp)
+ {
+- log (LOG_WARN, "%s: gethostbyname() failed for %s.\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: gethostbyname() failed for %s.\n", __FUNCTION__,
+ host);
+ return NULL;
+ }
+@@ -540,7 +540,7 @@ struct tunnel *l2tp_call (char *host, in
+ tmp = get_call (0, 0, addr, port);
+ if (!tmp)
+ {
+- log (LOG_WARN, "%s: Unable to create tunnel to %s.\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: Unable to create tunnel to %s.\n", __FUNCTION__,
+ host);
+ return NULL;
+ }
+@@ -556,7 +556,7 @@ struct tunnel *l2tp_call (char *host, in
+ /*
+ * Since our state is 0, we will establish a tunnel now
+ */
+- log (LOG_LOG, "%s:Connecting to host %s, port %d\n", __FUNCTION__, host,
++ do_log (LOG_LOG, "%s:Connecting to host %s, port %d\n", __FUNCTION__, host,
+ ntohs (port));
+ control_finish (tmp->container, tmp);
+ return tmp->container;
+@@ -568,7 +568,7 @@ void magic_lac_tunnel (void *data)
+ lac = (struct lac *) data;
+ if (!lac)
+ {
+- log (LOG_WARN, "%s: magic_lac_tunnel: called on NULL lac!\n",
++ do_log (LOG_WARN, "%s: magic_lac_tunnel: called on NULL lac!\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -585,7 +585,7 @@ void magic_lac_tunnel (void *data)
+ }
+ else
+ {
+- log (LOG_WARN, "%s: Unable to find hostname to dial for '%s'\n",
++ do_log (LOG_WARN, "%s: Unable to find hostname to dial for '%s'\n",
+ __FUNCTION__, lac->entname);
+ return;
+ }
+@@ -602,7 +602,7 @@ struct call *lac_call (int tid, struct l
+ tmp = new_call (t);
+ if (!tmp)
+ {
+- log (LOG_WARN, "%s: unable to create new call\n",
++ do_log (LOG_WARN, "%s: unable to create new call\n",
+ __FUNCTION__);
+ return NULL;
+ }
+@@ -614,14 +614,14 @@ struct call *lac_call (int tid, struct l
+ tmp->lns = lns;
+ if (lac)
+ lac->c = tmp;
+- log (LOG_LOG, "%s: Calling on tunnel %d\n", __FUNCTION__, tid);
++ do_log (LOG_LOG, "%s: Calling on tunnel %d\n", __FUNCTION__, tid);
+ strcpy (tmp->dial_no, dial_no_tmp); /* jz: copy dialnumber to tmp->dial_no */
+ control_finish (t, tmp);
+ return tmp;
+ }
+ t = t->next;
+ };
+- log (LOG_DEBUG, "%s: No such tunnel %d to generate call.\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: No such tunnel %d to generate call.\n", __FUNCTION__,
+ tid);
+ return NULL;
+ }
+@@ -633,25 +633,25 @@ void magic_lac_dial (void *data)
+
+ if (!lac)
+ {
+- log (LOG_WARN, "%s : called on NULL lac!\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s : called on NULL lac!\n", __FUNCTION__);
+ return;
+ }
+ if (!lac->active)
+ {
+- log (LOG_DEBUG, "%s: LAC %s not active", __FUNCTION__, lac->entname);
++ do_log (LOG_DEBUG, "%s: LAC %s not active", __FUNCTION__, lac->entname);
+ return;
+ }
+ lac->rsched = NULL;
+ lac->rtries++;
+ if (lac->rmax && (lac->rtries > lac->rmax))
+ {
+- log (LOG_LOG, "%s: maximum retries exceeded.\n", __FUNCTION__);
++ do_log (LOG_LOG, "%s: maximum retries exceeded.\n", __FUNCTION__);
+ return;
+ }
+ if (!lac->t)
+ {
+ #ifdef DEGUG_MAGIC
+- log (LOG_DEBUG, "%s : tunnel not up! Connecting!\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s : tunnel not up! Connecting!\n", __FUNCTION__);
+ #endif
+ magic_lac_tunnel (lac);
+ return;
+@@ -670,7 +670,7 @@ void lac_hangup (int cid)
+ {
+ if (tmp->ourcid == cid)
+ {
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s :Hanging up call %d, Local: %d, Remote: %d\n",
+ __FUNCTION__, tmp->serno, tmp->ourcid, tmp->cid);
+ strcpy (tmp->errormsg, "Goodbye!");
+@@ -682,7 +682,7 @@ void lac_hangup (int cid)
+ }
+ t = t->next;
+ };
+- log (LOG_DEBUG, "%s : No such call %d to hang up.\n", __FUNCTION__, cid);
++ do_log (LOG_DEBUG, "%s : No such call %d to hang up.\n", __FUNCTION__, cid);
+ return;
+ }
+
+@@ -693,7 +693,7 @@ void lac_disconnect (int tid)
+ {
+ if (t->ourtid == tid)
+ {
+- log (LOG_LOG,
++ do_log (LOG_LOG,
+ "%s: Disconnecting from %s, Local: %d, Remote: %d\n",
+ __FUNCTION__, IPADDY (t->peer.sin_addr), t->ourtid, t->tid);
+ t->self->needclose = -1;
+@@ -703,7 +703,7 @@ void lac_disconnect (int tid)
+ }
+ t = t->next;
+ };
+- log (LOG_DEBUG, "%s: No such tunnel %d to hang up.\n", __FUNCTION__, tid);
++ do_log (LOG_DEBUG, "%s: No such tunnel %d to hang up.\n", __FUNCTION__, tid);
+ return;
+ }
+
+@@ -736,7 +736,7 @@ struct tunnel *new_tunnel ()
+ temp = (int *)entropy_buf;
+ tmp->ourtid = *temp & 0xFFFF;
+ #ifdef DEBUG_ENTROPY
+- log(LOG_DEBUG, "ourtid = %u, entropy_buf = %hx\n", tmp->ourtid, *temp);
++ do_log(LOG_DEBUG, "ourtid = %u, entropy_buf = %hx\n", tmp->ourtid, *temp);
+ #endif
+ }
+ #else
+@@ -797,7 +797,7 @@ void do_control ()
+ if (buf[cnt - 1] == '\n')
+ buf[--cnt] = 0;
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: Got message \"%s\" (%d bytes long)\n",
++ do_log (LOG_DEBUG, "%s: Got message \"%s\" (%d bytes long)\n",
+ __FUNCTION__, buf, cnt);
+ #endif
+ switch (buf[0])
+@@ -808,7 +808,7 @@ void do_control ()
+ goto out;
+ host++;
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: Attempting to tunnel to %s\n",
++ do_log (LOG_DEBUG, "%s: Attempting to tunnel to %s\n",
+ __FUNCTION__, host);
+ #endif
+ l2tp_call (host, UDP_LISTEN_PORT, NULL, NULL);
+@@ -840,7 +840,7 @@ void do_control ()
+ if (!lac->c)
+ magic_lac_dial (lac);
+ else
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Session '%s' already active!\n",
+ __FUNCTION__, lac->entname);
+ break;
+@@ -852,12 +852,12 @@ void do_control ()
+ tunl = atoi (tunstr);
+ if (!tunl)
+ {
+- log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
+ tunstr);
+ break;
+ }
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: Attempting to call on tunnel %d\n",
++ do_log (LOG_DEBUG, "%s: Attempting to call on tunnel %d\n",
+ __FUNCTION__, tunl);
+ #endif
+ lac_call (tunl, NULL, NULL);
+@@ -870,7 +870,7 @@ void do_control ()
+
+ call = atoi (callstr);
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: Attempting to call %d\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: Attempting to call %d\n", __FUNCTION__,
+ call);
+ #endif
+ lac_hangup (call);
+@@ -891,7 +891,7 @@ void do_control ()
+ if (lac->t)
+ lac_disconnect (lac->t->ourtid);
+ else
+- log (LOG_DEBUG, "%s: Session '%s' not up\n",
++ do_log (LOG_DEBUG, "%s: Session '%s' not up\n",
+ __FUNCTION__, lac->entname);
+ break;
+ }
+@@ -902,12 +902,12 @@ void do_control ()
+ tunl = atoi (tunstr);
+ if (!tunl)
+ {
+- log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
+ tunstr);
+ break;
+ }
+ #ifdef DEBUG_CONTROL
+- log (LOG_DEBUG, "%s: Attempting to disconnect tunnel %d\n",
++ do_log (LOG_DEBUG, "%s: Attempting to disconnect tunnel %d\n",
+ __FUNCTION__, tunl);
+ #endif
+ lac_disconnect (tunl);
+@@ -916,7 +916,7 @@ void do_control ()
+ show_status ();
+ break;
+ default:
+- log (LOG_DEBUG, "%s: Unknown command %c\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: Unknown command %c\n", __FUNCTION__,
+ buf[0]);
+ }
+ }
+@@ -990,7 +990,7 @@ void daemonize() {
+ char buf[STRLEN];
+
+ if((pid = fork()) < 0) {
+- log(LOG_LOG, "%s: Unable to fork ()\n",__FUNCTION__);
++ do_log(LOG_LOG, "%s: Unable to fork ()\n",__FUNCTION__);
+ close(server_socket);
+ exit(1);
+ }
+@@ -1016,7 +1016,7 @@ void daemonize() {
+
+ /* if pid is read and process exist exit */
+ if(pid && !kill(pid, 0)) {
+- log(LOG_LOG, "%s: There's already a l2tpd server running.\n",
++ do_log(LOG_LOG, "%s: There's already a l2tpd server running.\n",
+ __FUNCTION__);
+ close(server_socket);
+ exit(1);
+@@ -1035,7 +1035,7 @@ void daemonize() {
+ close (i);
+ }
+ else {
+- log(LOG_LOG, "%s: could not write pid file %s error %d",
++ do_log(LOG_LOG, "%s: could not write pid file %s error %d",
+ __FUNCTION__, gconfig.pidfile, i);
+ close(server_socket);
+ exit(1);
+@@ -1054,12 +1054,12 @@ void init (int argc,char *argv[])
+ init_addr ();
+ if (init_config ())
+ {
+- log (LOG_CRIT, "%s: Unable to load config file\n", __FUNCTION__);
++ do_log (LOG_CRIT, "%s: Unable to load config file\n", __FUNCTION__);
+ exit (1);
+ }
+ if (uname (&uts))
+ {
+- log (LOG_CRIT, "%s : Unable to determine host system\n",
++ do_log (LOG_CRIT, "%s : Unable to determine host system\n",
+ __FUNCTION__);
+ exit (1);
+ }
+@@ -1078,14 +1078,14 @@ void init (int argc,char *argv[])
+ control_fd = open (CONTROL_PIPE, O_RDONLY | O_NONBLOCK, 0600);
+ if (control_fd < 0)
+ {
+- log (LOG_CRIT, "%s: Unable to open " CONTROL_PIPE " for reading.",
++ do_log (LOG_CRIT, "%s: Unable to open " CONTROL_PIPE " for reading.",
+ __FUNCTION__);
+ exit (1);
+ }
+- log (LOG_LOG, "l2tpd version " SERVER_VERSION " started on %s PID:%d\n",
++ do_log (LOG_LOG, "l2tpd version " SERVER_VERSION " started on %s PID:%d\n",
+ hostname, getpid ());
+ listenaddr.s_addr = gconfig.listenaddr;
+- log (LOG_LOG, "%s version %s on a %s, listening on IP address %s, port %d\n", uts.sysname,
++ do_log (LOG_LOG, "%s version %s on a %s, listening on IP address %s, port %d\n", uts.sysname,
+ uts.release, uts.machine, inet_ntoa(listenaddr), gconfig.port);
+ lac = laclist;
+ while (lac)
+@@ -1093,7 +1093,7 @@ void init (int argc,char *argv[])
+ if (lac->autodial)
+ {
+ #ifdef DEBUG_MAGIC
+- log (LOG_DEBUG, "%s: Autodialing '%s'\n", __FUNCTION__,
++ do_log (LOG_DEBUG, "%s: Autodialing '%s'\n", __FUNCTION__,
+ lac->entname[0] ? lac->entname : "(unnamed)");
+ #endif
+ lac->active = -1;
+diff -rdup l2tpd-0.70-pre20031121.oorig/misc.c l2tpd-0.70-pre20031121/misc.c
+--- l2tpd-0.70-pre20031121.oorig/misc.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/misc.c 2006-12-28 16:41:59.000000000 +0100
+@@ -32,7 +32,7 @@
+ #include "l2tp.h"
+
+
+-void log (int level, const char *fmt, ...)
++void do_log (int level, const char *fmt, ...)
+ {
+ char buf[256];
+ va_list args;
+@@ -101,7 +101,7 @@ void bufferDump (char *buf, int buflen)
+ c++; /* again two characters to display ONE byte */
+ }
+ *c = '\0';
+- log (LOG_WARN, "%s: buflen=%d, buffer[%d]: *%s*\n", __FUNCTION__,
++ do_log (LOG_WARN, "%s: buflen=%d, buffer[%d]: *%s*\n", __FUNCTION__,
+ buflen, i, line);
+ }
+
+@@ -117,7 +117,7 @@ void bufferDump (char *buf, int buflen)
+ if (c != line)
+ {
+ *c = '\0';
+- log (LOG_WARN, "%s: buffer[%d]: *%s*\n", __FUNCTION__, i,
++ do_log (LOG_WARN, "%s: buffer[%d]: *%s*\n", __FUNCTION__, i,
+ line);
+ }
+ }
+@@ -201,7 +201,7 @@ struct ppp_opts *add_opt (struct ppp_opt
+ new = (struct ppp_opts *) malloc (sizeof (struct ppp_opts));
+ if (!new)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s : Unable to allocate ppp option memory. Expect a crash\n",
+ __FUNCTION__);
+ return NULL;
+@@ -267,7 +267,7 @@ int get_dev_entropy(char *buf, int count
+ if (devrandom == -1)
+ {
+ #ifdef DEBUG_ENTROPY
+- log(LOG_WARN, "%s: couldn't open /dev/urandom,"
++ do_log(LOG_WARN, "%s: couldn't open /dev/urandom,"
+ "falling back to rand()\n",
+ __FUNCTION__);
+ #endif
+@@ -290,13 +290,13 @@ int get_entropy (char *buf, int count)
+ }
+ else if (rand_source == RAND_EGD)
+ {
+- log(LOG_WARN, "%s: EGD Randomness source not yet implemented\n",
++ do_log(LOG_WARN, "%s: EGD Randomness source not yet implemented\n",
+ __FUNCTION__);
+ return -1;
+ }
+ else
+ {
+- log(LOG_WARN, "%s: Invalid Randomness source specified (%d)\n",
++ do_log(LOG_WARN, "%s: Invalid Randomness source specified (%d)\n",
+ __FUNCTION__, rand_source);
+ return -1;
+ }
+diff -rdup l2tpd-0.70-pre20031121.oorig/misc.h l2tpd-0.70-pre20031121/misc.h
+--- l2tpd-0.70-pre20031121.oorig/misc.h 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/misc.h 2006-12-28 16:42:01.000000000 +0100
+@@ -66,7 +66,7 @@ struct ppp_opts
+ #define halt() printf("Halted.\n") ; for(;;)
+
+ extern char hostname[];
+-extern void log (int level, const char *fmt, ...);
++extern void do_log (int level, const char *fmt, ...);
+ extern struct buffer *new_buf (int);
+ extern void udppush_handler (int);
+ extern int addfcs (struct buffer *buf);
+diff -rdup l2tpd-0.70-pre20031121.oorig/network.c l2tpd-0.70-pre20031121/network.c
+--- l2tpd-0.70-pre20031121.oorig/network.c 2006-12-28 16:30:10.000000000 +0100
++++ l2tpd-0.70-pre20031121/network.c 2006-12-28 16:41:59.000000000 +0100
+@@ -52,7 +52,7 @@ int init_network (void)
+ server.sin_port = htons (gconfig.port);
+ if ((server_socket = socket (PF_INET, SOCK_DGRAM, 0)) < 0)
+ {
+- log (LOG_CRIT, "%s: Unable to allocate socket. Terminating.\n",
++ do_log (LOG_CRIT, "%s: Unable to allocate socket. Terminating.\n",
+ __FUNCTION__);
+ return -EINVAL;
+ };
+@@ -61,37 +61,37 @@ int init_network (void)
+ if (bind (server_socket, (struct sockaddr *) &server, sizeof (server)))
+ {
+ close (server_socket);
+- log (LOG_CRIT, "%s: Unable to bind socket. Terminating.\n",
++ do_log (LOG_CRIT, "%s: Unable to bind socket. Terminating.\n",
+ __FUNCTION__);
+ return -EINVAL;
+ };
+ if (getsockname (server_socket, (struct sockaddr *) &server, &length))
+ {
+- log (LOG_CRIT, "%s: Unable to read socket name.Terminating.\n",
++ do_log (LOG_CRIT, "%s: Unable to read socket name.Terminating.\n",
+ __FUNCTION__);
+ return -EINVAL;
+ }
+ #ifdef USE_KERNEL
+ if (gconfig.forceuserspace)
+ {
+- log (LOG_LOG, "Not looking for kernel support.\n");
++ do_log (LOG_LOG, "Not looking for kernel support.\n");
+ kernel_support = 0;
+ }
+ else
+ {
+ if (ioctl (server_socket, SIOCSETL2TP, NULL) < 0)
+ {
+- log (LOG_LOG, "L2TP kernel support not detected.\n");
++ do_log (LOG_LOG, "L2TP kernel support not detected.\n");
+ kernel_support = 0;
+ }
+ else
+ {
+- log (LOG_LOG, "Using l2tp kernel support.\n");
++ do_log (LOG_LOG, "Using l2tp kernel support.\n");
+ kernel_support = -1;
+ }
+ }
+ #else
+- log (LOG_LOG, "This binary does not support kernel L2TP.\n");
++ do_log (LOG_LOG, "This binary does not support kernel L2TP.\n");
+ #endif
+ arg = fcntl (server_socket, F_GETFL);
+ arg |= O_NONBLOCK;
+@@ -154,11 +154,11 @@ void dethrottle (void *call)
+ /* struct call *c = (struct call *)call; */
+ /* if (c->throttle) {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: dethrottling call %d, and setting R-bit\n",__FUNCTION__,c->ourcid);
++ do_log(LOG_DEBUG, "%s: dethrottling call %d, and setting R-bit\n",__FUNCTION__,c->ourcid);
+ #endif c->rbit = RBIT;
+ c->throttle = 0;
+ } else {
+- log(LOG_DEBUG, "%s: call %d already dethrottled?\n",__FUNCTION__,c->ourcid);
++ do_log(LOG_DEBUG, "%s: call %d already dethrottled?\n",__FUNCTION__,c->ourcid);
+ } */
+ }
+
+@@ -170,7 +170,7 @@ void control_xmit (void *b)
+ int ns;
+ if (!buf)
+ {
+- log (LOG_WARN, "%s: called on NULL buffer!\n", __FUNCTION__);
++ do_log (LOG_WARN, "%s: called on NULL buffer!\n", __FUNCTION__);
+ return;
+ }
+
+@@ -182,7 +182,7 @@ void control_xmit (void *b)
+ if (ns < t->cLr)
+ {
+ #ifdef DEBUG_CONTROL_XMIT
+- log (LOG_DEBUG, "%s: Tossing packet %d\n", __FUNCTION__, ns);
++ do_log (LOG_DEBUG, "%s: Tossing packet %d\n", __FUNCTION__, ns);
+ #endif
+ /* Okay, it's been received. Let's toss it now */
+ toss (buf);
+@@ -199,7 +199,7 @@ void control_xmit (void *b)
+ {
+ if (t->self->needclose)
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Unable to deliver closing message for tunnel %d. Destroying anyway.\n",
+ __FUNCTION__, t->ourtid);
+ t->self->needclose = 0;
+@@ -207,7 +207,7 @@ void control_xmit (void *b)
+ }
+ else
+ {
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: Maximum retries exceeded for tunnel %d. Closing.\n",
+ __FUNCTION__, t->ourtid);
+ strcpy (t->self->errormsg, "Timeout");
+@@ -226,7 +226,7 @@ void control_xmit (void *b)
+ tv.tv_usec = 0;
+ schedule (tv, control_xmit, buf);
+ #ifdef DEBUG_CONTROL_XMIT
+- log (LOG_DEBUG, "%s: Scheduling and transmitting packet %d\n",
++ do_log (LOG_DEBUG, "%s: Scheduling and transmitting packet %d\n",
+ __FUNCTION__, ns);
+ #endif
+ udp_xmit (buf);
+@@ -289,7 +289,7 @@ int build_fdset (fd_set *readfds)
+ if (tun->self->needclose ^ tun->self->closing)
+ {
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: closing down tunnel %d\n",
++ do_log (LOG_DEBUG, "%s: closing down tunnel %d\n",
+ __FUNCTION__, tun->ourtid);
+ call_close (tun->self);
+ /* Reset the while loop
+@@ -357,13 +357,13 @@ void network_thread ()
+ if (recvsize < 0)
+ {
+ if (errno != EAGAIN)
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: recvfrom returned error %d (%s)\n",
+ __FUNCTION__, errno, strerror (errno));
+ }
+ else
+ {
+- log (LOG_WARN, "%s: received too small a packet\n",
++ do_log (LOG_WARN, "%s: received too small a packet\n",
+ __FUNCTION__);
+ }
+ }
+@@ -372,7 +372,7 @@ void network_thread ()
+ buf->len = recvsize;
+ if (debug_network)
+ {
+- log (LOG_DEBUG, "%s: recv packet from %s, size = %d," \
++ do_log (LOG_DEBUG, "%s: recv packet from %s, size = %d," \
+ "tunnel = %d, call = %d\n", __func__,
+ inet_ntoa (from.sin_addr), recvsize,
+ tunnel, call);
+@@ -401,13 +401,13 @@ void network_thread ()
+ * to ack receiving the packet.
+ */
+ if (debug_tunnel)
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: no such call %d on tunnel %d. Sending special ZLB\n",
+ __FUNCTION__);
+ handle_special (buf, c, call);
+ }
+ else
+- log (LOG_DEBUG,
++ do_log (LOG_DEBUG,
+ "%s: unable to find call or tunnel to handle packet. call = %d, tunnel = %d Dumping.\n",
+ __FUNCTION__, call, tunnel);
+
+@@ -420,7 +420,7 @@ void network_thread ()
+ if (handle_packet (buf, c->container, c))
+ {
+ if (debug_tunnel)
+- log (LOG_DEBUG, "%s: bad packet\n", __FUNCTION__);
++ do_log (LOG_DEBUG, "%s: bad packet\n", __FUNCTION__);
+ };
+ if (c->cnu)
+ {
+@@ -444,12 +444,12 @@ void network_thread ()
+ int result;
+ recycle_payload (buf, sc->container->peer);
+ #ifdef DEBUG_FLOW_MORE
+- log (LOG_DEBUG, "%s: rws = %d, pSs = %d, pLr = %d\n",
++ do_log (LOG_DEBUG, "%s: rws = %d, pSs = %d, pLr = %d\n",
+ __FUNCTION__, sc->rws, sc->pSs, sc->pLr);
+ #endif
+ /* if ((sc->rws>0) && (sc->pSs > sc->pLr + sc->rws) && !sc->rbit) {
+ #ifdef DEBUG_FLOW
+- log(LOG_DEBUG, "%s: throttling payload (call = %d, tunnel = %d, Lr = %d, Ss = %d, rws = %d)!\n",__FUNCTION__,
++ do_log(LOG_DEBUG, "%s: throttling payload (call = %d, tunnel = %d, Lr = %d, Ss = %d, rws = %d)!\n",__FUNCTION__,
+ sc->cid, sc->container->tid, sc->pLr, sc->pSs, sc->rws);
+ #endif
+ sc->throttle = -1;
+@@ -485,7 +485,7 @@ void network_thread ()
+ }
+ if (result != 0)
+ {
+- log (LOG_WARN,
++ do_log (LOG_WARN,
+ "%s: tossing read packet, error = %s (%d). Closing call.\n",
+ __FUNCTION__, strerror (-result), -result);
+ strcpy (sc->errormsg, strerror (-result));
+diff -rdup l2tpd-0.70-pre20031121.oorig/pty.c l2tpd-0.70-pre20031121/pty.c
+--- l2tpd-0.70-pre20031121.oorig/pty.c 2004-07-08 22:47:52.000000000 +0200
++++ l2tpd-0.70-pre20031121/pty.c 2006-12-28 16:41:59.000000000 +0100
+@@ -59,6 +59,6 @@ int getPtyMaster (char *tty10, char *tty
+ }
+ }
+ }
+- log (LOG_CRIT, "%s: No more free pseudo-tty's\n", __FUNCTION__);
++ do_log (LOG_CRIT, "%s: No more free pseudo-tty's\n", __FUNCTION__);
+ return -1;
+ }
+diff -rdup l2tpd-0.70-pre20031121.oorig/scheduler.c l2tpd-0.70-pre20031121/scheduler.c
+--- l2tpd-0.70-pre20031121.oorig/scheduler.c 2004-07-08 22:47:52.000000000 +0200
++++ l2tpd-0.70-pre20031121/scheduler.c 2006-12-28 16:41:59.000000000 +0100
+@@ -58,7 +58,7 @@ void alarm_handler (int signal)
+ if (cnt != 1)
+ {
+ /* Whoa, we got called from within ourselves! */
+- log (LOG_DEBUG, "%s : Whoa... cnt = %d\n", __FUNCTION__, cnt);
++ do_log (LOG_DEBUG, "%s : Whoa... cnt = %d\n", __FUNCTION__, cnt);
+ return;
+ }
+ while (events)
+@@ -91,7 +91,7 @@ void alarm_handler (int signal)
+ }
+ if ((then.tv_sec <= 0) && (then.tv_usec <= 0))
+ {
+- log (LOG_WARN, "%s: Whoa... Scheduling for <=0 time???\n",
++ do_log (LOG_WARN, "%s: Whoa... Scheduling for <=0 time???\n",
+ __FUNCTION__);
+ }
+ else
diff --git a/package/l2tp/l2tp-sanity.patch b/package/l2tp/l2tp-sanity.patch
new file mode 100644
index 000000000..1d0533d5d
--- /dev/null
+++ b/package/l2tp/l2tp-sanity.patch
@@ -0,0 +1,49 @@
+diff -rdup l2tpd-0.70-pre20031121.oorig/avp.c l2tpd-0.70-pre20031121/avp.c
+--- l2tpd-0.70-pre20031121.oorig/avp.c 2006-12-28 16:00:26.000000000 +0100
++++ l2tpd-0.70-pre20031121/avp.c 2006-12-28 16:06:43.000000000 +0100
+@@ -146,6 +146,7 @@ int validate_msgtype_avp(int attr, stru
+ u_int8_t *p = data + sizeof(struct avp_hdr);
+ c->msgtype = get16(p);
+
++#ifdef SANITY
+ if (t->sanity)
+ {
+ /*
+@@ -293,6 +294,7 @@ int validate_msgtype_avp(int attr, stru
+ return -EINVAL;
+ }
+ }
++#endif
+ return 0;
+ }
+
+@@ -301,7 +303,7 @@ int validate_gen_avp(int attr, struct t
+ void *data, int datalen) {
+ (void)data; (void)datalen;
+ int i = 0, found = 0;
+-
++#ifdef SANITY
+ if(t->sanity) {
+ for(i = 0; i < 8; i++) {
+ if(c->msgtype == avps[attr].allowed_states[i])
+@@ -310,6 +312,7 @@ int validate_gen_avp(int attr, struct t
+ if(!found)
+ return -EINVAL;
+ }
++#endif
+ return 0;
+ }
+
+diff -rdup l2tpd-0.70-pre20031121.oorig/l2tpd.c l2tpd-0.70-pre20031121/l2tpd.c
+--- l2tpd-0.70-pre20031121.oorig/l2tpd.c 2006-12-28 16:00:26.000000000 +0100
++++ l2tpd-0.70-pre20031121/l2tpd.c 2006-12-28 16:04:15.000000000 +0100
+@@ -748,7 +748,9 @@ struct tunnel *new_tunnel ()
+ tmp->peer.sin_family = AF_INET;
+ tmp->peer.sin_port = 0;
+ bzero (&(tmp->peer.sin_addr), sizeof (tmp->peer.sin_addr));
++#ifdef SANITY
+ tmp->sanity = -1;
++#endif
+ tmp->qtid = -1;
+ tmp->ourfc = ASYNC_FRAMING | SYNC_FRAMING;
+ tmp->ourbc = 0;
diff --git a/package/l2tp/l2tp.mk b/package/l2tp/l2tp.mk
new file mode 100644
index 000000000..6f623362b
--- /dev/null
+++ b/package/l2tp/l2tp.mk
@@ -0,0 +1,59 @@
+#############################################################
+#
+# l2tp
+#
+#############################################################
+L2TP_VER:=0.70-pre20031121
+L2TP_SOURCE:=l2tpd_$(L2TP_VER).orig.tar.gz
+L2TP_PATCH:=l2tpd_$(L2TP_VER)-2.1.diff.gz
+L2TP_SITE:=ftp://ftp.debian.org/debian/pool/main/l/l2tpd/
+L2TP_DIR:=$(BUILD_DIR)/l2tpd-$(L2TP_VER)
+L2TP_CAT:=$(ZCAT)
+L2TP_BINARY:=l2tpd
+L2TP_TARGET_BINARY:=usr/sbin/l2tpd
+
+$(DL_DIR)/$(L2TP_SOURCE):
+ $(WGET) -P $(DL_DIR) $(L2TP_SITE)/$(L2TP_SOURCE)
+
+$(DL_DIR)/$(L2TP_PATCH):
+ $(WGET) -P $(DL_DIR) $(L2TP_SITE)/$(L2TP_PATCH)
+
+l2tp-source: $(DL_DIR)/$(L2TP_SOURCE) $(DL_DIR)/$(L2TP_PATCH)
+
+$(L2TP_DIR)/.unpacked: $(DL_DIR)/$(L2TP_SOURCE) $(DL_DIR)/$(L2TP_PATCH)
+ $(L2TP_CAT) $(DL_DIR)/$(L2TP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ -mv -f $(L2TP_DIR).orig $(L2TP_DIR)
+ifneq ($(L2TP_PATCH),)
+ (cd $(L2TP_DIR) && $(L2TP_CAT) $(DL_DIR)/$(L2TP_PATCH) | patch -p1)
+ if [ -d $(L2TP_DIR)/debian/patches ]; then \
+ toolchain/patch-kernel.sh $(L2TP_DIR) $(L2TP_DIR)/debian/patches \*.patch ; \
+ fi
+endif
+ toolchain/patch-kernel.sh $(L2TP_DIR) package/l2tp/ l2tp\*.patch
+ touch $(L2TP_DIR)/.unpacked
+
+$(L2TP_DIR)/$(L2TP_BINARY): $(L2TP_DIR)/.unpacked
+ $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(L2TP_DIR) CC=$(TARGET_CC) \
+ DFLAGS= \
+ OSFLAGS="-DLINUX -UUSE_KERNEL $(TARGET_CFLAGS) -USANITY"
+
+$(TARGET_DIR)/$(L2TP_TARGET_BINARY): $(L2TP_DIR)/$(L2TP_BINARY)
+ cp -dpf $(L2TP_DIR)/$(L2TP_BINARY) $@
+ $(STRIP) $@
+
+l2tp: uclibc $(TARGET_DIR)/$(L2TP_TARGET_BINARY)
+
+l2tp-clean:
+ -$(MAKE) -C $(L2TP_DIR) clean
+ rm -f $(TARGET_DIR)/$(L2TP_TARGET_BINARY)
+
+l2tp-dirclean:
+ rm -rf $(L2TP_DIR)
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_L2TP)),y)
+TARGETS+=l2tp
+endif