LibC: Make sockaddr and sockaddr_in compatible with other systems

sockaddr:
make sa_data is 14 bytes on all systems

sockaddr_in:
add sin_zero
This commit is contained in:
Bananymous 2025-08-08 01:03:31 +03:00
parent 3aa20a3a32
commit 92e962430b
3 changed files with 5 additions and 2 deletions

View File

@ -87,6 +87,7 @@ struct sockaddr_in
sa_family_t sin_family; /* AF_INET. */
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* IP address. */
unsigned char sin_zero[8];
};
struct in6_addr

View File

@ -24,8 +24,8 @@ __BEGIN_DECLS
struct sockaddr
{
sa_family_t sa_family; /* Address family. */
char sa_data[0]; /* Socket address (variable-length data). */
sa_family_t sa_family; /* Address family. */
char sa_data[14]; /* Socket address (variable-length data). */
};
struct sockaddr_storage

View File

@ -442,6 +442,7 @@ int main(int, char**)
.sin_family = AF_INET,
.sin_port = 0,
.sin_addr = { .s_addr = resolved->raw },
.sin_zero = {},
};
if (send(client.socket, &addr, sizeof(addr), 0) == -1)
@ -489,6 +490,7 @@ int main(int, char**)
.sin_family = AF_INET,
.sin_port = 0,
.sin_addr = { .s_addr = result->raw },
.sin_zero = {},
};
if (send(client.socket, &addr, sizeof(addr), 0) == -1)