1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* 2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Dropbear - a SSH2 server 3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Copyright (c) 2002,2003 Matt Johnston 5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * All rights reserved. 6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Permission is hereby granted, free of charge, to any person obtaining a copy 8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * of this software and associated documentation files (the "Software"), to deal 9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * in the Software without restriction, including without limitation the rights 10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * copies of the Software, and to permit persons to whom the Software is 12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * furnished to do so, subject to the following conditions: 13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * The above copyright notice and this permission notice shall be included in 15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * all copies or substantial portions of the Software. 16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * SOFTWARE. */ 24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifndef _RUNOPTS_H_ 26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#define _RUNOPTS_H_ 27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "includes.h" 29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "signkey.h" 30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "buffer.h" 31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "auth.h" 32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "tcpfwd.h" 33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projecttypedef struct runopts { 35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#if defined(ENABLE_SVR_REMOTETCPFWD) || defined(ENABLE_CLI_LOCALTCPFWD) 37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int listen_fwd_all; 38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} runopts; 41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern runopts opts; 43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 44f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint readhostkey(const char * filename, sign_key * hostkey, int *type); 45f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 46f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projecttypedef struct svr_runopts { 47f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 48f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char * rsakeyfile; 49f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char * dsskeyfile; 50f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char * bannerfile; 51f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 52f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int forkbg; 53f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int usingsyslog; 54f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 55f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ports is an array of the portcount listening ports */ 56f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *ports[DROPBEAR_MAX_PORTS]; 57f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned int portcount; 58f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *addresses[DROPBEAR_MAX_PORTS]; 59f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 60f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int inetdmode; 61f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 62f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* Flags indicating whether to use ipv4 and ipv6 */ 63f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* not used yet 64f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int ipv4; 65f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int ipv6; 66f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 67f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 68f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef DO_MOTD 69f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* whether to print the MOTD */ 70f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int domotd; 71f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 72f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 73f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int norootlogin; 74f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 75f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int noauthpass; 76f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int norootpass; 77f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 78f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef ENABLE_SVR_REMOTETCPFWD 79f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int noremotetcp; 80f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 81f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef ENABLE_SVR_LOCALTCPFWD 82f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int nolocaltcp; 83f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 84f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 85f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project sign_key *hostkey; 86f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project buffer * banner; 87f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char * pidfile; 88f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 89f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} svr_runopts; 90f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 91f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern svr_runopts svr_opts; 92f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 93f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectvoid svr_getopts(int argc, char ** argv); 94f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectvoid loadhostkeys(); 95f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 96f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projecttypedef struct cli_runopts { 97f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 98f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *progname; 99f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *remotehost; 100f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *remoteport; 101f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 102f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *username; 103f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 104f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *cmd; 105f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int wantpty; 106f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int always_accept_key; 107f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int no_cmd; 108f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int backgrounded; 109f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef ENABLE_CLI_PUBKEY_AUTH 110f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct SignKeyList *privkeys; /* Keys to use for public-key auth */ 111f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 112f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef ENABLE_CLI_REMOTETCPFWD 113f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct TCPFwdList * remotefwds; 114f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 115f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef ENABLE_CLI_LOCALTCPFWD 116f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct TCPFwdList * localfwds; 117f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 118f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 119f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} cli_runopts; 120f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 121f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern cli_runopts cli_opts; 122f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectvoid cli_getopts(int argc, char ** argv); 123f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 124f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif /* _RUNOPTS_H_ */ 125