blob: 8babf2e9266c98a12ef9a09f6182a129a65d7266 [file] [log] [blame]
Andrew Jefferycad47302021-08-20 21:37:57 +09301/* 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
Andrew Jeffery5ab78252022-02-17 21:04:59 +10308#include "compiler.h"
Andrew Jefferycad47302021-08-20 21:37:57 +09309#include "libmctp.h"
10
11#include <sys/types.h>
12
13#if HAVE_PCAP
14#include <pcap/pcap.h>
15#else
16typedef void pcap_t;
17typedef void pcap_dumper_t;
18#endif
19
Andrew Jeffery94977182022-09-30 14:12:48 +093020#define CAPTURE_LINKTYPE_FIRST 147
21#define CAPTURE_LINKTYPE_LAST 162
Andrew Jefferycad47302021-08-20 21:37:57 +093022
Andrew Jefferycad47302021-08-20 21:37:57 +093023struct capture {
Andrew Jeffery94977182022-09-30 14:12:48 +093024 const char *path;
25 int linktype;
26 pcap_t *pcap;
27 pcap_dumper_t *dumper;
Andrew Jefferycad47302021-08-20 21:37:57 +093028};
29
30#if HAVE_PCAP
31int capture_init(void);
32int capture_prepare(struct capture *cap);
33void capture_close(struct capture *cap);
34void capture_binding(struct mctp_pktbuf *pkt, void *user);
35void capture_socket(pcap_dumper_t *dumper, const void *buf, size_t len);
36#else
37#include <stdio.h>
Andrew Jeffery94977182022-09-30 14:12:48 +093038static inline int capture_init(void)
Andrew Jefferycad47302021-08-20 21:37:57 +093039{
Andrew Jeffery94977182022-09-30 14:12:48 +093040 fprintf(stderr,
41 "libpcap support is disabled, cannot initialise libpcap\n");
Andrew Jefferycad47302021-08-20 21:37:57 +093042 return 0;
43}
44
Andrew Jeffery94977182022-09-30 14:12:48 +093045static inline int capture_prepare(struct capture *cap)
Andrew Jefferycad47302021-08-20 21:37:57 +093046{
47 fprintf(stderr, "libpcap support is disabled, cannot capture to %s\n",
48 cap->path);
49 return 0;
50}
51
52static inline void capture_close(struct capture *cap __unused)
53{
54}
55
Andrew Jeffery94977182022-09-30 14:12:48 +093056static inline void capture_binding(struct mctp_pktbuf *pkt __unused,
57 void *user __unused)
Andrew Jefferycad47302021-08-20 21:37:57 +093058{
59}
60
61static inline void capture_socket(pcap_dumper_t *dumper __unused,
Andrew Jeffery94977182022-09-30 14:12:48 +093062 const void *buf __unused, size_t len __unused)
Andrew Jefferycad47302021-08-20 21:37:57 +093063{
64}
65#endif
66#endif