1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

lib/tsocket: add tsocket_address_is_inet() function

metze
This commit is contained in:
Stefan Metzmacher 2010-04-27 10:34:15 +02:00
parent 3dd50b2922
commit e1596bbf27
2 changed files with 54 additions and 0 deletions

View File

@ -101,6 +101,7 @@ struct iovec;
*
* @return The address as a string representation, NULL on error.
*
* @see tsocket_address_is_inet()
* @see tsocket_address_inet_addr_string()
* @see tsocket_address_inet_port()
*/
@ -486,6 +487,20 @@ int tstream_disconnect_recv(struct tevent_req *req,
* @{
*/
/**
* @brief Find out if the tsocket_address represents an ipv4 or ipv6 endpoint.
*
* @param[in] addr The tsocket_address pointer
*
* @param[in] fam The family can be can be "ipv4", "ipv6" or "ip". With
* "ip" is autodetects "ipv4" or "ipv6" based on the
* addr.
*
* @return true if addr represents an address of the given family,
* otherwise false.
*/
bool tsocket_address_is_inet(const struct tsocket_address *addr, const char *fam);
#if DOXYGEN
/**
* @brief Create a tsocket_address for ipv4 and ipv6 endpoint addresses.
@ -533,6 +548,8 @@ int _tsocket_address_inet_from_strings(TALLOC_CTX *mem_ctx,
*
* @return A newly allocated string of the address, NULL on error
* with errno set.
*
* @see tsocket_address_is_inet()
*/
char *tsocket_address_inet_addr_string(const struct tsocket_address *addr,
TALLOC_CTX *mem_ctx);

View File

@ -294,6 +294,43 @@ ssize_t tsocket_address_bsd_sockaddr(const struct tsocket_address *addr,
return sa_socklen;
}
bool tsocket_address_is_inet(const struct tsocket_address *addr, const char *fam)
{
struct tsocket_address_bsd *bsda = talloc_get_type(addr->private_data,
struct tsocket_address_bsd);
if (!bsda) {
return false;
}
switch (bsda->u.sa.sa_family) {
case AF_INET:
if (strcasecmp(fam, "ip") == 0) {
return true;
}
if (strcasecmp(fam, "ipv4") == 0) {
return true;
}
return false;
#ifdef HAVE_IPV6
case AF_INET6:
if (strcasecmp(fam, "ip") == 0) {
return true;
}
if (strcasecmp(fam, "ipv6") == 0) {
return true;
}
return false;
#endif
}
return false;
}
int _tsocket_address_inet_from_strings(TALLOC_CTX *mem_ctx,
const char *fam,
const char *addr,