Thanks a lot, Burt! I will try this. On Wed, Sep 27, 2017 at 4:04 PM, Burt Silverman <[email protected]> wrote:
> 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-declaration] >>>>>> 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
