kernel-netlink: Enable UDP GRO

This enables GRO offload for inbound ESP-in-UDP packets if the
esp4|6_offload modules are loaded.  Note that inbound ESP or ESP-in-UDP
packets won't be visible on layer 3 in Netfilter or tcpdump.
This commit is contained in:
Tobias Brunner 2025-03-25 13:44:44 +01:00
parent d54a29cc5c
commit 57e74f64b3
2 changed files with 7 additions and 0 deletions

View File

@ -29,6 +29,7 @@ struct udphdr {
/* UDP socket options */
#define UDP_CORK 1 /* Never send partially complete segments */
#define UDP_ENCAP 100 /* Set the socket to accept encapsulated packets */
#define UDP_GRO 104 /* This socket can receive UDP GRO packets */
/* UDP encapsulation types */
#define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */

View File

@ -3884,6 +3884,12 @@ METHOD(kernel_ipsec_t, enable_udp_decap, bool,
DBG1(DBG_KNL, "unable to set UDP_ENCAP: %s", strerror(errno));
return FALSE;
}
type = 1;
if (setsockopt(fd, SOL_UDP, UDP_GRO, &type, sizeof(type)) < 0)
{
DBG1(DBG_KNL, "unable to set UDP_GRO: %s", strerror(errno));
return FALSE;
}
return TRUE;
}