WinPcap  4.1.2
pcap-remote.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2002 - 2005 NetGroup, Politecnico di Torino (Italy)
3  * Copyright (c) 2005 - 2008 CACE Technologies, Davis (California)
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * 3. Neither the name of the Politecnico di Torino, CACE Technologies
16  * nor the names of its contributors may be used to endorse or promote
17  * products derived from this software without specific prior written
18  * permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 
34 #ifndef __PCAP_REMOTE_H__
35 #define __PCAP_REMOTE_H__
36 
37 
38 #include "pcap.h"
39 #include "sockutils.h" // Needed for some structures (like SOCKET, sockaddr_in) which are used here
40 
41 
74 /*********************************************************
75  * *
76  * General definitions / typedefs for the RPCAP protocol *
77  * *
78  *********************************************************/
79 
80 // All the following structures and typedef belongs to the Private Documentation
85 #define RPCAP_DEFAULT_NETPORT "2002"
87 #define RPCAP_DEFAULT_NETPORT_ACTIVE "2003"
88 #define RPCAP_DEFAULT_NETADDR ""
89 #define RPCAP_VERSION 0
90 #define RPCAP_TIMEOUT_INIT 90
91 #define RPCAP_TIMEOUT_RUNTIME 180
92 #define RPCAP_ACTIVE_WAIT 30
93 #define RPCAP_SUSPEND_WRONGAUTH 1
99 #define RPCAP_NETBUF_SIZE 64000
100 
101 
109 #define RPCAP_HOSTLIST_SEP " ,;\n\r"
110 
111 
112 
113 
114 // WARNING: These could need to be changed on other platforms
115 typedef unsigned char uint8;
116 typedef unsigned short uint16;
117 typedef unsigned int uint32;
118 typedef int int32;
119 
120 
121 
122 
134 {
135  struct sockaddr_storage host;
136  SOCKET sockctrl;
137  struct activehosts *next;
138 };
139 
140 
141 /*********************************************************
142  * *
143  * Protocol messages formats *
144  * *
145  *********************************************************/
146 // WARNING Take care you compiler does not insert padding for better alignments into these structs
147 
148 
151 {
156 };
157 
158 
161 {
167 };
168 
169 
172 {
173  struct sockaddr_storage addr;
174  struct sockaddr_storage netmask;
175  struct sockaddr_storage broadaddr;
176  struct sockaddr_storage dstaddr;
177 };
178 
179 
180 
187 {
190 };
191 
192 
193 
196 {
201 };
202 
203 
206 {
210 };
211 
212 
220 {
226 };
227 
228 
231 {
235 };
236 
237 
240 {
245 };
246 
247 
250 {
255 };
256 
257 
260 {
265 };
266 
267 
270 {
275 };
276 
277 
278 
279 // Messages field coding
280 #define RPCAP_MSG_ERROR 1
281 #define RPCAP_MSG_FINDALLIF_REQ 2
282 #define RPCAP_MSG_OPEN_REQ 3
283 #define RPCAP_MSG_STARTCAP_REQ 4
284 #define RPCAP_MSG_UPDATEFILTER_REQ 5
285 #define RPCAP_MSG_CLOSE 6
286 #define RPCAP_MSG_PACKET 7
287 #define RPCAP_MSG_AUTH_REQ 8
288 #define RPCAP_MSG_STATS_REQ 9
289 #define RPCAP_MSG_ENDCAP_REQ 10
290 #define RPCAP_MSG_SETSAMPLING_REQ 11
292 #define RPCAP_MSG_FINDALLIF_REPLY (128+RPCAP_MSG_FINDALLIF_REQ)
293 #define RPCAP_MSG_OPEN_REPLY (128+RPCAP_MSG_OPEN_REQ)
294 #define RPCAP_MSG_STARTCAP_REPLY (128+RPCAP_MSG_STARTCAP_REQ)
295 #define RPCAP_MSG_UPDATEFILTER_REPLY (128+RPCAP_MSG_UPDATEFILTER_REQ)
296 #define RPCAP_MSG_AUTH_REPLY (128+RPCAP_MSG_AUTH_REQ)
297 #define RPCAP_MSG_STATS_REPLY (128+RPCAP_MSG_STATS_REQ)
298 #define RPCAP_MSG_ENDCAP_REPLY (128+RPCAP_MSG_ENDCAP_REQ)
299 #define RPCAP_MSG_SETSAMPLING_REPLY (128+RPCAP_MSG_SETSAMPLING_REQ)
301 #define RPCAP_STARTCAPREQ_FLAG_PROMISC 1
302 #define RPCAP_STARTCAPREQ_FLAG_DGRAM 2
303 #define RPCAP_STARTCAPREQ_FLAG_SERVEROPEN 4
304 #define RPCAP_STARTCAPREQ_FLAG_INBOUND 8
305 #define RPCAP_STARTCAPREQ_FLAG_OUTBOUND 16
307 #define RPCAP_UPDATEFILTER_BPF 1
310 // Network error codes
311 #define PCAP_ERR_NETW 1
312 #define PCAP_ERR_INITTIMEOUT 2
313 #define PCAP_ERR_AUTH 3
314 #define PCAP_ERR_FINDALLIF 4
315 #define PCAP_ERR_NOREMOTEIF 5
316 #define PCAP_ERR_OPEN 6
317 #define PCAP_ERR_UPDATEFILTER 7
318 #define PCAP_ERR_GETSTATS 8
319 #define PCAP_ERR_READEX 9
320 #define PCAP_ERR_HOSTNOAUTH 10
321 #define PCAP_ERR_REMOTEACCEPT 11
322 #define PCAP_ERR_STARTCAPTURE 12
323 #define PCAP_ERR_ENDCAPTURE 13
324 #define PCAP_ERR_RUNTIMETIMEOUT 14
325 #define PCAP_ERR_SETSAMPLING 15
326 #define PCAP_ERR_WRONGMSG 16
327 #define PCAP_ERR_WRONGVER 17 // end of private documentation
331 
332 
333 
334 
335 
336 
337 /*********************************************************
338  * *
339  * Exported funtion prototypes *
340  * *
341  *********************************************************/
342 int pcap_opensource_remote(pcap_t *p, struct pcap_rmtauth *auth);
344 
345 int pcap_read_nocb_remote(pcap_t *p, struct pcap_pkthdr **pkt_header, u_char **pkt_data);
346 int pcap_read_remote(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
347 int pcap_updatefilter_remote(pcap_t *fp, struct bpf_program *prog);
348 int pcap_setfilter_remote(pcap_t *fp, struct bpf_program *prog);
349 int pcap_stats_remote(pcap_t *p, struct pcap_stat *ps);
352 void pcap_cleanup_remote(pcap_t *p);
353 
354 void rpcap_createhdr(struct rpcap_header *header, uint8 type, uint16 value, uint32 length);
355 int rpcap_deseraddr(struct sockaddr_storage *sockaddrin, struct sockaddr_storage **sockaddrout, char *errbuf);
356 int rpcap_checkmsg(char *errbuf, SOCKET sock, struct rpcap_header *header, uint8 first, ...);
357 int rpcap_senderror(SOCKET sock, char *error, unsigned short errcode, char *errbuf);
358 int rpcap_sendauth(SOCKET sock, struct pcap_rmtauth *auth, char *errbuf);
359 
360 int rpcap_remoteact_getsock(const char *host, char *errbuf);
361 
362 #endif
363 

documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2009 CACE Technologies. All rights reserved.