[699] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

KDC should allow port to be specified on the command line

daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Fri Sep 2 11:30:31 1994

Date: Fri, 2 Sep 1994 11:31:47 -0400
From: "Jonathan I. Kamens" <jik@cam.ov.com>
To: krb5-bugs@MIT.EDU

--- /afs/gza.com/development/krb5.beta4/src/kdc/extern.c	Tue Aug 31 23:03:25 1993
+++ extern.c	Fri Sep  2 11:27:47 1994
@@ -60,3 +60,5 @@
 
 static krb5_data tgs_data[3] = { {KRB5_TGS_NAME_SIZE, KRB5_TGS_NAME}, {0, 0}};
 krb5_principal_data tgs_server_struct = { { 0, 0}, tgs_data, 2, 0};
+
+short primary_port = 0;
--- /afs/gza.com/development/krb5.beta4/src/kdc/extern.h	Tue Aug 31 23:03:26 1993
+++ extern.h	Fri Sep  2 11:28:01 1994
@@ -51,4 +51,6 @@
 extern krb5_principal_data tgs_server_struct;
 #define	tgs_server (&tgs_server_struct)
 
+extern short primary_port;
+
 #endif /* __KRB5_KDC_EXTERN__ */
--- /afs/gza.com/development/krb5.beta4/src/kdc/main.c	Wed Jun 29 01:33:35 1994
+++ main.c	Fri Sep  2 11:28:35 1994
@@ -138,7 +138,7 @@
 usage(name)
 char *name;
 {
-    fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterkeytype] [-M masterkeyname]\n", name);
+    fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterkeytype] [-M masterkeyname] [-p port]\n", name);
     return;
 }
 
@@ -160,7 +160,7 @@
 
     extern char *optarg;
 
-    while ((c = getopt(argc, argv, "r:d:mM:k:R:")) != EOF) {
+    while ((c = getopt(argc, argv, "r:d:mM:k:R:p")) != EOF) {
 	switch(c) {
 	case 'r':			/* realm name for db */
 	    db_realm = optarg;
@@ -180,6 +180,9 @@
 	    break;
 	case 'R':
 	    rcname = optarg;
+	    break;
+	case 'p':
+	    primary_port = atoi(optarg);
 	    break;
 	case '?':
 	default:
--- /afs/gza.com/development/krb5.beta4/src/kdc/network.c	Mon Jun 13 02:32:24 1994
+++ network.c	Fri Sep  2 11:29:48 1994
@@ -70,19 +70,24 @@
 
     FD_ZERO(&select_fds);
     select_nfsd = 0;
-    sp = getservbyname(krb5_kdc_udp_portname, "udp");
-    if (!sp) {
-	com_err(prog, 0, "%s/udp service unknown\n",
-		krb5_kdc_udp_portname);
-	return KDC5_NOPORT;
+    memset((char *)&sin, 0, sizeof(sin));
+    if (primary_port) {
+	sin.sin_port = htons(primary_port);
     }
-    if ((udp_port_fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
-	retval = errno;
-	com_err(prog, 0, "Cannot create server socket");
-	return retval;
+    else {
+	sp = getservbyname(krb5_kdc_udp_portname, "udp");
+	if (!sp) {
+	    com_err(prog, 0, "%s/udp service unknown\n",
+		    krb5_kdc_udp_portname);
+	    return KDC5_NOPORT;
+	}
+	if ((udp_port_fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
+	    retval = errno;
+	    com_err(prog, 0, "Cannot create server socket");
+	    return retval;
+	}
+	sin.sin_port = sp->s_port;
     }
-    memset((char *)&sin, 0, sizeof(sin));
-    sin.sin_port = sp->s_port;
     if (bind(udp_port_fd, (struct sockaddr *)&sin, sizeof(sin)) == -1) {
 	retval = errno;
 	com_err(prog, 0, "Cannot bind server socket");

home help back first fref pref prev next nref lref last post