decap_group module reference

Tunnel decapsulation group management.

This module manages tunnel decapsulation for traffic arriving at the switch (on any interface). This allows the switch to act as a tunnel endpoint.

By configuring a “decap group”, the switch will decapsulate traffic matching the specified outer (tunnel) header destination IP address and IP protocol. Presently only GRE traffic (protocol 47) is supported by decap groups. Traffic arriving at the switch matching the group’s parameters will be decapsulated and forwarded normally based on the inner protocol headers.

In this example, a decap group named “gre_tunnel1” is configured for GRE traffic arriving at the switch with a tunnel destination address of 172.12.0.1. That address may either be bound to a local switch interface or announced by the switch in routing protocols.

 // Configures a decapsulation group to unwrap received GRE traffic
 eos::decap_group_t tunnel("gre_tunnel1",
                           eos::ip_addr_t("172.12.0.1"),
                           eos::PROTOCOL_TYPE_GRE);
 mgr->decap_group_set(tunnel);

namespace eos
class decap_group_iter_t

Private Functions

decap_group_iter_t(decap_group_iter_impl * const)

Friends

friend class decap_group_iter_impl
class decap_group_mgr
#include <decap_group.h>

A manager of ‘ip decap-group’ configurations.

Create one of these via sdk object prior to starting the agent main loop. When your eos::agent_handler::on_initialized virtual function is called, the manager is valid for use.

Public Functions

virtual ~decap_group_mgr()
virtual void resync_init() = 0
virtual void resync_complete() = 0
virtual decap_group_iter_t decap_group_iter() const = 0

Iterates over all the decap groups currently configured.

virtual void decap_group_set(decap_group_t const &) = 0

Adds the specified decap group to the system configuration Create a new or updates an existing decap group with the same name

virtual void decap_group_del(std::string const & decap_group_name) = 0

Removes the named decap group from the configuration if it exists.

Protected Functions

decap_group_mgr()

Private Members

decap_group_mgr

decap_group type definitions

namespace eos

Enums

decap_protocol_type_t enum

Inner (IP) protocol to match for a decap group, only the GRE protocol is presently supported.

Values:

  • PROTOCOL_TYPE_NULL -
  • PROTOCOL_TYPE_GRE -
class decap_group_t
#include <decap_group.h>

An ip decap-group configuration model. Note that once created, the group_name member cannot be changed.

Public Functions

decap_group_t()
decap_group_t(std::string group_name, ip_addr_t const & destination_addr, decap_protocol_type_t protocol_type)
std::string group_name() const

Getter for ‘group_name’: the decap-group name, must be supplied. Note that the decap group namespace is per-VRF, that is, the vrf_name scopes the decap- group name.

ip_addr_t destination_addr() const

Getter for ‘destination_addr’: match destination IP on the outermost IP header.

void destination_addr_is(ip_addr_t const & destination_addr)

Setter for ‘destination_addr’.

decap_protocol_type_t protocol_type() const

Getter for ‘protocol_type’: match this outer IP protocol to decap.

void protocol_type_is(decap_protocol_type_t protocol_type)

Setter for ‘protocol_type’.

bool persistent() const

Getter for ‘persistent’: if true, the decap group is included in the running- config. Defaults to false.

void persistent_is(bool persistent)

Setter for ‘persistent’.

bool operator==(decap_group_t const & other) const
bool operator!=(decap_group_t const & other) const
std::string to_string() const

Returns a string representation of the current object’s values.

Private Members

std::string group_name_
ip_addr_t destination_addr_
decap_protocol_type_t protocol_type_
bool persistent_

Friends

friend std::ostream & operator<<

A utility stream operator that adds a string representation of decap_group_t to the ostream.

Table Of Contents

Previous topic

class_map module reference

Next topic

directflow module reference