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
16 #else
17 typedef void pcap_t;
18 typedef void pcap_dumper_t;
19 #endif
20
21 #define CAPTURE_LINKTYPE_LINUX_SLL2 276
22
23 struct capture {
24 const char *path;
25 pcap_t *pcap;
26 pcap_dumper_t *dumper;
27 };
28
29 #if HAVE_PCAP
30 int capture_init(void);
31 int capture_prepare(struct capture *cap);
32 void capture_close(struct capture *cap);
33 void capture_binding(struct mctp_pktbuf *pkt, bool outgoing, void *user);
34 void capture_socket(pcap_dumper_t *dumper, const void *buf, size_t len,
35 bool outgoing, int eid);
36 #else
37 #include <stdio.h>
capture_init(void)38 static inline int capture_init(void)
39 {
40 fprintf(stderr,
41 "libpcap support is disabled, cannot initialise libpcap\n");
42 return 0;
43 }
44
capture_prepare(struct capture * cap)45 static inline int capture_prepare(struct capture *cap)
46 {
47 fprintf(stderr, "libpcap support is disabled, cannot capture to %s\n",
48 cap->path);
49 return 0;
50 }
51
capture_close(struct capture * cap __unused)52 static inline void capture_close(struct capture *cap __unused)
53 {
54 }
55
capture_binding(struct mctp_pktbuf * pkt __unused,bool outgoing __unused,void * user __unused)56 static inline void capture_binding(struct mctp_pktbuf *pkt __unused,
57 bool outgoing __unused, void *user __unused)
58 {
59 }
60
capture_socket(pcap_dumper_t * dumper __unused,const void * buf __unused,size_t len __unused,bool outgoing __unused,int eid __unused)61 static inline void capture_socket(pcap_dumper_t *dumper __unused,
62 const void *buf __unused, size_t len __unused,
63 bool outgoing __unused, int eid __unused)
64 {
65 }
66 #endif
67 #endif
68