On 24-Jun-99 Sheldon Hearn wrote:
> 
> 
> On Thu, 24 Jun 1999 01:53:32 MST, Doug wrote:
> 
>> As long as you acknowledge that in this case, "You can't have it" is a
>> design decision, and not everyone agrees with your concept of the design.
>> Personally I don't care enough about it to write the patch, but that won't
>> stop me from registering an objection since you seem to be assuming that
>> silence == assent.
> 
> You're right. If I make my intentions publically known and nobody
> objects, I assume public agreement. So I acknowledge that we're involved
> in design decisions here.
> 
>> You need to start thinking of things in terms of the much more common
>> case, the casual user who will be going from say, 3.0-Release to
>> 3.3-Release without reading any of the documentation.
> 
> You're making assumptions about what I'm trying to achieve. I'm quite
> sensitive to upgrade issues.
> 
>> Why should this user have to either go out of his way to fix something
>> that wasn't broken, or find a critical service disabled when he
>> reboots just because no one could be bothered to make the new
>> interface compatible?
> 
> Okay, this is what makes sense. :-)
> 
> I do agree that it should be as easy as possible to upgrade from
> 3.2-RELEASE to 3.3-RELEASE. What you need to see is that such an upgrade
> _will_ involve changing some things, which is why we offer people
> release notes. What we're discussing (and have up until now disagreed
> on) is how much has to change.
> 
> Since none of the people who've suggested per-case exclusion options
> for wrapping have come up with diffs, it's something I'll have to think
> about. If I can come up with something backward compatible without
> rupturing a testicle, I'll do so.
> 
> Watch this space for details. :-)

Ok.  since you asked:

Here's one possibility,  it adds a a wrap/nowrap field that goes beside the
wait/nowait field, so you would have:

ftp     stream  tcp     nowait  wrap root       /usr/libexec/ftpd       ftpd -l

as an example of ftp being wrapped. here's the patch to inetd.c (against
-stable, which is all I have at the moment):


Index: inetd.c
===================================================================
RCS file: /usr/cvs/src/usr.sbin/inetd/inetd.c,v
retrieving revision 1.46.2.2
diff -u -r1.46.2.2 inetd.c
--- inetd.c     1999/05/12 07:02:02     1.46.2.2
+++ inetd.c     1999/06/24 23:36:24
@@ -73,6 +73,7 @@
  *     socket type                     stream/dgram/raw/rdm/seqpacket
  *     protocol                        must be in /etc/protocols
  *     wait/nowait                     single-threaded/multi-threaded
+ *     wrap/nowrap                     wrapped or not
  *     user                            user to run daemon as
  *     server program                  full path name
  *     server program arguments        maximum of MAXARGS (20)
@@ -97,6 +98,7 @@
  *     socket type                     stream/dgram/raw/rdm/seqpacket
  *     protocol                        must be in /etc/protocols
  *     wait/nowait                     single-threaded/multi-threaded
+ *     wrap/nowrap                     wrapped or not
  *     user                            user to run daemon as
  *     server program                  full path name
  *     server program arguments        maximum of MAXARGS
@@ -215,6 +217,9 @@
        u_char  se_type;                /* type: normal, mux, or mux+ */
        u_char  se_checked;             /* looked at during merge */
        u_char  se_accept;              /* i.e., wait/nowait mode */
+#ifdef LIBWRAP_INTERNAL
+        u_char  se_wrap;                /* wrap/nowrap mode */
+#endif
        u_char  se_rpc;                 /* ==1 if RPC service */
        int     se_rpc_prog;            /* RPC program number */
        u_int   se_rpc_lowvers;         /* RPC low version */
@@ -621,6 +626,8 @@
 #ifdef LIBWRAP
 #ifndef LIBWRAP_INTERNAL
                            if (sep->se_bi == 0)
+#else
+                            if (sep->se_wrap)
 #endif
                            if (sep->se_accept
                                && sep->se_socktype == SOCK_STREAM) {
@@ -905,6 +912,9 @@
                              }
                        }
                        sep->se_accept = new->se_accept;
+#ifdef LIBWRAP_INTERNAL
+                       sep->se_wrap = new->se_wrap;
+#endif
                        SWAP(sep->se_user, new->se_user);
                        SWAP(sep->se_group, new->se_group);
 #ifdef LOGIN_CAP
@@ -1377,6 +1387,19 @@
                        goto more;
                }
        }
+#ifdef LIBWRAP_INTERNAL
+       arg = sskip(&cp);
+       if (!strncmp(arg, "wrap", 4))
+               sep->se_wrap = 1;
+        else if (!strncmp(arg, "nowrap", 6))
+                sep->se_wrap = 0;
+        else {
+                syslog(LOG_ERR,
+                        "%s: bad wrap/nowrap for services %s",
+                       CONFIG, sep->se_service);
+               goto more;
+       }
+#endif
        sep->se_user = newstr(sskip(&cp));
 #ifdef LOGIN_CAP
        if ((s = strrchr(sep->se_user, '/')) != NULL) {

I've tested this on my -stable box and it worked.  My world is from almost a
month ago though..  I've been having problems cvsup'ing, so I don't have any
more recent -stable sources, sorry.  If you don't like the wrap/nowrap field,
then I'll try adn think up another way to do this (maybe
wait/nowait/wait-wrap/nowait-wrap ?), as I realize that this would make older
inetd.conf files out of date.

> Cia,
> Sheldon.

---

John Baldwin <[EMAIL PROTECTED]> -- http://members.freedomnet.com/~jbaldwin/
PGP Key: http://members.freedomnet.com/~jbaldwin/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.freebsd.org


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to