Hello Hamid, I recommend that you try the experiment using the latest "master" levels of VPP and VPPSB. There were some small changes made around October so that they would compile. I just tried that just now and I did have to make one small change to vppsb/router/router/tap_inject_node.c; I had to add
#include <sys/uio.h> Perhaps this header file was previously being picked up indirectly and the indirect include disappeared. I do not myself do the install-deb step, but the others, netlink-install and router-install are working for me given the above tweak. I have noticed the word "tap" in the recent VCL code, and so I wonder if VPPSB is still the recommended method, or if there are newer techniques that have been developed. Good luck, I have been a bit lazy about taking the built code and actually trying it! Burt On Thu, Dec 28, 2017 at 3:58 AM, Syed Hamid Rasool via vpp-dev < vpp-dev@lists.fd.io> wrote: > Hi, > > I am following the VPP installation guide from the FRR wiki given in the > link: > > https://github.com/FRRouting/frr/wiki/Alternate-forwarding-planes%3A-VPP > > > But the problem I am facing is in the " > > make V=0 PLATFORM=vpp TAG=vpp_debug install-deb netlink-install > router-install" > > command, the router module does not perform correctly. > > Doing the "make router-install" subsequently gives out the following error: > " > @@@@ Building router in /vpp/build-root/build-native/router @@@@ > make[1]: Entering directory '/vpp/build-root/build-native/router' > depbase=`echo router/tap_inject.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ > /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > -DPACKAGE_STRING=\"router\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject.lo -MD -MP -MF $depbase.Tpo -c -o router/tap_inject.lo > /vpp/build-data/../router/router/tap_inject.c &&\ > mv -f $depbase.Tpo $depbase.Plo > depbase=`echo router/tap_inject_netlink.lo | sed > 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ > /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > -DPACKAGE_STRING=\"router\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_netlink.lo -MD -MP -MF $depbase.Tpo -c -o > router/tap_inject_netlink.lo > /vpp/build-data/../router/router/tap_inject_netlink.c > &&\ > mv -f $depbase.Tpo $depbase.Plo > depbase=`echo router/tap_inject_node.lo | sed > 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ > /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > -DPACKAGE_STRING=\"router\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_node.lo -MD -MP -MF $depbase.Tpo -c -o > router/tap_inject_node.lo /vpp/build-data/../router/router/tap_inject_node.c > &&\ > mv -f $depbase.Tpo $depbase.Plo > depbase=`echo router/tap_inject_tap.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'` > ;\ > /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > -DPACKAGE_STRING=\"router\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_tap.lo -MD -MP -MF $depbase.Tpo -c -o > router/tap_inject_tap.lo /vpp/build-data/../router/router/tap_inject_tap.c > &&\ > mv -f $depbase.Tpo $depbase.Plo > libtool: compile: gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > "-DPACKAGE_STRING=\"router 1.0\"" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_netlink.lo -MD -MP -MF router/.deps/tap_inject_netlink.Tpo > -c /vpp/build-data/../router/router/tap_inject_netlink.c -fPIC -DPIC -o > router/.libs/tap_inject_netlink.o > libtool: compile: gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > "-DPACKAGE_STRING=\"router 1.0\"" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_node.lo -MD -MP -MF router/.deps/tap_inject_node.Tpo -c > /vpp/build-data/../router/router/tap_inject_node.c -fPIC -DPIC -o > router/.libs/tap_inject_node.o > libtool: compile: gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > "-DPACKAGE_STRING=\"router 1.0\"" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject.lo -MD -MP -MF router/.deps/tap_inject.Tpo -c > /vpp/build-data/../router/router/tap_inject.c -fPIC -DPIC -o > router/.libs/tap_inject.o > libtool: compile: gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > "-DPACKAGE_STRING=\"router 1.0\"" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_tap.lo -MD -MP -MF router/.deps/tap_inject_tap.Tpo -c > /vpp/build-data/../router/router/tap_inject_tap.c -fPIC -DPIC -o > router/.libs/tap_inject_tap.o > /vpp/build-data/../router/router/tap_inject.c:89:41: error: unknown type > name 'vnet_plugin_handoff_t' > vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h, int f) > ^ > /vpp/build-data/../router/router/tap_inject.c: In function > 'tap_inject_enable': > /vpp/build-data/../router/router/tap_inject.c:140:5: error: unknown type > name 'ip4_add_del_route_args_t' > ip4_add_del_route_args_t a; > ^ > /vpp/build-data/../router/router/tap_inject.c:147:6: error: request for > member 'add_adj' in something not a structure or union > a.add_adj = &add_adj; > ^ > /vpp/build-data/../router/router/tap_inject.c:148:6: error: request for > member 'n_add_adj' in something not a structure or union > a.n_add_adj = 1; > ^ > /vpp/build-data/../router/router/tap_inject.c:150:6: error: request for > member 'flags' in something not a structure or union > a.flags = IP4_ROUTE_FLAG_TABLE_ID | IP4_ROUTE_FLAG_ADD; > ^ > /vpp/build-data/../router/router/tap_inject.c:150:15: error: > 'IP4_ROUTE_FLAG_TABLE_ID' undeclared (first use in this function) > a.flags = IP4_ROUTE_FLAG_TABLE_ID | IP4_ROUTE_FLAG_ADD; > ^ > /vpp/build-data/../router/router/tap_inject.c:150:15: note: each > undeclared identifier is reported only once for each function it appears in > /vpp/build-data/../router/router/tap_inject.c:150:41: error: > 'IP4_ROUTE_FLAG_ADD' undeclared (first use in this function) > a.flags = IP4_ROUTE_FLAG_TABLE_ID | IP4_ROUTE_FLAG_ADD; > ^ > /vpp/build-data/../router/router/tap_inject.c:151:6: error: request for > member 'table_index_or_table_id' in something not a structure or union > a.table_index_or_table_id = 0; > ^ > /vpp/build-data/../router/router/tap_inject.c:152:6: error: request for > member 'dst_address' in something not a structure or union > a.dst_address.as_u32 = 0x000000E0; /* 224.0.0.0 */ > ^ > /vpp/build-data/../router/router/tap_inject.c:153:6: error: request for > member 'dst_address_length' in something not a structure or union > a.dst_address_length = 24; > ^ > /vpp/build-data/../router/router/tap_inject.c:154:6: error: request for > member 'adj_index' in something not a structure or union > a.adj_index = ~0; > ^ > /vpp/build-data/../router/router/tap_inject.c:159:12: error: > 'ip_adjacency_t {aka struct ip_adjacency_t_}' has no member named > 'explicit_fib_index' > add_adj.explicit_fib_index = ~0; > ^ > /vpp/build-data/../router/router/tap_inject.c:160:27: error: > 'vnet_rewrite_header_t {aka struct <anonymous>}' has no member named > 'node_index' > add_adj.rewrite_header.node_index = ip4_rewrite_node.index; > ^ > /vpp/build-data/../router/router/tap_inject.c:162:12: error: > 'ip_adjacency_t {aka struct ip_adjacency_t_}' has no member named > 'if_address_index' > add_adj.if_address_index = ~0; > ^ > /vpp/build-data/../router/router/tap_inject.c:164:5: warning: implicit > declaration of function 'ip4_add_del_route' [-Wimplicit-function- > declaration] > ip4_add_del_route (&ip4_main, &a); > ^ > Makefile:476: recipe for target 'router/tap_inject.lo' failed > make[1]: *** [router/tap_inject.lo] Error 1 > make[1]: *** Waiting for unfinished jobs.... > /vpp/build-data/../router/router/tap_inject_tap.c:33:22: error: unknown > type name 'unix_file_t' > tap_inject_tap_read (unix_file_t * f) > ^ > /vpp/build-data/../router/router/tap_inject_tap.c: In function > 'tap_inject_tap_connect': > /vpp/build-data/../router/router/tap_inject_tap.c:55:3: error: unknown > type name 'unix_file_t' > unix_file_t template; > ^ > /vpp/build-data/../router/router/tap_inject_tap.c:120:11: error: request > for member 'read_function' in something not a structure or union > template.read_function = tap_inject_tap_read; > ^ > /vpp/build-data/../router/router/tap_inject_tap.c:120:28: error: > 'tap_inject_tap_read' undeclared (first use in this function) > template.read_function = tap_inject_tap_read; > ^ > /vpp/build-data/../router/router/tap_inject_tap.c:120:28: note: each > undeclared identifier is reported only once for each function it appears in > /vpp/build-data/../router/router/tap_inject_tap.c:121:11: error: request > for member 'file_descriptor' in something not a structure or union > template.file_descriptor = tap_fd; > ^ > /vpp/build-data/../router/router/tap_inject_tap.c:123:3: warning: > implicit declaration of function 'unix_file_add' [-Wimplicit-function- > declaration] > unix_file_add (&unix_main, &template); > ^ > /vpp/build-data/../router/router/tap_inject_netlink.c:19:27: fatal error: > librtnl/netns.h: No such file or directory > compilation terminated. > Makefile:476: recipe for target 'router/tap_inject_tap.lo' failed > make[1]: *** [router/tap_inject_tap.lo] Error 1 > Makefile:476: recipe for target 'router/tap_inject_netlink.lo' failed > make[1]: *** [router/tap_inject_netlink.lo] Error 1 > libtool: compile: gcc -DPACKAGE_NAME=\"router\" > -DPACKAGE_TARNAME=\"router\" -DPACKAGE_VERSION=\"1.0\" > "-DPACKAGE_STRING=\"router 1.0\"" -DPACKAGE_BUGREPORT=\"\" > -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 > -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 > -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"router\" > -DVERSION=\"1.0\" -I. -I/vpp/build-data/../router -Wall -I. -g -O2 -MT > router/tap_inject_node.lo -MD -MP -MF router/.deps/tap_inject_node.Tpo -c > /vpp/build-data/../router/router/tap_inject_node.c -o > router/tap_inject_node.o >/dev/null 2>&1 > make[1]: Leaving directory '/vpp/build-root/build-native/router' > Makefile:699: recipe for target 'router-build' failed > make: *** [router-build] Error 2 > > " > > As a result, there is no directory of " > > /vpp/build-root/install-vpp_debug-native/router/ > > " created and the "vppctl enable tap-inject" command that is used to > confirm router plugin is also not working. > > Kindly help out. In general, I want to test CG-NAT use case of VPP using > FRR for routing protocols in x86 environment. > > > -- > Regards, > > Hamid Rasool > > _______________________________________________ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev >
_______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev