summaryrefslogtreecommitdiffstats
path: root/src/kdc/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdc/main.c')
-rw-r--r--src/kdc/main.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/kdc/main.c b/src/kdc/main.c
index 5fca363e5f..80976c0910 100644
--- a/src/kdc/main.c
+++ b/src/kdc/main.c
@@ -577,7 +577,7 @@ void
usage(name)
char *name;
{
- fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterenctype] [-M masterkeyname] [-p port] [-n]\n", name);
+ fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterenctype] [-M masterkeyname] [-p port] [-4 v4mode] [-n]\n", name);
return;
}
@@ -599,6 +599,9 @@ initialize_realms(kcontext, argc, argv)
char *default_ports = 0;
krb5_pointer aprof;
const char *hierarchy[3];
+#ifdef KRB5_KRB4_COMPAT
+ char *v4mode = 0;
+#endif
extern char *optarg;
if (!krb5_aprof_init(DEFAULT_KDC_PROFILE, KDC_PROFILE_ENV, &aprof)) {
@@ -607,18 +610,22 @@ initialize_realms(kcontext, argc, argv)
hierarchy[2] = (char *) NULL;
if (krb5_aprof_get_string(aprof, hierarchy, TRUE, &default_ports))
default_ports = 0;
+#ifdef KRB5_KRB4_COMPAT
+ hierarchy[1] = "v4_mode";
+ if (krb5_aprof_get_string(aprof, hierarchy, TRUE, &v4mode))
+ v4mode = 0;
+#endif
/* aprof_init can return 0 with aprof == NULL */
if (aprof)
krb5_aprof_finish(aprof);
}
if (default_ports == 0)
default_ports = strdup(DEFAULT_KDC_PORTLIST);
-
/*
* Loop through the option list. Each time we encounter a realm name,
* use the previously scanned options to fill in for defaults.
*/
- while ((c = getopt(argc, argv, "r:d:mM:k:R:e:p:s:n")) != EOF) {
+ while ((c = getopt(argc, argv, "r:d:mM:k:R:e:p:s:n4:")) != EOF) {
switch(c) {
case 'r': /* realm name for db */
if (!find_realm_data(optarg, (krb5_ui_4) strlen(optarg))) {
@@ -661,6 +668,13 @@ initialize_realms(kcontext, argc, argv)
free(default_ports);
default_ports = strdup(optarg);
break;
+ case '4':
+#ifdef KRB5_KRB4_COMPAT
+ if (v4mode)
+ free(v4mode);
+ v4mode = strdup(optarg);
+#endif
+ break;
case '?':
default:
usage(argv[0]);
@@ -668,6 +682,13 @@ initialize_realms(kcontext, argc, argv)
}
}
+#ifdef KRB5_KRB4_COMPAT
+ /*
+ * Setup the v4 mode
+ */
+ process_v4_mode(argv[0], v4mode);
+#endif
+
/*
* Check to see if we processed any realms.
*/