1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-02 00:22:11 +03:00

s4-ipv6: added socket_address_from_sockaddr_storage()

this converts a struct sockaddr_storage to a struct socket_address
This commit is contained in:
Andrew Tridgell
2011-05-12 12:29:21 +02:00
parent d8d63b53b7
commit 244137b10d
2 changed files with 48 additions and 0 deletions

View File

@ -510,6 +510,50 @@ _PUBLIC_ struct socket_address *socket_address_from_sockaddr(TALLOC_CTX *mem_ctx
return addr;
}
/*
Create a new socket_address from sockaddr_storage
*/
_PUBLIC_ struct socket_address *socket_address_from_sockaddr_storage(TALLOC_CTX *mem_ctx,
const struct sockaddr_storage *sockaddr,
uint16_t port)
{
struct socket_address *addr = talloc_zero(mem_ctx, struct socket_address);
char addr_str[INET6_ADDRSTRLEN+1];
const char *str;
if (!addr) {
return NULL;
}
addr->port = port;
switch (sockaddr->ss_family) {
case AF_INET:
addr->family = "ipv4";
break;
#ifdef HAVE_IPV6
case AF_INET6:
addr->family = "ipv6";
break;
#endif
default:
talloc_free(addr);
return NULL;
}
str = print_sockaddr(addr_str, sizeof(addr_str), sockaddr);
if (str == NULL) {
talloc_free(addr);
return NULL;
}
addr->addr = talloc_strdup(addr, str);
if (addr->addr == NULL) {
talloc_free(addr);
return NULL;
}
return addr;
}
/* Copy a socket_address structure */
struct socket_address *socket_address_copy(TALLOC_CTX *mem_ctx,
const struct socket_address *oaddr)

View File

@ -174,6 +174,10 @@ struct socket_address *socket_address_from_strings(TALLOC_CTX *mem_ctx,
struct socket_address *socket_address_from_sockaddr(TALLOC_CTX *mem_ctx,
struct sockaddr *sockaddr,
size_t addrlen);
struct sockaddr_storage;
struct socket_address *socket_address_from_sockaddr_storage(TALLOC_CTX *mem_ctx,
const struct sockaddr_storage *sockaddr,
uint16_t port);
_PUBLIC_ void socket_address_set_port(struct socket_address *a,
uint16_t port);
struct socket_address *socket_address_copy(TALLOC_CTX *mem_ctx,