[699] in Kerberos-V5-bugs
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");