bgpd: A couple link-state nits - #21842
Conversation
Seems this was missed unintentionally(?). Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
And also replace/use it everywhere in the code. For maintainability. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Greptile SummaryThis PR encapsulates direct Confidence Score: 4/5Safe to merge β changes are mechanical refactoring with a correct unintern-sub fix and a new flush cleanup path. All changes follow established accessor patterns already used for other sub-attributes. The bgp_attr_unintern_sub fix correctly nulls the pointer after unintern, matching the community/ecommunity/nhc patterns. No logic regressions identified. Score is 4 rather than 5 only because the new bgp_attr_set_ls_attr setter silently adds a BGP_ATTR_LINK_STATE flag side-effect on every set, which is a subtle behavioral addition worth a reviewer double-checking against all call sites. bgpd/bgp_attr.c β specifically the bgp_attr_intern and bgp_attr_flush paths that now implicitly toggle BGP_ATTR_LINK_STATE through the setter. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[bgp_attr_set_ls_attr called] --> B{ls_attr != NULL?}
B -- Yes --> C[attr->ls_attr = ls_attr]
C --> D[bgp_attr_set BGP_ATTR_LINK_STATE]
B -- No --> E[attr->ls_attr = NULL]
E --> F[bgp_attr_unset BGP_ATTR_LINK_STATE]
G[bgp_attr_unintern_sub] --> H[ls_attr = bgp_attr_get_ls_attr]
H --> I[bgp_ls_attr_unintern & ls_attr]
I --> J{refcnt reaches 0?}
J -- Yes --> K[free + set local ptr NULL]
J -- No --> L[decrement refcnt only]
K --> M[bgp_attr_set_ls_attr attr NULL]
L --> M
N[bgp_attr_flush] --> O[ls_attr = bgp_attr_get_ls_attr]
O --> P{ls_attr && !refcnt?}
P -- Yes --> Q[bgp_ls_attr_free]
Q --> R[bgp_attr_set_ls_attr attr NULL]
P -- No --> S[skip]
Reviews (1): Last reviewed commit: "bgpd: Set BGP_ATTR_LINK_STATE when we re..." | Re-trigger Greptile |
No description provided.