diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2024-05-13 11:10:38 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-13 11:10:38 +0300 |
| commit | 1b2eb32a9fb2456df153f70b7ea949a96192c5ab (patch) | |
| tree | 7092aa3cdbed596840698847f3f787d26cddcd1e | |
| parent | 5f8759a4aabd6978e6420c303d8387a09839cc4f (diff) | |
| parent | c3d34b84f3e1b789b78b6ee93068f074eb884af1 (diff) | |
Merge pull request #15655 from idryzhov/isis-fix-subtlv-bit
isisd: fix ip/ipv6 reachability tlvs
| -rw-r--r-- | isisd/isis_tlvs.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c index 2b0a58b739..93ae8c6cb2 100644 --- a/isisd/isis_tlvs.c +++ b/isisd/isis_tlvs.c @@ -8016,7 +8016,6 @@ void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs, apply_mask_ipv4(&r->prefix); if (pcfgs) { - r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH); for (int i = 0; i < SR_ALGORITHM_COUNT; i++) { struct isis_prefix_sid *psid; struct sr_prefix_cfg *pcfg = pcfgs[i]; @@ -8026,6 +8025,10 @@ void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs, psid = XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid)); isis_sr_prefix_cfg2subtlv(pcfg, external, psid); + + if (!r->subtlvs) + r->subtlvs = isis_alloc_subtlvs( + ISIS_CONTEXT_SUBTLV_IP_REACH); append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid); } @@ -8044,7 +8047,6 @@ void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid, memcpy(&r->prefix, dest, sizeof(*dest)); apply_mask_ipv6(&r->prefix); if (pcfgs) { - r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH); for (int i = 0; i < SR_ALGORITHM_COUNT; i++) { struct isis_prefix_sid *psid; struct sr_prefix_cfg *pcfg = pcfgs[i]; @@ -8054,6 +8056,10 @@ void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid, psid = XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid)); isis_sr_prefix_cfg2subtlv(pcfg, external, psid); + + if (!r->subtlvs) + r->subtlvs = isis_alloc_subtlvs( + ISIS_CONTEXT_SUBTLV_IPV6_REACH); append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid); } |
