]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospfd/ospf_sr.c
Merge pull request #5549 from donaldsharp/automated
[mirror_frr.git] / ospfd / ospf_sr.c
index 2d06ae77fc8e6d571f7c7abf79f25acea13d5dcb..ff2039bec84984a977671afe36627bd66be4cf99 100644 (file)
@@ -609,6 +609,7 @@ static int compute_prefix_nhlfe(struct sr_prefix *srp)
 static int ospf_zebra_send_mpls_labels(int cmd, struct sr_nhlfe nhlfe)
 {
        struct zapi_labels zl = {};
+       struct zapi_nexthop_label *znh;
 
        if (IS_DEBUG_OSPF_SR)
                zlog_debug("    |-  %s LSP %u/%u for %s/%u via %u",
@@ -627,76 +628,29 @@ static int ospf_zebra_send_mpls_labels(int cmd, struct sr_nhlfe nhlfe)
        zl.route.type = ZEBRA_ROUTE_OSPF;
        zl.route.instance = 0;
 
-       zl.nexthop.type = NEXTHOP_TYPE_IPV4_IFINDEX;
-       zl.nexthop.family = AF_INET;
-       zl.nexthop.address.ipv4 = nhlfe.nexthop;
-       zl.nexthop.ifindex = nhlfe.ifindex;
-       zl.nexthop.label = nhlfe.label_out;
+       zl.nexthop_num = 1;
+       znh = &zl.nexthops[0];
+       znh->type = NEXTHOP_TYPE_IPV4_IFINDEX;
+       znh->family = AF_INET;
+       znh->address.ipv4 = nhlfe.nexthop;
+       znh->ifindex = nhlfe.ifindex;
+       znh->label = nhlfe.label_out;
 
        return zebra_send_mpls_labels(zclient, cmd, &zl);
 }
 
-/* Request zebra to install/remove FEC in FIB */
-static int ospf_zebra_send_mpls_ftn(int cmd, struct sr_nhlfe nhlfe)
-{
-       struct zapi_route api;
-       struct zapi_nexthop *api_nh;
-
-       /* Support only IPv4 */
-       if (nhlfe.prefv4.family != AF_INET)
-               return -1;
-
-       memset(&api, 0, sizeof(api));
-       api.vrf_id = VRF_DEFAULT;
-       api.type = ZEBRA_ROUTE_OSPF;
-       api.safi = SAFI_UNICAST;
-       memcpy(&api.prefix, &nhlfe.prefv4, sizeof(struct prefix_ipv4));
-
-       if (cmd == ZEBRA_ROUTE_ADD) {
-               /* Metric value. */
-               SET_FLAG(api.message, ZAPI_MESSAGE_METRIC);
-               api.metric = OSPF_SR_DEFAULT_METRIC;
-               /* Nexthop */
-               SET_FLAG(api.message, ZAPI_MESSAGE_NEXTHOP);
-               api_nh = &api.nexthops[0];
-               IPV4_ADDR_COPY(&api_nh->gate.ipv4, &nhlfe.nexthop);
-               api_nh->type = NEXTHOP_TYPE_IPV4_IFINDEX;
-               api_nh->ifindex = nhlfe.ifindex;
-               /* MPLS labels */
-               SET_FLAG(api.message, ZAPI_MESSAGE_LABEL);
-               api_nh->labels[0] = nhlfe.label_out;
-               api_nh->label_num = 1;
-               api_nh->vrf_id = VRF_DEFAULT;
-               api.nexthop_num = 1;
-       }
-
-       if (IS_DEBUG_OSPF_SR)
-               zlog_debug("    |-  %s FEC %u for %s/%u via %u",
-                          cmd == ZEBRA_ROUTE_ADD ? "Add" : "Delete",
-                          nhlfe.label_out, inet_ntoa(nhlfe.prefv4.prefix),
-                          nhlfe.prefv4.prefixlen, nhlfe.ifindex);
-
-       return zclient_route_send(cmd, zclient, &api);
-}
-
 /* Add new NHLFE entry for SID */
 static inline void add_sid_nhlfe(struct sr_nhlfe nhlfe)
 {
-       if ((nhlfe.label_in != 0) && (nhlfe.label_out != 0)) {
+       if ((nhlfe.label_in != 0) && (nhlfe.label_out != 0))
                ospf_zebra_send_mpls_labels(ZEBRA_MPLS_LABELS_ADD, nhlfe);
-               if (nhlfe.label_out != MPLS_LABEL_IMPLICIT_NULL)
-                       ospf_zebra_send_mpls_ftn(ZEBRA_ROUTE_ADD, nhlfe);
-       }
 }
 
 /* Remove NHLFE entry for SID */
 static inline void del_sid_nhlfe(struct sr_nhlfe nhlfe)
 {
-       if ((nhlfe.label_in != 0) && (nhlfe.label_out != 0)) {
+       if ((nhlfe.label_in != 0) && (nhlfe.label_out != 0))
                ospf_zebra_send_mpls_labels(ZEBRA_MPLS_LABELS_DELETE, nhlfe);
-               if (nhlfe.label_out != MPLS_LABEL_IMPLICIT_NULL)
-                       ospf_zebra_send_mpls_ftn(ZEBRA_ROUTE_DELETE, nhlfe);
-       }
 }
 
 /* Update NHLFE entry for SID */