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

Reply via email to