MPLS_IETF_MAX_LABEL = 0xfffff
MPLS_LABEL_INVALID = MPLS_IETF_MAX_LABEL + 1
+class L2_VTR_OP:
+ L2_POP_1 = 3
+
class VppPapiProvider(object):
"""VPP-api provider using vpp-papi
:param cli: CLI to execute
:returns: CLI output
"""
- return cli + "\n" + self.cli(cli)
+ return cli + "\n" + str(self.cli(cli))
+
+ def _convert_mac(self, mac):
+ return int(mac.replace(":", ""), 16) << 16
def show_version(self):
""" """
(is_add, is_ipv6, src_addr, dst_addr, encap_vrf_id,
decap_next_index, vni))
- def sw_interface_set_l2_bridge(self, sw_if_index, bd_id,
- shg=0, bvi=0, enable=1):
+ def bridge_domain_add_del(self, bd_id, flood=1, uu_flood=1, forward=1,
+ learn=1, arp_term=0, is_add=1):
+ """Create/delete bridge domain.
+
+ :param int bd_id: Bridge domain index.
+ :param int flood: Enable/disable bcast/mcast flooding in the BD.
+ (Default value = 1)
+ :param int uu_flood: Enable/disable unknown unicast flood in the BD.
+ (Default value = 1)
+ :param int forward: Enable/disable forwarding on all interfaces in
+ the BD. (Default value = 1)
+ :param int learn: Enable/disable learning on all interfaces in the BD.
+ (Default value = 1)
+ :param int arp_term: Enable/disable arp termination in the BD.
+ (Default value = 1)
+ :param int is_add: Add or delete flag. (Default value = 1)
"""
+ return self.api(vpp_papi.bridge_domain_add_del,
+ (bd_id, flood, uu_flood, forward, learn, arp_term,
+ is_add))
+
+ def l2fib_add_del(self, mac, bd_id, sw_if_index, is_add=1, static_mac=0,
+ filter_mac=0, bvi_mac=0):
+ """Create/delete L2 FIB entry.
+
+ :param str mac: MAC address to create FIB entry for.
+ :param int bd_id: Bridge domain index.
+ :param int sw_if_index: Software interface index of the interface.
+ :param int is_add: Add or delete flag. (Default value = 1)
+ :param int static_mac: Set to 1 to create static MAC entry.
+ (Default value = 0)
+ :param int filter_mac: Set to 1 to drop packet that's source or
+ destination MAC address contains defined MAC address.
+ (Default value = 0)
+ :param int bvi_mac: Set to 1 to create entry that points to BVI
+ interface. (Default value = 0)
+ """
+ return self.api(vpp_papi.l2fib_add_del,
+ (self._convert_mac(mac), bd_id, sw_if_index, is_add,
+ static_mac, filter_mac, bvi_mac))
- :param bd_id:
- :param sw_if_index:
- :param shg: (Default value = 0)
- :param bvi: (Default value = 0)
- :param enable: (Default value = 1)
-
+ def sw_interface_set_l2_bridge(self, sw_if_index, bd_id,
+ shg=0, bvi=0, enable=1):
+ """Add/remove interface to/from bridge domain.
+
+ :param int sw_if_index: Software interface index of the interface.
+ :param int bd_id: Bridge domain index.
+ :param int shg: Split-horizon group index. (Default value = 0)
+ :param int bvi: Set interface as a bridge group virtual interface.
+ (Default value = 0)
+ :param int enable: Add or remove interface. (Default value = 1)
"""
return self.api(vpp_papi.sw_interface_set_l2_bridge,
(sw_if_index, bd_id, shg, bvi, enable))
"""Create or delete unidirectional cross-connect from Tx interface to
Rx interface.
- :param rx_sw_if_index: Software interface index of Rx interface.
- :param tx_sw_if_index: Software interface index of Tx interface.
- :param enable: Create cross-connect if equal to 1, delete cross-connect
- if equal to 0.
- :type rx_sw_if_index: str or int
- :type rx_sw_if_index: str or int
- :type enable: int
+ :param int rx_sw_if_index: Software interface index of Rx interface.
+ :param int tx_sw_if_index: Software interface index of Tx interface.
+ :param int enable: Create cross-connect if equal to 1, delete
+ cross-connect if equal to 0.
"""
return self.api(vpp_papi.sw_interface_set_l2_xconnect,
(rx_sw_if_index, tx_sw_if_index, enable))
+ def sw_interface_set_l2_tag_rewrite(self, sw_if_index, vtr_oper, push=0, tag1=0, tag2=0):
+ """L2 interface vlan tag rewrite configure request
+ :param client_index - opaque cookie to identify the sender
+ :param context - sender context, to match reply w/ request
+ :param sw_if_index - interface the operation is applied to
+ :param vtr_op - Choose from l2_vtr_op_t enum values
+ :param push_dot1q - first pushed flag dot1q id set, else dot1ad
+ :param tag1 - Needed for any push or translate vtr op
+ :param tag2 - Needed for any push 2 or translate x-2 vtr ops
+
+ """
+ return self.api(vpp_papi.l2_interface_vlan_tag_rewrite,
+ (sw_if_index, vtr_oper, push, tag1, tag2))
+
def sw_interface_set_flags(self, sw_if_index, admin_up_down,
link_up_down=0, deleted=0):
"""
outer_vlan,
inner_vlan))
+ def delete_subif(self, sw_if_index):
+ """Delete subinterface
+
+ :param sw_if_index:
+ """
+ return self.api(vpp_papi.delete_subif, ([sw_if_index]))
+
def create_vlan_subif(self, sw_if_index, vlan):
"""
dst_address
)
)
+
+ def sw_interface_span_enable_disable(self, sw_if_index_from, sw_if_index_to, enable=1):
+ """
+
+ :param sw_if_index_from:
+ :param sw_if_index_to:
+ :param enable
+
+ """
+ return self.api(vpp_papi.sw_interface_span_enable_disable, (sw_if_index_from, sw_if_index_to, enable ))
+
+ def gre_tunnel_add_del(self,
+ src_address,
+ dst_address,
+ outer_fib_id=0,
+ is_teb=0,
+ is_add=1,
+ is_ip6=0):
+ """ Add a GRE tunnel
+
+ :param src_address:
+ :param dst_address:
+ :param outer_fib_id: (Default value = 0)
+ :param is_add: (Default value = 1)
+ :param is_ipv6: (Default value = 0)
+ :param is_teb: (Default value = 0)
+ """
+
+ return self.api(
+ vpp_papi.gre_add_del_tunnel,
+ (is_add,
+ is_ip6,
+ is_teb,
+ src_address,
+ dst_address,
+ outer_fib_id)
+ )