2004-10-10 Paul Jakma <paul@dishone.st>

	* ospf6_route.c: Add const qualifier to various char arrays of
          constants. signed/unsigned fixes.
          (ospf6_linkstate_table_show) argv is const
        * ospf6_snmp.c: listnode typedef is dead.
          (ospf6_snmp_init) Take struct thread_master arg, needed for
          smux_init.
        * ospf6_snmp.h: update ospf6_snmp_init declaration.
        * ospf6d.c: (ospf6_init) add const qualifier to sargv, pass master
          to ospf_snmp6_init.
	* ospf6_asbr.c: const char update.
	* ospf6_interface.c: ditto, plus signed/unsigned fixes.
	  (ipv6_ospf6_cost) Check whether cost fits in u_int32_t and use
          strtoul.
	* ospf6_intra.c: const char update. Parenthesise expression.
	* ospf6_lsa.c: signed/unsigned and const char updates.
	* ospf6_proto.c: ditto.
	* ospf6_message.c: ditto.
	* ospf6_lsdb.c: signed/unsigned update.
	* ospf6_main.c: const char update.
	* ospf6_neighbor.c: ditto.
	* ospf6_spf.c: ditto.
	* ospf6_top.c: ditto.
diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
index 2628fec..3142bea 100644
--- a/ospf6d/ChangeLog
+++ b/ospf6d/ChangeLog
@@ -1,7 +1,29 @@
 2004-10-10 Paul Jakma <paul@dishone.st>
 
 	* Makefile.am: fix listing of ospf_snmp.c in noinst_HEADERS
-
+	* ospf6_route.c: Add const qualifier to various char arrays of
+          constants. signed/unsigned fixes.
+          (ospf6_linkstate_table_show) argv is const
+        * ospf6_snmp.c: listnode typedef is dead.
+          (ospf6_snmp_init) Take struct thread_master arg, needed for
+          smux_init.
+        * ospf6_snmp.h: update ospf6_snmp_init declaration.
+        * ospf6d.c: (ospf6_init) add const qualifier to sargv, pass master
+          to ospf_snmp6_init.
+	* ospf6_asbr.c: const char update.
+	* ospf6_interface.c: ditto, plus signed/unsigned fixes.
+	  (ipv6_ospf6_cost) Check whether cost fits in u_int32_t and use
+          strtoul.
+	* ospf6_intra.c: const char update. Parenthesise expression.
+	* ospf6_lsa.c: signed/unsigned and const char updates.
+	* ospf6_proto.c: ditto.
+	* ospf6_message.c: ditto.
+	* ospf6_lsdb.c: signed/unsigned update.
+	* ospf6_main.c: const char update.
+	* ospf6_neighbor.c: ditto.
+	* ospf6_spf.c: ditto.
+	* ospf6_top.c: ditto.
+	
 2004-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
 
 	* ospf6_snmp.[ch], OSPFV3-MIB.txt: start supporting SNMP.
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 3105081..41da5e7 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -50,11 +50,11 @@
 
 unsigned char conf_debug_ospf6_asbr = 0;
 
-char *zroute_name[] =
+const char *zroute_name[] =
 { "system", "kernel", "connected", "static",
   "rip", "ripng", "ospf", "ospf6", "isis", "bgp", "unknown" };
 
-char *zroute_abname[] =
+const char *zroute_abname[] =
 { "X", "K", "C", "S", "R", "R", "O", "O", "I", "B", "?" };
 
 #define ZROUTE_NAME(x)                                     \
@@ -365,7 +365,7 @@
 /* redistribute function */
 
 void
-ospf6_asbr_routemap_set (int type, char *mapname)
+ospf6_asbr_routemap_set (int type, const char *mapname)
 {
   if (ospf6->rmap[type].name)
     free (ospf6->rmap[type].name);
@@ -383,7 +383,7 @@
 }
 
 void
-ospf6_asbr_routemap_update (char *mapname)
+ospf6_asbr_routemap_update (const char *mapname)
 {
   int type;
 
@@ -828,7 +828,7 @@
 }
 
 void *
-ospf6_routemap_rule_match_address_prefixlist_compile (char *arg)
+ospf6_routemap_rule_match_address_prefixlist_compile (const char *arg)
 {
   return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg);
 }
@@ -867,7 +867,7 @@
 }
 
 void *
-ospf6_routemap_rule_set_metric_type_compile (char *arg)
+ospf6_routemap_rule_set_metric_type_compile (const char *arg)
 {
   if (strcmp (arg, "type-2") && strcmp (arg, "type-1"))
     return NULL;
@@ -904,7 +904,7 @@
 }
 
 void *
-ospf6_routemap_rule_set_metric_compile (char *arg)
+ospf6_routemap_rule_set_metric_compile (const char *arg)
 {
   u_int32_t metric;
   char *endp;
@@ -950,7 +950,7 @@
 }
 
 void *
-ospf6_routemap_rule_set_forwarding_compile (char *arg)
+ospf6_routemap_rule_set_forwarding_compile (const char *arg)
 {
   struct in6_addr a;
   if (inet_pton (AF_INET6, arg, &a) != 1)
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 85f908e..99d5acb 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -44,7 +44,7 @@
 
 unsigned char conf_debug_ospf6_interface = 0;
 
-char *ospf6_interface_state_str[] =
+const char *ospf6_interface_state_str[] =
 {
   "None",
   "Down",
@@ -107,7 +107,7 @@
 ospf6_interface_create (struct interface *ifp)
 {
   struct ospf6_interface *oi;
-  int iobuflen;
+  unsigned int iobuflen;
 
   oi = (struct ospf6_interface *)
     XMALLOC (MTYPE_OSPF6_IF, sizeof (struct ospf6_interface));
@@ -261,7 +261,7 @@
 ospf6_interface_if_add (struct interface *ifp)
 {
   struct ospf6_interface *oi;
-  int iobuflen;
+  unsigned int iobuflen;
 
   oi = (struct ospf6_interface *) ifp->info;
   if (oi == NULL)
@@ -774,8 +774,8 @@
   struct prefix *p;
   struct listnode *i;
   char strbuf[64], drouter[32], bdrouter[32];
-  char *updown[3] = {"down", "up", NULL};
-  char *type;
+  const char *updown[3] = {"down", "up", NULL};
+  const char *type;
   struct timeval res, now;
   char duration[32];
   struct ospf6_lsa *lsa;
@@ -1058,7 +1058,7 @@
 {
   struct ospf6_interface *oi;
   struct interface *ifp;
-  int ifmtu, iobuflen;
+  unsigned int ifmtu, iobuflen;
   struct listnode *node;
   struct ospf6_neighbor *on;
 
@@ -1119,7 +1119,7 @@
 {
   struct ospf6_interface *oi;
   struct interface *ifp;
-  int iobuflen;
+  unsigned int iobuflen;
   struct listnode *node;
   struct ospf6_neighbor *on;
 
@@ -1168,6 +1168,7 @@
 {
   struct ospf6_interface *oi;
   struct interface *ifp;
+  unsigned long int lcost;
 
   ifp = (struct interface *) vty->index;
   assert (ifp);
@@ -1177,11 +1178,19 @@
     oi = ospf6_interface_create (ifp);
   assert (oi);
 
-  if (oi->cost == strtol (argv[0], NULL, 10))
+  lcost = strtol (argv[0], NULL, 10);
+
+  if (lcost > UINT32_MAX)
+    {
+      vty_out (vty, "Cost %ld is out of range%s", lcost, VNL);
+      return CMD_WARNING;
+    }
+  
+  if (oi->cost == lcost)
     return CMD_SUCCESS;
-
-  oi->cost = strtol (argv[0], NULL, 10);
-
+  
+  oi->cost = lcost;
+  
   /* update cost held in route_connected list in ospf6_interface */
   ospf6_interface_connected_route_update (oi->interface);
 
diff --git a/ospf6d/ospf6_interface.h b/ospf6d/ospf6_interface.h
index d28b310..c6615d8 100644
--- a/ospf6d/ospf6_interface.h
+++ b/ospf6d/ospf6_interface.h
@@ -115,7 +115,7 @@
 #define OSPF6_INTERFACE_DR               7
 #define OSPF6_INTERFACE_MAX              8
 
-extern char *ospf6_interface_state_str[];
+extern const char *ospf6_interface_state_str[];
 
 /* flags */
 #define OSPF6_INTERFACE_DISABLE      0x01
diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c
index fd208fd..365b98d 100644
--- a/ospf6d/ospf6_intra.c
+++ b/ospf6d/ospf6_intra.c
@@ -172,9 +172,9 @@
         continue;
 
       /* Multiple Router-LSA instance according to size limit setting */
-      if (oa->router_lsa_size_limit != 0 &&
-          (caddr_t) lsdesc + sizeof (struct ospf6_router_lsdesc) -
-          (caddr_t) buffer > oa->router_lsa_size_limit)
+      if ( (oa->router_lsa_size_limit != 0)
+          && ((caddr_t) lsdesc + sizeof (struct ospf6_router_lsdesc) -
+              (caddr_t) buffer > oa->router_lsa_size_limit))
         {
           if ((caddr_t) lsdesc == (caddr_t) router_lsa +
                                   sizeof (struct ospf6_router_lsa))
@@ -471,7 +471,7 @@
   int prefixnum;
   char buf[128], options[32];
   struct ospf6_prefix *prefix;
-  char *p, *mc, *la, *nu;
+  const char *p, *mc, *la, *nu;
   struct in6_addr in6;
 
   link_lsa = (struct ospf6_link_lsa *)
@@ -625,7 +625,7 @@
   char buf[128];
   struct ospf6_prefix *prefix;
   char id[16], adv_router[16];
-  char *p, *mc, *la, *nu;
+  const char *p, *mc, *la, *nu;
   struct in6_addr in6;
 
   intra_prefix_lsa = (struct ospf6_intra_prefix_lsa *)
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index da73279..d6356c7 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -90,7 +90,7 @@
 ospf6_get_lsa_handler (u_int16_t type)
 {
   struct ospf6_lsa_handler *handler = NULL;
-  int index = ntohs (type) & OSPF6_LSTYPE_FCODE_MASK;
+  unsigned int index = ntohs (type) & OSPF6_LSTYPE_FCODE_MASK;
 
   if (index >= vector_max (ospf6_lsa_handler_vector))
     handler = &unknown_handler;
@@ -100,7 +100,7 @@
   return handler;
 }
 
-char *
+const char *
 ospf6_lstype_name (u_int16_t type)
 {
   static char buf[8];
@@ -711,7 +711,8 @@
 ospf6_lsa_handler_name (struct ospf6_lsa_handler *h)
 {
   static char buf[64];
-  int i, size = strlen (h->name);
+  unsigned int i; 
+  unsigned int size = strlen (h->name);
 
   if (h->name == "Unknown" &&
       h->type != OSPF6_LSTYPE_UNKNOWN)
@@ -740,7 +741,7 @@
        "Specify LS type as Hexadecimal\n"
       )
 {
-  int i;
+  unsigned int i;
   struct ospf6_lsa_handler *handler = NULL;
   unsigned long val;
   char *endptr = NULL;
@@ -808,7 +809,7 @@
        "Specify LS type as Hexadecimal\n"
       )
 {
-  int i;
+  u_int i;
   struct ospf6_lsa_handler *handler = NULL;
   unsigned long val;
   char *endptr = NULL;
@@ -868,7 +869,7 @@
 void
 install_element_ospf6_debug_lsa ()
 {
-  int i;
+  u_int i;
   struct ospf6_lsa_handler *handler;
 #define STRSIZE  256
 #define DOCSIZE  1024
@@ -969,7 +970,7 @@
 int
 config_write_ospf6_debug_lsa (struct vty *vty)
 {
-  int i;
+  u_int i;
   struct ospf6_lsa_handler *handler;
 
   for (i = 0; i < vector_max (ospf6_lsa_handler_vector); i++)
diff --git a/ospf6d/ospf6_lsa.h b/ospf6d/ospf6_lsa.h
index 0f81b6a..c23d6f7 100644
--- a/ospf6d/ospf6_lsa.h
+++ b/ospf6d/ospf6_lsa.h
@@ -143,7 +143,7 @@
 struct ospf6_lsa_handler
 {
   u_int16_t type; /* host byte order */
-  char *name;
+  const char *name;
   int (*show) (struct vty *, struct ospf6_lsa *);
   u_char debug;
 };
@@ -202,7 +202,7 @@
 
 
 /* Function Prototypes */
-char *ospf6_lstype_name (u_int16_t type);
+const char *ospf6_lstype_name (u_int16_t type);
 u_char ospf6_lstype_debug (u_int16_t type);
 int ospf6_lsa_is_differ (struct ospf6_lsa *lsa1, struct ospf6_lsa *lsa2);
 int ospf6_lsa_is_changed (struct ospf6_lsa *lsa1, struct ospf6_lsa *lsa2);
diff --git a/ospf6d/ospf6_lsdb.c b/ospf6d/ospf6_lsdb.c
index 6cd633f..d20e9a1 100644
--- a/ospf6d/ospf6_lsdb.c
+++ b/ospf6d/ospf6_lsdb.c
@@ -75,7 +75,7 @@
 _lsdb_count_assert (struct ospf6_lsdb *lsdb)
 {
   struct ospf6_lsa *debug;
-  int num = 0;
+  unsigned int num = 0;
   for (debug = ospf6_lsdb_head (lsdb); debug;
        debug = ospf6_lsdb_next (debug))
     num++;
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index b5e6403..95086f2 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -92,7 +92,7 @@
 struct thread_master *master;
 
 /* Process ID saved for use by init system */
-char *pid_file = PATH_OSPF6D_PID;
+const char *pid_file = PATH_OSPF6D_PID;
 
 /* Help information display. */
 static void
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index d4a60dd..e436867 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -43,7 +43,7 @@
 #include "ospf6d.h"
 
 unsigned char conf_debug_ospf6_message[6] = {0x03, 0, 0, 0, 0, 0};
-char *ospf6_message_type_str[] =
+const char *ospf6_message_type_str[] =
   { "Unknown", "Hello", "DbDesc", "LSReq", "LSUpdate", "LSAck" };
 
 /* print functions */
@@ -1160,12 +1160,12 @@
     }
 }
 
-char *recvbuf = NULL;
-char *sendbuf = NULL;
-int iobuflen = 0;
+u_char *recvbuf = NULL;
+u_char *sendbuf = NULL;
+unsigned int iobuflen = 0;
 
 int
-ospf6_iobuf_size (int size)
+ospf6_iobuf_size (unsigned int size)
 {
   char *recvnew, *sendnew;
 
@@ -1198,7 +1198,8 @@
 int
 ospf6_receive (struct thread *thread)
 {
-  int sockfd, len;
+  int sockfd;
+  unsigned int len;
   char srcname[64], dstname[64];
   struct in6_addr src, dst;
   unsigned int ifindex;
@@ -1386,7 +1387,7 @@
   struct ospf6_interface *oi;
   struct ospf6_header *oh;
   struct ospf6_hello *hello;
-  char *p;
+  u_char *p;
   struct listnode *node;
   struct ospf6_neighbor *on;
 
@@ -1452,7 +1453,7 @@
   struct ospf6_neighbor *on;
   struct ospf6_header *oh;
   struct ospf6_dbdesc *dbdesc;
-  char *p;
+  u_char *p;
   struct ospf6_lsa *lsa;
 
   on = (struct ospf6_neighbor *) THREAD_ARG (thread);
@@ -1568,7 +1569,7 @@
   struct ospf6_neighbor *on;
   struct ospf6_header *oh;
   struct ospf6_lsreq_entry *e;
-  char *p;
+  u_char *p;
   struct ospf6_lsa *lsa;
 
   on = (struct ospf6_neighbor *) THREAD_ARG (thread);
@@ -1632,7 +1633,7 @@
   struct ospf6_neighbor *on;
   struct ospf6_header *oh;
   struct ospf6_lsupdate *lsupdate;
-  char *p;
+  u_char *p;
   int num;
   struct ospf6_lsa *lsa;
 
@@ -1673,7 +1674,8 @@
        lsa = ospf6_lsdb_next (lsa))
     {
       /* MTU check */
-      if (p - sendbuf + OSPF6_LSA_SIZE (lsa->header) > on->ospf6_if->ifmtu)
+      if ( (p - sendbuf + (unsigned int)OSPF6_LSA_SIZE (lsa->header))
+          > on->ospf6_if->ifmtu)
         {
           ospf6_lsa_unlock (lsa);
           break;
@@ -1692,7 +1694,8 @@
        lsa = ospf6_lsdb_next (lsa))
     {
       /* MTU check */
-      if (p - sendbuf + OSPF6_LSA_SIZE (lsa->header) > on->ospf6_if->ifmtu)
+      if ( (p - sendbuf + (unsigned int)OSPF6_LSA_SIZE (lsa->header))
+          > on->ospf6_if->ifmtu)
         {
           ospf6_lsa_unlock (lsa);
           break;
@@ -1733,7 +1736,7 @@
   struct ospf6_interface *oi;
   struct ospf6_header *oh;
   struct ospf6_lsupdate *lsupdate;
-  char *p;
+  u_char *p;
   int num;
   struct ospf6_lsa *lsa;
 
@@ -1764,7 +1767,8 @@
        lsa = ospf6_lsdb_next (lsa))
     {
       /* MTU check */
-      if (p - sendbuf + OSPF6_LSA_SIZE (lsa->header) > oi->ifmtu)
+      if ( (p - sendbuf + ((unsigned int)OSPF6_LSA_SIZE (lsa->header)))
+          > oi->ifmtu)
         {
           ospf6_lsa_unlock (lsa);
           break;
@@ -1804,7 +1808,7 @@
 {
   struct ospf6_neighbor *on;
   struct ospf6_header *oh;
-  char *p;
+  u_char *p;
   struct ospf6_lsa *lsa;
 
   on = (struct ospf6_neighbor *) THREAD_ARG (thread);
@@ -1864,7 +1868,7 @@
 {
   struct ospf6_interface *oi;
   struct ospf6_header *oh;
-  char *p;
+  u_char *p;
   struct ospf6_lsa *lsa;
 
   oi = (struct ospf6_interface *) THREAD_ARG (thread);
@@ -2082,7 +2086,7 @@
 int
 config_write_ospf6_debug_message (struct vty *vty)
 {
-  char *type_str[] = {"unknown", "hello", "dbdesc",
+  const char *type_str[] = {"unknown", "hello", "dbdesc",
                       "lsreq", "lsupdate", "lsack"};
   unsigned char s = 0, r = 0;
   int i;
diff --git a/ospf6d/ospf6_message.h b/ospf6d/ospf6_message.h
index 186fc74..95b07ce 100644
--- a/ospf6d/ospf6_message.h
+++ b/ospf6d/ospf6_message.h
@@ -47,7 +47,7 @@
 #define OSPF6_MESSAGE_TYPE_CANONICAL(T) \
   ((T) > OSPF6_MESSAGE_TYPE_LSACK ? OSPF6_MESSAGE_TYPE_UNKNOWN : (T))
 
-extern char *ospf6_message_type_str[];
+extern const char *ospf6_message_type_str[];
 #define OSPF6_MESSAGE_TYPE_NAME(T) \
   (ospf6_message_type_str[ OSPF6_MESSAGE_TYPE_CANONICAL (T) ])
 
@@ -122,7 +122,7 @@
 void ospf6_lsupdate_print (struct ospf6_header *);
 void ospf6_lsack_print (struct ospf6_header *);
 
-int ospf6_iobuf_size (int size);
+int ospf6_iobuf_size (unsigned int size);
 int ospf6_receive (struct thread *thread);
 
 int ospf6_hello_send (struct thread *thread);
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index 752b3fc..7b91c17 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -42,7 +42,7 @@
 
 unsigned char conf_debug_ospf6_neighbor = 0;
 
-char *ospf6_neighbor_state_str[] =
+const char *ospf6_neighbor_state_str[] =
 { "None", "Down", "Attempt", "Init", "Twoway", "ExStart", "ExChange",
   "Loading", "Full", NULL };
 
diff --git a/ospf6d/ospf6_neighbor.h b/ospf6d/ospf6_neighbor.h
index 441ab81..8f94790 100644
--- a/ospf6d/ospf6_neighbor.h
+++ b/ospf6d/ospf6_neighbor.h
@@ -105,7 +105,7 @@
 #define OSPF6_NEIGHBOR_LOADING  7
 #define OSPF6_NEIGHBOR_FULL     8
 
-extern char *ospf6_neighbor_state_str[];
+const extern char *ospf6_neighbor_state_str[];
 
 
 /* Function Prototypes */
diff --git a/ospf6d/ospf6_proto.c b/ospf6d/ospf6_proto.c
index 584382a..c792aa4 100644
--- a/ospf6d/ospf6_proto.c
+++ b/ospf6d/ospf6_proto.c
@@ -72,7 +72,7 @@
 void
 ospf6_options_printbuf (u_char *options, char *buf, int size)
 {
-  char *dc, *r, *n, *mc, *e, *v6;
+  const char *dc, *r, *n, *mc, *e, *v6;
   dc = (OSPF6_OPT_ISSET (options, OSPF6_OPT_DC) ? "DC" : "--");
   r  = (OSPF6_OPT_ISSET (options, OSPF6_OPT_R)  ? "R"  : "-" );
   n  = (OSPF6_OPT_ISSET (options, OSPF6_OPT_N)  ? "N"  : "-" );
diff --git a/ospf6d/ospf6_route.c b/ospf6d/ospf6_route.c
index 7a5a394..c1c6d35 100644
--- a/ospf6d/ospf6_route.c
+++ b/ospf6d/ospf6_route.c
@@ -63,16 +63,16 @@
 }
 
 /* Global strings for logging */
-char *ospf6_dest_type_str[OSPF6_DEST_TYPE_MAX] =
+const char *ospf6_dest_type_str[OSPF6_DEST_TYPE_MAX] =
 { "Unknown", "Router", "Network", "Discard", "Linkstate", "AddressRange", };
 
-char *ospf6_dest_type_substr[OSPF6_DEST_TYPE_MAX] =
+const char *ospf6_dest_type_substr[OSPF6_DEST_TYPE_MAX] =
 { "?", "R", "N", "D", "L", "A", };
 
-char *ospf6_path_type_str[OSPF6_PATH_TYPE_MAX] =
+const char *ospf6_path_type_str[OSPF6_PATH_TYPE_MAX] =
 { "Unknown", "Intra-Area", "Inter-Area", "External-1", "External-2", };
 
-char *ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX] =
+const char *ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX] =
 { "??", "IA", "IE", "E1", "E2", };
 
 
@@ -206,7 +206,7 @@
 {
   struct ospf6_route *debug;
   char buf[64];
-  int num = 0;
+  unsigned int num = 0;
   for (debug = ospf6_route_head (table); debug;
        debug = ospf6_route_next (debug))
     num++;
@@ -769,7 +769,7 @@
 {
   struct ospf6_route *route, *prev = NULL;
   int i, pathtype[OSPF6_PATH_TYPE_MAX];
-  int number = 0;
+  unsigned int number = 0;
   int nhinval = 0, ecmp = 0;
   int alternative = 0, destination = 0;
 
@@ -908,7 +908,7 @@
 }
 
 int
-ospf6_route_table_show (struct vty *vty, int argc, char **argv,
+ospf6_route_table_show (struct vty *vty, int argc, const char *argv[],
                         struct ospf6_route_table *table)
 {
   int summary = 0;
@@ -1083,7 +1083,7 @@
 }
 
 int
-ospf6_linkstate_table_show (struct vty *vty, int argc, char **argv,
+ospf6_linkstate_table_show (struct vty *vty, int argc, const char *argv[],
                             struct ospf6_route_table *table)
 {
   int detail = 0;
diff --git a/ospf6d/ospf6_route.h b/ospf6d/ospf6_route.h
index d9456a1..d91cd7b 100644
--- a/ospf6d/ospf6_route.h
+++ b/ospf6d/ospf6_route.h
@@ -173,8 +173,8 @@
   void (*hook_remove) (struct ospf6_route *);
 };
 
-extern char *ospf6_dest_type_str[OSPF6_DEST_TYPE_MAX];
-extern char *ospf6_dest_type_substr[OSPF6_DEST_TYPE_MAX];
+extern const char *ospf6_dest_type_str[OSPF6_DEST_TYPE_MAX];
+extern const char *ospf6_dest_type_substr[OSPF6_DEST_TYPE_MAX];
 #define OSPF6_DEST_TYPE_NAME(x)                       \
   (0 < (x) && (x) < OSPF6_DEST_TYPE_MAX ?             \
    ospf6_dest_type_str[(x)] : ospf6_dest_type_str[0])
@@ -182,8 +182,8 @@
   (0 < (x) && (x) < OSPF6_DEST_TYPE_MAX ?                   \
    ospf6_dest_type_substr[(x)] : ospf6_dest_type_substr[0])
 
-extern char *ospf6_path_type_str[OSPF6_PATH_TYPE_MAX];
-extern char *ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX];
+extern const char *ospf6_path_type_str[OSPF6_PATH_TYPE_MAX];
+extern const char *ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX];
 #define OSPF6_PATH_TYPE_NAME(x)                       \
   (0 < (x) && (x) < OSPF6_PATH_TYPE_MAX ?             \
    ospf6_path_type_str[(x)] : ospf6_path_type_str[0])
@@ -266,9 +266,9 @@
 void ospf6_route_show (struct vty *vty, struct ospf6_route *route);
 void ospf6_route_show_detail (struct vty *vty, struct ospf6_route *route);
 
-int ospf6_route_table_show (struct vty *, int, char **,
+int ospf6_route_table_show (struct vty *, int, const char *[],
                             struct ospf6_route_table *);
-int ospf6_linkstate_table_show (struct vty *vty, int argc, char **argv,
+int ospf6_linkstate_table_show (struct vty *vty, int argc, const char *argv[],
                             struct ospf6_route_table *table);
 
 void ospf6_brouter_show_header (struct vty *vty);
diff --git a/ospf6d/ospf6_snmp.c b/ospf6d/ospf6_snmp.c
index 186c8e2..98a7f5a 100644
--- a/ospf6d/ospf6_snmp.c
+++ b/ospf6d/ospf6_snmp.c
@@ -234,8 +234,8 @@
 {
   struct ospf6_area *oa, *area = NULL;
   u_int32_t area_id = 0;
-  listnode node;
-  int len;
+  struct listnode *node;
+  unsigned int len;
 
   if (ospf6 == NULL)
     return NULL;
@@ -293,9 +293,9 @@
 
 /* Register OSPFv3-MIB. */
 void
-ospf6_snmp_init ()
+ospf6_snmp_init (struct thread_master *master)
 {
-  smux_init (ospf6d_oid, sizeof (ospf6d_oid) / sizeof (oid));
+  smux_init (master, ospf6d_oid, sizeof (ospf6d_oid) / sizeof (oid));
   REGISTER_MIB ("OSPFv3MIB", ospfv3_variables, variable, ospfv3_oid);
   smux_start ();
 }
diff --git a/ospf6d/ospf6_snmp.h b/ospf6d/ospf6_snmp.h
index 89c8c47..7ef784c 100644
--- a/ospf6d/ospf6_snmp.h
+++ b/ospf6d/ospf6_snmp.h
@@ -22,7 +22,7 @@
 #ifndef OSPF6_SNMP_H
 #define OSPF6_SNMP_H
 
-void ospf6_snmp_init ();
+void ospf6_snmp_init (struct thread_master *);
 
 #endif /*OSPF6_SNMP_H*/
 
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index 79539b2..4f3af7c 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -527,7 +527,7 @@
 }
 
 void
-ospf6_spf_display_subtree (struct vty *vty, char *prefix, int rest,
+ospf6_spf_display_subtree (struct vty *vty, const char *prefix, int rest,
                            struct ospf6_vertex *v)
 {
   struct listnode *node;
diff --git a/ospf6d/ospf6_spf.h b/ospf6d/ospf6_spf.h
index 6a6424e..c9e031b 100644
--- a/ospf6d/ospf6_spf.h
+++ b/ospf6d/ospf6_spf.h
@@ -82,7 +82,7 @@
                             struct ospf6_area *oa);
 void ospf6_spf_schedule (struct ospf6_area *oa);
 
-void ospf6_spf_display_subtree (struct vty *vty, char *prefix,
+void ospf6_spf_display_subtree (struct vty *vty, const char *prefix,
                                 int rest, struct ospf6_vertex *v);
 
 int config_write_ospf6_debug_spf (struct vty *vty);
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index 712b337..9fd3264 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -521,7 +521,7 @@
        "Display routes which match the specified route\n"
        )
 {
-  char *sargv[CMD_ARGC_MAX];
+  const char *sargv[CMD_ARGC_MAX];
   int i, sargc;
 
   /* copy argv to sargv and then append "match" */
@@ -547,7 +547,7 @@
        "Detailed information\n"
        )
 {
-  char *sargv[CMD_ARGC_MAX];
+  const char *sargv[CMD_ARGC_MAX];
   int i, sargc;
 
   /* copy argv to sargv and then append "match" and "detail" */
@@ -589,7 +589,7 @@
        "Detailed information\n"
        )
 {
-  char *sargv[CMD_ARGC_MAX];
+  const char *sargv[CMD_ARGC_MAX];
   int i, sargc;
 
   /* copy argv to sargv and then append "detail" */
diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c
index 695e8ec..d10d1df 100644
--- a/ospf6d/ospf6d.c
+++ b/ospf6d/ospf6d.c
@@ -129,7 +129,7 @@
   "%s        AS Scoped Link State Database%s%s"
 
 static int
-parse_show_level (int argc, char **argv)
+parse_show_level (int argc, const char *argv[])
 {
   int level = 0;
   if (argc)
@@ -147,7 +147,7 @@
 }
 
 static u_int16_t
-parse_type_spec (int argc, char **argv)
+parse_type_spec (int argc, const char *argv[])
 {
   u_int16_t type = 0;
   assert (argc);
@@ -1775,7 +1775,7 @@
        "Display linkstate routing table\n"
       )
 {
-  char *sargv[CMD_ARGC_MAX];
+  const char *sargv[CMD_ARGC_MAX];
   int i, sargc;
   struct listnode *node;
   struct ospf6_area *oa;
@@ -1817,7 +1817,7 @@
   ospf6_abr_init ();
 
 #ifdef HAVE_SNMP
-  ospf6_snmp_init ();
+  ospf6_snmp_init (master);
 #endif /*HAVE_SNMP*/
 
   install_node (&debug_node, config_write_ospf6_debug);