Donald Sharp
e24f43e64e
Merge pull request #15272 from LabNConsulting/chopps/mgmtd-notif-test
...
tests: add mgmtd backend notification test
2024-02-01 14:56:07 -05:00
Donald Sharp
62443d7f66
Merge pull request #15264 from opensourcerouting/fix/memory_optimization
...
bgpd: Optimize memory for rd_ip struct
2024-02-01 14:55:18 -05:00
Donald Sharp
0bdcf62b8c
Merge pull request #15270 from LabNConsulting/chopps/fix-rpm-pkg
...
redhat: add option to include mgmtd_testc test client
2024-02-01 14:51:58 -05:00
Russ White
398c70074b
Merge pull request #15266 from donaldsharp/packable
...
2 memory optimizations
2024-02-01 14:23:58 -05:00
Donald Sharp
bb1e1265aa
bgpd: Save memory when using bgp_path_info_extra and vnc
...
Structure size of bgp_path_info_extra when compiled
with vnc is 184 bytes. Reduce this size to 72 bytes
when compiled w/ vnc but not necessarily turned
on vnc.
With 2 full bgp feeds this saves aproximately 100mb
when compiling with vnc and not using vnc.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-02-01 07:54:35 -05:00
Donald Sharp
a8e8f1bc72
lib: Reduce size of hash_bucket by 8 bytes
...
pahole reports that the hash_bucket has 2 4 byte holes
in the data structure. Let's reorganize this a bit
and save 8 bytes per hash_bucket instance.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-02-01 07:53:31 -05:00
Christian Hopps
7521918454
tests: add mgmtd backend notification test
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-02-01 05:37:59 -05:00
Igor Ryzhov
a2caf2b5e1
Merge pull request #15268 from LabNConsulting/chopps/quieter-code
...
lowercase and localize debug/err macros
2024-02-01 10:54:30 +02:00
Christian Hopps
cb56b004b5
redhat: add option to include mgmtd_testc test client
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-02-01 03:17:44 -05:00
Christian Hopps
e9fc85f421
mgmtd: convert MGMTD_FE_CLIENT_DBG() to debug_fe_client()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:19:23 -05:00
Christian Hopps
21f3b4e5c5
mgmtd: convert MGMTD_BE_CLIENT_DBG() to debug_be_client()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:19:23 -05:00
Christian Hopps
31b6d684e1
mgmtd: convert MGMT_FE_ADAPTER_DBG() to __dbg()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:19:23 -05:00
Christian Hopps
fb8dc955b1
mgmtd: convert MGMT_BE_ADAPTER_DBG() to __dbg()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:19:23 -05:00
Christian Hopps
ef305e8993
mgmtd: convert MGMT_DS_DBG() to __dbg()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:19:23 -05:00
Christian Hopps
ecd13c615b
mgmtd: convert MGMT_TXN_DBG() to __dbg()
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-31 20:18:55 -05:00
Donatas Abraitis
bd3b17d27d
Merge pull request #15258 from louis-6wind/fix-adj-in-attr
...
bgpd: fix attr comparaison bgp_adj_in_set
2024-01-31 15:06:40 +02:00
Igor Ryzhov
72949f5f94
Merge pull request #15251 from qlyoung/fix-doc-nbcli-numlist
...
doc: fix misformatted list in nbapi docs
2024-01-31 15:06:25 +02:00
Christian Hopps
25d3086d83
Merge pull request #15246 from idryzhov/mgmt-get-data-improvements
...
mgmt get-data improvements
2024-01-31 06:04:04 -05:00
Donatas Abraitis
0fd46e3f4e
bgpd: Optimize memory for rd_ip struct
...
```
struct rd_ip {
uint16_t type; /* 0 2 */
uint16_t val; /* 2 2 */
struct in_addr ip; /* 4 4 */
/* size: 8, cachelines: 1, members: 3 */
/* last cacheline: 8 bytes */
}; /* saved 4 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-31 11:29:30 +02:00
Igor Ryzhov
3afea9ccda
tests: add tests for mgmt get-data with-defaults parameter
...
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
c19d0a5bf3
mgmtd: add our own format definitions for frontend messages
...
It allows people not familiar with libyang and FRR internals to use
mgmtd FE API by looking only at `mgmt_msg_native.h` header. We still use
the same values to avoid a lot of mapping code, and ensure that any
change doesn't slip unnoticed by using static asserts.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
dda5de0340
mgmtd: fix printing an empty data tree
...
We don't need to create an actual tree to print an empty tree, libyang
handles NULL just fine. The actual problem is that `yang_dnode_new`
creates a tree by validating it, and the validation creates all implicit
default nodes. Therefore, when called with "with-default" flags, instead
of getting an empty tree, we get a tree with all top-level default set.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
e13c590abe
mgmtd: add ability to choose datastore to get data from
...
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
4317c8ffa6
mgmtd: add support for with-defaults parameter to get-data
...
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
e2caf64ef7
yang: add more ietf models
...
These models are needed to use LYD_PRINT_WD_ALL_TAG flag of libyang.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-31 02:20:13 +02:00
Igor Ryzhov
642078de8e
Merge pull request #15254 from LabNConsulting/chopps/notifications
...
Add YANG notifications
2024-01-31 02:18:20 +02:00
Igor Ryzhov
2a572bad91
Merge pull request #14764 from mjstapp/nb_gen_tool
...
tools, vtysh: add the cli write callback, unhide an NB show command
2024-01-30 23:02:18 +02:00
Igor Ryzhov
ecc88c52ba
build: build: make mgmtd test client build conditional
...
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-30 15:41:26 -05:00
Christian Hopps
1e884ba12f
mgmtd: backend subscriptions to notifications
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-30 15:41:26 -05:00
Russ White
61aa468a04
Merge pull request #15257 from opensourcerouting/fix/reinstall_aggregate_route_if_rmap
...
bgpd: Reinstall aggregated routes if using route-maps and it was changed
2024-01-30 15:08:08 -05:00
Christian Hopps
cb3242f697
tests: add YANG notification test
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-30 14:54:47 -05:00
Quentin Young
5b4a3d3af9
doc: update [no] recommendation
...
Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
2024-01-30 12:16:01 -05:00
Jafar Al-Gharaibeh
471e4b7bbe
Merge pull request #15163 from opensourcerouting/fix/pam_account
...
packaging: Require account validation with pam_unix.so if PAM enabled
2024-01-30 10:24:57 -06:00
Donald Sharp
d633a81dbf
Merge pull request #15250 from opensourcerouting/fix/memory_optimizations
...
bgpd: Some memory optimizations
2024-01-30 10:56:35 -05:00
Donald Sharp
71dd971aeb
Merge pull request #15252 from mjstapp/fix_bitfield_init
...
lib: init new bitfield word after realloc
2024-01-30 10:54:23 -05:00
Louis Scalbert
5c0aab103d
bgpd: fix attr comparaison bgp_adj_in_set
...
In bgp_adj_in_set(), attr has not yet been interned. adj->attr is always
different from attr. adj->attr is always uninterned and interned even if
attr and adj->attr are identical.
Fix the comparison.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-01-30 15:24:32 +01:00
Donatas Abraitis
9aed5777b7
tests: Check if attributes are reapplied for aggregate routes with route-maps
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 15:54:04 +02:00
Donatas Abraitis
ee1986f1b5
bgpd: Reinstall aggregated routes if using route-maps and it was changed
...
Without this change when we change the route-map, we never reinstall the route
if the route-map has changed.
We checked only some attributes like aspath, communities, large-communities,
extended-communities, but ignoring the rest of attributes.
With this change, let's check if the route-map has changed.
bgp_route_map_process_update() is triggered on route-map change, and we set
`changed` to true, which treats aggregated route as not the same as it was before.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 15:47:49 +02:00
Mark Stapp
55f6d016da
doc: add doc for show configuration running
...
Add a doc entry for the newly-unhidden 'show configuration
running ...' command.
Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-30 08:09:25 -05:00
Mark Stapp
678292b9be
vtysh: un-hide the show configuration nb cli
...
The "show configuration running" cli is pretty useful when
doing NB work; unhide it so it's easier to use.
Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-30 08:09:25 -05:00
Mark Stapp
77143ce77a
tools: add config-write callbacks to nb templates
...
Add the cli_show (config write) callback when emitting the
create or modify callback in the northbound template. Split
the config-handling and config-output callbacks into two
structs/arrays; this seems to be helpful when doing mgmtd
conversion.
Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-30 08:09:25 -05:00
Christian Hopps
25bb8b203c
lib: mgmtd: add YANG notification support
...
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-30 04:57:10 -05:00
Donatas Abraitis
cd869ebcf2
Merge pull request #15238 from louis-6wind/bgp-leak-network
...
bgpd: fix VRF leaking with 'network import-check'
2024-01-30 08:21:05 +02:00
Donatas Abraitis
48856741bd
bgpd: Optimize memory usage for bgp_damp_config struct
...
```
struct bgp_damp_config {
unsigned int suppress_value; /* 0 4 */
unsigned int reuse_limit; /* 4 4 */
time_t max_suppress_time; /* 8 8 */
time_t half_life; /* 16 8 */
unsigned int reuse_list_size; /* 24 4 */
unsigned int reuse_index_size; /* 28 4 */
unsigned int ceiling; /* 32 4 */
unsigned int decay_rate_per_tick; /* 36 4 */
unsigned int decay_array_size; /* 40 4 */
unsigned int reuse_scale_factor; /* 44 4 */
double scale_factor; /* 48 8 */
double * decay_array; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
int * reuse_index; /* 64 8 */
struct bgp_damp_info * * reuse_list; /* 72 8 */
int reuse_offset; /* 80 4 */
safi_t safi; /* 84 4 */
struct bgp_damp_info * no_reuse_list; /* 88 8 */
struct event * t_reuse; /* 96 8 */
afi_t afi; /* 104 4 */
/* size: 112, cachelines: 2, members: 19 */
/* padding: 4 */
/* last cacheline: 48 bytes */
}; /* saved 8 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 08:12:59 +02:00
Donatas Abraitis
a699cc1796
bgpd: Optimize memory usage for bgp_aggregate struct
...
```
struct bgp_aggregate {
uint8_t summary_only; /* 0 1 */
uint8_t as_set; /* 1 1 */
uint8_t origin; /* 2 1 */
_Bool med_mismatched; /* 3 1 */
_Bool med_initialized; /* 4 1 */
_Bool match_med; /* 5 1 */
/* XXX 2 bytes hole, try to pack */
struct {
char * name; /* 8 8 */
struct route_map * map; /* 16 8 */
} rmap; /* 8 16 */
long unsigned int count; /* 24 8 */
long unsigned int incomplete_origin_count; /* 32 8 */
long unsigned int egp_origin_count; /* 40 8 */
struct hash * community_hash; /* 48 8 */
struct hash * ecommunity_hash; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
struct hash * lcommunity_hash; /* 64 8 */
struct hash * aspath_hash; /* 72 8 */
struct community * community; /* 80 8 */
struct ecommunity * ecommunity; /* 88 8 */
struct lcommunity * lcommunity; /* 96 8 */
struct aspath * aspath; /* 104 8 */
safi_t safi; /* 112 4 */
uint32_t med_matched_value; /* 116 4 */
char * suppress_map_name; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
struct route_map * suppress_map; /* 128 8 */
/* size: 136, cachelines: 3, members: 22 */
/* sum members: 134, holes: 1, sum holes: 2 */
/* last cacheline: 8 bytes */
};
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 08:12:59 +02:00
Donatas Abraitis
0804038916
bgpd: Optimize memory usage for bgp_static struct
...
```
struct bgp_static {
int backdoor; /* 0 4 */
uint32_t label_index; /* 4 4 */
uint8_t valid; /* 8 1 */
/* XXX 1 byte hole, try to pack */
uint16_t encap_tunneltype; /* 10 2 */
uint32_t igpmetric; /* 12 4 */
struct in_addr igpnexthop; /* 16 4 */
uint32_t atomic; /* 20 4 */
struct {
char * name; /* 24 8 */
struct route_map * map; /* 32 8 */
} rmap; /* 24 16 */
struct prefix_rd prd __attribute__((__aligned__(8))); /* 40 16 */
char * prd_pretty; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
mpls_label_t label; /* 64 4 */
/* XXX 4 bytes hole, try to pack */
esi_t * eth_s_id; /* 72 8 */
struct ethaddr * router_mac; /* 80 8 */
struct prefix gatewayIp __attribute__((__aligned__(8))); /* 88 56 */
/* size: 144, cachelines: 3, members: 14 */
/* sum members: 139, holes: 2, sum holes: 5 */
/* forced alignments: 2 */
/* last cacheline: 16 bytes */
} __attribute__((__aligned__(8))); /* saved 8 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 08:12:59 +02:00
Donatas Abraitis
4821e7a0d8
bgpd: Optimize memory usage for attr struct
...
```
struct attr {
struct aspath * aspath; /* 0 8 */
struct community * community; /* 8 8 */
long unsigned int refcnt; /* 16 8 */
_uint64_t flag; /* 24 8 */
struct in_addr nexthop; /* 32 4 */
uint32_t med; /* 36 4 */
uint32_t local_pref; /* 40 4 */
ifindex_t nh_ifindex; /* 44 4 */
uint8_t origin; /* 48 1 */
uint8_t es_flags; /* 49 1 */
uint8_t router_flag; /* 50 1 */
uint8_t default_gw; /* 51 1 */
enum pta_type pmsi_tnl_type; /* 52 4 */
uint32_t rmap_change_flags; /* 56 4 */
struct in6_addr mp_nexthop_global; /* 60 16 */
/* --- cacheline 1 boundary (64 bytes) was 12 bytes ago --- */
struct in6_addr mp_nexthop_local; /* 76 16 */
ifindex_t nh_lla_ifindex; /* 92 4 */
struct ecommunity * ecommunity; /* 96 8 */
struct ecommunity * ipv6_ecommunity; /* 104 8 */
struct lcommunity * lcommunity; /* 112 8 */
struct cluster_list * cluster1; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
struct transit * transit; /* 128 8 */
struct in_addr mp_nexthop_global_in; /* 136 4 */
struct in_addr aggregator_addr; /* 140 4 */
struct in_addr originator_id; /* 144 4 */
uint32_t weight; /* 148 4 */
as_t aggregator_as; /* 152 4 */
uint8_t mp_nexthop_len; /* 156 1 */
uint8_t mp_nexthop_prefer_global; /* 157 1 */
uint8_t sticky; /* 158 1 */
uint8_t distance; /* 159 1 */
uint16_t encap_tunneltype; /* 160 2 */
uint8_t df_alg; /* 162 1 */
/* XXX 1 byte hole, try to pack */
route_tag_t tag; /* 164 4 */
uint32_t label_index; /* 168 4 */
mpls_label_t label; /* 172 4 */
struct bgp_attr_srv6_vpn * srv6_vpn; /* 176 8 */
struct bgp_attr_srv6_l3vpn * srv6_l3vpn; /* 184 8 */
/* --- cacheline 3 boundary (192 bytes) --- */
struct bgp_attr_encap_subtlv * encap_subtlvs; /* 192 8 */
struct bgp_attr_encap_subtlv * vnc_subtlvs; /* 200 8 */
struct bgp_route_evpn evpn_overlay; /* 208 36 */
uint32_t mm_seqnum; /* 244 4 */
uint32_t mm_sync_seqnum; /* 248 4 */
struct ethaddr rmac; /* 252 6 */
/* --- cacheline 4 boundary (256 bytes) was 2 bytes ago --- */
uint16_t df_pref; /* 258 2 */
uint32_t rmap_table_id; /* 260 4 */
uint32_t link_bw; /* 264 4 */
esi_t esi; /* 268 10 */
/* XXX 2 bytes hole, try to pack */
uint32_t srte_color; /* 280 4 */
uint32_t otc; /* 284 4 */
enum nexthop_types_t nh_type; /* 288 4 */
enum blackhole_type bh_type; /* 292 4 */
_uint64_t aigp_metric; /* 296 8 */
/* size: 304, cachelines: 5, members: 53 */
/* sum members: 301, holes: 2, sum holes: 3 */
/* last cacheline: 48 bytes */
}; /* saved 16 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-30 08:12:58 +02:00
Igor Ryzhov
bb957e4c94
Merge pull request #15248 from LabNConsulting/chopps/fix-comp-warning
...
zebra: fix compiler warning about truncation.
2024-01-29 20:52:00 +02:00
Mark Stapp
cad880c2df
lib: init new bitfield word after realloc
...
Realloc doesn't init - ensure a newly-allocated word is inited.
Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-29 12:56:28 -05:00
Quentin Young
f9ed1c9c30
doc: fix misformatted list in nbapi docs
...
Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
2024-01-29 09:28:32 -08:00