aboutsummaryrefslogtreecommitdiffstats
path: root/.gitignore
AgeCommit message (Collapse)AuthorFilesLines
2021-05-13tests: move test source to vpp/testDave Wallace1-1/+4
- Generate copyright year and version instead of using hard-coded data Type: refactor Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I6058f5025323b3aa483f5df4a2c4371e27b5914e
2021-04-30misc: experimental configure scriptDamjan Marion1-1/+0
Type: make Change-Id: Iaeb9d22eec9a7a763b63899814a44e78c8050f1f Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-03-30misc: vpptop makefile targetVladimir Lavor1-1/+4
Type: feature Added make target to install VPPTop - real-time viewer of VPP metrics. New targets in /extras/vpptop/Makefile: * make start - starts the installed VPPTop binary * make install - does the installation using the local VPP API * make cleanup - removes the VPPTop local directory * make help - prints the VPPTop help info Signed-off-by: Vladimir Lavor <vlavor@cisco.com> Change-Id: I1b93eaf67214e1fe0567d43409763882caea6416
2021-03-03misc: include debian/quilt packaging directory in .gitignoreNeale Ranns1-0/+3
Type: style Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I04e859bbba913acf32e14c4460bba45f5cb45ff6
2020-12-21docs: update list of pluginsPaul Vinciguerra1-0/+1
The list of plugins is outdated. This change introduces a dynamically generated list of the plugins along with their descriptions, extracted directly from the sources. Type: docs Change-Id: Icb7b65e6b45289e257d71a1c18d10f62ced59cbe Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-05-08misc: add knob to generate compile_commands.jsonDamjan Marion1-0/+4
Used for lanuguage servers like clangd and ccls Type: improvement Change-Id: I68d534dfa7b8ba3459fbd919d5ffccaa1fa1171e Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-04-28gomemif: introduce gomemifJakub Grajciar1-0/+2
golang native memif driver Type: feature Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com> Change-Id: I693156a44011c80025245d25134f5bf5db6eba82 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2019-12-04build: fix make test with distributed srcDave Wallace1-4/+0
This patch addresses the functionality that is missing for distributed make test source files. In addition it extends the concept of colocating test source code with functional source code (eg. src/vcl/test). It also cleans up deficiencies in the make test makefiles. NOTE: Due to the way sphinx document tools work, all test, all of the make test python code is gathered using soft links into the directory: .../build-root/build-test/src Change summary: - Remove 'make test' help details from main makefile help output to reduce clutter and redundant help output - Move all generated build output to .../build-root/build-test - Move test_vcl.py as first usecase for distributed core feature make test code - Add test-wipe-all target and fix wipe targets to remove all generated files - Fix 'make test-doc' to generate module documentation for all source files - Remove unused targets in test/doc/Makefile - Fix 'make test-shell' - Fix test/ext Makefile to not generate bogus output Type: fix Fixes: a43c93f8554ad7418e31be3791b3fb71232f60ac Change-Id: Icc2ddb81d474081c3ede4548ecd7a0624651f62d Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-10-17misc: Update gitignore for /test/ext/.dNeale Ranns1-0/+1
.. otherwise i'm going to commit it accidentally Type: feature Change-Id: I0378b9a29a28ea7317bc7d234f8cbacdafd6b762 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-10-09docs: Add macos build documentationNathan Skrzypczak1-0/+3
Type: docs Change-Id: Iee03aacab2cfcb4e87190302dc641e8273b7f096 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-06-18misc: vpp_papi- add tests, clean up pep8Paul Vinciguerra1-0/+3
Type: test Change-Id: Ic81bd4a9eba3c89a746e7a9b9e471b59cd87fa40 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-02-20Remove autotools leftovers from gitignoreBenoît Ganne1-2/+0
Some tracked files were ignored due to gitignore rules that date back to autotools based buildsystem. Update gitignore accordingly. ~# git ls-files -i --exclude-standard Makefile build-root/Makefile build/external/Makefile build/external/deb/debian/dkms/Makefile doxygen/Makefile extras/rpm/Makefile src/vnet/config.h test/Makefile test/doc/Makefile test/ext/Makefile Change-Id: I3326c932cd174434211b744bf5e26bc4da450339 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2018-11-29make test: create virtualenv under /test/Klement Sekera1-3/+3
instead of using build-root, use /test/venv directory for virtualenv similarly, don't pollute build-root with test-built binaries Change-Id: I1e63c04037eaee718b27b34ef16c9eb0252afa53 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2018-09-28gitignore: build/external/downloadsFlorin Coras1-1/+2
Change-Id: I041764a5546352086aa9803e4bbeb9dff5f8d69a Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-09-24Add the sphinx docs build optionsjdenisco1-1/+1
Change-Id: If7ac5b41ca4ac602a100b616b37d07f658fd6a90 Signed-off-by: jdenisco <jdenisco@cisco.com>
2018-09-20rename vpp-dpdk-dev to vpp-ext-depsDamjan Marion1-4/+4
We need to have new tenants in the development package. This is first of series of patches which will allow us to have multiple external libs and tools packaged for developer's convenience. Change-Id: I884bd75fba96005bbf8cea92774682b2228e0e22 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-08-17CMake as an alternative to autotools (experimental)Damjan Marion1-1/+0
Change-Id: Ibc59323e849810531dd0963e85493efad3b86857 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-07-27Fix .gitignore so docs/Makefile is not ignored. Add README and Makefile. Fis ↵John DeNisco1-0/+1
gitreview. Change-Id: I3d664d9c881ce127a09b9d68c1181a7098a39074 Signed-off-by: John DeNisco <jdenisco@cisco.com>
2018-07-26Initial commit of Sphinx docsJohn DeNisco1-0/+2
Change-Id: I9fca8fb98502dffc2555f9de7f507b6f006e0e77 Signed-off-by: John DeNisco <jdenisco@cisco.com>
2018-06-22Python API: Add enum and union support.Ole Troan1-2/+0
As well as a rewrite of the encoders/decoders to make it more readable and extensible. (Re-commit after fix to verify build.) Change-Id: Ic244d3cebe070bb2570491f8a24f4a1e203f889a Signed-off-by: Ole Troan <ot@cisco.com>
2018-06-21Add .pydevproject to .gitignoreMarek Gradzki1-0/+1
the file is used by PyDev - a Python IDE for Eclipse. Change-Id: Id47287451fc8773332c65afa40c6f0464067cf81 Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2018-06-18Revert "Python API: Add enum and union support."Ole Trøan1-0/+2
This reverts commit a5ee900fb75201bbfceaf13c8bc57a13ed094988. Some of the unit tests breaks. Backing out until fixed. Change-Id: I1846fb417db44a2a772f7b59cda8bcfe6d39f8c3 Signed-off-by: Ole Troan <ot@cisco.com>
2018-06-17Python API: Add enum and union support.Ole Troan1-2/+0
As well as a rewrite of the encoders/decoders to make it more readable and extensible. Change-Id: I253369ac76303922bf9c11377622c8974fa92f19 Signed-off-by: Ole Troan <ot@cisco.com>
2018-05-31Add src/vlib/config.h.in templateDamjan Marion1-1/+0
Change-Id: I9b81dcb9250cab09b88f161366da9475a7ee5dd6 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-03-15remove bootstrap from top-level MakefileDamjan Marion1-1/+1
Change-Id: I9f2a1ba9153ff57958b230a1ba2afeb9df50fd45 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-03-15use system provided ccache linksDamjan Marion1-1/+0
Change-Id: I0860bbd0cf368fc3638b861504ebf642ee9d3807 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-02-07Update gitignore for cmakeKeith Burns (alagalah)1-0/+2
Change-Id: Icd50432a60e194c0526a7d28b93e99ceb6f2013b Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-12-15Ignore core filesKeith Burns (alagalah)1-0/+3
Change-Id: I7ffaceb992d12fd255fe8a608b0493c2993c18c2 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-12-04Optimize RPM build processRenato Botelho do Couto1-0/+2
* Remove unused variable OS_VERSION_ID * Do all RPM building in build-root/rpmbuild * Add build-root/rpmbuild to .gitignore * Move redundant code to a target called 'spec' * Copy spec file to SPECS instead of SOURCES * Only set %{_topdir} macro when it's undefined, and because of that remove sed call to delete definition on spec file * Pass _version and _release using --define parameter instead of using sed to add them to .spec * Move rpm files to build-root after build finishes * Add dist tarball to .gitignore Change-Id: I230d60b62914056b353f7f8701d14754b0bf7f8c Signed-off-by: Renato Botelho do Couto <renato@netgate.com>
2017-11-01VPP Object Model (VOM)Neale Ranns1-0/+1
The VOM is a C++ library for use by clients/agents of VPP for programming state. It uses the binary APIs to do so. Various other common client side functions are also provided. Please see om.hpp for a more detailed description. Change-Id: Ib756bfe99817093815a9e26ccf464aa5583fc523 Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Co-authored-by: Mohsin Kazmi <sykazmi@cisco.com>
2017-09-19Add new C APIKlement Sekera1-0/+1
Change-Id: I717ce3cd7c867c155de149ec56623269d26d0ff7 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-09-08gitignore update for IDEKeith Burns (alagalah)1-1/+2
Change-Id: I95096e8d507f9bcb0f808d0da0355655b474d29a Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-09-07Allow individual stats API and introduce stats.apiKeith Burns (alagalah)1-0/+1
- want_interface_simple_stats - want_interface_combined_stats - want_ip4|6_fib|nbr_stats Change-Id: I4e97461def508958b3e429c3fe8859b36fef2d18 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-08-29Add .pybuild to gitignoreKeith Burns (alagalah)1-0/+1
Change-Id: I4467a30ec1beff67a0517619296f1a27589ff55b Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-08-22Update gitignore for DPDK filesKeith Burns (alagalah)1-0/+2
Change-Id: I6c4e76d8a030ec5fafc8167873cc1471913a1e88 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-01-13vppctl: new bash completion for vppctl commandsPadraig Connolly1-0/+3
Bash completion for vppctl *vppctl_completion uses generated list vppctl-cmd-list to provide bash completion *List of commands generated using grep, then moved by vpp packaging *Once vpp package installed restart bash to use Change-Id: I3b25e55a432c395af421231cf7c37c2e243fee61 Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2017-01-01Move java,lua api and remaining plugins to src/Damjan Marion1-5/+5
Change-Id: I1c3b87e886603678368428ae56a6bd3327cbc90d Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-09Add make test code coverage reporting using gcovJuraj Sloboda1-0/+1
Change-Id: Ia8247841fdbe76e1d888aab49ae213b4216af273 Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-11-22GRE tests and fixesNeale Ranns1-0/+3
Change-Id: I234240e9bdd4b69ad64a17b1449ae1e81c0edaca Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-11-01fix typo in .gitignoreKlement Sekera1-1/+1
Change-Id: I09c25b855c09f55da7e836e641570befead40f4f Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-10-31add vpp debugging support to test frameworkKlement Sekera1-0/+2
improve test documentation Change-Id: Ia9678aa2532ecb4cb33736aedb4a31aa3f2a3f93 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-10-25Add generated python bindings to .gitignoreMarek Gradzki1-0/+5
Change-Id: I05b5955afa9fee5dd213a98126982626eae4d9ca Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-09-21A Protocol Independent Hierarchical FIB (VPP-352)Neale Ranns1-2/+2
Main Enhancements: - Protocol Independent FIB API - Hierarchical FIB entries. Dynamic recursive route resolution. - Extranet Support. - Integration of IP and MPLS forwarding. - Separation of FIB and Adjacency databases. - Data-Plane Object forwarding model. Change-Id: I52dc815c0d0aa8b493e3cf6b978568f3cc82296c Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-08-31VPP-221 CLI auto-documentation infrastructureChris Luke1-0/+3
As a step before Doxygen, extract CLI-related struct initializers from the code and parse that into a summary of the CLI commands available with the provided help text, such as it is. At the moment this only renders this into an indexed Markdown file that Doxygen then picks up but later we can use this information to enrich the existing VLIB_CLI_COMMAND macro documentor as well as provide runtime documentation to VPP that is stored on disk outside the binary image. Additionally support a comment block immediately prior to VLIB_CLI_COMMAND CLI command definitions in the form /*? ... ?*/ that can be used to include long-form documentation without having it compiled into VPP. Examples of documenting CLI commands can be found in vlib/vlib/unix/cli.c which, whilst not perfect, should provide a starting point. Screen captures of sample output can be seen at https://chrisy.flirble.org/vpp/doxy-cli-example.png and https://chrisy.flirble.org/vpp/doxy-cli-index.png . Next, shift the Doxygen root makefile targets to their own Makefile. The primary reason for this is that the siphon targets do dependency tracking which means it needs to generate those dependencies whenever make is run; that is pointless if we're not going to generate any documentation. This includes the package dependencies since they since they sometimes unnecessarily interfere with the code build in some cases at the moment; later we will look to building a Python venv to host the Python modules we use. One final remark: In future we may consider deprecating .long_help in the VLIB_CLI_COMMAND structure entirely but add perhaps .usage_help. .short_help would be reserved for a summary of the command function and .usage_help provide the syntax of that command. These changes would provide great semantic value to the automaticly generated CLI documentation. I could also see having .long_help replaced by a mechanism that reads it from disk at runtime with a rudimentary Markdown/Doxygen filter so that we can use the same text that is used in the published documentation. Change-Id: I80d6fe349b47dce649fa77d21ffec0ddb45c7bbf Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-08-30VPP-364 Add vpp-api/python/build to gitignoreFlorin Coras1-0/+2
Change-Id: I16a594ad75c085b8d0b74cf2f472f88a655253c0 Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-08-25VPP Python language binding - plugin supportOle Troan1-2/+2
- Moved Python generator tool to tools directory - Added build-vpp-api Makefile target - Generator now only creates a Python representation of the .api the rest of the framework is in the vpp_papi script - Each plugin has its own namespace. - Plugin Python files are installed in vpp_papi_plugins for easy use inside the build tree. Change-Id: I272c83bb7e5d5e416bdbd8a790a3cc35c5a04e38 Signed-off-by: Ole Troan <ot@cisco.com>
2016-08-16Create python package for jvpp generation.Ed Warnicke1-0/+3
Change-Id: I2254f90b2c3e423563bb91bf70877979f1e86a6b Signed-off-by: Ed Warnicke <eaw@cisco.com> Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-08-12VPP-237: Checkstyle script to check for new checkstyle breakageEd Warnicke1-0/+3
indent is... cantankerous It sometimes happens that if you run indent A resulting in A' and then indent A' you get back A. Since the check here is premised on being able to run indent and not see any changed... we have to run it twice to be sure. Change-Id: I5b73e02f5996d8a01ec2e46741affbc6d62da6c9 Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-07-21Updating gitignore for generated plugins folderKeith Burns (alagalah)1-0/+1
Change-Id: I266db9f4667c4f720d6109fad5c4d31eb182ed30 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-19gitignore gtagsKeith Burns (alagalah)1-0/+4
Change-Id: I0160cdfc8e749f875a232e07526d53a3a7c8395c Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
_TRANSPORT_UDP6) send_bfd_udp_session_details (reg, mp->context, bs); })); /* *INDENT-ON* */ } static void vl_api_bfd_udp_session_set_flags_t_handler (vl_api_bfd_udp_session_set_flags_t * mp) { vl_api_bfd_udp_session_set_flags_reply_t *rmp; int rv; BFD_UDP_API_PARAM_COMMON_CODE; rv = bfd_udp_session_set_flags (BFD_UDP_API_PARAM_FROM_MP (mp), mp->admin_up_down); REPLY_MACRO (VL_API_BFD_UDP_SESSION_SET_FLAGS_REPLY); } static void vl_api_bfd_auth_set_key_t_handler (vl_api_bfd_auth_set_key_t * mp) { vl_api_bfd_auth_set_key_reply_t *rmp; int rv = bfd_auth_set_key (clib_net_to_host_u32 (mp->conf_key_id), mp->auth_type, mp->key_len, mp->key); REPLY_MACRO (VL_API_BFD_AUTH_SET_KEY_REPLY); } static void vl_api_bfd_auth_del_key_t_handler (vl_api_bfd_auth_del_key_t * mp) { vl_api_bfd_auth_del_key_reply_t *rmp; int rv = bfd_auth_del_key (clib_net_to_host_u32 (mp->conf_key_id)); REPLY_MACRO (VL_API_BFD_AUTH_DEL_KEY_REPLY); } static void vl_api_bfd_auth_keys_dump_t_handler (vl_api_bfd_auth_keys_dump_t * mp) { vl_api_registration_t *reg; reg = vl_api_client_index_to_registration (mp->client_index); if (!reg) return; bfd_auth_key_t *key = NULL; vl_api_bfd_auth_keys_details_t *rmp = NULL; /* *INDENT-OFF* */ pool_foreach (key, bfd_main.auth_keys, ({ rmp = vl_msg_api_alloc (sizeof (*rmp)); clib_memset (rmp, 0, sizeof (*rmp)); rmp->_vl_msg_id = ntohs (VL_API_BFD_AUTH_KEYS_DETAILS); rmp->context = mp->context; rmp->conf_key_id = clib_host_to_net_u32 (key->conf_key_id); rmp->auth_type = key->auth_type; rmp->use_count = clib_host_to_net_u32 (key->use_count); vl_api_send_msg (reg, (u8 *)rmp); })); /* *INDENT-ON* */ } static void vl_api_bfd_udp_auth_activate_t_handler (vl_api_bfd_udp_auth_activate_t * mp) { vl_api_bfd_udp_auth_activate_reply_t *rmp; int rv; VALIDATE_SW_IF_INDEX (mp); BFD_UDP_API_PARAM_COMMON_CODE; rv = bfd_udp_auth_activate (BFD_UDP_API_PARAM_FROM_MP (mp), clib_net_to_host_u32 (mp->conf_key_id), mp->bfd_key_id, mp->is_delayed); BAD_SW_IF_INDEX_LABEL; REPLY_MACRO (VL_API_BFD_UDP_AUTH_ACTIVATE_REPLY); } static void vl_api_bfd_udp_auth_deactivate_t_handler (vl_api_bfd_udp_auth_deactivate_t * mp) { vl_api_bfd_udp_auth_deactivate_reply_t *rmp; int rv; VALIDATE_SW_IF_INDEX (mp); BFD_UDP_API_PARAM_COMMON_CODE; rv = bfd_udp_auth_deactivate (BFD_UDP_API_PARAM_FROM_MP (mp), mp->is_delayed); BAD_SW_IF_INDEX_LABEL; REPLY_MACRO (VL_API_BFD_UDP_AUTH_DEACTIVATE_REPLY); } static void vl_api_bfd_udp_set_echo_source_t_handler (vl_api_bfd_udp_set_echo_source_t * mp) { vl_api_bfd_udp_set_echo_source_reply_t *rmp; int rv; VALIDATE_SW_IF_INDEX (mp); rv = bfd_udp_set_echo_source (clib_net_to_host_u32 (mp->sw_if_index)); BAD_SW_IF_INDEX_LABEL; REPLY_MACRO (VL_API_BFD_UDP_SET_ECHO_SOURCE_REPLY); } static void vl_api_bfd_udp_del_echo_source_t_handler (vl_api_bfd_udp_del_echo_source_t * mp) { vl_api_bfd_udp_del_echo_source_reply_t *rmp; int rv; rv = bfd_udp_del_echo_source (); REPLY_MACRO (VL_API_BFD_UDP_DEL_ECHO_SOURCE_REPLY); } static void vl_api_bfd_udp_get_echo_source_t_handler (vl_api_bfd_udp_get_echo_source_t * mp) { vl_api_bfd_udp_get_echo_source_reply_t *rmp; int rv = 0; int is_set; u32 sw_if_index; int have_usable_ip4; ip4_address_t ip4; int have_usable_ip6; ip6_address_t ip6; bfd_udp_get_echo_source (&is_set, &sw_if_index, &have_usable_ip4, &ip4, &have_usable_ip6, &ip6); /* *INDENT-OFF* */ REPLY_MACRO2 (VL_API_BFD_UDP_GET_ECHO_SOURCE_REPLY, ({ rmp->sw_if_index = ntohl (sw_if_index); if (is_set) { rmp->is_set = 1; rmp->sw_if_index = clib_host_to_net_u32 (sw_if_index); if (have_usable_ip4) { rmp->have_usable_ip4 = 1; clib_memcpy_fast (rmp->ip4_addr, &ip4, sizeof (ip4)); } else { rmp->have_usable_ip4 = 0; } if (have_usable_ip6) { rmp->have_usable_ip6 = 1; clib_memcpy_fast (rmp->ip6_addr, &ip6, sizeof (ip6)); } else { rmp->have_usable_ip6 = 0; } } else { rmp->is_set = 0; rmp->have_usable_ip4 = 0; rmp->have_usable_ip6 = 0; } })) /* *INDENT-ON* */ } /* * bfd_api_hookup * Add vpe's API message handlers to the table. * vlib has alread mapped shared memory and * added the client registration handlers. * See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process() */ #define vl_msg_name_crc_list #include <vnet/vnet_all_api_h.h> #undef vl_msg_name_crc_list static void setup_message_id_table (api_main_t * am) { #define _(id, n, crc) vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id); foreach_vl_msg_name_crc_bfd; #undef _ } static clib_error_t * bfd_api_hookup (vlib_main_t * vm) { api_main_t *am = &api_main; #define _(N, n) \ vl_msg_api_set_handlers (VL_API_##N, #n, vl_api_##n##_t_handler, \ vl_noop_handler, vl_api_##n##_t_endian, \ vl_api_##n##_t_print, sizeof (vl_api_##n##_t), 1); foreach_vpe_api_msg; #undef _ /* * Set up the (msg_name, crc, message-id) table */ setup_message_id_table (am); return 0; } VLIB_API_INIT_FUNCTION (bfd_api_hookup); /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */