sgw: show the scaled route cost in the program status file
authorFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 11 Apr 2016 09:57:08 +0000 (11:57 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 11 Apr 2016 20:55:55 +0000 (22:55 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/gateway.c

index ec47730..60a131f 100644 (file)
@@ -2099,18 +2099,18 @@ bool isEgressSelected(struct sgw_egress_if * egress_if) {
  * <pre>
  * # multi-smart-gateway status overview, generated on October 10, 2014 at 08:27:15
  *
- * #Originator Prefix       Uplink  Downlink  PathCost    Type    Interface  Gateway      Cost
- *  127.0.0.1  127.0.0.0/8  0       0         4294967295  egress  ppp0       0.0.0.0      9223372036854775807
- *  127.0.0.1  127.0.0.0/8  0       0         4294967295  egress  eth1       192.168.0.1  9223372036854775807
- * *10.0.0.1   0.0.0.0/0    290     1500      14669       olsr    tnl_4096   10.0.0.1     287940608
+ * #Originator Prefix       Uplink  Downlink  PathCost  Type    Interface  Gateway      Cost
+ *  127.0.0.1  127.0.0.0/8  0       0         INFINITE  egress  ppp0       0.0.0.0      9223372036854775807
+ *  127.0.0.1  127.0.0.0/8  0       0         INFINITE  egress  eth1       192.168.0.1  9223372036854775807
+ * *10.0.0.1   0.0.0.0/0    290     1500      0.000     olsr    tnl_4096   10.0.0.1     287940608
  * </pre>
  *
  * @param phase the phase of the change (startup/runtime/shutdown)
  */
 static void writeProgramStatusFile(enum sgw_multi_change_phase phase) {
-  /*                                # Origi Prefx Upln Dwnl PathC Type Intfc Gtway Cost */
-  static const char * fmt_header = "%s%-15s %-18s %-9s %-9s %-10s %-6s %-16s %-15s %s\n";
-  static const char * fmt_values = "%s%-15s %-18s %-9u %-9u %-10u %-6s %-16s %-15s %lld\n";
+  /*                                # Origi Prefx Upln Dwnl PthC Type Intfc Gtway Cost */
+  static const char * fmt_header = "%s%-15s %-18s %-9s %-9s %-8s %-6s %-16s %-15s %s\n";
+  static const char * fmt_values = "%s%-15s %-18s %-9u %-9u %-8s %-6s %-16s %-15s %lld\n";
 
   char * fileName = olsr_cnf->smart_gw_status_file;
   FILE * fp = NULL;
@@ -2140,18 +2140,18 @@ static void writeProgramStatusFile(enum sgw_multi_change_phase phase) {
 
   /* egress interfaces */
   {
+    struct lqtextbuffer lnkbuf;
     struct sgw_egress_if * egress_if = olsr_cnf->smart_gw_egress_interfaces;
     while (egress_if) {
       struct ipaddr_str gwStr;
       const char * gw = !egress_if->bwCurrent.gatewaySet ? IPNONE : olsr_ip_to_string(&gwStr, &egress_if->bwCurrent.gateway);
-
       fprintf(fp, fmt_values, //
           isEgressSelected(egress_if) ? "*" : " ", //selected
           IPLOCAL, // Originator
           MASKLOCAL, // Prefix
           egress_if->bwCurrent.egressUk, // Uplink
           egress_if->bwCurrent.egressDk, // Downlink
-          egress_if->bwCurrent.path_cost, // PathCost
+          get_linkcost_text(egress_if->bwCurrent.path_cost, true, &lnkbuf), // PathCost
           "egress", // Type
           egress_if->name, // Interface
           gw, // Gateway
@@ -2164,6 +2164,7 @@ static void writeProgramStatusFile(enum sgw_multi_change_phase phase) {
 
   /* olsr */
   {
+    struct lqtextbuffer lnkbuf;
     struct gateway_entry * current_gw = olsr_get_inet_gateway((olsr_cnf->ip_version == AF_INET) ? false : true);
     struct interfaceName * sgwTunnelInterfaceNames = (olsr_cnf->ip_version == AF_INET) ? sgwTunnel4InterfaceNames : sgwTunnel6InterfaceNames;
 
@@ -2193,7 +2194,7 @@ static void writeProgramStatusFile(enum sgw_multi_change_phase phase) {
             prefix, // Prefix IP
             gw->uplink, // Uplink
             gw->downlink, // Downlink
-            !tc ? ROUTE_COST_BROKEN : tc->path_cost, // PathCost
+            get_linkcost_text(!tc ? ROUTE_COST_BROKEN : tc->path_cost, true, &lnkbuf), // PathCost
             "olsr", // Type
             node->name, // Interface
             tunnelGw, // Gateway