diff options
author | Volker Lendecke <vl@samba.org> | 2011-09-26 16:28:05 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2011-09-26 16:48:43 +0200 |
commit | 01eb3136b6e22adf1860deabba5232a82644388b (patch) | |
tree | c8b38aa3e0ee9dfb0811ab9bfc155ba54d513a28 /source3/libads | |
parent | b35d80aa38dcfc28ea067d924152ebd9b72d895c (diff) | |
download | samba-01eb3136b6e22adf1860deabba5232a82644388b.tar.gz samba-01eb3136b6e22adf1860deabba5232a82644388b.tar.bz2 samba-01eb3136b6e22adf1860deabba5232a82644388b.zip |
s3: Slightly simplify print_kdc_line()
No code change except for an early "return talloc_asprintf(..)" making an else
branch obsolete.
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/kerberos.c | 101 |
1 files changed, 52 insertions, 49 deletions
diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c index a64e729e7c..da86e25dfd 100644 --- a/source3/libads/kerberos.c +++ b/source3/libads/kerberos.c @@ -669,59 +669,62 @@ static char *print_kdc_line(char *mem_ctx, const char *kdc_name) { char *kdc_str = NULL; + char addr[INET6_ADDRSTRLEN]; + uint16_t port = get_sockaddr_port(pss); if (pss->ss_family == AF_INET) { - kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", - prev_line, - print_canonical_sockaddr(mem_ctx, pss)); + return talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", + prev_line, + print_canonical_sockaddr(mem_ctx, pss)); + } + + /* + * IPv6 starts here + */ + + DEBUG(10, ("print_kdc_line: IPv6 case for kdc_name: %s, port: %d\n", + kdc_name, port)); + + if (port != 0 && port != DEFAULT_KRB5_PORT) { + /* Currently for IPv6 we can't specify a non-default + krb5 port with an address, as this requires a ':'. + Resolve to a name. */ + char hostname[MAX_DNS_NAME_LENGTH]; + int ret = sys_getnameinfo((const struct sockaddr *)pss, + sizeof(*pss), + hostname, sizeof(hostname), + NULL, 0, + NI_NAMEREQD); + if (ret) { + DEBUG(0,("print_kdc_line: can't resolve name " + "for kdc with non-default port %s. " + "Error %s\n.", + print_canonical_sockaddr(mem_ctx, pss), + gai_strerror(ret))); + return NULL; + } + /* Success, use host:port */ + kdc_str = talloc_asprintf(mem_ctx, + "%s\tkdc = %s:%u\n", + prev_line, + hostname, + (unsigned int)port); } else { - char addr[INET6_ADDRSTRLEN]; - uint16_t port = get_sockaddr_port(pss); - - DEBUG(10,("print_kdc_line: IPv6 case for kdc_name: %s, port: %d\n", - kdc_name, port)); - - if (port != 0 && port != DEFAULT_KRB5_PORT) { - /* Currently for IPv6 we can't specify a non-default - krb5 port with an address, as this requires a ':'. - Resolve to a name. */ - char hostname[MAX_DNS_NAME_LENGTH]; - int ret = sys_getnameinfo((const struct sockaddr *)pss, - sizeof(*pss), - hostname, sizeof(hostname), - NULL, 0, - NI_NAMEREQD); - if (ret) { - DEBUG(0,("print_kdc_line: can't resolve name " - "for kdc with non-default port %s. " - "Error %s\n.", - print_canonical_sockaddr(mem_ctx, pss), - gai_strerror(ret))); - return NULL; - } - /* Success, use host:port */ - kdc_str = talloc_asprintf(mem_ctx, - "%s\tkdc = %s:%u\n", - prev_line, - hostname, - (unsigned int)port); - } else { - /* no krb5 lib currently supports "kdc = ipv6 address" - * at all, so just fill in just the kdc_name if we have - * it and let the krb5 lib figure out the appropriate - * ipv6 address - gd */ - - if (kdc_name) { - kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", - prev_line, kdc_name); - } else { - kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", - prev_line, - print_sockaddr(addr, - sizeof(addr), - pss)); - } + /* no krb5 lib currently supports "kdc = ipv6 address" + * at all, so just fill in just the kdc_name if we have + * it and let the krb5 lib figure out the appropriate + * ipv6 address - gd */ + + if (kdc_name) { + kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", + prev_line, kdc_name); + } else { + kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", + prev_line, + print_sockaddr(addr, + sizeof(addr), + pss)); } } return kdc_str; |