Annotation of embedaddon/mpd/src/console.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * console.h
                      4:  *
                      5:  * Written by Archie Cobbs <archie@freebsd.org>
                      6:  * Copyright (c) 1998-1999 Whistle Communications, Inc. All rights reserved.
                      7:  * See ``COPYRIGHT.whistle''
                      8:  */
                      9: 
                     10: #ifndef _CONSOLE_H_
                     11: #define        _CONSOLE_H_
                     12: 
                     13: #include "ppp.h"
                     14: 
                     15: /*
                     16:  * DEFINITIONS
                     17:  */
                     18: 
                     19:   #define MAX_CONSOLE_ARGS     50
                     20:   #define MAX_CONSOLE_LINE     400
                     21:   #define MAX_CONSOLE_HIST     10
                     22: 
                     23:   #define Printf(fmt, args...) do {                                            \
                     24:                                  if (ctx->cs)                                  \
                     25:                                    ctx->cs->write(ctx->cs, fmt, ## args);      \
                     26:                                } while (0)
                     27: 
                     28:   #define Error(fmt, args...)  do {                                            \
                     29:                                  snprintf(ctx->errmsg, sizeof(ctx->errmsg),    \
                     30:                                    fmt, ## args);                              \
                     31:                                  return(CMD_ERR_OTHER);                        \
                     32:                                } while (0)
                     33: 
                     34:   /* Configuration options */
                     35:   enum {
                     36:     CONSOLE_LOGGING    /* enable logging */
                     37:   };
                     38: 
                     39:   struct console {
                     40:     int                        fd;             /* listener */
                     41:     struct u_addr      addr;
                     42:     in_port_t          port;
                     43:     SLIST_HEAD(, console_session) sessions;    /* active sessions */
                     44:     EventRef           event;          /* connect-event */
                     45:     pthread_rwlock_t   lock;
                     46:   };
                     47: 
                     48:   typedef struct console *Console;
                     49: 
                     50:   struct console_session;
                     51: 
                     52:   typedef struct console_session *ConsoleSession;
                     53: 
                     54:   struct context {
                     55:        Bund            bund;
                     56:        Link            lnk;
                     57:        Rep             rep;
                     58:        ConsoleSession  cs;
                     59:        int             depth;          /* Number recursive 'load' calls */
                     60:        char            errmsg[256];    /* Error message of the last command */
                     61:        int             priv;
                     62:   };
                     63: 
                     64:   struct console_user {
                     65:        char            username[32];
                     66:        char            password[32];
                     67:        int             priv;
                     68:   };
                     69: 
                     70:   typedef struct console_user *ConsoleUser;
                     71: 
                     72:   struct console_session {
                     73:     Console            console;
                     74:     struct optinfo     options;        /* Configured options */
                     75:     int                        fd;             /* connection fd */
                     76:     void               *cookie;        /* device dependent cookie */
                     77:     EventRef           readEvent;
                     78:     struct context     context;
                     79:     struct console_user user;
                     80:     struct u_addr      peer_addr;
                     81:     in_port_t           peer_port;
                     82:     void               (*prompt)(struct console_session *);
                     83:     void               (*write)(struct console_session *, const char *fmt, ...);
                     84:     void               (*writev)(struct console_session *, const char *fmt, va_list vl);
                     85:     void               (*close)(struct console_session *);
                     86:     u_char             state;
                     87:     u_char             telnet;
                     88:     u_char             escaped;
                     89:     u_char             exit;
                     90:     int                        cmd_len;
                     91:     char               cmd[MAX_CONSOLE_LINE];
                     92:     int                        currhist;
                     93:     char               history[MAX_CONSOLE_HIST][MAX_CONSOLE_LINE];    /* last command */
                     94:     SLIST_ENTRY(console_session)       next;
                     95:   };
                     96: 
                     97: /*
                     98:  * VARIABLES
                     99:  */
                    100: 
                    101:   extern const struct cmdtab ConsoleSetCmds[];
                    102:   extern struct ghash          *gUsers;                /* allowed users */
                    103:   extern pthread_rwlock_t      gUsersLock;
                    104: 
                    105: 
                    106: /*
                    107:  * FUNCTIONS
                    108:  */
                    109: 
                    110:   extern int   ConsoleInit(Console c);
                    111:   extern int   ConsoleOpen(Console c);
                    112:   extern int   ConsoleClose(Console c);
                    113:   extern int   ConsoleStat(Context ctx, int ac, char *av[], void *arg);
                    114:   extern Context       StdConsoleConnect(Console c);
                    115:   extern void  ConsoleShutdown(Console c);
                    116: 
                    117:   extern int   UserCommand(Context ctx, int ac, char *av[], void *arg);
                    118:   extern int   UserStat(Context ctx, int ac, char *av[], void *arg);
                    119: 
                    120: #endif
                    121: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>