Add an upstream patch to fix a build issue related to struct
sockaddr_storage:
udp-listener.c: In function 'cnx_cmp':
udp-listener.c:39:30: error: initialization of 'struct sockaddr *' from incompatible pointer type 'struct sockaddr_storage *' [-Wincompatible-pointer-types]
39 | struct sockaddr* addr1 = &cnx1->client_addr;
| ^
udp-listener.c:42:30: error: initialization of 'struct sockaddr *' from incompatible pointer type 'struct sockaddr_storage *' [-Wincompatible-pointer-types]
42 | struct sockaddr* addr2 = &cnx2->client_addr;
| ^
udp-listener.c: In function 'hash_make_key':
udp-listener.c:55:29: error: initialization of 'struct sockaddr *' from incompatible pointer type 'struct sockaddr_storage *' [-Wincompatible-pointer-types]
55 | struct sockaddr* addr = &new->client_addr;
| ^
udp-listener.c: In function 'udp_s2c_forward':
udp-listener.c:330:18: error: passing argument 5 of 'sendto' from incompatible pointer type [-Wincompatible-pointer-types]
330 | &cnx->client_addr, cnx->addrlen);
| ^~~~~~~~~~~~~~~~~
| |
| struct sockaddr_storage *
Fixes:
https://autobuild.buildroot.net/results/0cbbb75c4aab19b9d5f42695359ac6fe97e5989b/
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
57 lines
1.9 KiB
Diff
57 lines
1.9 KiB
Diff
From 402ca5219b5dcf7a502cd3f75906423527837a7a Mon Sep 17 00:00:00 2001
|
|
From: Yves Rutschle <git1@rutschle.net>
|
|
Date: Thu, 4 Jan 2024 23:22:44 +0100
|
|
Subject: [PATCH] fix warnings on sockaddr storage
|
|
|
|
Upstream: https://github.com/yrutschle/sslh/commit/402ca5219b5dcf7a502cd3f75906423527837a7a
|
|
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
|
---
|
|
udp-listener.c | 10 +++++-----
|
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/udp-listener.c b/udp-listener.c
|
|
index 570e480..bc7a3f4 100644
|
|
--- a/udp-listener.c
|
|
+++ b/udp-listener.c
|
|
@@ -36,10 +36,10 @@
|
|
|
|
static int cnx_cmp(struct connection* cnx1, struct connection* cnx2)
|
|
{
|
|
- struct sockaddr* addr1 = &cnx1->client_addr;
|
|
+ struct sockaddr_storage* addr1 = &cnx1->client_addr;
|
|
socklen_t addrlen1 = cnx1->addrlen;
|
|
|
|
- struct sockaddr* addr2 = &cnx2->client_addr;
|
|
+ struct sockaddr_storage* addr2 = &cnx2->client_addr;
|
|
socklen_t addrlen2 = cnx2->addrlen;
|
|
|
|
if (addrlen1 != addrlen2) return -1;
|
|
@@ -52,13 +52,13 @@ static int cnx_cmp(struct connection* cnx1, struct connection* cnx2)
|
|
* lowest bytes of remote port */
|
|
static int hash_make_key(hash_item new)
|
|
{
|
|
- struct sockaddr* addr = &new->client_addr;
|
|
+ struct sockaddr_storage* addr = &new->client_addr;
|
|
//socklen_t addrlen = new->addrlen;
|
|
struct sockaddr_in* addr4;
|
|
struct sockaddr_in6* addr6;
|
|
int out;
|
|
|
|
- switch (addr->sa_family) {
|
|
+ switch (((struct sockaddr*)addr)->sa_family) {
|
|
case AF_INET:
|
|
addr4 = (struct sockaddr_in*)addr;
|
|
out = addr4->sin_port;
|
|
@@ -327,7 +327,7 @@ void udp_s2c_forward(struct connection* cnx)
|
|
if ((res == -1) && ((errno == EAGAIN) || (errno == EWOULDBLOCK))) return;
|
|
CHECK_RES_DIE(res, "udp_listener/recvfrom");
|
|
res = sendto(cnx->local_endpoint, data, res, 0,
|
|
- &cnx->client_addr, cnx->addrlen);
|
|
+ (struct sockaddr*)&cnx->client_addr, cnx->addrlen);
|
|
mark_active(cnx);
|
|
}
|
|
|
|
--
|
|
2.39.5
|
|
|