source: test/test-layer2-headers.c @ e78e408

develop
Last change on this file since e78e408 was e78e408, checked in by Jacob van Walraven <jacobvw@…>, 21 months ago

Add some tests for trace_get_outermost_vlan, trace_get_outermost_mpls and trace_get_layer2_headers

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#include "libtrace.h"
2#include <stdio.h>
3#include <stdlib.h>
4
5void iferr(libtrace_t *trace)
6{
7        libtrace_err_t err = trace_get_err(trace);
8        if (err.err_num==0)
9                return;
10        printf("Error: %s\n",err.problem);
11        exit(1);
12}
13
14
15int main(int argc, char *argv[]) {
16
17        libtrace_t *trace = NULL;
18        libtrace_packet_t *packet = NULL;
19        int i = 0;
20        uint16_t mplslabel;
21        uint8_t *mplsptr;
22        uint32_t remaining;
23        int error = 0;
24
25        packet = trace_create_packet();
26
27        trace = trace_create("pcapfile:traces/mpls.pcap");
28        iferr(trace);
29
30        trace_start(trace);
31        iferr(trace);
32
33        /* read a packet, get its layer2 headers and test they are correct */
34        trace_read_packet(trace, packet);
35        libtrace_layer2_headers_t *hdr = trace_get_layer2_headers(packet);
36        if (hdr != NULL) {
37                trace_destroy_layer2_headers(hdr);
38        }
39
40        trace_read_packet(trace, packet);
41        hdr = trace_get_layer2_headers(packet);
42        if (hdr != NULL) {
43                printf("Found unexpected layer2 header\n");
44                trace_destroy_layer2_headers(hdr);
45                error = 1;
46        }
47
48        trace_read_packet(trace, packet);
49        hdr = trace_get_layer2_headers(packet);
50        if (hdr == NULL) {
51                printf("Was expecting to find MPLS header\n");
52                error = 1;
53        } else {
54                if (hdr->num != 1) {
55                        printf("Found unexpected number of layer2 headers\n");
56                        error = 1;
57                } else {
58                        if ((hdr->bitmask & TRACE_BITMASK_MPLS) != TRACE_BITMASK_MPLS) {
59                                printf("Found unexpected bitmask for layer2 headers\n");
60                                error = 1;
61                        }
62                }
63                trace_destroy_layer2_headers(hdr);
64        }
65
66        if (error == 0) {
67                printf("success\n");
68        } else {
69                iferr(trace);
70        }
71
72        trace_destroy(trace);
73        trace_destroy_packet(packet);
74
75        return error;
76}
Note: See TracBrowser for help on using the repository browser.