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 capture_init(void) 39 { 40 fprintf(stderr, 41 "libpcap support is disabled, cannot initialise libpcap\n"); 42 return 0; 43 } 44 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 52 static inline void capture_close(struct capture *cap __unused) 53 { 54 } 55 56 static inline void capture_binding(struct mctp_pktbuf *pkt __unused, 57 void *user __unused) 58 { 59 } 60 61 static inline void capture_socket(pcap_dumper_t *dumper __unused, 62 const void *buf __unused, size_t len __unused) 63 { 64 } 65 #endif 66 #endif 67