- add a layer 2 tunneling protocol package
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 31 Jan 2007 21:22:33 +0000 (21:22 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 31 Jan 2007 21:22:33 +0000 (21:22 -0000)
package/Config.in
package/l2tp/Config.in [new file with mode: 0644]
package/l2tp/l2tp-legacy.patch [new file with mode: 0644]
package/l2tp/l2tp-no-gnu-extensions.patch [new file with mode: 0644]
package/l2tp/l2tp-rename-func-log.patch [new file with mode: 0644]
package/l2tp/l2tp-sanity.patch [new file with mode: 0644]
package/l2tp/l2tp.mk [new file with mode: 0644]

index ca2221f5bd900c6e887cf9a4c61af9ed2d1602db..db6f3f5c771e96e1eca2a6be03bc91bc5815c263 100644 (file)
@@ -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 (file)
index 0000000..9295f7d
--- /dev/null
@@ -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 (file)
index 0000000..39506d8
--- /dev/null
@@ -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 (file)
index 0000000..ef07e26
--- /dev/null
@@ -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 (file)
index 0000000..51b5182
--- /dev/null
@@ -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 (file)
index 0000000..1d0533d
--- /dev/null
@@ -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 (file)
index 0000000..6f62336
--- /dev/null
@@ -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