VPP-303 vnet/vnet/sr docs
Change-Id: I66eff733dff5e7eb2fa429dcdbb2b6b82423d25c Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
This commit is contained in:

committed by
Keith Burns

parent
06c5ffd625
commit
ff07b87773
25
vnet/vnet/sr/dir.dox
Normal file
25
vnet/vnet/sr/dir.dox
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013 Cisco and/or its affiliates.
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at:
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@dir
|
||||||
|
@brief Segment Routing code
|
||||||
|
|
||||||
|
An implementation of Segment Routing as per:
|
||||||
|
draft-previdi-6man-segment-routing-header-05
|
||||||
|
|
||||||
|
See file: rfc_draft_05.txt
|
||||||
|
|
||||||
|
*/
|
@ -14,6 +14,15 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @brief Functions for replicating packets across SR tunnels.
|
||||||
|
*
|
||||||
|
* Leverages rte_pktmbuf_clone() so there is no memcpy for
|
||||||
|
* invariant parts of the packet.
|
||||||
|
*
|
||||||
|
* @note Currently requires DPDK
|
||||||
|
*/
|
||||||
|
|
||||||
#if DPDK > 0 /* Cannot run replicate without DPDK */
|
#if DPDK > 0 /* Cannot run replicate without DPDK */
|
||||||
#include <vlib/vlib.h>
|
#include <vlib/vlib.h>
|
||||||
@ -28,6 +37,10 @@
|
|||||||
#include <vppinfra/error.h>
|
#include <vppinfra/error.h>
|
||||||
#include <vppinfra/elog.h>
|
#include <vppinfra/elog.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief sr_replicate state.
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
/* convenience */
|
/* convenience */
|
||||||
@ -37,7 +50,10 @@ typedef struct
|
|||||||
|
|
||||||
sr_replicate_main_t sr_replicate_main;
|
sr_replicate_main_t sr_replicate_main;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Information to display in packet trace.
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
ip6_address_t src, dst;
|
ip6_address_t src, dst;
|
||||||
@ -47,7 +63,13 @@ typedef struct
|
|||||||
u8 sr[256];
|
u8 sr[256];
|
||||||
} sr_replicate_trace_t;
|
} sr_replicate_trace_t;
|
||||||
|
|
||||||
/* packet trace format function */
|
/**
|
||||||
|
* @brief packet trace format function.
|
||||||
|
*
|
||||||
|
* @param *s u8 used for string output
|
||||||
|
* @param *args va_list structured input to va_arg to output @ref sr_replicate_trace_t
|
||||||
|
* @return *s u8 - formatted trace output
|
||||||
|
*/
|
||||||
static u8 *
|
static u8 *
|
||||||
format_sr_replicate_trace (u8 * s, va_list * args)
|
format_sr_replicate_trace (u8 * s, va_list * args)
|
||||||
{
|
{
|
||||||
@ -97,12 +119,23 @@ static char *sr_replicate_error_strings[] = {
|
|||||||
#undef _
|
#undef _
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Defines next-nodes for packet processing.
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
SR_REPLICATE_NEXT_IP6_LOOKUP,
|
SR_REPLICATE_NEXT_IP6_LOOKUP,
|
||||||
SR_REPLICATE_N_NEXT,
|
SR_REPLICATE_N_NEXT,
|
||||||
} sr_replicate_next_t;
|
} sr_replicate_next_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Single loop packet replicator.
|
||||||
|
*
|
||||||
|
* @node sr-replicate
|
||||||
|
* @param vm vlib_main_t
|
||||||
|
* @return frame->n_vectors uword
|
||||||
|
*/
|
||||||
static uword
|
static uword
|
||||||
sr_replicate_node_fn (vlib_main_t * vm,
|
sr_replicate_node_fn (vlib_main_t * vm,
|
||||||
vlib_node_runtime_t * node, vlib_frame_t * frame)
|
vlib_node_runtime_t * node, vlib_frame_t * frame)
|
||||||
|
Reference in New Issue
Block a user