Changeset 2889

Show
Ignore:
Timestamp:
11/20/09 17:15:48 (4 months ago)
Author:
stevedh
Message:

port to osx- still broken

Location:
code/b6lowpan/branches/devel/support/sdk/c/blip
Files:
8 added
17 modified
4 moved

Legend:

Unmodified
Added
Removed
  • code/b6lowpan/branches/devel/support/sdk/c/blip/configure.ac

    r2387 r2889  
    11AC_INIT([blip], [2.1], [stevedh@eecs.berkeley.edu]) 
     2AC_CANONICAL_SYSTEM 
     3echo $ac_n "building for architecture""... $ac_c" 1>&6 
     4case "$target" in 
     5        *linux*) 
     6                AC_MSG_RESULT(linux) 
     7                arch=linux 
     8        ;; 
     9        *darwin*) 
     10                AC_MSG_RESULT(darwin) 
     11                arch=darwin 
     12        ;; 
     13        *)       
     14                AC_MSG_RESULT(unknown) 
     15                AC_MSG_ERROR([currently only Linux and OSX are supported]) 
     16        ;; 
     17esac 
     18dnl AC_DEFINE([PLATFORM], [${arch}]) 
     19 
     20dnl check programs 
    221AM_INIT_AUTOMAKE([-Wall -Werror foreign]) 
    322AC_PROG_RANLIB 
     
    1130]) 
    1231 
     32dnl check various platform include files 
     33AC_CHECK_HEADERS([stdint.h inttypes.h]) 
     34AC_CHECK_HEADERS([netinet/in.h ]) 
     35AC_CHECK_HEADERS([linux/if_tun.h]) 
     36AC_CHECK_HEADERS([arpa/inet.h]) 
     37AC_CHECK_HEADERS([sys/socket.h net/route.h net/if.h], [], [],  
     38[[#if HAVE_SYS_SOCKET_H 
     39#include <sys/socket.h> 
     40#endif 
     41 
     42#if HAVE_NET_ROUTE_H 
     43#include <net/route.h> 
     44#endif]]) 
     45 
     46AC_MSG_CHECKING(whether struct in6_addr has u6_addrXX and defines s6_addrXX) 
     47AC_TRY_COMPILE([#include <netinet/in.h>], [static struct in6_addr in6_u;  
     48int u =  in6_u.s6_addr16;], [AC_MSG_RESULT(yes); AC_DEFINE([HAVE_IN6_ADDR_S6_ADDR], 
     491, [whether struct in6_addr has u6_addrXX and defines s6_addrXX])], 
     50AC_MSG_RESULT(no)) 
     51 
     52AC_MSG_CHECKING(for SIOCADDRT) 
     53AC_TRY_COMPILE([#include <sys/ioctl.h>], [int x = SIOCADDRT;], 
     54[AC_MSG_RESULT(yes); AC_DEFINE([HAVE_SIOCADDRT], 1, [weather the SIOCADDRT ioctl is defined])], 
     55AC_MSG_RESULT(no)) 
     56 
     57dnl sockoption for joining an ipv6 group 
     58AC_MSG_CHECKING(if IPV6_JOIN_GROUP is defined) 
     59AC_TRY_COMPILE([#include <netinet/in.h>], [int x = IPV6_JOIN_GROUP;], 
     60[AC_MSG_RESULT(yes); AC_DEFINE([HAVE_IPV6_JOIN_GROUP], 1,  
     61                     [weather IPV6_JOIN_GROUP is defined])], 
     62AC_MSG_RESULT(no)) 
     63 
     64AC_MSG_CHECKING(if IPV6_ADD_MEMBERSHIP is defined) 
     65AC_TRY_COMPILE([#include <netinet/in.h>], [int x = IPV6_ADD_MEMBERSHIP;], 
     66[AC_MSG_RESULT(yes); AC_DEFINE([HAVE_IPV6_ADD_MEMBERSHIP], 1,  
     67                     [weather IPV6_ADD_MEMBERSHIP is defined])], 
     68AC_MSG_RESULT(no)) 
     69 
     70dnl if htons requires -lc 
     71dnl AC_MSG_CHECKING(if htons requires -lc) 
     72dnl AC_TRY_COMPILE([#include <arpa/inet.h>], [int x = htons(10);], 
     73dnl [AC_MSG_RESULT(no)], 
     74dnl [AC_MSG_RESULT(yes); LDFLAGS+=-lc]) 
     75 
     76dnl Check where to put the pidfile 
     77AC_MSG_CHECKING(where to put seqno file) 
     78AC_ARG_WITH(seqfile, 
     79[AC_HELP_STRING([--with-seqfile], [Path to the radvd pidfile (/var/run/ip-driver.seq)])], 
     80        PATH_BLIP_SEQFILE=$withval, 
     81        PATH_BLIP_SEQFILE=/var/run/ip-driver.seq.pid) 
     82AC_MSG_RESULT($PATH_BLIP_SEQFILE) 
     83AC_SUBST(PATH_BLIP_SEQFILE) 
     84 
    1385AC_ARG_ENABLE([lpl], 
    1486        [AS_HELP_STRING([--enable-lpl], [assume LPL is in use])], 
     
    1688        []) 
    1789 
    18  
     90AC_LINK_FILES(driver/tun_dev_${arch}.c, driver/tun_dev.c) 
     91AC_LINK_FILES(driver/routing-${arch}.c, driver/routing-platform.c) 
     92AC_LINK_FILES(driver/netlink-${arch}.c, driver/netlink.c) 
    1993AC_CONFIG_SUBDIRS([driver/radvd-1.0]) 
    2094AC_OUTPUT 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/Makefile.am

    r2387 r2889  
    22# SUBDIRS = radvd-1.0 
    33 
     4DEFS = -DPATH_BLIP_SEQFILE=\"$(PATH_BLIP_SEQFILE)\" 
     5 
    46sbin_PROGRAMS = ip-driver 
    57 
     8ip_driver_LDFLAGS = @LDFLAGS@ -lc 
     9 
    610radvddir = radvd-1.0 
    7 ip_driver_SOURCES=serial_tun.c tun_dev.c hashtable.c routing.c nwstate.c \ 
     11ip_driver_SOURCES=serial_tun.c tun_dev.c hashtable.c routing-common.c nwstate.c \ 
    812        logging.c config.c radvd-wrapper.c  vty/vty.c vty/vty-util.c vty/vty.h \ 
    9         netlink.c mcast.c \ 
     13        netlink.c mcast.c routing-platform.c\ 
    1014  $(radvddir)/log.c $(radvddir)/socket.c $(radvddir)/recv.c $(radvddir)/util.c $(radvddir)/radvd.h \ 
    1115        $(radvddir)/defaults.h $(radvddir)/pathnames.h \ 
     
    1317  $(radvddir)/timer.c $(radvddir)/send.c $(radvddir)/process.c $(radvddir)/interface.c \ 
    1418  $(radvddir)/device.c $(radvddir)/device-common.c $(radvddir)/gram.h \ 
    15         config.h  hashtable.h  hashtable_private.h  \ 
     19        router-config.h  hashtable.h  hashtable_private.h  \ 
    1620        logging.h  mcast.h  netlink.h  nwstate.h  \ 
    1721        routing.h  tun_dev.h     
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/config.c

    r2410 r2889  
    3232 
    3333#include <lib6lowpan/ip.h> 
    34 #include "config.h" 
     34#include "router-config.h" 
    3535#include "logging.h" 
    3636#include "vty/vty.h" 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/mcast.c

    r2387 r2889  
    2727#include <unistd.h> 
    2828 
    29 #include <net/if.h> 
    30 #include <sys/socket.h> 
    31 #include <sys/ioctl.h> 
    32 #include <netinet/in.h> 
    33 #include <netinet/ip.h> 
    34 #include <arpa/inet.h> 
     29// includes all the plaform defs 
     30#include <lib6lowpan/lib6lowpan.h> 
    3531 
    3632#include "mcast.h" 
    3733#include "logging.h" 
     34 
     35#if HAVE_IPV6_ADD_MEMBERSHIP 
     36#define IPV6_JOIN IPv6_ADD_MEMBERSHIP 
     37#else 
     38# if HAVE_IPV6_JOIN_GROUP 
     39#  define IPV6_JOIN IPV6_JOIN_GROUP 
     40# endif 
     41#endif 
    3842 
    3943int __mcast_sock; 
     
    8791  } 
    8892 
     93#if 0 
    8994  /* bind it to the device we're going to join the link-local 
    9095     multicast group on */ 
     
    96101    goto fail; 
    97102  } 
     103#endif 
    98104 
    99105  /* the loopback on linux doesn't support multicast. that's okay, 
     
    128134  join.ipv6mr_interface = ifindex; 
    129135 
    130   if (setsockopt(__mcast_sock, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &join, sizeof(join)) < 0) { 
     136  if (setsockopt(__mcast_sock, IPPROTO_IPV6, IPV6_JOIN, &join, sizeof(join)) < 0) { 
    131137    log_fatal_perror("error joining group"); 
    132138    goto fail; 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/radvd-1.0/config.h.in

    r2387 r2889  
    7979#undef PACKAGE_TARNAME 
    8080 
     81/* Define to the home page for this package. */ 
     82#undef PACKAGE_URL 
     83 
    8184/* Define to the version of this package. */ 
    8285#undef PACKAGE_VERSION 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/radvd-1.0/configure.in

    r2387 r2889  
    3030                AC_MSG_RESULT(bsd44) 
    3131                arch=bsd44 
     32        ;; 
     33        *darwin*) 
     34                AC_MSG_RESULT(darwin) 
     35                arch=darwin 
    3236        ;; 
    3337        *)       
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/radvd-wrapper.c

    r2387 r2889  
    5151 
    5252#include "logging.h" 
    53 #include "config.h" 
     53#include "router-config.h" 
    5454 
    5555struct Interface *iface; 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/router-config.h

    r2410 r2889  
    2727#define _CONFIG_H 
    2828 
    29 #include <netinet/in.h> 
    30 #include <net/if.h> 
     29// #include <lib6lowpan/lib6lowpan.h> 
    3130 
    3231struct config { 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/routing-common.c

    r2443 r2889  
    2424#include <stdio.h> 
    2525#include <stdlib.h> 
     26#include <sys/socket.h> 
    2627#include <net/if.h> 
    2728#include <arpa/inet.h> 
     
    4041#include "netlink.h" 
    4142 
    42 static ieee154_saddr_t my_short_addr; 
    43 static uint16_t current_seqno; 
     43ieee154_saddr_t my_short_addr; 
     44uint16_t current_seqno; 
    4445extern struct in6_addr  __my_address; 
    4546 
     
    4950char report_buf[ROUTMSGSIZ]; 
    5051 
    51 /* 
    52  * Call to setup routing tables. 
    53  * 
    54  */ 
    55 int routing_init(struct config *c, char *tun_name) { 
    56   FILE *fd; 
    57   char buf[256]; 
    58   my_short_addr = ntohs(__my_address.s6_addr16[7]); 
    59   strncpy(proxy_dev, c->proxy_dev, IFNAMSIZ); 
    60   strncpy(tun_dev, tun_name, IFNAMSIZ); 
    61  
    62   // set up the network state data structures 
    63   nw_init(); 
    64  
    65   // start a netlink session to the kernel 
    66   nl_init(); 
    67  
    68   mcast_sock = mcast_start(proxy_dev);; 
    69  
    70   if ((fd = fopen("/proc/sys/net/ipv6/conf/all/forwarding", "w")) == NULL) { 
    71     log_fatal_perror("enable forwarding"); 
    72     return -1; 
    73   } 
    74   fprintf(fd, "1"); 
    75   fclose(fd); 
    76  
    77   snprintf(buf, sizeof(buf), "/proc/sys/net/ipv6/conf/%s/proxy_ndp", proxy_dev); 
    78   if ((fd = fopen(buf, "w")) == NULL) { 
    79     warn("unable to enable IPv6 ND proxy on %s\n", proxy_dev); 
    80   } else { 
    81     fprintf(fd, "1"); 
    82     fclose(fd); 
    83   } 
    84  
    85   if ((fd = fopen("/var/run/ip-driver.seq", "r")) != NULL) { 
    86     if (fscanf(fd, "%hi\n", &current_seqno) != 1) { 
    87       current_seqno = 0; 
    88     } 
    89     fclose(fd); 
    90   } 
    91  
    92   return (mcast_sock >= 0) ? 0 : -1; 
    93 } 
    9452 
    9553int routing_add_fds(fd_set *fds) { 
     
    9957  return mcast_sock; 
    10058} 
    101  
    102 int route_cmd(int cmd, struct in6_addr *dest, char *dev) { 
    103   struct in6_rtmsg rt; 
    104   memset((char *) &rt, 0, sizeof(struct in6_rtmsg)); 
    105   memcpy(&rt.rtmsg_dst, dest, sizeof(struct in6_addr)); 
    106  
    107   rt.rtmsg_flags = RTF_UP | RTF_HOST; 
    108   rt.rtmsg_metric = 1; 
    109   rt.rtmsg_dst_len = 128; 
    110   rt.rtmsg_ifindex = if_nametoindex(dev); 
    111  
    112   return ioctl(mcast_sock, cmd, &rt); 
    113 }         
    114  
    11559 
    11660int routing_process(fd_set *fds) { 
     
    260204 
    261205/* 
    262  * Identical to routing_insert_route, except allows for a detour route 
    263  */ 
    264 /*uint8_t routing_insert_route_indirect(struct split_ip_msg *orig, ip6_addr_t detour) { 
    265   int offset = 0; 
    266   path_t *path = nw_get_route(my_short_addr, l2fromIP(detour)); 
    267   path_t *path_second = nw_get_route(l2fromIP(detour), l2fromIP(orig->hdr.dst_addr)); 
    268   path_t *i; 
    269   struct generic_header *g_hdr = (struct generic_header *)malloc(sizeof(struct generic_header)); 
    270   struct source_header *sh; 
    271  
    272   debug("routing_insert_route_indirect len1: 0x%x, len2: 0x%x\n", path->length, path_second->length); 
    273  
    274   if (ntoh16(orig->hdr.plen) + sizeof(struct source_header) + ((path->length + path_second->length) * sizeof(uint16_t)) + sizeof(struct ip6_hdr) > INET_MTU) { 
    275     warn("packet plus source header too long\n"); 
    276     return 1; 
    277   } 
    278  
    279   sh = (struct source_header *)malloc(sizeof(struct source_header) + (path->length + path_second->length)*sizeof(uint16_t)); 
    280   if (sh == NULL || g_hdr == NULL) return 1; 
    281  
    282   sh->nxt_hdr = orig->hdr.nxt_hdr; 
    283   sh->len = sizeof(struct source_header) + ((path->length + path_second->length) * sizeof(uint16_t)); 
    284   sh->dispatch = IP_EXT_SOURCE_DISPATCH; 
    285   sh->current = 0; 
    286   orig->hdr.nxt_hdr = NXTHDR_SOURCE; 
    287  
    288   fprintf(stderr, "to 0x%x [%i]: ", noths(orig->hdr.ip6_dst.s6_addr16[7]), path->length + path_second->length); 
    289   for (i = path; i != NULL; i = i->next) { 
    290     fprintf(stderr, "0x%x ", i->node); 
    291     sh->hops[offset++] = hton16(i->node); 
    292   } 
    293   for (i = path_second; i != NULL; i = i->next) { 
    294     fprintf(stderr, "0x%x ", i->node); 
    295     sh->hops[offset++] = hton16(i->node); 
    296   } 
    297  
    298   fprintf(stderr, "\n"); 
    299  
    300   orig->hdr.plen = hton16(ntoh16(orig->hdr.plen) + sh->len); 
    301  
    302   g_hdr->payload_malloced = 1; 
    303   g_hdr->len = sh->len; 
    304   g_hdr->hdr.sh = sh; 
    305   g_hdr->next = orig->headers; 
    306   orig->headers = g_hdr; 
    307  
    308   nw_free_path(path); 
    309   nw_free_path(path_second); 
    310  
    311   return 0; 
    312 } 
    313 */ 
    314  
    315 /* 
    316206 */ 
    317207uint8_t routing_insert_route(struct split_ip_msg *orig) { 
     
    418308  FILE *fd; 
    419309  ++current_seqno; 
    420   if ((fd = fopen("/var/run/ip-driver.seq", "w")) != NULL) { 
     310  if ((fd = fopen(PATH_BLIP_SEQFILE, "w")) != NULL) { 
    421311    fprintf(fd, "%hi\n", current_seqno); 
    422312    fclose(fd); 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/routing.h

    r2387 r2889  
    2626#include <string.h> 
    2727#include "nwstate.h" 
    28 #include "config.h" 
     28#include "router-config.h" 
     29 
     30#if ! HAVE_SIOCADDRT 
     31#define SIOCADDRT 1 
     32#define SIOCDELRT 2 
     33#endif 
    2934 
    3035enum { 
     
    4954}; 
    5055 
     56/*  
     57 * These two are platform-specific 
     58 * 
     59 * They should be in a file named routing-{arch}.c, which is linked to 
     60 * routing-platform.c by configure. 
     61 */ 
    5162int routing_init(struct config *c, char *tun_dev); 
     63int route_cmd(int cmd, struct in6_addr *dest, char *dev); 
    5264 
    5365/*  
  • code/b6lowpan/branches/devel/support/sdk/c/blip/driver/serial_tun.c

    r2847 r2889  
    167167  printf("  nxthdr: 0x%x hlim: 0x%x plen: %i\n", msg->hdr.nxt_hdr, msg->hdr.hlim, ntohs(msg->hdr.plen)); 
    168168  printf("  src: "); 
    169   for (i = 0; i < 16; i++) printf("0x%x ", msg->hdr.ip6_src.s6_addr[i]); 
     169  for (i = 0; i < 16; i++) printf("0x%hhx ", msg->hdr.ip6_src.s6_addr[i]); 
    170170  printf("\n"); 
    171171  printf("  dst: "); 
    172   for (i = 0; i < 16; i++) printf("0x%x ", msg->hdr.ip6_dst.s6_addr[i]); 
     172  for (i = 0; i < 16; i++) printf("0x%hhx ", msg->hdr.ip6_dst.s6_addr[i]); 
    173173  printf("\n"); 
    174174 
     
    472472  debug("next hop: 0x%x\n", dest); 
    473473  flow_insert_label(msg); 
    474   print_ip_packet(msg); 
    475474 
    476475  fifo_report(msg, dest, nxt_hdr); 
     
    926925  } 
    927926  debug("tun_read: read 0x%x bytes\n", len); 
     927  log_dump_serial_packet(&msg->pi, len); 
    928928 
    929929  if ((msg->hdr.vlfc[0] >> 4) != IPV6_VERSION) { 
     
    12171217    } else if (strcmp(argv[1], "lpl") == 0) { 
    12181218      if (val < 0 || val > 4096) { 
    1219         VTY_printf("diallowing lpl interval of %i\r\n"); 
     1219        VTY_printf("diallowing lpl interval of %i\r\n", val); 
    12201220      } else { 
    12211221        driver_config.lpl_interval = val; 
     
    13821382     
    13831383    if (!opt_listenonly) { 
    1384       int more_data; 
     1384      int more_data = 0; 
    13851385      /* check for data */ 
    1386       do { 
    1387         more_data = tun_input(); 
    1388         more_data = serial_input() || more_data ; 
    1389       } while (more_data); 
     1386      if (FD_ISSET(tun_fd, &fs)) tun_input(); 
     1387      if (FD_ISSET(pan_fd, &fs)) serial_input(); 
     1388/*       do { */ 
     1389/*         more_data = serial_input() || more_data ; */ 
     1390/*       } while (more_data); */ 
    13901391    } 
    13911392 
     
    14661467  dev[0] = 0; 
    14671468  if (opt_listenonly) { 
    1468     tun_fd = -1; 
    14691469#ifndef SF_SRC 
    14701470    ser_src = NULL; 
     
    14851485    } 
    14861486     
    1487      
    14881487    for (i = 0; i < N_RECONSTRUCTIONS; i++) { 
    14891488      reconstructions[i].timeout = T_UNUSED; 
     
    14951494                                 1, stderr_msg); 
    14961495    if (!ser_src) { 
    1497       fatal("Couldn't open serial port at %s:%s\n", argv[optind], argv[optind + 1]); 
     1496      log_fatal_perror("Couldn't open serial port");// at %s:%s\n", argv[optind], argv[optind + 1]); 
    14981497      exit(1); 
    14991498    } 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/6lowpan.h

    r2387 r2889  
    3232#define __6LOWPAN_H__ 
    3333 
    34 #include <stdint.h> 
     34#include "lib6lowpan-includes.h" 
     35 
    3536/* 
    3637 * Typedefs and static library data. 
     
    3839typedef uint8_t ip6_addr_t [16]; 
    3940typedef uint16_t cmpr_ip6_addr_t; 
    40 #ifdef PC 
    41 #include "../config.h" 
    42 typedef uint16_t ieee154_saddr_t; 
    43 typedef uint16_t hw_pan_t; 
    44 enum { 
    45   HW_BROADCAST_ADDR = 0xffff, 
    46 }; 
    47 #else 
    48 #include <Ieee154.h> 
    49 #endif 
     41 
    5042 
    5143/* 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/Makefile.am

    r2387 r2889  
    55noinst_lib6lowpandir = $(includedir)/lib6lowpan-2.1.1 
    66noinst_lib6lowpan_HEADERS = 6lowpan.h  devconf.h  IEEE154Packet.h  in_cksum.h  \ 
    7         ip.h  ip_malloc.h  lib6lowpan.h  TrackFlows.h 
     7        ip.h  ip_malloc.h  lib6lowpan.h  TrackFlows.h nwbyte.h 
    88lib6lowpan_a_SOURCES = lib6lowpan.c lib6lowpanIP.c lib6lowpanFrag.c $(lib6lowpan_HEADERS) 
    99 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/ip.h

    r2387 r2889  
    2323#define _IP_H_ 
    2424 
     25#include "lib6lowpan-includes.h" 
     26#include "6lowpan.h" 
     27 
    2528/* 
    2629 * define message structures for internet communication 
    2730 * 
    2831 */ 
    29  
    30 #ifdef PC 
    31 #include <linux/if_tun.h> 
    32 #include <netinet/in.h> 
    33 #endif 
    34  
    35 #include "6lowpan.h" 
    3632 
    3733enum { 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/lib6lowpan.c

    r2387 r2889  
    2020 * 
    2121 */ 
    22 #include "6lowpan.h" 
    23 #include "ip.h" 
    2422#include "lib6lowpan.h" 
    2523 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/lib6lowpan.h

    r2387 r2889  
    2222#ifndef _LIB6LOWPAN_H_ 
    2323#define _LIB6LOWPAN_H_ 
    24 #include <stdint.h> 
    25 #include <stddef.h> 
    26  
     24 
     25#include "lib6lowpan-includes.h" 
    2726#include "6lowpan.h" 
    2827#include "ip.h" 
    29 #include "nwbyte.h" 
    3028 
    3129 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/lib6lowpanFrag.c

    r2387 r2889  
    2929#include <stdio.h> 
    3030 
    31 #include "ip.h" 
    3231#include "ip_malloc.h" 
    33 #include "6lowpan.h" 
    3432#include "lib6lowpan.h" 
    3533 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/lib6lowpan/nwbyte.h

    r2414 r2889  
    1111#if defined(PC)  
    1212// use library versions if on linux 
    13 #include <netinet/in.h> 
    14 #include <endian.h> 
    15  
    1613#define ntoh16(X)   ntohs(X) 
    1714#define hton16(X)   htons(X) 
  • code/b6lowpan/branches/devel/support/sdk/c/blip/serial_tun.conf

    r2418 r2889  
    77# set the debug level of the output 
    88# choices are DEBUG, INFO, WARN, ERROR, and FATAL 
    9 # log DEBUG 
     9log DEBUG 
    1010 
    1111# set the address of the router's 802.15.4 interface.  The interface