]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: add stub implementation for zebra gre source set
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 20 Dec 2019 09:51:25 +0000 (10:51 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 30 Apr 2021 08:33:18 +0000 (10:33 +0200)
this functionality is stubbed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
zebra/rt_netlink.c
zebra/zapi_msg.c

index d2ec7da57cc13df091bfa51523eca862f256147f..d8405f277e83ff7889b9c57fd68c274d0b2936b0 100644 (file)
@@ -3890,6 +3890,14 @@ netlink_put_neigh_update_msg(struct nl_batch *bth, struct zebra_dplane_ctx *ctx)
                                     false);
 }
 
+int kernel_configure_if_link(struct interface *ifp,
+                            struct interface *link_ifp,
+                            ns_id_t ns_id)
+{
+       /* TODO */
+       return 0;
+}
+
 /*
  * MPLS label forwarding table change via netlink interface, using dataplane
  * context information.
index 77a9188fe8f4d3ec824ed43218d0dc9e628b4978..645cb2bd0cecdfb12d0f4b12104a6bb2e80c6016 100644 (file)
@@ -3373,6 +3373,34 @@ stream_failure:
        return;
 }
 
+static inline void zebra_gre_source_set(ZAPI_HANDLER_ARGS)
+{
+       struct stream *s;
+       ifindex_t idx, link_idx;
+       vrf_id_t link_vrf_id;
+       struct interface *ifp;
+       struct interface *ifp_link;
+       ns_id_t ns_id;
+       vrf_id_t vrf_id = zvrf->vrf->vrf_id;
+
+       s = msg;
+       STREAM_GETL(s, idx);
+       ifp  = if_lookup_by_index(idx, vrf_id);
+       STREAM_GETL(s, link_idx);
+       STREAM_GETL(s, link_vrf_id);
+       ifp_link  = if_lookup_by_index(link_idx, link_vrf_id);
+       if (!ifp_link || !ifp) {
+               zlog_warn("GRE (index %u, VRF %u) or GRE link interface (index %u, VRF %u) not found, when setting GRE params",
+                         idx, vrf_id, link_idx, link_vrf_id);
+               return;
+       }
+       ns_id = zvrf->zns->ns_id;
+       kernel_configure_if_link(ifp, ifp_link, ns_id);
+
+ stream_failure:
+       return;
+}
+
 static void zsend_error_msg(struct zserv *client, enum zebra_error_types error,
                            struct zmsghdr *bad_hdr)
 {
@@ -3488,6 +3516,7 @@ void (*const zserv_handlers[])(ZAPI_HANDLER_ARGS) = {
        [ZEBRA_NHRP_NEIGH_REGISTER] = zebra_neigh_register,
        [ZEBRA_NHRP_NEIGH_UNREGISTER] = zebra_neigh_unregister,
        [ZEBRA_CONFIGURE_ARP] = zebra_configure_arp,
+       [ZEBRA_GRE_SOURCE_SET] = zebra_gre_source_set,
 };
 
 /*