The basic "include-what-you-use" philosophy would say that it is *smart* (vs. necessary) to add the #include you added, Michael, but on the other hand, I believe vppinfra/file.h is included in vlib/unix/unix.h is included in rtnl.c, so I do not understand why you got that compiler error. Oh, maybe you tried to build something partial without following the "plan" spelled out in vppsb/router/README.md. I mean to say, (one more try,) it appears that the README.md in vppsb/router is more reliable than the README.md in vppsb/netlink: the reliable README.md will make certain that the header files get installed as needed into vpp/build-root/install-vpp-native/vpp/include/
Burt On Wed, Sep 27, 2017 at 2:50 PM, Michael Borokhovich <[email protected]> wrote: > Thanks, Burt! > > I've realized that I also need to add #include <vppinfra/file.h> to the > rtnl.c > > However it says: "*fatal error: *vppinfra/file.h: No such file or > directory" > > Do you have any suggestions for this? Otherwise, I will try to figure it > out. > > Michael. > > > > > > On Wed, Sep 27, 2017 at 2:06 PM, Burt Silverman <[email protected]> wrote: > >> Hi Michael, >> >> I came up with a patch that compiles, but I have not tested it. Hopefully >> it is this simple: >> >> burts@burtvb:~/vppsb/netlink/librtnl$ git diff . >> diff --git a/netlink/librtnl/rtnl.c b/netlink/librtnl/rtnl.c >> index 04f0440..fa31617 100644 >> --- a/netlink/librtnl/rtnl.c >> +++ b/netlink/librtnl/rtnl.c >> @@ -31,6 +31,7 @@ >> >> #include <sys/types.h> >> #include <sys/wait.h> >> +#include <errno.h> >> >> #undef DBL_MAX >> #define DBL_MAX 1000000000.0 >> @@ -102,7 +103,7 @@ rtnl_cancel_timeout(rtnl_ns_t *ns) >> ns->timeout = DBL_MAX; >> } >> >> -static clib_error_t *rtnl_read_cb(struct unix_file * f) >> +static clib_error_t *rtnl_read_cb(struct clib_file * f) >> { >> rtnl_main_t *rm = &rtnl_main; >> vlib_main_t *vm = vlib_get_main(); >> @@ -138,7 +139,7 @@ int rtnl_dump_request(rtnl_ns_t *ns, int type, void >> *req, size_t len) >> >> static void rtnl_socket_close(rtnl_ns_t *ns) >> { >> - unix_file_del(&unix_main, &unix_main.file_pool[ns->unix_index]); >> + clib_file_del(&file_main, &file_main.file_pool[ns->unix_index]); >> close(ns->rtnl_socket); >> } >> >> @@ -259,11 +260,11 @@ static int rtnl_socket_open(rtnl_ns_t *ns) >> return -3; >> } >> >> - unix_file_t template = {0}; >> + clib_file_t template = {0}; >> template.read_function = rtnl_read_cb; >> template.file_descriptor = ns->rtnl_socket; >> template.private_data = (uword) (ns - rm->streams); >> - ns->unix_index = unix_file_add (&unix_main, &template); >> + ns->unix_index = clib_file_add (&file_main, &template); >> return 0; >> } >> >> >> On Wed, Sep 27, 2017 at 1:41 PM, Michael Borokhovich < >> [email protected]> wrote: >> >>> Hi Burt, Pawel, >>> >>> Did you eventually manage to install the router plugin with the latest >>> VPP? >>> >>> Thanks, >>> Michael. >>> >>> >>> On Tue, Sep 19, 2017 at 6:05 PM, Burt Silverman <[email protected]> >>> wrote: >>> >>>> Same problem here. I guess the vlib code was updated but the vppsb has >>>> not caught up. >>>> >>>> Burt >>>> >>>> On Mon, Sep 18, 2017 at 12:56 PM, Paweł Staszewski < >>>> [email protected]> wrote: >>>> >>>>> Trying to add netlink from vppsb to the latest vpp git but : >>>>> >>>>> >>>>> @@@@ Building netlink in >>>>> /git/vpp/build-root/build-vpp_debug-native/netlink >>>>> @@@@ >>>>> make[1]: Entering directory '/git/vpp/build-root/build-vpp >>>>> _debug-native/netlink' >>>>> CC librtnl/netns.lo >>>>> CC librtnl/rtnl.lo >>>>> CC librtnl/mapper.lo >>>>> CC test/test.lo >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:105:42: error: ‘struct >>>>> unix_file’ declared inside parameter list will not be visible outside of >>>>> this definition or declaration [-Werror] >>>>> static clib_error_t *rtnl_read_cb(struct unix_file * f) >>>>> ^~~~~~~~~ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c: In function >>>>> ‘rtnl_read_cb’: >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:109:33: error: >>>>> dereferencing pointer to incomplete type ‘struct unix_file’ >>>>> rtnl_ns_t *ns = &rm->streams[f->private_data]; >>>>> ^~ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c: In function >>>>> ‘rtnl_socket_close’: >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:141:3: error: implicit >>>>> declaration of function ‘unix_file_del’ [-Werror=implicit-function-dec >>>>> laration] >>>>> unix_file_del(&unix_main, &unix_main.file_pool[ns->unix_index]); >>>>> ^~~~~~~~~~~~~ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:141:39: error: >>>>> ‘unix_main_t {aka struct <anonymous>}’ has no member named ‘file_pool’ >>>>> unix_file_del(&unix_main, &unix_main.file_pool[ns->unix_index]); >>>>> ^ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c: In function >>>>> ‘rtnl_socket_open’: >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:262:3: error: unknown >>>>> type name ‘unix_file_t’ >>>>> unix_file_t template = {0}; >>>>> ^~~~~~~~~~~ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:263:11: error: request >>>>> for member ‘read_function’ in something not a structure or union >>>>> template.read_function = rtnl_read_cb; >>>>> ^ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:264:11: error: request >>>>> for member ‘file_descriptor’ in something not a structure or union >>>>> template.file_descriptor = ns->rtnl_socket; >>>>> ^ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:265:11: error: request >>>>> for member ‘private_data’ in something not a structure or union >>>>> template.private_data = (uword) (ns - rm->streams); >>>>> ^ >>>>> /git/vpp/build-data/../netlink/librtnl/rtnl.c:266:20: error: implicit >>>>> declaration of function ‘unix_file_add’ [-Werror=implicit-function-dec >>>>> laration] >>>>> ns->unix_index = unix_file_add (&unix_main, &template); >>>>> ^~~~~~~~~~~~~ >>>>> cc1: all warnings being treated as errors >>>>> Makefile:520: recipe for target 'librtnl/rtnl.lo' failed >>>>> make[1]: *** [librtnl/rtnl.lo] Error 1 >>>>> make[1]: *** Waiting for unfinished jobs.... >>>>> /git/vpp/build-data/../netlink/test/test.c: In function >>>>> ‘mapper_ns_add_command_fn’: >>>>> /git/vpp/build-data/../netlink/test/test.c:125:14: error: implicit >>>>> declaration of function ‘ip4_fib_index_from_table_id’ >>>>> [-Werror=implicit-function-declaration] >>>>> u32 fib4 = ip4_fib_index_from_table_id(table_id); >>>>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>> /git/vpp/build-data/../netlink/test/test.c:126:14: error: implicit >>>>> declaration of function ‘ip6_fib_index_from_table_id’ >>>>> [-Werror=implicit-function-declaration] >>>>> u32 fib6 = ip6_fib_index_from_table_id(table_id); >>>>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>> cc1: all warnings being treated as errors >>>>> Makefile:520: recipe for target 'test/test.lo' failed >>>>> make[1]: *** [test/test.lo] Error 1 >>>>> make[1]: Leaving directory '/git/vpp/build-root/build-vpp >>>>> _debug-native/netlink' >>>>> Makefile:698: recipe for target 'netlink-build' failed >>>>> make: *** [netlink-build] Error 2 >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> W dniu 2017-09-17 o 16:27, Paweł Staszewski pisze: >>>>> >>>>> Also latest vpp from git without including vppsb >>>>>> >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Service hold-off time >>>>>> over, scheduling restart. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Stopped vector packet processing >>>>>> engine. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Starting vector packet processing >>>>>> engine... >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Started vector packet processing >>>>>> engine. >>>>>> Sep 17 16:28:02 ubuntu vpp[1557]: vlib_plugin_early_init:356: plugin >>>>>> path /usr/lib/vpp_plugins >>>>>> Sep 17 16:28:02 ubuntu vpp[1557]: load_one_plugin:184: Loaded plugin: >>>>>> acl_plugin.so (Access Control Lists) >>>>>> Sep 17 16:28:02 ubuntu vpp[1557]: load_one_plugin:142: >>>>>> /usr/lib/vpp_plugins/dpdk_plugin.so: undefined symbol: >>>>>> aes_gcm_enc_128_sse >>>>>> Sep 17 16:28:02 ubuntu vpp[1557]: load_one_plugin:143: Failed to load >>>>>> plugin 'dpdk_plugin.so' >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Main process exited, >>>>>> code=dumped, status=6/ABRT >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Unit entered failed >>>>>> state. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Failed with result >>>>>> 'core-dump'. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Service hold-off time >>>>>> over, scheduling restart. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Stopped vector packet processing >>>>>> engine. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Starting vector packet processing >>>>>> engine... >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: Started vector packet processing >>>>>> engine. >>>>>> Sep 17 16:28:02 ubuntu vpp[1597]: vlib_plugin_early_init:356: plugin >>>>>> path /usr/lib/vpp_plugins >>>>>> Sep 17 16:28:02 ubuntu vpp[1597]: load_one_plugin:184: Loaded plugin: >>>>>> acl_plugin.so (Access Control Lists) >>>>>> Sep 17 16:28:02 ubuntu vpp[1597]: load_one_plugin:142: >>>>>> /usr/lib/vpp_plugins/dpdk_plugin.so: undefined symbol: >>>>>> aes_gcm_enc_128_sse >>>>>> Sep 17 16:28:02 ubuntu vpp[1597]: load_one_plugin:143: Failed to load >>>>>> plugin 'dpdk_plugin.so' >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Main process exited, >>>>>> code=dumped, status=6/ABRT >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Unit entered failed >>>>>> state. >>>>>> Sep 17 16:28:02 ubuntu systemd[1]: vpp.service: Failed with result >>>>>> 'core-dump'. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: vpp.service: Service hold-off time >>>>>> over, scheduling restart. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: Stopped vector packet processing >>>>>> engine. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: vpp.service: Start request >>>>>> repeated too quickly. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: Failed to start vector packet >>>>>> processing engine. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: vpp.service: Unit entered failed >>>>>> state. >>>>>> Sep 17 16:28:03 ubuntu systemd[1]: vpp.service: Failed with result >>>>>> 'start-limit-hit'. >>>>>> >>>>>> >>>>>> >>>>>> W dniu 2017-09-17 o 15:51, Paweł Staszewski pisze: >>>>>> >>>>>>> Hi just get the latest git: >>>>>>> >>>>>>> cd / >>>>>>> >>>>>>> git clonehttps://gerrit.fd.io/r/vpp >>>>>>> >>>>>>> git clonehttps://gerrit.fd.io/r/vppsb >>>>>>> >>>>>>> >>>>>>> $ cd /vpp >>>>>>> $ ln -sf /vppsb/netlink >>>>>>> $ ln -sf /vppsb/router >>>>>>> $ ln -sf ../../netlink/netlink.mk build-data/packages/ >>>>>>> $ ln -sf ../../router/router.mk build-data/packages/ >>>>>>> >>>>>>> $ cd build-root >>>>>>> $ ./bootstrap.sh >>>>>>> $ make V=0 PLATFORM=vpp TAG=vpp_debug router-install >>>>>>> >>>>>>> And: >>>>>>> >>>>>>> make V=0 PLATFORM=vpp TAG=vpp_debug router-install >>>>>>> @@@@ Arch for platform 'vpp' is native @@@@ >>>>>>> @@@@ Finding source for router @@@@ >>>>>>> @@@@ Makefile fragment found in /vpp/build-data/packages/router.mk >>>>>>> @@@@ >>>>>>> @@@@ Source found in /vpp/router @@@@ >>>>>>> @@@@ Configuring router: nothing to do @@@@ >>>>>>> @@@@ Building router in /vpp/build-root/build-vpp_debug-native/router >>>>>>> @@@@ >>>>>>> make[1]: Entering directory '/vpp/build-root/build-vpp_deb >>>>>>> ug-native/router' >>>>>>> CC router/tap_inject.lo >>>>>>> CC router/tap_inject_netlink.lo >>>>>>> CC router/tap_inject_node.lo >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:34:1: error: >>>>>>> unknown type name ‘dpo_type_t’ >>>>>>> dpo_type_t tap_inject_dpo_type; >>>>>>> ^~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:323:22: error: >>>>>>> unknown type name ‘dpo_id_t’ >>>>>>> tap_inject_dpo_lock (dpo_id_t * dpo) >>>>>>> ^~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:331:24: error: >>>>>>> unknown type name ‘dpo_id_t’ >>>>>>> tap_inject_dpo_unlock (dpo_id_t * dpo) >>>>>>> ^~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:341:14: error: >>>>>>> unknown type name ‘dpo_vft_t’ >>>>>>> const static dpo_vft_t tap_inject_vft = { >>>>>>> ^~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:342:3: error: >>>>>>> field name not in record or union initializer >>>>>>> .dv_lock = tap_inject_dpo_lock, >>>>>>> ^ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:342:3: note: >>>>>>> (near initialization for ‘tap_inject_vft’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:342:14: error: >>>>>>> ‘tap_inject_dpo_lock’ undeclared here (not in a function) >>>>>>> .dv_lock = tap_inject_dpo_lock, >>>>>>> ^~~~~~~~~~~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:343:3: error: >>>>>>> field name not in record or union initializer >>>>>>> .dv_unlock = tap_inject_dpo_unlock, >>>>>>> ^ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:343:3: note: >>>>>>> (near initialization for ‘tap_inject_vft’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:343:16: error: >>>>>>> ‘tap_inject_dpo_unlock’ undeclared here (not in a function) >>>>>>> .dv_unlock = tap_inject_dpo_unlock, >>>>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:343:16: error: >>>>>>> excess elements in scalar initializer [-Werror] >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:343:16: note: >>>>>>> (near initialization for ‘tap_inject_vft’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:344:3: error: >>>>>>> field name not in record or union initializer >>>>>>> .dv_format = format_tap_inject_dpo, >>>>>>> ^ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:344:3: note: >>>>>>> (near initialization for ‘tap_inject_vft’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:344:16: error: >>>>>>> excess elements in scalar initializer [-Werror] >>>>>>> .dv_format = format_tap_inject_dpo, >>>>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:344:16: note: >>>>>>> (near initialization for ‘tap_inject_vft’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:352:50: error: >>>>>>> ‘DPO_PROTO_NUM’ undeclared here (not in a function) >>>>>>> const static char *const *const tap_inject_nodes[DPO_PROTO_NUM] = { >>>>>>> ^~~~~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:353:4: error: >>>>>>> ‘DPO_PROTO_IP6’ undeclared here (not in a function) >>>>>>> [DPO_PROTO_IP6] = tap_inject_tx_nodes, >>>>>>> ^~~~~~~~~~~~~ >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:353:4: error: >>>>>>> array index in initializer not of integer type >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:353:4: note: >>>>>>> (near initialization for ‘tap_inject_nodes’) >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c: In function >>>>>>> ‘tap_inject_init’: >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:365:25: error: >>>>>>> implicit declaration of function ‘dpo_register_new_type’ >>>>>>> [-Werror=implicit-function-declaration] >>>>>>> tap_inject_dpo_type = dpo_register_new_type (&tap_inject_vft, >>>>>>> tap_inject_nodes); >>>>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>>>> At top level: >>>>>>> /vpp/build-data/../router/router/tap_inject_node.c:352:33: error: >>>>>>> ‘tap_inject_nodes’ defined but not used [-Werror=unused-variable] >>>>>>> const static char *const *const tap_inject_nodes[DPO_PROTO_NUM] = { >>>>>>> ^~~~~~~~~~~~~~~~ >>>>>>> cc1: all warnings being treated as errors >>>>>>> Makefile:476: recipe for target 'router/tap_inject_node.lo' failed >>>>>>> make[1]: *** [router/tap_inject_node.lo] Error 1 >>>>>>> make[1]: *** Waiting for unfinished jobs.... >>>>>>> /vpp/build-data/../router/router/tap_inject.c:24:26: fatal error: >>>>>>> vnet/fib/fib.h: No such file or directory >>>>>>> #include <vnet/fib/fib.h> >>>>>>> ^ >>>>>>> compilation terminated. >>>>>>> Makefile:476: recipe for target 'router/tap_inject.lo' failed >>>>>>> make[1]: *** [router/tap_inject.lo] Error 1 >>>>>>> In file included from /vpp/build-data/../router/rout >>>>>>> er/tap_inject_netlink.c:19:0: >>>>>>> /vppsb/netlink/librtnl/netns.h:26:26: fatal error: librtnl/rtnl.h: >>>>>>> No such file or directory >>>>>>> #include <librtnl/rtnl.h> >>>>>>> ^ >>>>>>> compilation terminated. >>>>>>> Makefile:476: recipe for target 'router/tap_inject_netlink.lo' failed >>>>>>> make[1]: *** [router/tap_inject_netlink.lo] Error 1 >>>>>>> make[1]: Leaving directory '/vpp/build-root/build-vpp_deb >>>>>>> ug-native/router' >>>>>>> Makefile:698: recipe for target 'router-build' failed >>>>>>> make: *** [router-build] Error 2 >>>>>>> >>>>>>> _______________________________________________ >>>>>>> vpp-dev mailing list >>>>>>> [email protected] >>>>>>> https://lists.fd.io/mailman/listinfo/vpp-dev >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> vpp-dev mailing list >>>>>> [email protected] >>>>>> https://lists.fd.io/mailman/listinfo/vpp-dev >>>>>> >>>>> >>>>> _______________________________________________ >>>>> vpp-dev mailing list >>>>> [email protected] >>>>> https://lists.fd.io/mailman/listinfo/vpp-dev >>>>> >>>> >>>> >>>> _______________________________________________ >>>> vpp-dev mailing list >>>> [email protected] >>>> https://lists.fd.io/mailman/listinfo/vpp-dev >>>> >>> >>> >> >
_______________________________________________ vpp-dev mailing list [email protected] https://lists.fd.io/mailman/listinfo/vpp-dev
