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

Reply via email to