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>