NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
flow_ip_in_ip_sample.c File Reference
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include "doca_types.h"
#include <doca_log.h>
#include <doca_bitfield.h>
#include "doca_flow.h"
#include "doca_flow_net.h"
#include "flow_common.h"
Include dependency graph for flow_ip_in_ip_sample.c:

Go to the source code of this file.

Macros

#define WAITING_TIME   10
 
#define NB_ENCAP_ACTIONS   (2)
 
#define NB_DECAP_ACTIONS   (1)
 
#define NB_HAIRPIN_PIPE_ENTRIES   (1)
 
#define NB_ENCAP_PIPE_ENTRIES   (2)
 
#define NB_DECAP_PIPE_ENTRIES   (2)
 
#define NB_INGRESS_PIPE_ENTRIES   (NB_HAIRPIN_PIPE_ENTRIES + NB_DECAP_PIPE_ENTRIES)
 
#define NB_EGRESS_PIPE_ENTRIES   (NB_ENCAP_PIPE_ENTRIES)
 
#define TOTAL_ENTRIES   (NB_INGRESS_PIPE_ENTRIES + NB_EGRESS_PIPE_ENTRIES)
 
#define NEXT_HEADER_IPV4   (4)
 
#define NEXT_HEADER_IPV6   (41)
 

Functions

 DOCA_LOG_REGISTER (FLOW_IP_IN_IP)
 
static doca_error_t create_hairpin_pipe (struct doca_flow_port *port, int dest_port_id, bool is_root, struct entries_status *status, struct doca_flow_pipe **pipe)
 
static doca_error_t add_encap_pipe_entries (struct doca_flow_pipe *pipe, struct entries_status *status, struct doca_flow_pipe_entry *encap_entries[])
 
static doca_error_t create_encap_pipe (struct doca_flow_port *port, uint32_t port_id, struct doca_flow_pipe **encap_pipe)
 
static doca_error_t add_decap_pipe_entries (struct doca_flow_pipe *pipe, struct entries_status *status, struct doca_flow_pipe_entry *decap_entries[])
 
static doca_error_t create_decap_pipe (struct doca_flow_port *port, struct doca_flow_pipe *next_pipe, struct doca_flow_pipe **decap_pipe)
 
static doca_error_t prepare_encap_pipeline (struct doca_flow_port *ingress_port, struct doca_flow_port *egress_port, uint32_t egress_port_id, struct entries_status *status, struct doca_flow_pipe_entry *encap_entries[])
 
static doca_error_t prepare_decap_pipeline (struct doca_flow_port *ingress_port, int egress_port_id, struct entries_status *status, struct doca_flow_pipe_entry *decap_entries[])
 
doca_error_t flow_ip_in_ip (int nb_queues)
 

Macro Definition Documentation

◆ NB_DECAP_ACTIONS

#define NB_DECAP_ACTIONS   (1)

Definition at line 46 of file flow_ip_in_ip_sample.c.

◆ NB_DECAP_PIPE_ENTRIES

#define NB_DECAP_PIPE_ENTRIES   (2)

Definition at line 50 of file flow_ip_in_ip_sample.c.

◆ NB_EGRESS_PIPE_ENTRIES

#define NB_EGRESS_PIPE_ENTRIES   (NB_ENCAP_PIPE_ENTRIES)

Definition at line 52 of file flow_ip_in_ip_sample.c.

◆ NB_ENCAP_ACTIONS

#define NB_ENCAP_ACTIONS   (2)

Definition at line 45 of file flow_ip_in_ip_sample.c.

◆ NB_ENCAP_PIPE_ENTRIES

#define NB_ENCAP_PIPE_ENTRIES   (2)

Definition at line 49 of file flow_ip_in_ip_sample.c.

◆ NB_HAIRPIN_PIPE_ENTRIES

#define NB_HAIRPIN_PIPE_ENTRIES   (1)

Definition at line 48 of file flow_ip_in_ip_sample.c.

◆ NB_INGRESS_PIPE_ENTRIES

#define NB_INGRESS_PIPE_ENTRIES   (NB_HAIRPIN_PIPE_ENTRIES + NB_DECAP_PIPE_ENTRIES)

Definition at line 51 of file flow_ip_in_ip_sample.c.

◆ NEXT_HEADER_IPV4

#define NEXT_HEADER_IPV4   (4)

Definition at line 55 of file flow_ip_in_ip_sample.c.

◆ NEXT_HEADER_IPV6

#define NEXT_HEADER_IPV6   (41)

Definition at line 56 of file flow_ip_in_ip_sample.c.

◆ TOTAL_ENTRIES

#define TOTAL_ENTRIES   (NB_INGRESS_PIPE_ENTRIES + NB_EGRESS_PIPE_ENTRIES)

Definition at line 53 of file flow_ip_in_ip_sample.c.

◆ WAITING_TIME

#define WAITING_TIME   10

Definition at line 43 of file flow_ip_in_ip_sample.c.

Function Documentation

◆ add_decap_pipe_entries()

static doca_error_t add_decap_pipe_entries ( struct doca_flow_pipe *  pipe,
struct entries_status status,
struct doca_flow_pipe_entry *  decap_entries[] 
)
static

Definition at line 314 of file flow_ip_in_ip_sample.c.

◆ add_encap_pipe_entries()

static doca_error_t add_encap_pipe_entries ( struct doca_flow_pipe *  pipe,
struct entries_status status,
struct doca_flow_pipe_entry *  encap_entries[] 
)
static

Definition at line 152 of file flow_ip_in_ip_sample.c.

◆ create_decap_pipe()

static doca_error_t create_decap_pipe ( struct doca_flow_port *  port,
struct doca_flow_pipe *  next_pipe,
struct doca_flow_pipe **  decap_pipe 
)
static

Definition at line 362 of file flow_ip_in_ip_sample.c.

◆ create_encap_pipe()

static doca_error_t create_encap_pipe ( struct doca_flow_port *  port,
uint32_t  port_id,
struct doca_flow_pipe **  encap_pipe 
)
static

Definition at line 207 of file flow_ip_in_ip_sample.c.

◆ create_hairpin_pipe()

static doca_error_t create_hairpin_pipe ( struct doca_flow_port *  port,
int  dest_port_id,
bool  is_root,
struct entries_status status,
struct doca_flow_pipe **  pipe 
)
static

Definition at line 68 of file flow_ip_in_ip_sample.c.

◆ DOCA_LOG_REGISTER()

DOCA_LOG_REGISTER ( FLOW_IP_IN_IP  )

◆ flow_ip_in_ip()

doca_error_t flow_ip_in_ip ( int  nb_queues)

Definition at line 548 of file flow_ip_in_ip_sample.c.

◆ prepare_decap_pipeline()

static doca_error_t prepare_decap_pipeline ( struct doca_flow_port *  ingress_port,
int  egress_port_id,
struct entries_status status,
struct doca_flow_pipe_entry *  decap_entries[] 
)
static

Definition at line 507 of file flow_ip_in_ip_sample.c.

◆ prepare_encap_pipeline()

static doca_error_t prepare_encap_pipeline ( struct doca_flow_port *  ingress_port,
struct doca_flow_port *  egress_port,
uint32_t  egress_port_id,
struct entries_status status,
struct doca_flow_pipe_entry *  encap_entries[] 
)
static

Definition at line 455 of file flow_ip_in_ip_sample.c.