mirror of
				https://github.com/jart/cosmopolitan.git
				synced 2025-10-26 03:00:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef COSMOPOLITAN_LIBC_SOCK_STRUCT_SOCKADDR_INTERNAL_H_
 | |
| #define COSMOPOLITAN_LIBC_SOCK_STRUCT_SOCKADDR_INTERNAL_H_
 | |
| #include "libc/mem/alloca.h"
 | |
| #include "libc/sock/struct/sockaddr.h"
 | |
| #include "libc/sock/struct/sockaddr6-bsd.internal.h"
 | |
| #if !(__ASSEMBLER__ + __LINKER__ + 0)
 | |
| COSMOPOLITAN_C_START_
 | |
| 
 | |
| struct sockaddr_bsd {
 | |
|   uint8_t sa_len;    /* « different type */
 | |
|   uint8_t sa_family; /* « different type */
 | |
|   char sa_data[14];
 | |
| };
 | |
| 
 | |
| struct sockaddr_in_bsd {
 | |
|   uint8_t sin_len;    /* « different type */
 | |
|   uint8_t sin_family; /* « different type */
 | |
|   uint16_t sin_port;
 | |
|   struct in_addr sin_addr;
 | |
|   uint8_t sin_zero[8];
 | |
| };
 | |
| 
 | |
| struct sockaddr_un_bsd {
 | |
|   uint8_t sun_len; /* sockaddr len including NUL on freebsd but excluding it on
 | |
|                       openbsd/xnu */
 | |
|   uint8_t sun_family;
 | |
|   char sun_path[108];
 | |
| };
 | |
| 
 | |
| union sockaddr_storage_bsd {
 | |
|   struct sockaddr_bsd sa;
 | |
|   struct sockaddr_in_bsd sin;
 | |
|   struct sockaddr_in6_bsd sin6;
 | |
|   struct sockaddr_un_bsd sun;
 | |
| };
 | |
| 
 | |
| union sockaddr_storage_linux {
 | |
|   struct sockaddr sa;
 | |
|   struct sockaddr_in sin;
 | |
|   struct sockaddr_in6 sin6;
 | |
|   struct sockaddr_un sun;
 | |
| };
 | |
| 
 | |
| const char *DescribeSockaddr(char[128], const struct sockaddr *, size_t);
 | |
| #define DescribeSockaddr(sa, sz) DescribeSockaddr(alloca(128), sa, sz)
 | |
| 
 | |
| int sockaddr2bsd(const void *, uint32_t, union sockaddr_storage_bsd *,
 | |
|                  uint32_t *);
 | |
| void sockaddr2linux(const union sockaddr_storage_bsd *, uint32_t,
 | |
|                     union sockaddr_storage_linux *, uint32_t *);
 | |
| 
 | |
| COSMOPOLITAN_C_END_
 | |
| #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
 | |
| #endif /* COSMOPOLITAN_LIBC_SOCK_STRUCT_SOCKADDR_INTERNAL_H_ */
 |