xref: /openbmc/libmctp/utils/mctp-capture.h (revision 5ab78259)
1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
2 
3 #ifndef _UTILS_MCTP_CAPTURE_H
4 #define _UTILS_MCTP_CAPTURE_H
5 
6 #include "config.h"
7 
8 #include "compiler.h"
9 #include "libmctp.h"
10 
11 #include <sys/types.h>
12 
13 #if HAVE_PCAP
14 #include <pcap/pcap.h>
15 #else
16 typedef void pcap_t;
17 typedef void pcap_dumper_t;
18 #endif
19 
20 #define CAPTURE_LINKTYPE_FIRST	147
21 #define CAPTURE_LINKTYPE_LAST	162
22 
23 struct capture {
24 	const char	*path;
25 	int		linktype;
26 	pcap_t		*pcap;
27 	pcap_dumper_t	*dumper;
28 };
29 
30 #if HAVE_PCAP
31 int capture_init(void);
32 int capture_prepare(struct capture *cap);
33 void capture_close(struct capture *cap);
34 void capture_binding(struct mctp_pktbuf *pkt, void *user);
35 void capture_socket(pcap_dumper_t *dumper, const void *buf, size_t len);
36 #else
37 #include <stdio.h>
38 static inline int
39 capture_init(void)
40 {
41 	fprintf(stderr, "libpcap support is disabled, cannot initialise libpcap\n");
42 	return 0;
43 }
44 
45 static inline int
46 capture_prepare(struct capture *cap)
47 {
48 	fprintf(stderr, "libpcap support is disabled, cannot capture to %s\n",
49 		cap->path);
50 	return 0;
51 }
52 
53 static inline void capture_close(struct capture *cap __unused)
54 {
55 }
56 
57 static inline void
58 capture_binding(struct mctp_pktbuf *pkt __unused, void *user __unused)
59 {
60 }
61 
62 static inline void capture_socket(pcap_dumper_t *dumper __unused,
63 				  const void *buf __unused,
64 				  size_t len __unused)
65 {
66 }
67 #endif
68 #endif
69