diff options
Diffstat (limited to 'lib/vty.h')
-rw-r--r-- | lib/vty.h | 33 |
1 files changed, 27 insertions, 6 deletions
@@ -23,14 +23,17 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "thread.h" #include "log.h" +#include "qpthreads.h" +#include "qpselect.h" +#include "qtimers.h" #define VTY_BUFSIZ 512 #define VTY_MAXHIST 20 /* VTY struct. */ -struct vty +struct vty { - /* File descripter of this vty. */ + /* File descriptor of this vty. */ int fd; /* Is this vty connect to file or not */ @@ -39,7 +42,7 @@ struct vty /* Node status of this vty */ int node; - /* What address is this vty comming from. */ + /* What address is this vty coming from. */ char *address; /* Failure count */ @@ -112,11 +115,14 @@ struct vty int config; /* Read and write thread. */ + + qps_file qf; struct thread *t_read; struct thread *t_write; /* Timeout seconds and thread. */ unsigned long v_timeout; + qtimer qtr; struct thread *t_timeout; }; @@ -124,7 +130,13 @@ struct vty #define INTEGRATE_DEFAULT_CONFIG "Quagga.conf" /* Small macro to determine newline is newline only or linefeed needed. */ -#define VTY_NEWLINE ((vty->type == VTY_TERM) ? "\r\n" : "\n") +#define VTY_NEWLINE (((vty != NULL) && (vty->type == VTY_TERM)) ? "\r\n" : "\n") + +/* For indenting, mostly. */ +extern const char* vty_spaces_string ; +#define VTY_MAX_SPACES 24 +#define VTY_SPACES(n) (vty_spaces_string + ((n) < VTY_MAX_SPACES \ + ? VTY_MAX_SPACES - (n) : 0)) /* Default time out value */ #define VTY_TIMEOUT_DEFAULT 600 @@ -199,20 +211,29 @@ do { /* Exported variables */ extern char integrate_default[]; +extern qpt_mutex_t* vty_mutex; +#ifndef NDEBUG +extern int vty_lock_count; +#endif /* Prototypes. */ +extern void vty_init_r (void); +extern void vty_exec_r(void); extern void vty_init (struct thread_master *); extern void vty_init_vtysh (void); extern void vty_terminate (void); extern void vty_reset (void); -extern struct vty *vty_new (void); +extern struct vty *vty_new (int); extern int vty_out (struct vty *, const char *, ...) PRINTF_ATTRIBUTE(2, 3); +extern int vty_puts(struct vty* vty, const char* str) ; +extern int vty_out_newline(struct vty *vty) ; +extern int vty_out_indent(struct vty *vty, int indent) ; extern void vty_read_config (char *, char *); extern void vty_time_print (struct vty *, int); extern void vty_serv_sock (const char *, unsigned short, const char *); extern void vty_close (struct vty *); extern char *vty_get_cwd (void); -extern void vty_log (const char *level, const char *proto, +extern void vty_log (const char *level, const char *proto, const char *fmt, struct timestamp_control *, va_list); extern int vty_config_lock (struct vty *); extern int vty_config_unlock (struct vty *); |