[pim] Log physical interface up/down
[pim] Replace strerror with safe_strerror
[pim] Fix PIM socket removal from non-PIM interfaces
[pim] show ip igmp querier: left-align Querier string
[pim] Version up to 0.157
[pim] Recipe to re-sync with Quagga repository
[pim] Build vtysh in development script
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 339f9da..c845a89 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -1084,7 +1084,7 @@
       pim_time_timer_to_hhmmss(query_hhmmss, sizeof(query_hhmmss), igmp->t_igmp_query_timer);
       pim_time_timer_to_hhmmss(other_hhmmss, sizeof(other_hhmmss), igmp->t_other_querier_timer);
 
-      vty_out(vty, "%-9s %-15s %7s %10d %11s %11s%s",
+      vty_out(vty, "%-9s %-15s %-7s %10d %11s %11s%s",
 	      ifp->name,
 	      inet_ntoa(igmp->ifaddr),
 	      igmp->t_igmp_query_timer ? "THIS" : "OTHER",
@@ -1871,7 +1871,7 @@
 	      ifp->name,
 	      pim_ifp->mroute_vif_index,
 	      e,
-	      strerror(e),
+	      safe_strerror(e),
 	      VTY_NEWLINE);	      
       continue;
     }
@@ -2047,7 +2047,7 @@
 	      source_str,
 	      group_str,
 	      e,
-	      strerror(e),
+	      safe_strerror(e),
 	      VTY_NEWLINE);	      
       continue;
     }
@@ -2093,7 +2093,7 @@
   result = inet_pton(AF_INET, addr_str, &addr);
   if (result <= 0) {
     vty_out(vty, "Bad unicast address %s: errno=%d: %s%s",
-	    addr_str, errno, strerror(errno), VTY_NEWLINE);
+	    addr_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -2265,7 +2265,7 @@
   result = inet_pton(AF_INET, group_str, &group_addr);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    group_str, errno, strerror(errno), VTY_NEWLINE);
+	    group_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -2274,7 +2274,7 @@
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
     vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	    source_str, errno, strerror(errno), VTY_NEWLINE);
+	    source_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -2312,7 +2312,7 @@
   result = inet_pton(AF_INET, group_str, &group_addr);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    group_str, errno, strerror(errno), VTY_NEWLINE);
+	    group_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -2321,7 +2321,7 @@
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
     vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	    source_str, errno, strerror(errno), VTY_NEWLINE);
+	    source_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3168,7 +3168,7 @@
   result = inet_pton(AF_INET, grp_str, &grp_addr);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    grp_str, errno, strerror(errno), VTY_NEWLINE);
+	    grp_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3204,7 +3204,7 @@
     result = inet_pton(AF_INET, src_str, src_addr);
     if (result <= 0) {
       vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	      src_str, errno, strerror(errno), VTY_NEWLINE);
+	      src_str, errno, safe_strerror(errno), VTY_NEWLINE);
       return CMD_WARNING;
     }
   }
@@ -3281,7 +3281,7 @@
   result = inet_pton(AF_INET, neigh_str, &neigh_addr);
   if (result <= 0) {
     vty_out(vty, "Bad neighbor address %s: errno=%d: %s%s",
-	    neigh_str, errno, strerror(errno), VTY_NEWLINE);
+	    neigh_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3314,7 +3314,7 @@
     result = inet_pton(AF_INET, sec_str, &sec_addr);
     if (result <= 0) {
       vty_out(vty, "Bad neighbor secondary address %s: errno=%d: %s%s",
-	      sec_str, errno, strerror(errno), VTY_NEWLINE);
+	      sec_str, errno, safe_strerror(errno), VTY_NEWLINE);
       return CMD_WARNING;
     }
 
@@ -3407,7 +3407,7 @@
   result = inet_pton(AF_INET, neigh_str, &neigh_addr);
   if (result <= 0) {
     vty_out(vty, "Bad neighbor address %s: errno=%d: %s%s",
-	    neigh_str, errno, strerror(errno), VTY_NEWLINE);
+	    neigh_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3416,7 +3416,7 @@
   result = inet_pton(AF_INET, group_str, &group_addr);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    group_str, errno, strerror(errno), VTY_NEWLINE);
+	    group_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3425,7 +3425,7 @@
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
     vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	    source_str, errno, strerror(errno), VTY_NEWLINE);
+	    source_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3523,7 +3523,7 @@
   result = inet_pton(AF_INET, neigh_dst_str, &neigh_dst_addr);
   if (result <= 0) {
     vty_out(vty, "Bad neighbor destination address %s: errno=%d: %s%s",
-	    neigh_dst_str, errno, strerror(errno), VTY_NEWLINE);
+	    neigh_dst_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3532,7 +3532,7 @@
   result = inet_pton(AF_INET, neigh_src_str, &neigh_src_addr);
   if (result <= 0) {
     vty_out(vty, "Bad neighbor source address %s: errno=%d: %s%s",
-	    neigh_src_str, errno, strerror(errno), VTY_NEWLINE);
+	    neigh_src_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3541,7 +3541,7 @@
   result = inet_pton(AF_INET, group_str, &group_addr);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    group_str, errno, strerror(errno), VTY_NEWLINE);
+	    group_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3550,7 +3550,7 @@
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
     vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	    source_str, errno, strerror(errno), VTY_NEWLINE);
+	    source_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3740,7 +3740,7 @@
   result = inet_pton(AF_INET, group_str, &msg.im_dst);
   if (result <= 0) {
     vty_out(vty, "Bad group address %s: errno=%d: %s%s",
-	    group_str, errno, strerror(errno), VTY_NEWLINE);
+	    group_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }
 
@@ -3749,7 +3749,7 @@
   result = inet_pton(AF_INET, source_str, &msg.im_src);
   if (result <= 0) {
     vty_out(vty, "Bad source address %s: errno=%d: %s%s",
-	    source_str, errno, strerror(errno), VTY_NEWLINE);
+	    source_str, errno, safe_strerror(errno), VTY_NEWLINE);
     return CMD_WARNING;
   }