]> andersk Git - openssh.git/blobdiff - servconf.c
- dtucker@cvs.openbsd.org 2006/07/17 12:06:00
[openssh.git] / servconf.c
index 330e7914310d80a3696efc7af1e34609247f4330..4f5cb19db0c477a2a4eba523cb88ce782fd91f90 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: servconf.c,v 1.155 2006/07/17 01:31:09 stevesk Exp $ */
+/* $OpenBSD: servconf.c,v 1.156 2006/07/17 12:06:00 dtucker Exp $ */
 /*
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
@@ -31,6 +31,7 @@
 #include "kex.h"
 #include "mac.h"
 #include "match.h"
+#include "channels.h"
 
 static void add_listen_addr(ServerOptions *, char *, u_short);
 static void add_one_listen_addr(ServerOptions *, char *, u_short);
@@ -281,7 +282,7 @@ typedef enum {
        sHostbasedUsesNameFromPacketOnly, sClientAliveInterval,
        sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2,
        sGssAuthentication, sGssCleanupCreds, sAcceptEnv, sPermitTunnel,
-       sMatch,
+       sMatch, sPermitOpen,
        sUsePrivilegeSeparation,
        sDeprecated, sUnsupported
 } ServerOpCodes;
@@ -390,6 +391,8 @@ static struct {
        { "useprivilegeseparation", sUsePrivilegeSeparation, SSHCFG_GLOBAL },
        { "acceptenv", sAcceptEnv, SSHCFG_GLOBAL },
        { "permittunnel", sPermitTunnel, SSHCFG_GLOBAL },
+       { "match", sMatch, SSHCFG_ALL },
+       { "permitopen", sPermitOpen, SSHCFG_ALL },
        { NULL, sBadOption, 0 }
 };
 
@@ -1148,6 +1151,28 @@ parse_flag:
                *activep = value;
                break;
 
+       case sPermitOpen:
+               arg = strdelim(&cp);
+               if (!arg || *arg == '\0')
+                       fatal("%s line %d: missing PermitOpen specification",
+                           filename, linenum);
+               if (strcmp(arg, "any") == 0) {
+                       if (*activep)
+                               channel_clear_adm_permitted_opens();
+                       break;
+               }
+               p = hpdelim(&arg);
+               if (p == NULL)
+                       fatal("%s line %d: missing host in PermitOpen",
+                           filename, linenum);
+               p = cleanhostname(p);
+               if (arg == NULL || (port = a2port(arg)) == 0)
+                       fatal("%s line %d: bad port number in PermitOpen",
+                           filename, linenum);
+               if (*activep)
+                       channel_add_adm_permitted_opens(p, port);
+               break;
+
        case sDeprecated:
                logit("%s line %d: Deprecated option %s",
                    filename, linenum, arg);
This page took 0.044663 seconds and 4 git commands to generate.