summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_asbr.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ospfd: Fix External Aggregator LeakKeelan102023-09-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a memory leak in ospfd where the external aggregator was not released after its associated route node is deleted. The ASan leak log for reference: ``` *********************************************************************************** Address Sanitizer Error detected in ospf_basic_functionality.test_ospf_asbr_summary_topo1/r0.asan.ospfd.31502 ================================================================= ==31502==ERROR: LeakSanitizer: detected memory leaks Direct leak of 200 byte(s) in 5 object(s) allocated from: #0 0x7fdb30665d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) #1 0x7fdb300620da in qcalloc lib/memory.c:105 #2 0x55e53c2da5fa in ospf_external_aggregator_new ospfd/ospf_asbr.c:396 #3 0x55e53c2dead3 in ospf_asbr_external_aggregator_set ospfd/ospf_asbr.c:1123 #4 0x55e53c27c921 in ospf_external_route_aggregation ospfd/ospf_vty.c:10264 #5 0x7fdb2ffe5428 in cmd_execute_command_real lib/command.c:993 #6 0x7fdb2ffe58ec in cmd_execute_command lib/command.c:1051 #7 0x7fdb2ffe5d6b in cmd_execute lib/command.c:1218 #8 0x7fdb3010ce2a in vty_command lib/vty.c:591 #9 0x7fdb3010d2d5 in vty_execute lib/vty.c:1354 #10 0x7fdb30115b9b in vtysh_read lib/vty.c:2362 #11 0x7fdb30100b99 in event_call lib/event.c:1979 #12 0x7fdb30045379 in frr_run lib/libfrr.c:1213 #13 0x55e53c1ccab4 in main ospfd/ospf_main.c:249 #14 0x7fdb2f65dc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86) Direct leak of 40 byte(s) in 1 object(s) allocated from: #0 0x7fdb30665d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) #1 0x7fdb300620da in qcalloc lib/memory.c:105 #2 0x55e53c2da5fa in ospf_external_aggregator_new ospfd/ospf_asbr.c:396 #3 0x55e53c2dedd3 in ospf_asbr_external_rt_no_advertise ospfd/ospf_asbr.c:1182 #4 0x55e53c27cf10 in ospf_external_route_aggregation_no_adrvertise ospfd/ospf_vty.c:10626 #5 0x7fdb2ffe5428 in cmd_execute_command_real lib/command.c:993 #6 0x7fdb2ffe58ec in cmd_execute_command lib/command.c:1051 #7 0x7fdb2ffe5d6b in cmd_execute lib/command.c:1218 #8 0x7fdb3010ce2a in vty_command lib/vty.c:591 #9 0x7fdb3010d2d5 in vty_execute lib/vty.c:1354 #10 0x7fdb30115b9b in vtysh_read lib/vty.c:2362 #11 0x7fdb30100b99 in event_call lib/event.c:1979 #12 0x7fdb30045379 in frr_run lib/libfrr.c:1213 #13 0x55e53c1ccab4 in main ospfd/ospf_main.c:249 #14 0x7fdb2f65dc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86) SUMMARY: AddressSanitizer: 240 byte(s) leaked in 6 allocation(s). *********************************************************************************** ``` Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
* ospfd: fix default-metric change if external LSAs already sentAlexander Chernavin2023-07-191-9/+9
| | | | | | | | | | | | | | | | | | | Currently, when redistribution of routes was configured, external LSAs were already advertised to peers, and then default-metric is changed, external LSAs refresh will not occur. In other words, the peers will not receive the refreshed external LSAs with the new metric. With this fix, changing default-metric will cause external LSAs to be refreshed and flooded. There is a similar task to refresh external LSAs when NSSA settings are changed. And there is a function that accomplishes it - ospf_schedule_asbr_nssa_redist_update(). Since the function does the general work of refreshing external LSAs and is not specific to NSSA settings, the idea is to give it a more general name and call it when default-metric changes in order to fix the problem. Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
* lib, ospfd, yang: add route map set for min/max metricJafar Al-Gharaibeh2023-04-181-0/+2
| | | | Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
* ospfd: use rib metric as the base for set metric +/-Jafar Al-Gharaibeh2023-04-181-3/+4
| | | | | | | | | | | | | | | | | | | When using route maps with external routes in OSPF as follows: ``` set metric +10 ``` The current behavior is to use the default ospf metric as the base and then add to 10 to it. The behavior isn't useful as-is. A value 30 (20 dfeault + 10) can be set directly instead. the behavior is also not consistent with bgp. bgp does use the rib metric in this case as the base. The current behavior also doesn't allow the metric to accumulate when crossing different routing domains such as vrfs causing the metric to reset every time the route enters a new vrf with a new ospf network. This PR changes the behavior such that the rib metric is used as a base for ospf exteral routes when used with `set metric -/+` Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
* *: Convert event.h to frrevent.hDonald Sharp2023-03-241-1/+1
| | | | | | | We should probably prevent any type of namespace collision with something else. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Convert THREAD_XXX macros to EVENT_XXX macrosDonald Sharp2023-03-241-3/+3
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Convert thread_add_XXX functions to event_add_XXXDonald Sharp2023-03-241-5/+5
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Rename `struct thread` to `struct event`Donald Sharp2023-03-241-2/+2
| | | | | | | | | Effectively a massive search and replace of `struct thread` to `struct event`. Using the term `thread` gives people the thought that this event system is a pthread when it is not Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Rename thread.[ch] to event.[ch]Donald Sharp2023-03-241-1/+1
| | | | | | | | | | | This is a first in a series of commits, whose goal is to rename the thread system in FRR to an event system. There is a continual problem where people are confusing `struct thread` with a true pthread. In reality, our entire thread.c is an event system. In this commit rename the thread.[ch] files to event.[ch]. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Add a hash_clean_and_free() functionDonald Sharp2023-03-211-12/+5
| | | | | | | | | | Add a hash_clean_and_free() function as well as convert the code to use it. This function also takes a double pointer to the hash to set it NULL. Also it cleanly does nothing if the pointer is NULL( as a bunch of code tested for ). Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: auto-convert to SPDX License IDsDavid Lamparter2023-02-091-16/+1
| | | | | | Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* *: Properly use memset() when zeroingDonatas Abraitis2022-05-111-2/+2
| | | | | | | Wrong: memset(&a, 0, sizeof(struct ...)); Good: memset(&a, 0, sizeof(a)); Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* *: remove the checking returned value for hash_get()anlan_cs2022-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Firstly, *keep no change* for `hash_get()` with NULL `alloc_func`. Only focus on cases with non-NULL `alloc_func` of `hash_get()`. Since `hash_get()` with non-NULL `alloc_func` parameter shall not fail, just ignore the returned value of it. The returned value must not be NULL. So in this case, remove the unnecessary checking NULL or not for the returned value and add `void` in front of it. Importantly, also *keep no change* for the two cases with non-NULL `alloc_func` - 1) Use `assert(<returned_data> == <searching_data>)` to ensure it is a created node, not a found node. Refer to `isis_vertex_queue_insert()` of isisd, there are many examples of this case in isid. 2) Use `<returned_data> != <searching_data>` to judge it is a found node, then free <searching_data>. Refer to `aspath_intern()` of bgpd, there are many examples of this case in bgpd. Here, <returned_data> is the returned value from `hash_get()`, and <searching_data> is the data, which is to be put into hash table. Signed-off-by: anlan_cs <vic.lan@pica8.com>
* *: Change thread->func to return void instead of intDonald Sharp2022-02-241-6/+2
| | | | | | | The int return value is never used. Modify the code base to just return a void instead. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: Fix spelling mistakesDonald Sharp2022-02-141-4/+4
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* Merge pull request #10293 from rgirada/ospf_lsidRuss White2022-02-081-1/+8
|\ | | | | ospfd: Modifying LSID generation algorithm
| * ospfd: Modifying LSID generation algorithmrgirada2022-01-221-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Description: This LSID alogithm added as per rcf2328 Appendex-E recommendation. This applies only for AS-external lsas and summary lsas. As an example of the algorithm, consider its operation when the following sequence of events occurs in a single router (Router A). (1) Router A wants to originate an AS-external-LSA for [10.0.0.0,255.255.255.0]: (a) A Link State ID of 10.0.0.0 is used. (2) Router A then wants to originate an AS-external-LSA for [10.0.0.0,255.255.0.0]: (a) The LSA for [10.0.0,0,255.255.255.0] is reoriginated using a new Link State ID of 10.0.0.255. (b) A Link State ID of 10.0.0.0 is used for [10.0.0.0,255.255.0.0]. (3) Router A then wants to originate an AS-external-LSA for [10.0.0.0,255.0.0.0]: (a) The LSA for [10.0.0.0,255.255.0.0] is reoriginated using a new Link State ID of 10.0.255.255. (b) A Link State ID of 10.0.0.0 is used for [10.0.0.0,255.0.0.0]. (c) The network [10.0.0.0,255.255.255.0] keeps its Link State ID of 10.0.0.255. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* | ospfd: adjust type of "aggr_delay_interval"anlan_cs2022-01-291-2/+2
|/ | | | | | | Adjust type of "aggr_delay_interval": Just replace `unsigned int` with `uint16_t` for range is (50..1800). Signed-off-by: anlan_cs <vic.lan@pica8.com>
* ospfd: fix summary-address deletionIgor Ryzhov2021-11-251-3/+1
| | | | | | | | | | | When the summary-address is deleted, `ospf_aggr_handle_external_info` is called for each aggregated route for the cleanup. It needs to find the corresponding OSPF instance and it does it using the `ei->instance` which is totally wrong, because it's the instance from which the route is redistributed, not the local OSPF instance. A pointer to the correct OSPF instance is already stored in the external_info structure. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* ospfd: don't use if_lookup_by_name_all_vrfIgor Ryzhov2021-10-151-2/+3
| | | | | | | | | if_lookup_by_name_all_vrf doesn't work correctly with netns VRF backend as the same index may be used in multiple netns simultaneously. Use the appropriate VRF when looking for the interface. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* lib,ospfd,ospf6d: remove duplicated functionRafael Zalamena2021-07-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Move `is_default_prefix` variations to `lib/prefix.h` and make the code use the library version instead of implementing it again. NOTE ---- The function was split into per family versions to cover all types. Using `union prefixconstptr` is not possible due to static analyzer warnings which cause CI to fail. The specific cases that would cause this failure were: - Caller used `struct prefix_ipv4` and called the generic function. - `is_default_prefix` with signature using `const struct prefix *` or `union prefixconstptr`. The compiler would complain about reading bytes outside of the memory bounds even though it did not take into account the `prefix->family` part. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
* *: Replace IPV4_MAX_PREFIXLEN to IPV4_MAX_BITLENDonatas Abraitis2021-07-011-1/+1
| | | | | | Just drop IPV4_MAX_PREFIXLEN at all, no need keeping both. Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* ospfd: fix memory leaks in summarizationIgor Ryzhov2021-06-081-1/+2
| | | | | | | | | | | | | | To reproduce the issue: 1. Create summary-address: `summary-address 1.1.1.0/24`. 2. Try to delete it with the wrong tag: `no summary-address 1.1.1.0/24 tag 1`. Each time this command is executed, route_node_lookup is called which locks route node one more time. As the tag is wrong, the function return immediately without unlock. 3. Finally delete the summary-address: `no summary-address 1.1.1.0/24`. The route node won't be deleted. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* ospfd: Use _func__ instead of __PRETTY_FUNCTION__Donald Sharp2021-05-121-4/+2
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: Use %pI4 in some placesDonald Sharp2021-05-041-10/+5
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: Fix some deep indentation issues in ospf_asbr.cDonald Sharp2021-05-041-40/+41
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* Merge pull request #8409 from rgirada/ospf-memleakDonald Sharp2021-04-291-10/+19
|\ | | | | ospfd: Fixing few valgrind issues
| * ospfd: Fixing few valgrind issuesrgirada2021-04-161-10/+19
| | | | | | | | | | | | | | | | | | | | | | Description: All matching external routes are added to matching external hash table of aggregate route when aggregation is enabled. But these external info pointers are not delinked from this hash table before freeing the corresponding memory while disabling redistribution. Addressing these memory issues in this change. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* | ospfd: install Type-7 when NSSA area is configured after redistributionAlexander Chernavin2021-04-121-2/+20
|/ | | | | | | | | | | | | | | | | | | | | Currently, if NSSA area is configured before redistribution is enabled, Type-7 LSA's are installed and flooded. But if NSSA area is configured after redistribution is enabled, Type-7 LSA's are not installed. With this change, when NSSA area is configured, schedule a task that scans for external LSA's. If they exist, install Type-7 and flood to all NSSA Areas. There already was an attempt to fix this problem in 0f321812f where ospf_asbr_nssa_redist_task() was triggered in ospf_abr_task_timer(). This turns out to be incorrect place for this operation because it's a one-off operation needed only after "area <ID> nssa" execution. And ospf_abr_task_timer() is a periodic operation. Triggering ospf_asbr_nssa_redist_task() in ospf_abr_task_timer() caused a problem that was fixed in 945eec2b6 making the problem with NSSA area configured after redistribution actual again. Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
* *: remove tabs & newlines from log messagesDavid Lamparter2021-02-141-3/+3
| | | | | | | Neither tabs nor newlines are acceptable in syslog messages. They also break line-based parsing of file logs. Signed-off-by: David Lamparter <equinox@diac24.net>
* ospfd: Cleanup some clang sa issuesDonald Sharp2020-11-041-2/+2
| | | | | | | This commit tells the compiler we are intentionally ignoring the lsa value returned and not doing anything with ret. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: External LSA summarisation config commands.rgirada2020-11-021-0/+132
| | | | | | | | | | | | | Description: The following config commands introduced for external route aggregation. [no] summary-address A.B.C.D/M [tag (1-4294967295)] [no] summary-address A.B.C.D/M no-advertise aggregation timer (5-1800) no aggregation timer Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* ospfd: ospf summarisation core handlersrgirada2020-11-021-4/+686
| | | | | | | | Description: Apis for creating/deleting aggregate routes. Origination of summary route on behalf of matched external routes. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* ospfd: Summarisation init/de-init.rgirada2020-11-021-0/+75
| | | | | | | | | Description: Summarisation initilisation and de-init apis. summary route table will be created as part of initilisation at the time of ospf deamon init. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* Merge pull request #7173 from ckishimo/forceDonald Sharp2020-10-271-2/+3
|\ | | | | ospfd: fix lsa type-7 continuously refreshed
| * ospfd: fix lsa type-7 continuously refreshedckishimo2020-09-291-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Having an NSSA ABR redistributing statics, the type-7 LSA are being continuously refreshed (every ~14 secs). The LSA Seq number keeps incrementing and the LSA age is going back to 0 when reaching ~14s. This PR fixes the issue by not forcing the LSA update However I ignore if the "force" parameter was used in purpose. With this PR updates are sent in case the metric or metric type are changed Sep 24 08:54:48 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:55:02 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:55:16 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:55:30 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:55:44 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:55:58 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:56:12 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:56:26 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. Sep 24 08:56:40 r2 ospfd[7137]: ospf_flood_through: LOCAL NSSA FLOOD of Type-7. ip route 2.2.2.2/32 blackhole router ospf network 10.0.23.0/24 area 1 area 1 nssa ! r2# conf t r2(config)# router ospf r2(config-router)# redistribute static r2# sh ip os da NSSA-external Link States (Area 0.0.0.1 [NSSA]) Link ID ADV Router Age Seq# CkSum Route 2.2.2.2 10.0.25.2 13 0x8000000f 0x3f17 E2 2.2.2.2/32 [0x0] <<< Seq: f, age 13 r2# sh ip os da NSSA-external Link States (Area 0.0.0.1 [NSSA]) Link ID ADV Router Age Seq# CkSum Route 2.2.2.2 10.0.25.2 0 0x80000010 0x3d18 E2 2.2.2.2/32 [0x0] <<< Seq: 10, age 0 r2# sh ip os da NSSA-external Link States (Area 0.0.0.1 [NSSA]) Link ID ADV Router Age Seq# CkSum Route 2.2.2.2 10.0.25.2 3 0x8000001b 0x2723 E2 2.2.2.2/32 [0x0] <<< Seq: 1b, age 3 Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
* | ospfd: replace inet_ntoaMark Stapp2020-10-221-7/+6
| | | | | | | | | | | | Stop using inet_ntoa, use %pI4 etc or inet_ntop instead Signed-off-by: Mark Stapp <mjs@voltanet.io>
* | ospfd: Convert to using %pFXDonald Sharp2020-10-171-4/+2
|/ | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: install Type-7 when NSSA enabled after redistributionAlexander Chernavin2020-09-031-0/+24
| | | | | | | | | | | If NSSA is enabled before redistribution is configured, Type-7 LSA's are installed. But if NSSA is enabled after redistribution is configured, Type-7 LSAs are missing. With this change, when NSSA is enabled, scan for external LSA's and if they exist, install Type-7. Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
* ospfd: External LSA lookup in LSDB failed in a specific scenariorgirada2020-05-291-14/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Description: OSPF uses an algo to generate unique LSIDs when route updates exists with same adrress and different masklens. It genearates the unique LSIDs by masking its hostbits. Ex : Rt1 : 10.0.0.0/32 - LSID : 10.0.0.0 Rt2 : 10.0.0.0/16 - LSID : 10.0.255.255 Rt3 : 10.0.0.0/24 - LSID : 10.0.0.255 Observed an issue with external LSAs when such routes originated. If the first route (with actual address as LSID) is got deleted, the routes with same addresss(different msaks) are failed to get LSA pointers from LSDB due to current fetching API design. api : ospf_external_info_find_lsa Here , it is allowing to look up the LSA with address specific unique LSID (address with host bits set ex: 10.0.255.255) only if the LSA exists where LSID as actual address of the route (ex: 10.0.0.0 ) which is not expected and cauing for other issues. Fix: Corrected this logic, by looking up the LSA with unique LSID first if it doesn’t exist then It is allowing to look up the LSDB with LSID as address of the route. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* ospfd: Restoring the original tag in external lsasrgirada2020-05-181-0/+1
| | | | | | | | | | | | Description: When a routemap applied to set a tag, all the permitted routes are refreshed with new tag, but when a different route map applied with a different action still the same tag persits in the external route. The actual tag received from zebra is expected to be set back to the routes here. Corrected this behaviour by restoring a original tag received from zebra. Signed-off-by: Rajesh Girada <rgirada@vmware.com>
* *: don't null after XFREE; XFREE does this itselfQuentin Young2020-02-031-1/+0
| | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* ospfd: Add/fix some debugs to handle vrfDonald Sharp2019-11-191-3/+6
| | | | | | | | | | | | | This commit has: The received packet path in ospf, had absolutely no debugs associated with it. This makes it extremely hard to know when we receive packets for consumption. Add some breadcrumbs to this end. Large chunks of commands have no ability to debug what is happening in what vrf. With ip overlap X vrf this becomes a bit of a problem Add some breadcrumbs here. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* *: remove casts of XMALLOC / XCALLOCQuentin Young2019-02-261-2/+1
| | | | | | No cast necessary for void * Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* *: style for flog_warn conversionsQuentin Young2018-09-061-5/+5
| | | | Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* ospfd: Convert ospf_asbr.c to use error-codes subsystemDonald Sharp2018-09-061-5/+6
| | | | Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* ospfd: Remove unused functionDonald Sharp2018-08-211-20/+0
| | | | | | | | | | | | | The ospf_external_route_lookup function was not being used so let's just remove it. Unfortunately the removal was not quite so simple as that ospf_asbr.h was being used to generate a reference for the `struct ospf_route` data structure, so we need to fix up the compile by fixing up header inclusions so that ospf_route.h is actually included Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* *: use C99 standard fixed-width integer typesQuentin Young2018-03-271-9/+10
| | | | | | | | | | | | | | | | | | | | | | The following types are nonstandard: - u_char - u_short - u_int - u_long - u_int8_t - u_int16_t - u_int32_t Replace them with the C99 standard types: - uint8_t - unsigned short - unsigned int - unsigned long - uint8_t - uint16_t - uint32_t Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* *: conform with COMMUNITY.md formatting rules, via 'make indent'Lou Berger2018-03-061-11/+8
| | | | Signed-off-by: Lou Berger <lberger@labn.net>
* ospfd: Make external routes in ospf VRF awareChirag Shah2017-11-211-13/+16
| | | | | | | | | | | | | | | | | | | Currently, ospf external routers are part of struct ospf_master which is not vrf aware ospf instance. All ospf external routes are injected/leaked into all vrfs. Moved ospf external routes db to struct ospf to make vrf aware, such one external routes learnt in one vrf is not leaked into another vrf. Ticket:CM-18855 Testing Done: Inject external route in non-default vrf x, validated ospf database across the vrf x, validated ospf routes for vrf x. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>