summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-04-19 15:34:36 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-04-19 15:34:36 +0000
commit0f070b5ac768dc4acc62d8e6908c2835c1bdcdaa (patch)
tree4ea5bb02d470629f9174aeab5c73a54ceaca689d /src/lib
parent9e1c6b6a51314d66edd7364500d9114576041a91 (diff)
downloadkrb5-0f070b5ac768dc4acc62d8e6908c2835c1bdcdaa.tar.gz
krb5-0f070b5ac768dc4acc62d8e6908c2835c1bdcdaa.tar.xz
krb5-0f070b5ac768dc4acc62d8e6908c2835c1bdcdaa.zip
remove kludged port #
code better udp support git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@520 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/os/locate_kdc.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/lib/krb5/os/locate_kdc.c b/src/lib/krb5/os/locate_kdc.c
index 6cc27221c..4094b9ac4 100644
--- a/src/lib/krb5/os/locate_kdc.c
+++ b/src/lib/krb5/os/locate_kdc.c
@@ -27,18 +27,19 @@ static char rcsid_locate_kdc_c[] =
#include <sys/socket.h>
#ifdef KRB5_USE_INET
#include <netinet/in.h>
-#define KRB5_UDP_PORT htons(8973) /* XXX */
#endif
#include <netdb.h>
#include "os-proto.h"
+extern char *krb5_kdc_udp_portname;
+
/*
* returns count of number of addresses found
*/
krb5_error_code
krb5_locate_kdc(realm, addr_pp, naddrs)
- krb5_data *realm;
+ const krb5_data *realm;
struct sockaddr **addr_pp;
int *naddrs;
{
@@ -48,12 +49,21 @@ krb5_locate_kdc(realm, addr_pp, naddrs)
struct sockaddr *addr_p;
struct sockaddr_in *sin_p;
struct hostent *hp;
-
+ struct servent *sp;
+#ifdef KRB5_USE_INET
+ u_short udpport = 0; /* 0 is an invalid UDP port #. */
+#endif
+
hostlist = 0;
if (code = krb5_get_krbhst (realm, &hostlist))
return(code);
+#ifdef KRB5_USE_INET
+ if (sp = getservbyname(krb5_kdc_udp_portname, "udp"))
+ udpport = sp->s_port;
+#endif
+
for (i=0; hostlist[i]; i++)
;
count = i;
@@ -71,11 +81,12 @@ krb5_locate_kdc(realm, addr_pp, naddrs)
switch (hp->h_addrtype) {
#ifdef KRB5_USE_INET
case AF_INET:
+ if (udpport) /* must have gotten a port # */
for (j=0; hp->h_addr_list[j]; j++) {
sin_p = (struct sockaddr_in *) &addr_p[out++];
memset ((char *)sin_p, sizeof(struct sockaddr), 0);
sin_p->sin_family = hp->h_addrtype;
- sin_p->sin_port = KRB5_UDP_PORT;
+ sin_p->sin_port = udpport;
memcpy((char *)&sin_p->sin_addr,
(char *)hp->h_addr_list[j],
sizeof(struct in_addr));