/* SPDX-License-Identifier: GPL-2.0-or-later * Copyright (c) 2021 Red Hat GmbH * Author: Stefano Brivio */ #ifndef UDP_INTERNAL_H #define UDP_INTERNAL_H #define UDP_CONN_TIMEOUT 180 /* s, timeout for ephemeral or local bind */ #define UDP_MAX_FRAMES 32 /* max # of frames to receive at once */ extern struct sockaddr_in udp4_localname; extern struct sockaddr_in6 udp6_localname; /** * struct udp_payload_t - UDP header and data for inbound messages * @uh: UDP header * @data: UDP data */ struct udp_payload_t { struct udphdr uh; char data[USHRT_MAX - sizeof(struct udphdr)]; #ifdef __AVX2__ } __attribute__ ((packed, aligned(32))); #else } __attribute__ ((packed, aligned(__alignof__(unsigned int)))); #endif size_t udp_update_hdr4(const struct ctx *c, struct iphdr *ip4h, const struct sockaddr_in *s_in, struct udp_payload_t *bp, in_port_t dstport, size_t dlen, const struct timespec *now); size_t udp_update_hdr6(const struct ctx *c, struct ipv6hdr *ip6h, struct sockaddr_in6 *s_in6, struct udp_payload_t *bp, in_port_t dstport, size_t dlen, const struct timespec *now); #endif /* UDP_INTERNAL_H */