Annotation of embedaddon/mpd/src/console.h, revision 1.1.1.4
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:
1.1.1.2 misho 34: /* Global configuration options */
35: enum {
36: CONSOLE_AUTH /* enable authentication */
37: };
38:
1.1 misho 39: /* Configuration options */
40: enum {
41: CONSOLE_LOGGING /* enable logging */
42: };
43:
44: struct console {
45: int fd; /* listener */
46: struct u_addr addr;
47: in_port_t port;
48: SLIST_HEAD(, console_session) sessions; /* active sessions */
49: EventRef event; /* connect-event */
50: pthread_rwlock_t lock;
1.1.1.2 misho 51: struct optinfo options; /* Configured options */
1.1 misho 52: };
53:
54: typedef struct console *Console;
55:
56: struct console_session;
57:
58: typedef struct console_session *ConsoleSession;
59:
60: struct context {
61: Bund bund;
62: Link lnk;
63: Rep rep;
64: ConsoleSession cs;
65: int depth; /* Number recursive 'load' calls */
66: char errmsg[256]; /* Error message of the last command */
67: int priv;
68: };
69:
70: struct console_user {
71: char username[32];
72: char password[32];
73: int priv;
74: };
75:
76: typedef struct console_user *ConsoleUser;
77:
78: struct console_session {
79: Console console;
80: struct optinfo options; /* Configured options */
81: int fd; /* connection fd */
82: void *cookie; /* device dependent cookie */
83: EventRef readEvent;
84: struct context context;
85: struct console_user user;
86: struct u_addr peer_addr;
87: in_port_t peer_port;
88: void (*prompt)(struct console_session *);
89: void (*write)(struct console_session *, const char *fmt, ...);
90: void (*writev)(struct console_session *, const char *fmt, va_list vl);
91: void (*close)(struct console_session *);
92: u_char state;
93: u_char telnet;
94: u_char escaped;
95: u_char exit;
96: int cmd_len;
97: char cmd[MAX_CONSOLE_LINE];
98: int currhist;
99: char history[MAX_CONSOLE_HIST][MAX_CONSOLE_LINE]; /* last command */
100: SLIST_ENTRY(console_session) next;
101: };
102:
103: /*
104: * VARIABLES
105: */
106:
107: extern const struct cmdtab ConsoleSetCmds[];
108: extern struct ghash *gUsers; /* allowed users */
109: extern pthread_rwlock_t gUsersLock;
110:
111:
112: /*
113: * FUNCTIONS
114: */
115:
116: extern int ConsoleInit(Console c);
117: extern int ConsoleOpen(Console c);
118: extern int ConsoleClose(Console c);
1.1.1.4 ! misho 119: extern int ConsoleStat(Context ctx, int ac, const char *const av[], const void *arg);
1.1 misho 120: extern Context StdConsoleConnect(Console c);
121: extern void ConsoleShutdown(Console c);
1.1.1.3 misho 122: extern void ConsoleCancelCleanup(void *rwlock);
1.1 misho 123:
1.1.1.4 ! misho 124: extern int UserCommand(Context ctx, int ac, const char *const av[], const void *arg);
! 125: extern int UserStat(Context ctx, int ac, const char *const av[], const void *arg);
1.1 misho 126:
127: #endif
128:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>