summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #7884 from donaldsharp/null_stuffRuss White2021-01-1913-52/+65
|\ | | | | Null stuff
| * lib: Correctly set temp file permissionsDonald Sharp2021-01-181-0/+6
| | | | | | | | | | | | | | Set the temp file permissions to limit who can read the file. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * bgpd: Use uint32_t for size value instead of int in ecommunity structDonald Sharp2021-01-189-35/+37
| | | | | | | | | | | | | | | | The `struct ecommunity` structure is using an int for a size value. Let's switch it over to a uint32_t for size values since a size value for data can never be negative. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * zebra: Tell SA that we are intentionally ignoring the returnDonald Sharp2021-01-181-1/+7
| | | | | | | | | | | | | | | | | | | | Calling fpm_nl_enqueue we should expect a it fit or not return value on the outgoing stream. This is not necessary to check here because the while loop where we are checking this already has ensured that the data being written will fit. CID -> 1499854 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * pbrd: Prevent possible NULL useDonald Sharp2021-01-181-12/+14
| | | | | | | | | | | | | | | | the pnhi data structure can receive either a interface or a nhr data structure. Ensure that we don't crash. CID -> 1500586 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * bgpd: attr is already derefed cannot be null hereDonald Sharp2021-01-181-4/+1
| | | | | | | | | | | | | | | | | | | | In the function bgp_adj_out_set_subgroup, the attr pointer is already derefed in all paths leading to a test for NULL. You cannot pass a NULL attribute in since the whole function would just immediately crash. CID -> 1500604 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | Merge pull request #6455 from GalaxyGorilla/bfd_ospf_topotestRuss White2021-01-1936-0/+1356
|\ \ | | | | | | tests: Introduce BFD OSPFv2/v3 topotests
| * | tests: Introduce BFD OSPFv2/v3 topotestsGalaxyGorilla2020-11-2436-0/+1356
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tests work with the default settings of BFD meaning that bfdd is able to recognize a 'down' link after ~900ms so a route recovery should be visible in the RIB after 1 second. The following topology is used: +---------+ | | eth-rt2 (.1) | RT1 | eth-rt3 (.1) +----------+ 1.1.1.1 +----------+ | | | | | +---------+ | | | | 10.0.2.0/24 | | | | eth-rt1 | (.2) | 10.0.1.0/24 +----+----+ | | | | | RT3 | | | 3.3.3.3 | | | | (.2) | eth-rt1 +----+----+ +----+----+ eth-rt4 | (.1) | | | | RT2 | | | 2.2.2.2 | 10.0.4.0/24 | | | | +----+----+ | (.1) | eth-rt5 eth-rt3 | (.2) | +----+----+ | | | | | RT4 | | | 4.4.4.4 | | | | | +----+----+ | 10.0.3.0/24 eth-rt5 | (.1) | | | | | 10.0.5.0/24 | | | | +---------+ | | | | | +----------+ RT5 +----------+ eth-rt2 (.2) | 5.5.5.5 | eth-rt4 (.2) | | +---------+ Route recovery is tested on RT1. The focus here lies on the two different routes to RT5. Link failures are generated by taking down interfaces via the mininet Python interface on RT2 and RT3. Hence routes are supposed to be adjusted to use RT3 when a link failure happens on RT2 or vice versa. Note that only failure recognition and recovery is "fast". BFD does not monitor a link becoming available again. Signed-off-by: GalaxyGorilla <sascha@netdef.org>
* | | Merge pull request #7639 from qlyoung/frr-luaRuss White2021-01-1925-302/+1801
|\ \ \ | |_|/ |/| | Scripting
| * | debian: work around NetDef CI missing lua packagesQuentin Young2020-12-102-4/+4
| | | | | | | | | | | | | | | | | | | | | Scripting must be explicitly enabled now when building packages via the pkg.frr.lua Debian profile Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | debian: clean up packaging stuff for scriptingQuentin Young2020-12-082-2/+9
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | build: fix default scriptdir pathQuentin Young2020-12-021-1/+1
| | | | | | | | | | | | | | | | | | Should be /etc/frr/scripts, not /usr/lib/frr/scripts :) Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | doc: add scripting docsQuentin Young2020-12-028-67/+473
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: remove extraneous scripting debugsQuentin Young2020-12-022-15/+0
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: use PREFIX_STRLEN in prefix encoderQuentin Young2020-12-021-2/+2
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add support for scripts directoryQuentin Young2020-12-025-6/+35
| | | | | | | | | | | | | | | | | | | | | | | | Specify default via --with-scriptdir at compile time, override default with --scriptdir at runtime. If unspecified, it's {sysconfdir}/scripts (usually /etc/frr/scripts) Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | build: HAVE_LUA -> HAVE_SCRIPTINGQuentin Young2020-12-0211-27/+58
| | | | | | | | | | | | | | | | | | And also guard all scripting-related stuff with HAVE_SCRIPTING. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | bgpd: update routemap scripting exampleQuentin Young2020-12-025-101/+319
| | | | | | | | | | | | | | | | | | | | | - Change from "match command <foo>" to "match script <script>" - Use new scripting API Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: use appropriate MTYPE for scriptsQuentin Young2020-12-021-9/+16
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add ability to decode from lua scriptsQuentin Young2020-12-025-119/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements the ability to get results out from lua scripts after they've run. For each C type we support passing to Lua, there is a corresponding `struct frrscript_codec`. This struct contains a typename field - just a string identifying the type - and two function pointers. The first function pointer, encode, takes a lua_State and a pointer to the C value and pushes some corresponding Lua representation onto the stack. The second, decode, assumes there is some Lua value on the stack and decodes it into the corresponding C value. Each supported type's `struct frrscript_codec` is registered with the scripting stuff in the library, which creates a mapping between the type name (string) and the `struct frrscript_codec`. When calling a script, you specify arguments by passing an array of `struct frrscript_env`. Each of these structs has a void *, a type name, and a desired binding name. The type names are used to look up the appropriate function to encode the pointed-at value onto the Lua stack, then bind the pushed value to the provided binding name, so that the converted value is accessible by that name within the script. Results work in a similar way. After a script runs, call frrscript_get_result() with the script and a `struct frrscript_env`. The typename and name fields are used to fetch the Lua value from the script's environment and use the registered decoder for the typename to convert the Lua value back into a C value, which is returned from the function. The caller is responsible for freeing these. frrscript_call()'s macro foo has been stripped, as the underlying function now takes fixed arrays. varargs have awful performance characteristics, they're hard to read, and structs are more defined than an order sensitive list. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add more type encoders, register existingsQuentin Young2020-12-023-0/+17
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: change encoder_func signatureQuentin Young2020-12-023-24/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | None of the core lua_push* functions return anything, and it helps to not have to wrap those when using them as function pointers for our encoder system, so change the type of our custom encoders to return void as well. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add more type encoder funcsQuentin Young2020-12-022-5/+75
| | | | | | | | | | | | | | | | | | | | | | | | - in_addr - in6_addr - sockunion Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: cleanup / refactor scripting fooQuentin Young2020-12-025-28/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - fix 'struct lua_State' - change includes to library style - rename encoder funcs to look like lua_push* funcs - fix erroneous doc comment on prefix encoder - remove unused (and broken) convenience func Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: better load-time error handling for scriptsQuentin Young2020-12-021-7/+11
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: encode plen when passing prefixes to scriptsQuentin Young2020-12-021-1/+3
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: close lua state when destroying scriptQuentin Young2020-12-021-0/+1
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add better script error handlingQuentin Young2020-12-021-6/+35
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: initialize scripting system in libfrrQuentin Young2020-12-021-0/+2
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: export zlog functions to scriptsQuentin Young2020-12-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add: - log.warn() - log.error() - log.notice() - log.info() - log.debug() to the global namespace for each script Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: allow passing arguments to scriptsQuentin Young2020-12-022-6/+96
| | | | | | | | | | | | | | | | | | | | | - Add ability to pass arguments when calling a script - Add macros to define arguments and results Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: fix hash issues in scripting fooQuentin Young2020-12-021-8/+8
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: update script encoder signaturesQuentin Young2020-12-022-6/+9
| | | | | | | | | | | | | | | | | | | | | Update the two test functions that encode a prefix and an interface to match the encoder_func signature expected by the scripting infra. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add macros to count variadic argsQuentin Young2020-12-021-0/+23
| | | | | | | | | | | | | | | | | | | | | Magical macro used to compute the number of arguments passed to a variadic macro. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: make encoder type a typedefQuentin Young2020-12-022-4/+5
| | | | | | | | | | | | | | | | | | Need to use it for casts regularly. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add 'script <type> foo' test commandQuentin Young2020-12-021-3/+17
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: start adding generic scripting stuffQuentin Young2020-12-026-0/+239
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than let Luaisms propagate from the start, this is some generic wrapper stuff that defines some semantics for interacting with scripts that aren't specific to the underlying language. The concept I have in mind for FRR's idea of a script is: - has a name - has some inputs, which have types - has some outputs, which have types I don't want to even say they have to be files; maybe we can embed scripts in frr.conf, for example. Similarly the types of inputs and outputs are probably going to end up being some language-specific setup. For now, we will stick to this simple model, but the plan is to add full object support (ie calling back into C). This shouldn't be misconstrued as prepping for multilingual scripting support, which is a bad idea for the following reasons: - Each language would require different FFI methods, and specifically different object encoders; a lot of code - Languages have different capabilities that would have to be brought to parity with each other; a lot of work - Languages have *vastly* different performance characteristics; bad impressions, lots of issues we can't do anything about - Each language would need a dedicated maintainer for the above reasons; pragmatically difficult - Supporting multiple languages fractures the community and limits the audience with which a given script can be shared The only pro for multilingual support would be ease of use for users not familiar with Lua but familiar with one of the other supported languages. This is not enough to outweigh the cons. In order to get rich scripting capabilities, we need to be able to pass representations of internal objects to the scripts. For example, a script that performs some computation based on information about a peer needs access to some equivalent of `struct peer` for the peer in question. To transfer these objects from C-space into Lua-space we need to encode them onto the Lua stack. This patch adds a mapping from arbitrary type names to the functions that encode objects of that type. For example, the function that encodes `struct peer` into a Lua table could be registered with: bgp_peer_encoder_func(struct frrscript *fs, struct peer *peer) { // encode peer to Lua table, push to stack in fs->scriptinfo->L } frrscript_register_type_encoder("peer", bgp_peer_encoder_func); Later on when calling a script that wants a peer, the plan is to be able to specify the type name like so: frrscript_call(script, "peer", peer); Using C-style types for the type names would have been nice, it might be possible to do this with preprocessor magic or possibly python preprocessing later on. Signed-off-by: Quentin Young <qlyoung@nvidia.com> mergeme no stdlib Signed-off-by: Quentin Young <qlyoung@nvidia.com>
| * | lib: add Lua stack dumperQuentin Young2020-12-022-0/+53
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | lib: move bgp routemap stuff out of frrlua.[ch]Quentin Young2020-12-023-54/+39
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | lib: remove frrlua_initializeQuentin Young2020-12-023-44/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This was toy code used for testing purposes. Code calling Lua should be very explicit about what is loaded into the Lua state. Also, the allocator used is exactly the same allocator used by default w/ luaL_newstate(). Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | lib: allow exporting all logging functions to LuaQuentin Young2020-12-022-23/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a function that will export FRR's logging functions into a Lua table, and add that table to the table of your choice (usually _ENV). For instance, to add logging to the global environment: lua_gettable(L, LUA_REGISTRYINDEX); lua_gettable(L, LUA_RIDX_GLOBALS); frrlua_export_logging(L); Then the following functions are globally accessible to any Lua scripts running with state L: - log.debug() - log.info() - log.notice() - log.warn() - log.error() These are bound to zlog_debug, zlog_info, etc. They only take one string argument for now but this shouldn't be an issue given Lua's builtin facilities for formatting strings. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | lib: add interface -> table encoderQuentin Young2020-12-022-0/+35
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | *: add Lua 5.3 as a dependencyQuentin Young2020-12-021-0/+1
| | | | | | | | | | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| * | lib: clean up frrlua.[ch]Quentin Young2020-12-023-95/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Use frrlua_* prefix to differentiate from Lua builtins * Allow frrlua_initialize to pass an empty script * Fixup naming of table accessors * Fixup naming of prefix -> table encoder * Fixup BGP routemap code to new function names * Fix includes for frrlua.h * Clean up doc comments Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* | | Merge pull request #7790 from mobash-rasool/ospfv3-max-pathDonald Sharp2021-01-186-27/+188
|\ \ \ | | | | | | | | ospfd: Clear ip ospf process and clear ip ospf neighbor
| * | | ospfd: deleting ospf process is leading to crash at no_router_ospfMobashshera Rasool2021-01-121-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Topology diagram: ------------------------- +---+ A0 +---+ +R1 +------------+R2 | +-+-+- +--++ | -- -- | | -- A0 -- | A0| ---- | | ---- | A0 | -- -- | | -- -- | +-+-+- +-+-+ +R0 +-------------+R3 | +---+ A0 +---+ Steps to reproduce: -------------------------- 1. Bring up the base config as per the topology 2. Configure OSPF on all the routers of the topology. 3. Configure 5 static routes from the same network on R0 , 5 static routes from different networks and redistribute in R0 4. Configure External Route summary in R0 to summarise 5 routes to one route. 5. Delete the configured summary 6. configure the summary again and delete static routes . 7. Add back static routes. 8. Configure new static route which is matching the configured summary. 9. Delete one of the static route. 10. Configure redistribute connected and configure ospf external summary address to summarise the connected routes. 11. Clear ospf process and check for any errors. [New LWP 2346] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `/usr/lib/frr/ospfd'. Program terminated with signal SIGABRT, Aborted. 54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt 0 0x00007f296f278428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54 1 0x00007f296f27a02a in __GI_abort () at abort.c:89 2 0x00007f296fca4110 in core_handler (signo=11, siginfo=0x7ffcd52044f0, context=<optimized out>) at lib/sigevent.c:254 3 <signal handler called> 4 0x000055949b9dfdff in ospf_lsdb_lookup (lsdb=lsdb@entry=0x55949bfd3688, lsa=lsa@entry=0x55949bfe1290) at ospfd/ospf_lsdb.c:179 5 0x000055949ba28fbe in ospf_ls_retransmit_lookup (lsa=0x55949bfe1290, nbr=0x55949bfd3610) at ospfd/ospf_flood.c:918 6 ospf_ls_retransmit_delete_nbr_if (oi=oi@entry=0x55949bfd2590, lsa=lsa@entry=0x55949bfe1290) at ospfd/ospf_flood.c:932 7 0x000055949ba2916b in ospf_ls_retransmit_delete_nbr_if (lsa=0x55949bfe1290, oi=0x55949bfd2590) at ospfd/ospf_flood.c:928 8 ospf_ls_retransmit_delete_nbr_as (ospf=ospf@entry=0x55949bfbdb30, lsa=lsa@entry=0x55949bfe1290) at ospfd/ospf_flood.c:959 9 0x000055949b9dcd7e in ospf_discard_from_db (ospf=ospf@entry=0x55949bfbdb30, lsdb=<optimized out>, lsa=lsa@entry=0x55949bfe1630) at ospfd/ospf_lsa.c:2552 10 0x000055949b9df1b3 in ospf_maxage_lsa_remover (thread=0x55949bfde930) at ospfd/ospf_lsa.c:2848 11 0x00007f296fcb1770 in thread_call (thread=0x55949bfde930) at lib/thread.c:1557 12 0x00007f296fcb19d6 in funcname_thread_execute (m=0x55949be0a630, func=func@entry=0x55949b9df0a0 <ospf_maxage_lsa_remover>, arg=arg@entry=0x55949bfbdb30, val=val@entry=0, funcname=funcname@entry=0x55949ba31b41 "ospf_maxage_lsa_remover", schedfrom=schedfrom@entry=0x55949ba31917 "ospfd/ospf_lsa.c", fromln=3364) at lib/thread.c:1628 13 0x000055949b9de90b in ospf_flush_self_originated_lsas_now (ospf=ospf@entry=0x55949bfbdb30) at ospfd/ospf_lsa.c:3364 14 0x000055949ba19a55 in ospf_process_refresh_data (ospf=0x55949bfbdb30, reset=reset@entry=true) at ospfd/ospfd.c:138 15 0x000055949ba1aeef in ospf_process_reset (ospf=<optimized out>) at ospfd/ospfd.c:206 16 0x000055949ba0729b in clear_ip_ospf_process_magic (self=<optimized out>, vty=<optimized out>, argc=<optimized out>, argv=<optimized out>, instance_str=<optimized out>, instance=<optimized out>) at ospfd/ospf_vty.c:11930 17 clear_ip_ospf_process (self=<optimized out>, vty=0x55949bfe2600, argc=<optimized out>, argv=<optimized out>) at ./ospfd/ospf_vty_clippy.c:306 18 0x00007f296fc66523 in cmd_execute_command_real (vline=vline@entry=0x55949bfd2fb0, vty=vty@entry=0x55949bfe2600, cmd=cmd@entry=0x0, filter=FILTER_RELAXED) at lib/command.c:1060 19 0x00007f296fc6869a in cmd_execute_command (vline=vline@entry=0x55949bfd2fb0, vty=vty@entry=0x55949bfe2600, cmd=0x0, vtysh=vtysh@entry=0) at lib/command.c:1119 20 0x00007f296fc68817 in cmd_execute (vty=vty@entry=0x55949bfe2600, cmd=cmd@entry=0x55949bfe7f80 "clear ip ospf pro", matched=matched@entry=0x0, vtysh=vtysh@entry=0) at lib/command.c:1275 21 0x00007f296fcb6c13 in vty_command (vty=vty@entry=0x55949bfe2600, buf=0x55949bfe7f80 "clear ip ospf pro") at lib/vty.c:514 22 0x00007f296fcb6ea6 in vty_execute (vty=vty@entry=0x55949bfe2600) at lib/vty.c:1281 23 0x00007f296fcb97f4 in vtysh_read (thread=<optimized out>) at lib/vty.c:2123 24 0x00007f296fcb1770 in thread_call (thread=thread@entry=0x7ffcd5209590) at lib/thread.c:1557 25 0x00007f296fc82e78 in frr_run (master=0x55949be0a630) at lib/libfrr.c:1026 26 0x000055949b9d0f07 in main (argc=1, argv=0x7ffcd52098b8) at ospfd/ospf_main.c:230 Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
| * | | ospfd: Clear ip ospf process and clear ip ospf neighborMobashshera Rasool2021-01-126-25/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement the below 2 CLIs to clear the current data in the process and neighbor data structure. 1. clear ip ospf process 2. clear ip ospf neighbor Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
* | | | Merge pull request #7874 from donaldsharp/more_pytest_markDonatas Abraitis2021-01-1816-13/+20
|\ \ \ \ | | | | | | | | | | More pytest mark
| * | | | tests: Add `pytest.mark.pbr`Donald Sharp2021-01-152-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a mark to topotests that mark pbr tests `pytest -k pbr` Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * | | | tests: Add `pytest.mark.isis`Donald Sharp2021-01-1511-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a mark to topotests that mark isis tests `pytest -k isis` Signed-off-by: Donald Sharp <sharpd@nvidia.com>