|
@@ -1,112 +0,0 @@
|
|
|
-Upstream-Status: Pending [from other distro Debian]
|
|
|
-
|
|
|
-From f44b218ccc779ab3f4aed072390ccf129d94b58d Mon Sep 17 00:00:00 2001
|
|
|
-From: David Madore <david@pleiades.stars>
|
|
|
-Date: Mon, 24 Mar 2008 12:45:36 +0100
|
|
|
-Subject: [PATCH] xinetd should be able to listen on IPv6 even in -inetd_compat mode
|
|
|
-
|
|
|
-xinetd does not bind to IPv6 addresses (and does not seem to have an
|
|
|
-option to do so) when used in -inetd_compat mode. As current inetd's
|
|
|
-are IPv6-aware, this is a problem: this means xinetd cannot be used as
|
|
|
-a drop-in inetd replacement.
|
|
|
-
|
|
|
-The attached patch is a suggestion: it adds a -inetd_ipv6 global
|
|
|
-option that, if used, causes inetd-compatibility lines to have an
|
|
|
-implicit "IPv6" option. Perhaps this is not the best solution, but
|
|
|
-there should definitely be a way to get inetd.conf to be read in
|
|
|
-IPv6-aware mode.
|
|
|
----
|
|
|
- xinetd/confparse.c | 1 +
|
|
|
- xinetd/inet.c | 17 +++++++++++++++++
|
|
|
- xinetd/options.c | 3 +++
|
|
|
- xinetd/xinetd.man | 6 ++++++
|
|
|
- 4 files changed, 27 insertions(+), 0 deletions(-)
|
|
|
-
|
|
|
-diff --git a/xinetd/confparse.c b/xinetd/confparse.c
|
|
|
-index db9f431..d7b0bcc 100644
|
|
|
---- a/xinetd/confparse.c
|
|
|
-+++ b/xinetd/confparse.c
|
|
|
-@@ -40,6 +40,7 @@
|
|
|
- #include "inet.h"
|
|
|
- #include "main.h"
|
|
|
-
|
|
|
-+extern int inetd_ipv6;
|
|
|
- extern int inetd_compat;
|
|
|
-
|
|
|
- /*
|
|
|
-diff --git a/xinetd/inet.c b/xinetd/inet.c
|
|
|
-index 8caab45..2e617ae 100644
|
|
|
---- a/xinetd/inet.c
|
|
|
-+++ b/xinetd/inet.c
|
|
|
-@@ -25,6 +25,8 @@
|
|
|
-
|
|
|
- static psi_h iter ;
|
|
|
-
|
|
|
-+extern int inetd_ipv6;
|
|
|
-+
|
|
|
- static int get_next_inet_entry( int fd, pset_h sconfs,
|
|
|
- struct service_config *defaults);
|
|
|
-
|
|
|
-@@ -360,6 +362,21 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
|
|
|
- }
|
|
|
- SC_SERVER_ARGV(scp)[u] = p;
|
|
|
- }
|
|
|
-+
|
|
|
-+ /* Set the IPv6 flag if we were passed the -inetd_ipv6 option */
|
|
|
-+ if ( inetd_ipv6 )
|
|
|
-+ {
|
|
|
-+ nvp = nv_find_value( service_flags, "IPv6" );
|
|
|
-+ if ( nvp == NULL )
|
|
|
-+ {
|
|
|
-+ parsemsg( LOG_WARNING, func, "inetd.conf - Bad foo %s", name ) ;
|
|
|
-+ pset_destroy(args);
|
|
|
-+ sc_free(scp);
|
|
|
-+ return -1;
|
|
|
-+ }
|
|
|
-+ M_SET(SC_XFLAGS(scp), nvp->value);
|
|
|
-+ }
|
|
|
-+
|
|
|
- /* Set the reuse flag, as this is the default for inetd */
|
|
|
- nvp = nv_find_value( service_flags, "REUSE" );
|
|
|
- if ( nvp == NULL )
|
|
|
-diff --git a/xinetd/options.c b/xinetd/options.c
|
|
|
-index b058b6a..dc2f3a0 100644
|
|
|
---- a/xinetd/options.c
|
|
|
-+++ b/xinetd/options.c
|
|
|
-@@ -30,6 +30,7 @@ int logprocs_option ;
|
|
|
- unsigned logprocs_option_arg ;
|
|
|
- int stayalive_option=0;
|
|
|
- char *program_name ;
|
|
|
-+int inetd_ipv6 = 0 ;
|
|
|
- int inetd_compat = 0 ;
|
|
|
- int dont_fork = 0;
|
|
|
-
|
|
|
-@@ -128,6 +129,8 @@ int opt_recognize( int argc, char *argv[] )
|
|
|
- fprintf(stderr, "\n");
|
|
|
- exit(0);
|
|
|
- }
|
|
|
-+ else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_ipv6" ) == 0 )
|
|
|
-+ inetd_ipv6 = 1;
|
|
|
- else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_compat" ) == 0 )
|
|
|
- inetd_compat = 1;
|
|
|
- }
|
|
|
-diff --git a/xinetd/xinetd.man b/xinetd/xinetd.man
|
|
|
-index c76c3c6..c9dd803 100644
|
|
|
---- a/xinetd/xinetd.man
|
|
|
-+++ b/xinetd/xinetd.man
|
|
|
-@@ -106,6 +106,12 @@ This option causes xinetd to read /etc/inetd.conf in addition to the
|
|
|
- standard xinetd config files. /etc/inetd.conf is read after the
|
|
|
- standard xinetd config files.
|
|
|
- .TP
|
|
|
-+.BI \-inetd_ipv6
|
|
|
-+This option causes xinetd to bind to IPv6 (AF_INET6) addresses for
|
|
|
-+inetd compatibility lines (see previous option). This only affects
|
|
|
-+how /etc/inetd.conf is interpreted and thus only has any effect if
|
|
|
-+the \-inetd_compat option is also used.
|
|
|
-+.TP
|
|
|
- .BI \-cc " interval"
|
|
|
- This option instructs
|
|
|
- .B xinetd
|
|
|
---
|
|
|
-1.5.5.rc0.127.gb4337
|
|
|
-
|