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. */ sa_family_t sin_family; /* AF_INET. */
in_port_t sin_port; /* Port number. */ in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* IP address. */ struct in_addr sin_addr; /* IP address. */
unsigned char sin_zero[8];
}; };
struct in6_addr struct in6_addr

View File

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

View File

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