Merge pull request #16336 from FRRouting/mergify/bp/stable/10.0/pr-16226

ldpd: fix wrong gtsm count (backport #16226)
This commit is contained in:
Donatas Abraitis 2024-07-03 11:57:21 +02:00 committed by GitHub
commit 0309f2270e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -681,6 +681,18 @@ nbr_gtsm_setup(int fd, int af, struct nbr_params *nbrp)
if (nbrp && CHECK_FLAG(nbrp->flags, F_NBRP_GTSM_HOPS)) if (nbrp && CHECK_FLAG(nbrp->flags, F_NBRP_GTSM_HOPS))
ttl = 256 - nbrp->gtsm_hops; ttl = 256 - nbrp->gtsm_hops;
/*
* In linux networking stack, the received mpls packets
* will be processed by the host twice, one as mpls packet,
* the other as ip packet, so its ttl will be decreased 1.
* This behavior is based on the new kernel (5.10 and 6.1),
* and older versions may behave differently.
*
* Here, decrease 1 for IP_MINTTL if GTSM is enabled.
* And this workaround makes the GTSM mechanism a bit deviation.
*/
ttl -= 1;
switch (af) { switch (af) {
case AF_INET: case AF_INET:
if (sock_set_ipv4_minttl(fd, ttl) == -1) if (sock_set_ipv4_minttl(fd, ttl) == -1)