P4C
The P4 Compiler
Loading...
Searching...
No Matches
pcap_util.h
1/*
2 * Copyright 2018 VMware, Inc.
3 * SPDX-FileCopyrightText: 2018 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8
11#ifndef BACKENDS_EBPF_RUNTIME_EBPF_PCAP_UTIL_H_
12#define BACKENDS_EBPF_RUNTIME_EBPF_PCAP_UTIL_H_
13
14#define PCAP_DONT_INCLUDE_PCAP_BPF_H
15#include <pcap/pcap.h>
16#include <stdint.h> // uint32_t, uint16_t
17
19typedef uint16_t iface_index;
20
24typedef struct {
25 char *data;
26 struct pcap_pkthdr pcap_hdr;
27 iface_index ifindex;
28} pcap_pkt;
29
30struct pcap_list;
31struct pcap_list_array;
32typedef struct pcap_list pcap_list_t;
33typedef struct pcap_list_array pcap_list_array_t;
34
48pcap_list_t *read_pkts_from_pcap(const char *pcap_file_name, iface_index index);
49
57int write_pkts_to_pcap(const char *pcap_file_name, const pcap_list_t *pkt_list);
58
67pcap_list_t *merge_and_delete_lists(pcap_list_array_t *array, pcap_list_t *merged_list);
68
78pcap_list_array_t *split_and_delete_list(pcap_list_t *input_list, pcap_list_array_t *result_arr);
79
90pcap_list_t *append_packet(pcap_list_t *pkt_list, pcap_pkt *pkt);
91
103pcap_list_array_t *insert_list(pcap_list_array_t *pkt_array, pcap_list_t *pkt_list, uint16_t index);
104
108pcap_list_t *allocate_pkt_list();
109
113pcap_list_array_t *allocate_pkt_list_array();
114
119uint32_t get_pkt_list_length(pcap_list_t *pkt_list);
120
125uint16_t get_list_array_length(pcap_list_array_t *pkt_list_array);
126
133pcap_pkt *get_packet(pcap_list_t *list, uint32_t index);
134
141pcap_list_t *get_list(pcap_list_array_t *list, uint16_t index);
142
150pcap_pkt *copy_pkt(pcap_pkt *src_pkt);
151
157void delete_list(pcap_list_t *pkt_list);
158
164void delete_array(pcap_list_array_t *pkt_list_array);
165
171void sort_pcap_list(pcap_list_t *pkt_list);
172
179char *generate_pcap_name(const char *pcap_base, int index, const char *suffix);
180
181#endif // BACKENDS_EBPF_RUNTIME_EBPF_PCAP_UTIL_H_
182
Definition pcap_util.h:24