<div dir="ltr">Hi,<div><br></div><div>  Please let me know if any inputs.</div><div><br></div><div>Thanks and Regards,</div><div>Mayank</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 7, 2018 at 3:08 PM, Mayank Tiwari <span dir="ltr"><<a href="mailto:mike.tiwari@gmail.com" target="_blank">mike.tiwari@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><p class="MsoNormal">Hi,<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">  We are using quagga in our solution for FPM
connection and Reverse FPM connection with ONOS. In order to support BFD
feature I need to upgrade from quagga to FRR. For that I was patching the
changes present in quagga to FRR. During that patching process the following
patch is causing compilation issue:<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c<span></span></p>

<p class="MsoNormal">index 43d76a6..03c4a6b 100644<span></span></p>

<p class="MsoNormal">--- a/zebra/zebra_vty.c<span></span></p>

<p class="MsoNormal">+++ b/zebra/zebra_vty.c<span></span></p>

<p class="MsoNormal">@@ -20,6 +20,7 @@<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">#include <zebra.h><span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span style="background:silver">+#include
"zebra_fpm.h"</span><span></span></p>

<p class="MsoNormal">#include "memory.h"<span></span></p>

<p class="MsoNormal">#include "zebra_memory.h"<span></span></p>

<p class="MsoNormal">#include "if.h"<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span style="background:silver">+<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">+/*
function to write the fpm config info */<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">+static
int config_write_fpm (struct vty *vty)<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">+{<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">+ 
return fpm_remote_srv_write (vty);<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">+}</span><span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal">+/* Zebra node  */<span></span></p>

<p class="MsoNormal">+static struct cmd_node zebra_node =<span></span></p>

<p class="MsoNormal">+{<span></span></p>

<p class="MsoNormal">+  ZEBRA_NODE,<span></span></p>

<p class="MsoNormal">+  "",<span></span></p>

<p class="MsoNormal">+  1<span></span></p>

<p class="MsoNormal">+};<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">/* Route VTY.  */<span></span></p>

<p class="MsoNormal">void zebra_vty_init(void)<span></span></p>

<p class="MsoNormal">{<span></span></p>

<p class="MsoNormal">        /* Install
configuration write function. */<span></span></p>

<p class="MsoNormal">       
install_node(&table_node, config_write_table);<span></span></p>

<p class="MsoNormal">       
install_node(&forwarding_node, config_write_forwarding);<span></span></p>

<p class="MsoNormal"><span style="background:silver">+   
install_node (&zebra_node, config_write_fpm);</span><span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">       
install_element(VIEW_NODE, &show_ip_forwarding_cmd);<span></span></p>

<p class="MsoNormal">       
install_element(CONFIG_NODE, &ip_forwarding_cmd);<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">diff --git a/zebra/zebra_fpm.h b/zebra/zebra_fpm.h<span></span></p>

<p class="MsoNormal">new file mode 100644<span></span></p>

<p class="MsoNormal">index 0000000..9291ffa<span></span></p>

<p class="MsoNormal">--- /dev/null<span></span></p>

<p class="MsoNormal">+++ b/zebra/zebra_fpm.h<span></span></p>

<p class="MsoNormal">@@ -0,0 +1,35 @@<span></span></p>

<p class="MsoNormal">+/*<span></span></p>

<p class="MsoNormal">+ * Router ID for zebra daemon.<span></span></p>

<p class="MsoNormal">+ *<span></span></p>

<p class="MsoNormal">+ * Copyright (C) 2004 James R. Leu<span></span></p>

<p class="MsoNormal">+ *<span></span></p>

<p class="MsoNormal">+ * This file is part of Quagga routing suite.<span></span></p>

<p class="MsoNormal">+ *<span></span></p>

<p class="MsoNormal">+ * Quagga is free software; you can redistribute it and/or
modify it<span></span></p>

<p class="MsoNormal">+ * under the terms of the GNU General Public License as
published by the<span></span></p>

<p class="MsoNormal">+ * Free Software Foundation; either version 2, or (at your
option) any<span></span></p>

<p class="MsoNormal">+ * later version.<span></span></p>

<p class="MsoNormal">+ *<span></span></p>

<p class="MsoNormal">+ * Quagga is distributed in the hope that it will be
useful, but<span></span></p>

<p class="MsoNormal">+ * WITHOUT ANY WARRANTY; without even the implied warranty
of<span></span></p>

<p class="MsoNormal">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU<span></span></p>

<p class="MsoNormal">+ * General Public License for more details.<span></span></p>

<p class="MsoNormal">+ *<span></span></p>

<p class="MsoNormal">+ * You should have received a copy of the GNU General
Public License along<span></span></p>

<p class="MsoNormal">+ * with this program; see the file COPYING; if not, write
to the Free Software<span></span></p>

<p class="MsoNormal">+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA<span></span></p>

<p class="MsoNormal">+ */<span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal">+#ifndef _ZEBRA_VTY_H_<span></span></p>

<p class="MsoNormal">+#define _ZEBRA_VTY_H_<span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal">+#include <zebra.h><span></span></p>

<p class="MsoNormal">+#include "memory.h"<span></span></p>

<p class="MsoNormal">+#include "prefix.h"<span></span></p>

<p class="MsoNormal">+#include "zclient.h"<span></span></p>

<p class="MsoNormal">+#include "if.h"<span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal"><span style="background:silver">+static
int fpm_remote_srv_write (struct vty *vty );</span><span></span></p>

<p class="MsoNormal">+<span></span></p>

<p class="MsoNormal">+#endif<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><br>
The function 'fpm_remote_srv_write'  is already defined in zebra_fpm.c
file which I need to use zebra_vty.c file. I have created a header with name
zebra_fpm.h and declared that function there and later included this header in
zebra_vty.c. The compilation of zebra_vty.c fails as it is not able to find
 'fpm_remote_srv_write' function<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">This is the compilation error:<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">  CCLD     zebra/<a href="http://zebra_irdp.la" target="_blank">zebra_irdp.la</a><span></span></p>

<p class="MsoNormal">  <span style="background:silver">CC      
zebra/zebra_fpm.lo</span><span></span></p>

<p class="MsoNormal">  CC      
zebra/zebra_fpm_netlink.lo<span></span></p>

<p class="MsoNormal">…..<span></span></p>

<p class="MsoNormal">…..<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">  <span style="background:silver">CC      
zebra/zebra_vty.o<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">In file
included from zebra/zebra_vty.c:23:0:<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">zebra/zebra_fpm.h:33:12:
warning: 'fpm_remote_srv_write' used but never defined<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">static
int fpm_remote_srv_write (struct vty *vty );</span><span></span></p>

<p class="MsoNormal">           
^<span></span></p>

<p class="MsoNormal">  CC
      zebra/zebra_vxlan.o<span></span></p>

<p class="MsoNormal">  CC       zebra/zserv.o<span></span></p>

<p class="MsoNormal">  CC      
zebra/zebra_netns_id.o<span></span></p>

<p class="MsoNormal">  CC       zebra/zebra_netns_notify.o<span></span></p>

<p class="MsoNormal">  CC      
zebra/table_manager.o<span></span></p>

<p class="MsoNormal">  CC      
zebra/zapi_msg.o<span></span></p>

<p class="MsoNormal">  CCLD     zebra/zebra<span></span></p>

<p class="MsoNormal"><span style="background:silver">zebra/zebra_vty.o:
In function `config_write_fpm':<span></span></span></p>

<p class="MsoNormal"><span style="background:silver">/frr/zebra/zebra_vty.c:3697:
undefined reference to `fpm_remote_srv_write'</span><span></span></p>

<p class="MsoNormal">collect2: error: ld returned 1 exit status<span></span></p>

<p class="MsoNormal">make[2]: *** [zebra/zebra] Error 1<span></span></p>

<p class="MsoNormal">Makefile:3246: recipe for target 'zebra/zebra' failed<span></span></p>

<p class="MsoNormal">make[2]: Leaving directory '/frr'<span></span></p>

<p class="MsoNormal">Makefile:4421: recipe for target 'all-recursive' failed<span></span></p>

<p class="MsoNormal">make[1]: Leaving directory '/frr'<span></span></p>

<p class="MsoNormal">make[1]: *** [all-recursive] Error 1<span></span></p>

<p class="MsoNormal">make: *** [all] Error 2<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">  I have observed that zebra_fpm.c is compiled as
zebra_fpm.lo instead of zebra_fpm.o. I am not sure if that can cause this
issue. Please suggest what I am missing here and what approach I need to take
to fix this issue.<span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">Thanks and Regards,<span></span></p>

<p class="MsoNormal">Mayank<span></span></p></div>
</blockquote></div><br></div>