diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-04-27 10:34:15 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-04-27 13:00:24 +0200 |
commit | e1596bbf27ee636d8ab47e39eda21c64ef49b671 (patch) | |
tree | 1ffe8c48bfb3b537680b3e27aba48bc6d5aaf719 /lib/tsocket/tsocket_bsd.c | |
parent | 3dd50b29228994c8dd5162cb300d234316126586 (diff) | |
download | samba-e1596bbf27ee636d8ab47e39eda21c64ef49b671.tar.gz samba-e1596bbf27ee636d8ab47e39eda21c64ef49b671.tar.xz samba-e1596bbf27ee636d8ab47e39eda21c64ef49b671.zip |
lib/tsocket: add tsocket_address_is_inet() function
metze
Diffstat (limited to 'lib/tsocket/tsocket_bsd.c')
-rw-r--r-- | lib/tsocket/tsocket_bsd.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c index 43defb30c80..5adf9214c8e 100644 --- a/lib/tsocket/tsocket_bsd.c +++ b/lib/tsocket/tsocket_bsd.c @@ -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, |