]> git.proxmox.com Git - mirror_frr.git/blobdiff - vrrpd/vrrp_vty.c
vrrpd, lib: style fixes
[mirror_frr.git] / vrrpd / vrrp_vty.c
index 3f6918539cc441900d53135b8d8795c6320cc9f6..0cb33bffed6f552bb03ccc1f39139c93170be791 100644 (file)
@@ -52,7 +52,7 @@
                                (unsigned int)_vrid);                          \
                        return CMD_WARNING_CONFIG_FAILED;                      \
                }                                                              \
-       } while (0);
+       } while (0)
 
 /* clang-format off */
 
@@ -137,9 +137,9 @@ DEFPY(vrrp_priority,
 
 DEFPY(vrrp_advertisement_interval,
       vrrp_advertisement_interval_cmd,
-      "[no] vrrp (1-255)$vrid advertisement-interval (1-4096)",
+      "[no] vrrp (1-255)$vrid advertisement-interval (10-40950)",
       NO_STR VRRP_STR VRRP_VRID_STR VRRP_ADVINT_STR
-      "Advertisement interval in centiseconds")
+      "Advertisement interval in milliseconds; must be multiple of 10")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
 
@@ -147,6 +147,14 @@ DEFPY(vrrp_advertisement_interval,
        uint16_t newadvint = no ? vd.advertisement_interval :
                                  advertisement_interval;
 
+       if (newadvint % 10 != 0) {
+               vty_out(vty, "%% Value must be a multiple of 10\n");
+               return CMD_WARNING_CONFIG_FAILED;
+       }
+
+       /* all internal computations are in centiseconds */
+       newadvint /= CS2MS;
+
        VROUTER_GET_VTY(vty, ifp, vrid, vr);
        vrrp_set_advertisement_interval(vr, newadvint);
 
@@ -169,19 +177,20 @@ DEFPY(vrrp_ip,
        bool activated = false;
        bool failed = false;
        int ret = CMD_SUCCESS;
+       int oldstate;
 
        VROUTER_GET_VTY(vty, ifp, vrid, vr);
 
        bool will_activate = (vr->v4->fsm.state == VRRP_STATE_INITIALIZE);
 
        if (no) {
-               int oldstate = vr->v4->fsm.state;
+               oldstate = vr->v4->fsm.state;
                failed = vrrp_del_ipv4(vr, ip);
                vrrp_check_start(vr);
                deactivated = (vr->v4->fsm.state == VRRP_STATE_INITIALIZE
                               && oldstate != VRRP_STATE_INITIALIZE);
        } else {
-               int oldstate = vr->v4->fsm.state;
+               oldstate = vr->v4->fsm.state;
                failed = vrrp_add_ipv4(vr, ip);
                vrrp_check_start(vr);
                activated = (vr->v4->fsm.state != VRRP_STATE_INITIALIZE
@@ -222,6 +231,7 @@ DEFPY(vrrp_ip6,
        bool activated = false;
        bool failed = false;
        int ret = CMD_SUCCESS;
+       int oldstate;
 
        VROUTER_GET_VTY(vty, ifp, vrid, vr);
 
@@ -234,13 +244,13 @@ DEFPY(vrrp_ip6,
        bool will_activate = (vr->v6->fsm.state == VRRP_STATE_INITIALIZE);
 
        if (no) {
-               int oldstate = vr->v6->fsm.state;
+               oldstate = vr->v6->fsm.state;
                failed = vrrp_del_ipv6(vr, ipv6);
                vrrp_check_start(vr);
                deactivated = (vr->v6->fsm.state == VRRP_STATE_INITIALIZE
                               && oldstate != VRRP_STATE_INITIALIZE);
        } else {
-               int oldstate = vr->v6->fsm.state;
+               oldstate = vr->v6->fsm.state;
                failed = vrrp_add_ipv6(vr, ipv6);
                vrrp_check_start(vr);
                activated = (vr->v6->fsm.state != VRRP_STATE_INITIALIZE
@@ -346,6 +356,8 @@ static struct json_object *vrrp_build_json(struct vrrp_vrouter *vr)
        char ipstr[INET6_ADDRSTRLEN];
        const char *stastr4 = vrrp_state_names[vr->v4->fsm.state];
        const char *stastr6 = vrrp_state_names[vr->v6->fsm.state];
+       char sipstr4[INET6_ADDRSTRLEN] = {};
+       char sipstr6[INET6_ADDRSTRLEN] = {};
        struct listnode *ln;
        struct ipaddr *ip;
        struct json_object *j = json_object_new_object();
@@ -366,17 +378,21 @@ static struct json_object *vrrp_build_json(struct vrrp_vrouter *vr)
        json_object_boolean_add(j, "preemptMode", vr->preempt_mode);
        json_object_boolean_add(j, "acceptMode", vr->accept_mode);
        json_object_string_add(j, "interface", vr->ifp->name);
+       json_object_int_add(j, "advertisementInterval",
+                           vr->advertisement_interval * CS2MS);
        /* v4 */
        json_object_string_add(v4, "interface",
                               vr->v4->mvl_ifp ? vr->v4->mvl_ifp->name : "");
        json_object_string_add(v4, "vmac", ethstr4);
+       ipaddr2str(&vr->v4->src, sipstr4, sizeof(sipstr4));
+       json_object_string_add(v4, "primaryAddress", sipstr4);
        json_object_string_add(v4, "status", stastr4);
        json_object_int_add(v4, "effectivePriority", vr->v4->priority);
        json_object_int_add(v4, "masterAdverInterval",
-                           vr->v4->master_adver_interval);
-       json_object_int_add(v4, "skewTime", vr->v4->skew_time);
+                           vr->v4->master_adver_interval * CS2MS);
+       json_object_int_add(v4, "skewTime", vr->v4->skew_time * CS2MS);
        json_object_int_add(v4, "masterDownInterval",
-                           vr->v4->master_down_interval);
+                           vr->v4->master_down_interval * CS2MS);
        /* v4 stats */
        json_object_int_add(v4_stats, "adverTx", vr->v4->stats.adver_tx_cnt);
        json_object_int_add(v4_stats, "adverRx", vr->v4->stats.adver_rx_cnt);
@@ -399,13 +415,17 @@ static struct json_object *vrrp_build_json(struct vrrp_vrouter *vr)
        json_object_string_add(v6, "interface",
                               vr->v6->mvl_ifp ? vr->v6->mvl_ifp->name : "");
        json_object_string_add(v6, "vmac", ethstr6);
+       ipaddr2str(&vr->v6->src, sipstr6, sizeof(sipstr6));
+       if (strlen(sipstr6) == 0 && vr->v6->src.ip.addr == 0x00)
+               strlcat(sipstr6, "::", sizeof(sipstr6));
+       json_object_string_add(v6, "primaryAddress", sipstr6);
        json_object_string_add(v6, "status", stastr6);
        json_object_int_add(v6, "effectivePriority", vr->v6->priority);
        json_object_int_add(v6, "masterAdverInterval",
-                           vr->v6->master_adver_interval);
-       json_object_int_add(v6, "skewTime", vr->v6->skew_time);
+                           vr->v6->master_adver_interval * CS2MS);
+       json_object_int_add(v6, "skewTime", vr->v6->skew_time * CS2MS);
        json_object_int_add(v6, "masterDownInterval",
-                           vr->v6->master_down_interval);
+                           vr->v6->master_down_interval * CS2MS);
        /* v6 stats */
        json_object_int_add(v6_stats, "adverTx", vr->v6->stats.adver_tx_cnt);
        json_object_int_add(v6_stats, "adverRx", vr->v6->stats.adver_rx_cnt);
@@ -444,6 +464,8 @@ static void vrrp_show(struct vty *vty, struct vrrp_vrouter *vr)
        char ipstr[INET6_ADDRSTRLEN];
        const char *stastr4 = vrrp_state_names[vr->v4->fsm.state];
        const char *stastr6 = vrrp_state_names[vr->v6->fsm.state];
+       char sipstr4[INET6_ADDRSTRLEN] = {};
+       char sipstr6[INET6_ADDRSTRLEN] = {};
        struct listnode *ln;
        struct ipaddr *ip;
 
@@ -461,6 +483,12 @@ static void vrrp_show(struct vty *vty, struct vrrp_vrouter *vr)
                       vr->v4->mvl_ifp ? vr->v4->mvl_ifp->name : "None");
        ttable_add_row(tt, "%s|%s", "VRRP interface (v6)",
                       vr->v6->mvl_ifp ? vr->v6->mvl_ifp->name : "None");
+       ipaddr2str(&vr->v4->src, sipstr4, sizeof(sipstr4));
+       ipaddr2str(&vr->v6->src, sipstr6, sizeof(sipstr6));
+       if (strlen(sipstr6) == 0 && vr->v6->src.ip.addr == 0x00)
+               strlcat(sipstr6, "::", sizeof(sipstr6));
+       ttable_add_row(tt, "%s|%s", "Primary IP (v4)", sipstr4);
+       ttable_add_row(tt, "%s|%s", "Primary IP (v6)", sipstr6);
        ttable_add_row(tt, "%s|%s", "Virtual MAC (v4)", ethstr4);
        ttable_add_row(tt, "%s|%s", "Virtual MAC (v6)", ethstr6);
        ttable_add_row(tt, "%s|%s", "Status (v4)", stastr4);
@@ -474,14 +502,14 @@ static void vrrp_show(struct vty *vty, struct vrrp_vrouter *vr)
                       vr->preempt_mode ? "Yes" : "No");
        ttable_add_row(tt, "%s|%s", "Accept Mode",
                       vr->accept_mode ? "Yes" : "No");
-       ttable_add_row(tt, "%s|%" PRIu16 " cs", "Advertisement Interval",
-                      vr->advertisement_interval);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs",
+       ttable_add_row(tt, "%s|%d ms", "Advertisement Interval",
+                      vr->advertisement_interval * CS2MS);
+       ttable_add_row(tt, "%s|%d ms",
                       "Master Advertisement Interval (v4)",
-                      vr->v4->master_adver_interval);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs",
+                      vr->v4->master_adver_interval * CS2MS);
+       ttable_add_row(tt, "%s|%d ms",
                       "Master Advertisement Interval (v6)",
-                      vr->v6->master_adver_interval);
+                      vr->v6->master_adver_interval * CS2MS);
        ttable_add_row(tt, "%s|%" PRIu32, "Advertisements Tx (v4)",
                       vr->v4->stats.adver_tx_cnt);
        ttable_add_row(tt, "%s|%" PRIu32, "Advertisements Tx (v6)",
@@ -498,17 +526,18 @@ static void vrrp_show(struct vty *vty, struct vrrp_vrouter *vr)
                       vr->v4->stats.trans_cnt);
        ttable_add_row(tt, "%s|%" PRIu32, "State transitions (v6)",
                       vr->v6->stats.trans_cnt);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs", "Skew Time (v4)",
-                      vr->v4->skew_time);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs", "Skew Time (v6)",
-                      vr->v6->skew_time);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs", "Master Down Interval (v4)",
-                      vr->v4->master_down_interval);
-       ttable_add_row(tt, "%s|%" PRIu16 " cs", "Master Down Interval (v6)",
-                      vr->v6->master_down_interval);
+       ttable_add_row(tt, "%s|%d ms", "Skew Time (v4)",
+                      vr->v4->skew_time * CS2MS);
+       ttable_add_row(tt, "%s|%d ms", "Skew Time (v6)",
+                      vr->v6->skew_time * CS2MS);
+       ttable_add_row(tt, "%s|%d ms", "Master Down Interval (v4)",
+                      vr->v4->master_down_interval * CS2MS);
+       ttable_add_row(tt, "%s|%d ms", "Master Down Interval (v6)",
+                      vr->v6->master_down_interval * CS2MS);
        ttable_add_row(tt, "%s|%u", "IPv4 Addresses", vr->v4->addrs->count);
 
        char fill[35];
+
        memset(fill, '.', sizeof(fill));
        fill[sizeof(fill) - 1] = 0x00;
        if (vr->v4->addrs->count) {
@@ -530,6 +559,7 @@ static void vrrp_show(struct vty *vty, struct vrrp_vrouter *vr)
        }
 
        char *table = ttable_dump(tt, "\n");
+
        vty_out(vty, "\n%s\n", table);
        XFREE(MTYPE_TMP, table);
        ttable_del(tt);
@@ -555,7 +585,7 @@ DEFPY(vrrp_vrid_show,
        for (ALL_LIST_ELEMENTS_RO(ll, ln, vr)) {
                if (ifn && !strmatch(ifn, vr->ifp->name))
                        continue;
-               if ((uint8_t) vrid && vrid != vr->vrid)
+               if (vrid && ((uint8_t) vrid) != vr->vrid)
                        continue;
 
                if (!json)