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>