ripd: allow to enable/disable the ECMP feature

Introduce a new command "[no] allow-ecmp" to enable/disable the
ECMP feature in RIP. By default, ECMP is not allowed.

Once ECMP is disabled, only one route entry can exist in the list.

* rip_zebra.c: adjust a debugging information, which shows the number
               of nexthops according to whether ECMP is enabled.
* ripd.c: rip_ecmp_add() will reject the new route if ECMP is not
          allowed and some entry already exists.
          A new configurable command "allow-ecmp" is added to control
          whether ECMP is allowed.
          When ECMP is disabled, rip_ecmp_disable() is called to
          remove the multiple nexthops.
* ripd.h: Add a new member "ecmp" to "struct rip", indicating whether
          ECMP is allowed or not.

Signed-off-by: Feng Lu <lu.feng@6wind.com>
Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c
index 8b1c64d..b005ece 100644
--- a/ripd/rip_zebra.c
+++ b/ripd/rip_zebra.c
@@ -92,10 +92,18 @@
                        (struct prefix_ipv4 *)&rp->p, &api);
 
       if (IS_RIP_DEBUG_ZEBRA)
-        zlog_debug ("%s: %s/%d nexthops %d",
-                    (cmd == ZEBRA_IPV4_ROUTE_ADD) ? \
-                        "Install into zebra" : "Delete from zebra",
-                    inet_ntoa (rp->p.u.prefix4), rp->p.prefixlen, count);
+        {
+          if (rip->ecmp)
+            zlog_debug ("%s: %s/%d nexthops %d",
+                        (cmd == ZEBRA_IPV4_ROUTE_ADD) ? \
+                            "Install into zebra" : "Delete from zebra",
+                        inet_ntoa (rp->p.u.prefix4), rp->p.prefixlen, count);
+          else
+            zlog_debug ("%s: %s/%d",
+                        (cmd == ZEBRA_IPV4_ROUTE_ADD) ? \
+                            "Install into zebra" : "Delete from zebra",
+                        inet_ntoa (rp->p.u.prefix4), rp->p.prefixlen);
+        }
 
       rip_global_route_changes++;
     }