From: Maria Matejka Date: Thu, 28 Nov 2024 08:36:33 +0000 (+0100) Subject: Merge commit '8a40bccf' into thread-merge-2.16 X-Git-Tag: v3.0.0~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6242ef948d2d2be6ca8f2138198afd1e2c9d5fc;p=thirdparty%2Fbird.git Merge commit '8a40bccf' into thread-merge-2.16 --- e6242ef948d2d2be6ca8f2138198afd1e2c9d5fc diff --cc proto/bfd/bfd.c index ec8c2f13b,d08c413d4..2cb72c540 --- a/proto/bfd/bfd.c +++ b/proto/bfd/bfd.c @@@ -1189,10 -1149,11 +1189,11 @@@ bfd_reconfigure(struct proto *P, struc (new->accept_ipv6 != old->accept_ipv6) || (new->accept_direct != old->accept_direct) || (new->accept_multihop != old->accept_multihop) || - (new->strict_bind != old->strict_bind)) + (new->strict_bind != old->strict_bind) || + (new->zero_udp6_checksum_rx != old->zero_udp6_checksum_rx)) return 0; - birdloop_mask_wakeups(p->loop); + birdloop_mask_wakeups(p->p.loop); WALK_LIST(ifa, p->iface_list) bfd_reconfigure_iface(p, ifa, new); diff --cc proto/bfd/packets.c index ba1c8bc4d,6097bcae5..1ceb470c1 --- a/proto/bfd/packets.c +++ b/proto/bfd/packets.c @@@ -416,7 -416,9 +416,9 @@@ bfd_err_hook(sock *sk, int err sock * bfd_open_rx_sk(struct bfd_proto *p, int multihop, int af) { + struct bfd_config *cf = (struct bfd_config *) (p->p.cf); + - sock *sk = sk_new(p->tpool); + sock *sk = sk_new(p->p.pool); sk->type = SK_UDP; sk->subtype = af; sk->sport = !multihop ? BFD_CONTROL_PORT : BFD_MULTI_CTL_PORT; @@@ -430,11 -432,15 +432,14 @@@ /* TODO: configurable ToS and priority */ sk->tos = IP_PREC_INTERNET_CONTROL; sk->priority = sk_priority_control; - sk->flags = SKF_THREAD | SKF_LADDR_RX | (!multihop ? SKF_TTL_RX : 0); + sk->flags = SKF_LADDR_RX | (!multihop ? SKF_TTL_RX : 0); + if (cf->zero_udp6_checksum_rx) + sk->flags |= SKF_UDP6_NO_CSUM_RX; + - if (sk_open(sk) < 0) + if (sk_open(sk, p->p.loop) < 0) goto err; - sk_start(sk); return sk; err: @@@ -461,11 -469,15 +468,14 @@@ bfd_open_rx_sk_bound(struct bfd_proto * /* TODO: configurable ToS and priority */ sk->tos = IP_PREC_INTERNET_CONTROL; sk->priority = sk_priority_control; - sk->flags = SKF_THREAD | SKF_BIND | (ifa ? SKF_TTL_RX : 0); + sk->flags = SKF_BIND | (ifa ? SKF_TTL_RX : 0); + if (cf->zero_udp6_checksum_rx) + sk->flags |= SKF_UDP6_NO_CSUM_RX; + - if (sk_open(sk) < 0) + if (sk_open(sk, p->p.loop) < 0) goto err; - sk_start(sk); return sk; err: