<div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Philippe,<div><br></div><div>  Thanks for your response. We have got inputs from Donald for it.</div><div><br></div><div>  The FPM module is
working successfully in FRR after I activated this module while starting zebra. This FPM connection
takes care of publishing the routes from FRR to the router on the other side
which has FPM connection with FRR.</div><p class="gmail-MsoPlainText"><span></span></p>

<p class="gmail-MsoPlainText"> We have an
additional requirement where the router on the other side of the FPM connection
has to publish the routes to FRR. We use the term "Reverse FPM" for
this scenario. Please let us know if there is any existing module in FRR code
which takes care of this scenario and if we need to load any other module to
enable it. If not, then is there any patch for FRR which can take care of this
scenario.<span></span></p><p class="gmail-MsoPlainText"><br></p><p class="gmail-MsoPlainText">Thanks and Regards,</p><p class="gmail-MsoPlainText">Mayank</p><p class="gmail-MsoPlainText"><span></span></p></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 20, 2018 at 7:48 AM, Philippe Guibert <span dir="ltr"><<a href="mailto:philippe.guibert@6wind.com" target="_blank">philippe.guibert@6wind.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Tiwari,<br>
<br>
Sorry for late response.<br>
Did you solve your issue ? FPM is hosted as a module. Shared libraries<br>
are used to host that module.<br>
In FRR code, hook.h API is used for that.<br>
FPM is an optional module that can be compiled with --enable-fpm option.<br>
I think you should run zebra with option -M fpm.<br>
<br>
Hoping it can help,<br>
Thanks,<br>
Philippe<br>
<br>
<br>
<br>
On Tue, Aug 7, 2018 at 8:37 PM, Tiwari, Mayank (Contractor)<br>
<<a href="mailto:Mayank_Tiwari@comcast.com">Mayank_Tiwari@comcast.com</a>> wrote:<br>
> Hi,<br>
><br>
><br>
><br>
>   We are using quagga in our solution for FPM connection and Reverse FPM<br>
> connection with ONOS. In order to support BFD feature I need to upgrade from<br>
> quagga to FRR. For that I was patching the changes present in quagga to FRR.<br>
> During that patching process the following patch is causing compilation<br>
> issue:<br>
><br>
><br>
><br>
> diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c<br>
><br>
> index 43d76a6..03c4a6b 100644<br>
><br>
> --- a/zebra/zebra_vty.c<br>
><br>
> +++ b/zebra/zebra_vty.c<br>
><br>
> @@ -20,6 +20,7 @@<br>
><br>
><br>
><br>
> #include <zebra.h><br>
><br>
><br>
><br>
> +#include "zebra_fpm.h"<br>
><br>
> #include "memory.h"<br>
><br>
> #include "zebra_memory.h"<br>
><br>
> #include "if.h"<br>
><br>
><br>
><br>
> +<br>
><br>
> +/* function to write the fpm config info */<br>
><br>
> +static int config_write_fpm (struct vty *vty)<br>
><br>
> +{<br>
><br>
> +  return fpm_remote_srv_write (vty);<br>
><br>
> +}<br>
><br>
> +<br>
><br>
> +/* Zebra node  */<br>
><br>
> +static struct cmd_node zebra_node =<br>
><br>
> +{<br>
><br>
> +  ZEBRA_NODE,<br>
><br>
> +  "",<br>
><br>
> +  1<br>
><br>
> +};<br>
><br>
><br>
><br>
> /* Route VTY.  */<br>
><br>
> void zebra_vty_init(void)<br>
><br>
> {<br>
><br>
>         /* Install configuration write function. */<br>
><br>
>         install_node(&table_node, config_write_table);<br>
><br>
>         install_node(&forwarding_node, config_write_forwarding);<br>
><br>
> +    install_node (&zebra_node, config_write_fpm);<br>
><br>
><br>
><br>
><br>
><br>
>         install_element(VIEW_NODE, &show_ip_forwarding_cmd);<br>
><br>
>         install_element(CONFIG_NODE, &ip_forwarding_cmd);<br>
><br>
><br>
><br>
><br>
><br>
> diff --git a/zebra/zebra_fpm.h b/zebra/zebra_fpm.h<br>
><br>
> new file mode 100644<br>
><br>
> index 0000000..9291ffa<br>
><br>
> --- /dev/null<br>
><br>
> +++ b/zebra/zebra_fpm.h<br>
><br>
> @@ -0,0 +1,35 @@<br>
><br>
> +/*<br>
><br>
> + * Router ID for zebra daemon.<br>
><br>
> + *<br>
><br>
> + * Copyright (C) 2004 James R. Leu<br>
><br>
> + *<br>
><br>
> + * This file is part of Quagga routing suite.<br>
><br>
> + *<br>
><br>
> + * Quagga is free software; you can redistribute it and/or modify it<br>
><br>
> + * under the terms of the GNU General Public License as published by the<br>
><br>
> + * Free Software Foundation; either version 2, or (at your option) any<br>
><br>
> + * later version.<br>
><br>
> + *<br>
><br>
> + * Quagga is distributed in the hope that it will be useful, but<br>
><br>
> + * WITHOUT ANY WARRANTY; without even the implied warranty of<br>
><br>
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU<br>
><br>
> + * General Public License for more details.<br>
><br>
> + *<br>
><br>
> + * You should have received a copy of the GNU General Public License along<br>
><br>
> + * with this program; see the file COPYING; if not, write to the Free<br>
> Software<br>
><br>
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<br>
><br>
> + */<br>
><br>
> +<br>
><br>
> +#ifndef _ZEBRA_VTY_H_<br>
><br>
> +#define _ZEBRA_VTY_H_<br>
><br>
> +<br>
><br>
> +#include <zebra.h><br>
><br>
> +#include "memory.h"<br>
><br>
> +#include "prefix.h"<br>
><br>
> +#include "zclient.h"<br>
><br>
> +#include "if.h"<br>
><br>
> +<br>
><br>
> +<br>
><br>
> +static int fpm_remote_srv_write (struct vty *vty );<br>
><br>
> +<br>
><br>
> +#endif<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> The function 'fpm_remote_srv_write'  is already defined in zebra_fpm.c file<br>
> which I need to use zebra_vty.c file. I have created a header with name<br>
> zebra_fpm.h and declared that function there and later included this header<br>
> in zebra_vty.c. The compilation of zebra_vty.c fails as it is not able to<br>
> find  'fpm_remote_srv_write' function<br>
><br>
><br>
><br>
> This is the compilation error:<br>
><br>
><br>
><br>
>   CCLD     zebra/<a href="http://zebra_irdp.la" rel="noreferrer" target="_blank">zebra_irdp.la</a><br>
><br>
>   CC       zebra/zebra_fpm.lo<br>
><br>
>   CC       zebra/zebra_fpm_netlink.lo<br>
><br>
> …..<br>
><br>
> …..<br>
><br>
><br>
><br>
>   CC       zebra/zebra_vty.o<br>
><br>
> In file included from zebra/zebra_vty.c:23:0:<br>
><br>
> zebra/zebra_fpm.h:33:12: warning: 'fpm_remote_srv_write' used but never<br>
> defined<br>
><br>
> static int fpm_remote_srv_write (struct vty *vty );<br>
><br>
>             ^<br>
><br>
>   CC       zebra/zebra_vxlan.o<br>
><br>
>   CC       zebra/zserv.o<br>
><br>
>   CC       zebra/zebra_netns_id.o<br>
><br>
>   CC       zebra/zebra_netns_notify.o<br>
><br>
>   CC       zebra/table_manager.o<br>
><br>
>   CC       zebra/zapi_msg.o<br>
><br>
>   CCLD     zebra/zebra<br>
><br>
> zebra/zebra_vty.o: In function `config_write_fpm':<br>
><br>
> /frr/zebra/zebra_vty.c:3697: undefined reference to `fpm_remote_srv_write'<br>
><br>
> collect2: error: ld returned 1 exit status<br>
><br>
> make[2]: *** [zebra/zebra] Error 1<br>
><br>
> Makefile:3246: recipe for target 'zebra/zebra' failed<br>
><br>
> make[2]: Leaving directory '/frr'<br>
><br>
> Makefile:4421: recipe for target 'all-recursive' failed<br>
><br>
> make[1]: Leaving directory '/frr'<br>
><br>
> make[1]: *** [all-recursive] Error 1<br>
><br>
> make: *** [all] Error 2<br>
><br>
><br>
><br>
>   I have observed that zebra_fpm.c is compiled as zebra_fpm.lo instead of<br>
> zebra_fpm.o. I am not sure if that can cause this issue. Please suggest what<br>
> I am missing here and what approach I need to take to fix this issue.<br>
><br>
><br>
><br>
> Thanks and Regards,<br>
><br>
> Mayank<br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> dev mailing list<br>
> <a href="mailto:dev@lists.frrouting.org">dev@lists.frrouting.org</a><br>
> <a href="https://lists.frrouting.org/listinfo/dev" rel="noreferrer" target="_blank">https://lists.frrouting.org/<wbr>listinfo/dev</a><br>
><br>
<br>
______________________________<wbr>_________________<br>
dev mailing list<br>
<a href="mailto:dev@lists.frrouting.org">dev@lists.frrouting.org</a><br>
<a href="https://lists.frrouting.org/listinfo/dev" rel="noreferrer" target="_blank">https://lists.frrouting.org/<wbr>listinfo/dev</a><br>
</blockquote></div><br></div>