diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 6b3c498..027b8ca 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -84,7 +84,7 @@
 
 /* Utility function for looking up peer from VTY.  */
 struct peer *
-peer_lookup_vty (struct vty *vty, char *ip_str)
+peer_lookup_vty (struct vty *vty, const char *ip_str)
 {
   int ret;
   struct bgp *bgp;
@@ -111,7 +111,7 @@
 
 /* Utility function for looking up peer or peer group.  */
 struct peer *
-peer_and_group_lookup_vty (struct vty *vty, char *peer_str)
+peer_and_group_lookup_vty (struct vty *vty, const char *peer_str)
 {
   int ret;
   struct bgp *bgp;
@@ -144,7 +144,7 @@
 int
 bgp_vty_return (struct vty *vty, int ret)
 {
-  char *str = NULL;
+  const char *str = NULL;
 
   switch (ret)
     {
@@ -297,7 +297,7 @@
   int ret;
   as_t as;
   struct bgp *bgp;
-  char *name = NULL;
+  const char *name = NULL;
 
   VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, 65535);
 
@@ -350,7 +350,7 @@
 {
   as_t as;
   struct bgp *bgp;
-  char *name = NULL;
+  const char *name = NULL;
 
   VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, 65535);
 
@@ -1143,8 +1143,8 @@
        "Configure default local preference value\n")
 
 static int
-peer_remote_as_vty (struct vty *vty, char *peer_str, char *as_str, afi_t afi,
-		    safi_t safi)
+peer_remote_as_vty (struct vty *vty, const char *peer_str, 
+                    const char *as_str, afi_t afi, safi_t safi)
 {
   int ret;
   struct bgp *bgp;
@@ -1508,7 +1508,8 @@
 }
 
 int
-peer_flag_modify_vty (struct vty *vty, char *ip_str, u_int16_t flag, int set)
+peer_flag_modify_vty (struct vty *vty, const char *ip_str, 
+                      u_int16_t flag, int set)
 {
   int ret;
   struct peer *peer;
@@ -1526,13 +1527,13 @@
 }
 
 int
-peer_flag_set_vty (struct vty *vty, char *ip_str, u_int16_t flag)
+peer_flag_set_vty (struct vty *vty, const char *ip_str, u_int16_t flag)
 {
   return peer_flag_modify_vty (vty, ip_str, flag, 1);
 }
 
 int
-peer_flag_unset_vty (struct vty *vty, char *ip_str, u_int16_t flag)
+peer_flag_unset_vty (struct vty *vty, const char *ip_str, u_int16_t flag)
 {
   return peer_flag_modify_vty (vty, ip_str, flag, 0);
 }
@@ -1652,7 +1653,7 @@
 }
 
 int
-peer_af_flag_modify_vty (struct vty *vty, char *peer_str, afi_t afi,
+peer_af_flag_modify_vty (struct vty *vty, const char *peer_str, afi_t afi,
 			 safi_t safi, u_int32_t flag, int set)
 {
   int ret;
@@ -1671,14 +1672,14 @@
 }
 
 int
-peer_af_flag_set_vty (struct vty *vty, char *peer_str, afi_t afi,
+peer_af_flag_set_vty (struct vty *vty, const char *peer_str, afi_t afi,
 		      safi_t safi, u_int32_t flag)
 {
   return peer_af_flag_modify_vty (vty, peer_str, afi, safi, flag, 1);
 }
 
 int
-peer_af_flag_unset_vty (struct vty *vty, char *peer_str, afi_t afi,
+peer_af_flag_unset_vty (struct vty *vty, const char *peer_str, afi_t afi,
 			safi_t safi, u_int32_t flag)
 {
   return peer_af_flag_modify_vty (vty, peer_str, afi, safi, flag, 0);
@@ -1929,7 +1930,8 @@
 }
 
 int
-peer_rsclient_set_vty (struct vty *vty, char *peer_str, int afi, int safi)
+peer_rsclient_set_vty (struct vty *vty, const char *peer_str, 
+                       int afi, int safi)
 {
   int ret;
   struct bgp *bgp;
@@ -2010,7 +2012,8 @@
 }
 
 int
-peer_rsclient_unset_vty (struct vty *vty, char *peer_str, int afi, int safi)
+peer_rsclient_unset_vty (struct vty *vty, const char *peer_str, 
+                         int afi, int safi)
 {
   int ret;
   struct bgp *bgp;
@@ -2466,10 +2469,11 @@
 
 /* EBGP multihop configuration. */
 int
-peer_ebgp_multihop_set_vty (struct vty *vty, char *ip_str, char *ttl_str)
+peer_ebgp_multihop_set_vty (struct vty *vty, const char *ip_str, 
+                            const char *ttl_str)
 {
   struct peer *peer;
-  int ttl;
+  unsigned int ttl;
 
   peer = peer_and_group_lookup_vty (vty, ip_str);
   if (! peer)
@@ -2486,7 +2490,7 @@
 }
 
 int
-peer_ebgp_multihop_unset_vty (struct vty *vty, char *ip_str) 
+peer_ebgp_multihop_unset_vty (struct vty *vty, const char *ip_str) 
 {
   struct peer *peer;
 
@@ -2632,7 +2636,8 @@
 
 /* Neighbor update-source. */
 int
-peer_update_source_vty (struct vty *vty, char *peer_str, char *source_str)
+peer_update_source_vty (struct vty *vty, const char *peer_str, 
+                        const char *source_str)
 {
   struct peer *peer;
   union sockunion *su;
@@ -2682,8 +2687,9 @@
 }
 
 int
-peer_default_originate_set_vty (struct vty *vty, char *peer_str, afi_t afi,
-				safi_t safi, char *rmap, int set)
+peer_default_originate_set_vty (struct vty *vty, const char *peer_str, 
+                                afi_t afi, safi_t safi, 
+                                const char *rmap, int set)
 {
   int ret;
   struct peer *peer;
@@ -2749,7 +2755,8 @@
 
 /* Set neighbor's BGP port.  */
 int
-peer_port_vty (struct vty *vty, char *ip_str, int afi, char *port_str)
+peer_port_vty (struct vty *vty, const char *ip_str, int afi, 
+               const char *port_str)
 {
   struct peer *peer;
   u_int16_t port;
@@ -2808,7 +2815,8 @@
 
 /* neighbor weight. */
 int
-peer_weight_set_vty (struct vty *vty, char *ip_str, char *weight_str)
+peer_weight_set_vty (struct vty *vty, const char *ip_str, 
+                     const char *weight_str)
 {
   int ret;
   struct peer *peer;
@@ -2826,7 +2834,7 @@
 }
 
 int
-peer_weight_unset_vty (struct vty *vty, char *ip_str)
+peer_weight_unset_vty (struct vty *vty, const char *ip_str)
 {
   struct peer *peer;
 
@@ -2914,8 +2922,8 @@
 }
 
 int
-peer_timers_set_vty (struct vty *vty, char *ip_str, char *keep_str,
-		     char *hold_str)
+peer_timers_set_vty (struct vty *vty, const char *ip_str, 
+                     const char *keep_str, const char *hold_str)
 {
   int ret;
   struct peer *peer;
@@ -2935,7 +2943,7 @@
 }
 
 int
-peer_timers_unset_vty (struct vty *vty, char *ip_str)
+peer_timers_unset_vty (struct vty *vty, const char *ip_str)
 {
   int ret;
   struct peer *peer;
@@ -2973,7 +2981,8 @@
 }
 
 int
-peer_timers_connect_set_vty (struct vty *vty, char *ip_str, char *time_str)
+peer_timers_connect_set_vty (struct vty *vty, const char *ip_str, 
+                             const char *time_str)
 {
   int ret;
   struct peer *peer;
@@ -2991,7 +3000,7 @@
 }
 
 int
-peer_timers_connect_unset_vty (struct vty *vty, char *ip_str)
+peer_timers_connect_unset_vty (struct vty *vty, const char *ip_str)
 {
   int ret;
   struct peer *peer;
@@ -3040,8 +3049,8 @@
        "Connect timer\n")
 
 int
-peer_advertise_interval_vty (struct vty *vty, char *ip_str, char *time_str,
-			     int set)  
+peer_advertise_interval_vty (struct vty *vty, const char *ip_str, 
+                             const char *time_str, int set)  
 {
   int ret;
   struct peer *peer;
@@ -3094,7 +3103,7 @@
        "time in seconds\n")
 
 int
-peer_version_vty (struct vty *vty, char *ip_str, char *str)
+peer_version_vty (struct vty *vty, const char *ip_str, const char *str)
 {
   int ret;
   struct peer *peer;
@@ -3145,7 +3154,7 @@
 
 /* neighbor interface */
 int
-peer_interface_vty (struct vty *vty, char *ip_str, char *str)
+peer_interface_vty (struct vty *vty, const char *ip_str, const char *str)
 {
   int ret;
   struct peer *peer;
@@ -3187,8 +3196,9 @@
 
 /* Set distribute list to the peer. */
 int
-peer_distribute_set_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
-			 char *name_str, char *direct_str)
+peer_distribute_set_vty (struct vty *vty, const char *ip_str, 
+                         afi_t afi, safi_t safi,
+			 const char *name_str, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3210,8 +3220,8 @@
 }
 
 int
-peer_distribute_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
-			   safi_t safi, char *direct_str)
+peer_distribute_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			   safi_t safi, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3267,8 +3277,9 @@
 
 /* Set prefix list to the peer. */
 int
-peer_prefix_list_set_vty (struct vty *vty, char *ip_str, afi_t afi,
-			  safi_t safi, char *name_str, char *direct_str)
+peer_prefix_list_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			  safi_t safi, const char *name_str, 
+                          const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3290,8 +3301,8 @@
 }
 
 int
-peer_prefix_list_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
-			    safi_t safi, char *direct_str)
+peer_prefix_list_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			    safi_t safi, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3342,8 +3353,9 @@
 }
 
 int
-peer_aslist_set_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
-		     char *name_str, char *direct_str)
+peer_aslist_set_vty (struct vty *vty, const char *ip_str, 
+                     afi_t afi, safi_t safi,
+		     const char *name_str, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3365,8 +3377,9 @@
 }
 
 int
-peer_aslist_unset_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
-		       char *direct_str)
+peer_aslist_unset_vty (struct vty *vty, const char *ip_str, 
+                       afi_t afi, safi_t safi,
+		       const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3418,8 +3431,9 @@
 
 /* Set route-map to the peer. */
 int
-peer_route_map_set_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
-			char *name_str, char *direct_str)
+peer_route_map_set_vty (struct vty *vty, const char *ip_str, 
+                        afi_t afi, safi_t safi,
+			const char *name_str, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3445,8 +3459,8 @@
 }
 
 int
-peer_route_map_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
-			  safi_t safi, char *direct_str)
+peer_route_map_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			  safi_t safi, const char *direct_str)
 {
   int ret;
   struct peer *peer;
@@ -3506,8 +3520,8 @@
 
 /* Set unsuppress-map to the peer. */
 int
-peer_unsuppress_map_set_vty (struct vty *vty, char *ip_str, afi_t afi,
-			     safi_t safi, char *name_str)
+peer_unsuppress_map_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			     safi_t safi, const char *name_str)
 {
   int ret;
   struct peer *peer;
@@ -3523,7 +3537,7 @@
 
 /* Unset route-map from the peer. */
 int
-peer_unsuppress_map_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
+peer_unsuppress_map_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
 			       safi_t safi)
 {
   int ret;
@@ -3564,9 +3578,9 @@
 }
 
 int
-peer_maximum_prefix_set_vty (struct vty *vty, char *ip_str, afi_t afi,
-			     safi_t safi, char *num_str,  char *threshold_str,
-                             int warning)
+peer_maximum_prefix_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
+			     safi_t safi, const char *num_str,  
+                             const char *threshold_str, int warning)
 {
   int ret;
   struct peer *peer;
@@ -3589,7 +3603,7 @@
 }
 
 int
-peer_maximum_prefix_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
+peer_maximum_prefix_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
 			       safi_t safi)
 {
   int ret;
@@ -3711,7 +3725,7 @@
 {
   int ret;
   struct peer *peer;
-  int allow_num;
+  unsigned int allow_num;
 
   peer = peer_and_group_lookup_vty (vty, argv[0]);
   if (! peer)
@@ -3863,7 +3877,7 @@
 /* `clear ip bgp' functions. */
 int
 bgp_clear (struct vty *vty, struct bgp *bgp,  afi_t afi, safi_t safi,
-           enum clear_sort sort,enum bgp_clear_type stype, char *arg)
+           enum clear_sort sort,enum bgp_clear_type stype, const char *arg)
 {
   int ret;
   struct peer *peer;
@@ -4005,8 +4019,9 @@
 }
 
 int
-bgp_clear_vty (struct vty *vty, char *name, afi_t afi, safi_t safi,
-               enum clear_sort sort, enum bgp_clear_type stype, char *arg)  
+bgp_clear_vty (struct vty *vty, const char *name, afi_t afi, safi_t safi,
+               enum clear_sort sort, enum bgp_clear_type stype, 
+               const char *arg)
 {
   int ret;
   struct bgp *bgp;
@@ -6412,7 +6427,8 @@
 }
 
 int 
-bgp_show_summary_vty (struct vty *vty, char *name, afi_t afi, safi_t safi)
+bgp_show_summary_vty (struct vty *vty, const char *name, 
+                      afi_t afi, safi_t safi)
 {
   struct bgp *bgp;
 
@@ -6602,7 +6618,7 @@
 }
 #endif /* HAVE_IPV6 */
 
-char *
+const char *
 afi_safi_print (afi_t afi, safi_t safi)
 {
   if (afi == AFI_IP && safi == SAFI_UNICAST)
@@ -7187,8 +7203,8 @@
 }
 
 int 
-bgp_show_neighbor_vty (struct vty *vty, char *name, enum show_type type,
-		       char *ip_str)
+bgp_show_neighbor_vty (struct vty *vty, const char *name, 
+                       enum show_type type, const char *ip_str)
 {
   int ret;
   struct bgp *bgp;
@@ -7505,7 +7521,7 @@
 {
   char timebuf[BGP_UPTIME_LEN];
   char rmbuf[14];
-  char *rmname;
+  const char *rmname;
   struct peer *peer;
   struct listnode *nn;
   int len;
@@ -7576,7 +7592,8 @@
 }
 
 int
-bgp_show_rsclient_summary (struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi)
+bgp_show_rsclient_summary (struct vty *vty, struct bgp *bgp, 
+                           afi_t afi, safi_t safi)
 {
   struct peer *peer;
   struct listnode *nn;
@@ -7618,7 +7635,8 @@
 }
 
 int
-bgp_show_rsclient_summary_vty (struct vty *vty, char *name, afi_t afi, safi_t safi)
+bgp_show_rsclient_summary_vty (struct vty *vty, const char *name, 
+                               afi_t afi, safi_t safi)
 {
   struct bgp *bgp;
 
@@ -7760,7 +7778,7 @@
 /* Utility function to convert user input route type string to route
    type.  */
 static int
-bgp_str2route_type (int afi, char *str)
+bgp_str2route_type (int afi, const char *str)
 {
   if (! str)
     return 0;
@@ -8306,7 +8324,7 @@
 			       safi_t safi, int *write)
 {
   int i;
-  char *str[] = { "system", "kernel", "connected", "static", "rip",
+  const char *str[] = { "system", "kernel", "connected", "static", "rip",
 		  "ripng", "ospf", "ospf6", "isis", "bgp"};
 
   /* Unicast redistribution only.  */
@@ -9325,7 +9343,7 @@
 /* VTY functions.  */
 
 /* Direction value to string conversion.  */
-char *
+const char *
 community_direct_str (int direct)
 {
   switch (direct)
@@ -9365,8 +9383,8 @@
 
 /* VTY interface for community_set() function.  */
 int
-community_list_set_vty (struct vty *vty, int argc, char **argv, int style,
-			int reject_all_digit_name)
+community_list_set_vty (struct vty *vty, int argc, const char **argv, 
+                        int style, int reject_all_digit_name)
 {
   int ret;
   int direct;
@@ -9418,7 +9436,7 @@
 
 /* Community-list delete with name.  */
 int
-community_list_unset_all_vty (struct vty *vty, char *name)
+community_list_unset_all_vty (struct vty *vty, const char *name)
 {
   int ret;
 
@@ -9434,7 +9452,8 @@
 
 /* Communiyt-list entry delete.  */
 int
-community_list_unset_vty (struct vty *vty, int argc, char **argv, int style)
+community_list_unset_vty (struct vty *vty, int argc, const char **argv, 
+                          int style)
 {
   int ret;
   int direct;
@@ -9738,8 +9757,8 @@
 }
 
 int
-extcommunity_list_set_vty (struct vty *vty, int argc, char **argv, int style,
-			   int reject_all_digit_name)
+extcommunity_list_set_vty (struct vty *vty, int argc, const char **argv, 
+                           int style, int reject_all_digit_name)
 {
   int ret;
   int direct;
@@ -9786,7 +9805,7 @@
 }
 
 int
-extcommunity_list_unset_all_vty (struct vty *vty, char *name)
+extcommunity_list_unset_all_vty (struct vty *vty, const char *name)
 {
   int ret;
 
@@ -9801,7 +9820,8 @@
 }
 
 int
-extcommunity_list_unset_vty (struct vty *vty, int argc, char **argv, int style)
+extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv, 
+                             int style)
 {
   int ret;
   int direct;
@@ -10077,10 +10097,10 @@
 }
 
 /* Return configuration string of community-list entry.  */
-static char *
+static const char *
 community_list_config_str (struct community_entry *entry)
 {
-  char *str;
+  const char *str;
 
   if (entry->any)
     str = "";
