add the documented option --port
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14964 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -64,7 +64,7 @@ make_signal_socket (krb5_context context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
make_listen_socket (krb5_context context)
|
make_listen_socket (krb5_context context, const char *port_str)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int one = 1;
|
int one = 1;
|
||||||
@@ -76,8 +76,24 @@ make_listen_socket (krb5_context context)
|
|||||||
setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(one));
|
setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(one));
|
||||||
memset (&addr, 0, sizeof(addr));
|
memset (&addr, 0, sizeof(addr));
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
|
|
||||||
|
if (port_str) {
|
||||||
addr.sin_port = krb5_getportbyname (context,
|
addr.sin_port = krb5_getportbyname (context,
|
||||||
IPROP_SERVICE, "tcp", IPROP_PORT);
|
port_str, "tcp",
|
||||||
|
0);
|
||||||
|
if (addr.sin_port == 0) {
|
||||||
|
char *ptr;
|
||||||
|
long port;
|
||||||
|
|
||||||
|
port = strtol (port_str, &ptr, 10);
|
||||||
|
if (port == 0 && ptr == port_str)
|
||||||
|
krb5_errx (context, 1, "bad port `%s'", port_str);
|
||||||
|
addr.sin_port = htons(port);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addr.sin_port = krb5_getportbyname (context, IPROP_SERVICE,
|
||||||
|
"tcp", IPROP_PORT);
|
||||||
|
}
|
||||||
if(bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
if(bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||||
krb5_err (context, 1, errno, "bind");
|
krb5_err (context, 1, errno, "bind");
|
||||||
if (listen(fd, SOMAXCONN) < 0)
|
if (listen(fd, SOMAXCONN) < 0)
|
||||||
@@ -588,6 +604,7 @@ static int help_flag;
|
|||||||
static char *keytab_str = "HDB:";
|
static char *keytab_str = "HDB:";
|
||||||
static char *database;
|
static char *database;
|
||||||
static char *config_file;
|
static char *config_file;
|
||||||
|
static char *port_str;
|
||||||
#ifdef HAVE_DAEMON
|
#ifdef HAVE_DAEMON
|
||||||
static int detach_from_console = 0;
|
static int detach_from_console = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -604,6 +621,8 @@ static struct getargs args[] = {
|
|||||||
"time before slave is polled for presence", "time"},
|
"time before slave is polled for presence", "time"},
|
||||||
{ "time-gone", 0, arg_string, &slave_time_gone,
|
{ "time-gone", 0, arg_string, &slave_time_gone,
|
||||||
"time of inactivity after which a slave is considered gone", "time"},
|
"time of inactivity after which a slave is considered gone", "time"},
|
||||||
|
{ "port", 0, arg_string, &port_str,
|
||||||
|
"port ipropd will listen too", "port"},
|
||||||
#ifdef HAVE_DAEMON
|
#ifdef HAVE_DAEMON
|
||||||
{ "detach", 0, arg_flag, &detach_from_console,
|
{ "detach", 0, arg_flag, &detach_from_console,
|
||||||
"detach from console" },
|
"detach from console" },
|
||||||
@@ -695,7 +714,7 @@ main(int argc, char **argv)
|
|||||||
server_context->log_context.log_file);
|
server_context->log_context.log_file);
|
||||||
|
|
||||||
signal_fd = make_signal_socket (context);
|
signal_fd = make_signal_socket (context);
|
||||||
listen_fd = make_listen_socket (context);
|
listen_fd = make_listen_socket (context, port_str);
|
||||||
|
|
||||||
signal (SIGPIPE, SIG_IGN);
|
signal (SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
|
@@ -40,7 +40,8 @@ static char *server_time_lost = "5 min";
|
|||||||
static int time_before_lost;
|
static int time_before_lost;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
connect_to_master (krb5_context context, const char *master)
|
connect_to_master (krb5_context context, const char *master,
|
||||||
|
const char *port_str)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
@@ -51,8 +52,23 @@ connect_to_master (krb5_context context, const char *master)
|
|||||||
krb5_err (context, 1, errno, "socket AF_INET");
|
krb5_err (context, 1, errno, "socket AF_INET");
|
||||||
memset (&addr, 0, sizeof(addr));
|
memset (&addr, 0, sizeof(addr));
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
|
if (port_str) {
|
||||||
addr.sin_port = krb5_getportbyname (context,
|
addr.sin_port = krb5_getportbyname (context,
|
||||||
IPROP_SERVICE, "tcp", IPROP_PORT);
|
port_str, "tcp",
|
||||||
|
0);
|
||||||
|
if (addr.sin_port == 0) {
|
||||||
|
char *ptr;
|
||||||
|
long port;
|
||||||
|
|
||||||
|
port = strtol (port_str, &ptr, 10);
|
||||||
|
if (port == 0 && ptr == port_str)
|
||||||
|
krb5_errx (context, 1, "bad port `%s'", port_str);
|
||||||
|
addr.sin_port = htons(port);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addr.sin_port = krb5_getportbyname (context, IPROP_SERVICE,
|
||||||
|
"tcp", IPROP_PORT);
|
||||||
|
}
|
||||||
he = roken_gethostbyname (master);
|
he = roken_gethostbyname (master);
|
||||||
if (he == NULL)
|
if (he == NULL)
|
||||||
krb5_errx (context, 1, "gethostbyname: %s", hstrerror(h_errno));
|
krb5_errx (context, 1, "gethostbyname: %s", hstrerror(h_errno));
|
||||||
@@ -348,6 +364,7 @@ static char *realm;
|
|||||||
static int version_flag;
|
static int version_flag;
|
||||||
static int help_flag;
|
static int help_flag;
|
||||||
static char *keytab_str;
|
static char *keytab_str;
|
||||||
|
static char *port_str;
|
||||||
#ifdef HAVE_DAEMON
|
#ifdef HAVE_DAEMON
|
||||||
static int detach_from_console = 0;
|
static int detach_from_console = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -359,6 +376,8 @@ static struct getargs args[] = {
|
|||||||
"keytab to get authentication from", "kspec" },
|
"keytab to get authentication from", "kspec" },
|
||||||
{ "time-lost", 0, arg_string, &server_time_lost,
|
{ "time-lost", 0, arg_string, &server_time_lost,
|
||||||
"time before server is considered lost", "time" },
|
"time before server is considered lost", "time" },
|
||||||
|
{ "port", 0, arg_string, &port_str,
|
||||||
|
"port ipropd-slave will connect to", "port"},
|
||||||
#ifdef HAVE_DAEMON
|
#ifdef HAVE_DAEMON
|
||||||
{ "detach", 0, arg_flag, &detach_from_console,
|
{ "detach", 0, arg_flag, &detach_from_console,
|
||||||
"detach from console" },
|
"detach from console" },
|
||||||
@@ -460,7 +479,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
get_creds(context, keytab_str, &ccache, master);
|
get_creds(context, keytab_str, &ccache, master);
|
||||||
|
|
||||||
master_fd = connect_to_master (context, master);
|
master_fd = connect_to_master (context, master, port_str);
|
||||||
|
|
||||||
ret = krb5_sname_to_principal (context, master, IPROP_NAME,
|
ret = krb5_sname_to_principal (context, master, IPROP_NAME,
|
||||||
KRB5_NT_SRV_HST, &server);
|
KRB5_NT_SRV_HST, &server);
|
||||||
|
Reference in New Issue
Block a user