Annotation of embedaddon/mtr/ui/cmdpipe.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:     mtr  --  a network diagnostic tool
                      3:     Copyright (C) 2016  Matt Kimball
                      4: 
                      5:     This program is free software; you can redistribute it and/or modify
                      6:     it under the terms of the GNU General Public License version 2 as
                      7:     published by the Free Software Foundation.
                      8: 
                      9:     This program is distributed in the hope that it will be useful,
                     10:     but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11:     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     12:     GNU General Public License for more details.
                     13: 
                     14:     You should have received a copy of the GNU General Public License
                     15:     along with this program; if not, write to the Free Software
                     16:     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                     17: */
                     18: 
                     19: #ifndef CMDPIPE_H
                     20: #define CMDPIPE_H
                     21: 
                     22: #include "mtr.h"
                     23: 
                     24: #define COMMAND_BUFFER_SIZE 4096
                     25: #define PACKET_REPLY_BUFFER_SIZE 4096
                     26: 
                     27: /*  We use a pipe to the mtr-packet subprocess to generate probes  */
                     28: struct packet_command_pipe_t {
                     29:     /*  the process id of mtr-packet  */
                     30:     pid_t pid;
                     31: 
                     32:     /*  the end of the pipe we read for replies  */
                     33:     int read_fd;
                     34: 
                     35:     /*  the end of the pipe we write for commands  */
                     36:     int write_fd;
                     37: 
                     38:     /* storage for incoming replies */
                     39:     char reply_buffer[PACKET_REPLY_BUFFER_SIZE];
                     40: 
                     41:     /*  the number of bytes currently used in reply_buffer  */
                     42:     size_t reply_buffer_used;
                     43: };
                     44: 
                     45: typedef
                     46: void (
                     47:     *probe_reply_func_t) (
                     48:     struct mtr_ctl * ctl,
                     49:     int sequence,
                     50:     struct mplslen * mpls,
                     51:     ip_t * addr,
                     52:     int round_trip_time);
                     53: 
                     54: int open_command_pipe(
                     55:     struct mtr_ctl *ctl,
                     56:     struct packet_command_pipe_t *cmdpipe);
                     57: 
                     58: void close_command_pipe(
                     59:     struct packet_command_pipe_t *cmdpipe);
                     60: 
                     61: void send_probe_command(
                     62:     struct mtr_ctl *ctl,
                     63:     struct packet_command_pipe_t *cmdpipe,
                     64:     ip_t * address,
                     65:     ip_t * localaddress,
                     66:     int packet_size,
                     67:     int sequence,
                     68:     int time_to_live);
                     69: 
                     70: void handle_command_replies(
                     71:     struct mtr_ctl *ctl,
                     72:     struct packet_command_pipe_t *cmdpipe,
                     73:     probe_reply_func_t reply_func);
                     74: 
                     75: #endif

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