From 5cae7eea451f2b7d65b5892e2c1dafc70f8b836e Mon Sep 17 00:00:00 2001 From: Chris Hall Date: Sun, 13 Feb 2011 23:11:45 +0000 Subject: Second tranche of updates for pipework branch. modified: bgpd/bgp_connection.c modified: bgpd/bgp_debug.c modified: bgpd/bgp_engine.h modified: bgpd/bgp_main.c modified: bgpd/bgp_packet.c modified: bgpd/bgp_peer.c modified: bgpd/bgp_route.c modified: bgpd/bgp_routemap.c modified: bgpd/bgp_session.c modified: bgpd/bgp_vty.c modified: bgpd/bgpd.c modified: bgpd/bgpd.h modified: configure.ac modified: isisd/dict.h modified: isisd/isis_misc.c modified: isisd/isis_routemap.c modified: isisd/isis_spf.c modified: lib/Makefile.am modified: lib/command.c modified: lib/command.h modified: lib/command_execute.h modified: lib/command_parse.c modified: lib/command_parse.h modified: lib/command_queue.c modified: lib/command_queue.h modified: lib/elstring.h modified: lib/heap.c modified: lib/if.c modified: lib/if.h modified: lib/keychain.c modified: lib/keystroke.c modified: lib/keystroke.h modified: lib/list_util.c modified: lib/list_util.h modified: lib/log.c modified: lib/log.h modified: lib/memory.c modified: lib/memory.h modified: lib/memtypes.c modified: lib/misc.h modified: lib/mqueue.c modified: lib/mqueue.h deleted: lib/node_type.h modified: lib/pthread_safe.c modified: lib/qfstring.c modified: lib/qiovec.c modified: lib/qiovec.h modified: lib/qpath.c modified: lib/qpnexus.c modified: lib/qpnexus.h modified: lib/qpselect.c modified: lib/qpthreads.h modified: lib/qstring.c modified: lib/qstring.h modified: lib/qtime.c modified: lib/qtime.h modified: lib/qtimers.c modified: lib/qtimers.h modified: lib/routemap.c modified: lib/symtab.h modified: lib/thread.h deleted: lib/uty.h modified: lib/vector.c modified: lib/vector.h modified: lib/version.h.in modified: lib/vio_fifo.c modified: lib/vio_fifo.h modified: lib/vio_lines.c modified: lib/vio_lines.h modified: lib/vty.c modified: lib/vty.h modified: lib/vty_cli.c modified: lib/vty_cli.h modified: lib/vty_io.c modified: lib/vty_io.h modified: lib/vty_io_basic.c modified: lib/vty_io_basic.h modified: lib/vty_io_file.c modified: lib/vty_io_file.h modified: lib/vty_io_shell.c modified: lib/vty_io_term.c modified: lib/vty_io_term.h modified: lib/vty_local.h modified: lib/vty_pipe.c modified: lib/workqueue.h modified: lib/zebra.h modified: ospf6d/ospf6_lsa.c modified: ripngd/ripngd.c modified: tests/test-list_util.c modified: tests/test-vector.c modified: vtysh/vtysh.c modified: vtysh/vtysh_config.c --- lib/vty_io_basic.h | 65 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 27 deletions(-) (limited to 'lib/vty_io_basic.h') diff --git a/lib/vty_io_basic.h b/lib/vty_io_basic.h index a2b1cbb3..00ff923b 100644 --- a/lib/vty_io_basic.h +++ b/lib/vty_io_basic.h @@ -27,7 +27,7 @@ #include "misc.h" -#include "vty.h" +//#include "vty_local.h" #include "qpselect.h" #include "thread.h" @@ -55,15 +55,23 @@ typedef enum vfd_type vfd_type_t ; enum vfd_io_type /* NB: *bit*significant* */ { vfd_io_none = 0, - vfd_io_read = 1, - vfd_io_write = 2, - vfd_io_read_write = 3, + + vfd_io_read = BIT(0), + vfd_io_write = BIT(1), + vfd_io_read_write = vfd_io_read | vfd_io_write, + + vfd_io_append = BIT(2), + vfd_io_blocking = BIT(3), } ; typedef enum vfd_io_type vfd_io_type_t ; /*------------------------------------------------------------------------------ * Timers -- implemented as qtimer or thread timer, depending on environment. + * + * Timer action function returns a new value for the timer; 0 => off. */ +typedef unsigned long vty_timer_time ; /* Time out time in seconds */ + typedef struct vio_timer vio_timer_t ; typedef vty_timer_time vio_timer_action(vio_timer_t* timer, void* action_info) ; @@ -88,10 +96,11 @@ struct vio_timer * Implemented as qps_file or as read/write thread, depending on the * environment. */ -typedef struct vio_fd* vio_fd ; -typedef void vio_fd_action(vio_fd vfd, void* action_info) ; +typedef struct vio_vfd* vio_vfd ; + +typedef void vio_vfd_action(vio_vfd vfd, void* action_info) ; -struct vio_fd +struct vio_vfd { int fd ; bool active ; /* used for close message */ @@ -99,8 +108,8 @@ struct vio_fd vfd_type_t type ; /* used for half-close */ vfd_io_type_t io_type ; /* read, write, read/write */ - vio_fd_action* read_action ; - vio_fd_action* write_action ; + vio_vfd_action* read_action ; + vio_vfd_action* write_action ; vio_timer_t read_timer ; vio_timer_t write_timer ; @@ -127,39 +136,41 @@ struct vio_fd typedef struct vio_listener* vio_listener ; -typedef void vio_fd_accept(int fd) ; +typedef void vio_vfd_accept(int fd) ; struct vio_listener { vio_listener next ; /* ssl type list */ - vio_fd vfd ; - vio_fd_accept* accept_action ; + vio_vfd vfd ; + vio_vfd_accept* accept_action ; }; /*============================================================================== * Functions */ -extern vio_fd vio_fd_new(int fd, vfd_type_t type, +extern int uty_vfd_file_open(const char* name, vfd_io_type_t io_type) ; + +extern vio_vfd vio_vfd_new(int fd, vfd_type_t type, vfd_io_type_t io_type, void* action_info) ; -extern void vio_fd_set_fd(vio_fd vfd, int fd, vfd_type_t type, +extern void vio_vfd_set_fd(vio_vfd vfd, int fd, vfd_type_t type, vfd_io_type_t io_type) ; -extern void vio_fd_set_read_action(vio_fd vfd, vio_fd_action* action) ; -extern void vio_fd_set_write_action(vio_fd vfd, vio_fd_action* action) ; -extern void vio_fd_set_read_timeout_action(vio_fd vfd, +extern void vio_vfd_set_read_action(vio_vfd vfd, vio_vfd_action* action) ; +extern void vio_vfd_set_write_action(vio_vfd vfd, vio_vfd_action* action) ; +extern void vio_vfd_set_read_timeout_action(vio_vfd vfd, vio_timer_action* action) ; -extern void vio_fd_set_write_timeout_action(vio_fd vfd, +extern void vio_vfd_set_write_timeout_action(vio_vfd vfd, vio_timer_action* action) ; -extern void vio_fd_set_action_info(vio_fd vfd, void* action_info) ; -extern vio_fd vio_fd_half_close(vio_fd vfd) ; -extern vio_fd vio_fd_close(vio_fd vfd) ; -extern on_off_t vio_fd_set_read(vio_fd vfd, on_off_t on, +extern void vio_vfd_set_action_info(vio_vfd vfd, void* action_info) ; +extern vio_vfd vio_vfd_read_close(vio_vfd vfd) ; +extern vio_vfd vio_vfd_close(vio_vfd vfd) ; +extern on_off_b vio_vfd_set_read(vio_vfd vfd, on_off_b on, vty_timer_time timeout) ; -extern on_off_t vio_fd_set_write(vio_fd vfd, on_off_t on, +extern on_off_b vio_vfd_set_write(vio_vfd vfd, on_off_b on, vty_timer_time timeout) ; -Inline int vio_fd_fd(vio_fd vfd) ; +Inline int vio_vfd_fd(vio_vfd vfd) ; -extern vio_listener vio_listener_new(int fd, vio_fd_accept* accept) ; +extern vio_listener vio_listener_new(int fd, vio_vfd_accept* accept) ; extern void vio_listener_close(vio_listener listener) ; extern void vio_timer_init(vio_timer_t* timer, vio_timer_action* action, @@ -175,10 +186,10 @@ extern void vio_timer_unset(vio_timer_t* timer) ; */ /*------------------------------------------------------------------------------ - * Return the fd from a vio_fd structure + * Return the fd from a vio_vfd structure */ Inline int -vio_fd_fd(vio_fd vfd) +vio_vfd_fd(vio_vfd vfd) { return vfd->fd ; } ; -- cgit v1.2.3