]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/nexthop.c
zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
[mirror_frr.git] / lib / nexthop.c
index b1e9582b20839a026cdc252ad740406462398cce..d25b470277b40167b6064a8a4719f145c555072c 100644 (file)
@@ -31,6 +31,7 @@
 #include "prefix.h"
 #include "nexthop.h"
 #include "mpls.h"
+#include "jhash.h"
 
 DEFINE_MTYPE_STATIC(LIB, NEXTHOP, "Nexthop")
 DEFINE_MTYPE_STATIC(LIB, NH_LABEL, "Nexthop label")
@@ -240,22 +241,18 @@ void nexthop_del_labels(struct nexthop *nexthop)
        }
 }
 
-const char *nexthop2str(struct nexthop *nexthop, char *str, int size)
+const char *nexthop2str(const struct nexthop *nexthop, char *str, int size)
 {
        switch (nexthop->type) {
        case NEXTHOP_TYPE_IFINDEX:
                snprintf(str, size, "if %u", nexthop->ifindex);
                break;
        case NEXTHOP_TYPE_IPV4:
-               snprintf(str, size, "%s", inet_ntoa(nexthop->gate.ipv4));
-               break;
        case NEXTHOP_TYPE_IPV4_IFINDEX:
                snprintf(str, size, "%s if %u", inet_ntoa(nexthop->gate.ipv4),
                         nexthop->ifindex);
                break;
        case NEXTHOP_TYPE_IPV6:
-               snprintf(str, size, "%s", inet6_ntoa(nexthop->gate.ipv6));
-               break;
        case NEXTHOP_TYPE_IPV6_IFINDEX:
                snprintf(str, size, "%s if %u", inet6_ntoa(nexthop->gate.ipv6),
                         nexthop->ifindex);
@@ -310,3 +307,15 @@ unsigned int nexthop_level(struct nexthop *nexthop)
 
        return rv;
 }
+
+uint32_t nexthop_hash(struct nexthop *nexthop)
+{
+       uint32_t key;
+
+       key = jhash_1word(nexthop->vrf_id, 0x45afe398);
+       key = jhash_1word(nexthop->ifindex, key);
+       key = jhash_1word(nexthop->type, key);
+       key = jhash(&nexthop->gate, sizeof(union g_addr), key);
+
+       return key;
+}