Compare commits
57 Commits
v17.10-rc0
...
v17.04.1
Author | SHA1 | Date | |
---|---|---|---|
|
7d68ec6134 | ||
|
7ebd374e18 | ||
|
c4352553ee | ||
|
1985c93bd7 | ||
|
1da79ed899 | ||
|
99c0734e54 | ||
|
307cfd8eb1 | ||
|
cbc9aa025f | ||
|
4c72e629e5 | ||
|
2f8fa30f34 | ||
|
4deb95592e | ||
|
1407883372 | ||
|
d351fbf2fc | ||
|
08cf5f2b17 | ||
|
511ee63cbb | ||
|
c39ed3da62 | ||
|
e23680056e | ||
|
128254a1c3 | ||
|
8a74f2a480 | ||
|
4cb2357443 | ||
|
2c91879e7f | ||
|
5d0137bbd0 | ||
|
282accc2b3 | ||
|
012e4bab6c | ||
|
1604a9c0ca | ||
|
d8d09d15e2 | ||
|
68df5a51f6 | ||
|
2594216a9a | ||
|
00c14a94c3 | ||
|
5e189f1a88 | ||
|
92bcecfdcc | ||
|
0f0ff322b1 | ||
|
16c76de9b5 | ||
|
b970bb7f01 | ||
|
77ff34d550 | ||
|
12cb0c4cdb | ||
|
5d0b86b8ef | ||
|
f7f4535510 | ||
|
c6cd26d520 | ||
|
7fd3f513c7 | ||
|
517f72fe18 | ||
|
9fc0c26c6b | ||
|
ec06222ae1 | ||
|
de9a7eacd5 | ||
|
f6fc6b674d | ||
|
5d2495d550 | ||
|
097051a3bd | ||
|
65d5f03793 | ||
|
ee403b722f | ||
|
39cdca35c5 | ||
|
f60b77c159 | ||
|
ff077a0401 | ||
|
0679760dc5 | ||
|
58f061dca4 | ||
|
45e526f36f | ||
|
f9bb3b45d1 | ||
|
cb92fc6edc |
@ -2,3 +2,4 @@
|
||||
host=gerrit.fd.io
|
||||
port=29418
|
||||
project=vpp
|
||||
defaultbranch=stable/1704
|
||||
|
@ -57,7 +57,7 @@ M: Damjan Marion <damarion@cisco.com>
|
||||
F: src/vnet/devices/
|
||||
|
||||
VNET Device Drivers - DPDK Crypto
|
||||
M: Sergio Gonzales Monroy <sergio.gonzalez.monroy@intel.com>
|
||||
M: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
|
||||
F: src/devices/dpdk/ipsec/
|
||||
|
||||
VNET Feature Arcs
|
||||
@ -81,7 +81,7 @@ M: Pablo Camarillo <pcamaril@cisco.com>
|
||||
F: src/vnet/sr/
|
||||
|
||||
VNET IPSec
|
||||
M: Sergio Gonzales Monroy <sergio.gonzalez.monroy@intel.com>
|
||||
M: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
|
||||
M: Matus Fabian <matfabia@cisco.com>
|
||||
F: src/vnet/ipsec/
|
||||
|
||||
|
2
Makefile
2
Makefile
@ -40,7 +40,7 @@ DEB_DEPENDS = curl build-essential autoconf automake bison libssl-dev ccache
|
||||
DEB_DEPENDS += debhelper dkms git libtool libganglia1-dev libapr1-dev dh-systemd
|
||||
DEB_DEPENDS += libconfuse-dev git-review exuberant-ctags cscope pkg-config
|
||||
DEB_DEPENDS += lcov chrpath autoconf nasm
|
||||
DEB_DEPENDS += python-dev python-virtualenv python-pip libffi6
|
||||
DEB_DEPENDS += python-all python-dev python-virtualenv python-pip libffi6
|
||||
ifeq ($(OS_VERSION_ID),14.04)
|
||||
DEB_DEPENDS += openjdk-8-jdk-headless
|
||||
else
|
||||
|
186
RELEASE.md
186
RELEASE.md
@ -1,12 +1,105 @@
|
||||
# Release Notes {#release_notes}
|
||||
|
||||
* @subpage release_notes_1704
|
||||
* @subpage release_notes_17011
|
||||
* @subpage release_notes_1701
|
||||
* @subpage release_notes_1609
|
||||
* @subpage release_notes_1606
|
||||
|
||||
@page release_notes_1704 Release notes for VPP 17.04
|
||||
|
||||
More than 500 commits since the 1701 release.
|
||||
|
||||
## Features
|
||||
- Infrastructure
|
||||
- make test improvements
|
||||
- vnet: add device-input threadplacement infra
|
||||
- 64 bit per-thread counters
|
||||
- process restart cli
|
||||
- High performance timer wheels
|
||||
- Plugin infrastructure improvements
|
||||
- Support for .default_disabled, .version_required
|
||||
- Added MAINTAINERS file
|
||||
|
||||
- Host stack
|
||||
- TCP stack (experimental)
|
||||
- DHCPv4 / DHCPv6 relay multi-destination
|
||||
- DHCPv4 option 82
|
||||
- ND proxy
|
||||
- Attached hosts
|
||||
- Consolidated DHCPv4 and DHCPv6 implementation
|
||||
|
||||
- Interfaces
|
||||
- DPDK 17.02 (retire support for DPDK 16.07)
|
||||
- Add memif - packet memory interface for intra-host communication
|
||||
- vhost: support interrupt mode
|
||||
- DPDK as plugin (retired vpp_lite)
|
||||
- DPDPK input optimizations
|
||||
- Loopback interface allocation scheme
|
||||
|
||||
- Network features
|
||||
- IP Multicast FIB
|
||||
|
||||
- Bridging
|
||||
- Learning on local interfaces
|
||||
- Flushing of MACs from the L2 FIB
|
||||
|
||||
- SNAT
|
||||
- CGN (Deterministic and dynamic)
|
||||
- CGN configurable port allocation algorithm
|
||||
- ICMP support
|
||||
- Tentant VRF id for SNAT outside addresses
|
||||
- Session dump / User dump
|
||||
- Port allocation per protocol
|
||||
|
||||
- Security groups
|
||||
- Routed interface support
|
||||
- L2+L3 unified processing node
|
||||
- Improve fragment handling
|
||||
|
||||
- Segement routing v6
|
||||
- SR policies with weighted SID lists
|
||||
- Binding SID
|
||||
- SR steering policies
|
||||
- SR Local SIDs
|
||||
- Framework to expand local SIDs w/plugins
|
||||
- Documentation
|
||||
|
||||
- IOAM
|
||||
- UDP Pinger w/path fault isolation
|
||||
- IOAM as type 2 metadata in NSH
|
||||
- IAOM raw IPFIX collector and analyzer
|
||||
- Anycast active server selection
|
||||
- Documentation
|
||||
- SRv6 Local SID
|
||||
- IP6 HBH header and SR header co-existence
|
||||
- Active probe
|
||||
|
||||
- LISP
|
||||
- Statistics collection
|
||||
- Generalize encap for overlay transport (vxlan-gpe support)
|
||||
- Improve data plane speed
|
||||
|
||||
- GPE
|
||||
- CLI
|
||||
- NSH added to encap/decap path
|
||||
- Renamed LISP GPE API to GPE
|
||||
|
||||
- MPLS
|
||||
- Performance improvements (quad loop)
|
||||
|
||||
- BFD
|
||||
- Command line interface
|
||||
- Echo function
|
||||
- Remote demand mode
|
||||
- SHA1 authentication
|
||||
|
||||
- IPsec
|
||||
- IKEv2 initiator features
|
||||
|
||||
- VXLAN
|
||||
- unify IP4/IP6 control plane handling
|
||||
|
||||
## API changes
|
||||
|
||||
- Python API: To avoid conflicts between VPP API messages names and
|
||||
@ -23,23 +116,112 @@
|
||||
For backwards compatibility VPP API methods are left in the main
|
||||
name space (VPP), but will be removed from 17.07.
|
||||
|
||||
- Python API: Change from cPython to CFFI.
|
||||
|
||||
- create_loopback message to be replaced with create_loopback_instance
|
||||
create_loopback will be removed from 17.07.
|
||||
https://gerrit.fd.io/r/#/c/5572/
|
||||
|
||||
@todo Release 17.04 needs release notes.
|
||||
## Known issues
|
||||
|
||||
For the full list of issues please reffer to fd.io [JIRA](https://jira.fd.io).
|
||||
|
||||
## Issues fixed
|
||||
|
||||
For the full list of fixed issues please reffer to:
|
||||
- fd.io [JIRA](https://jira.fd.io)
|
||||
- git [commit log](https://git.fd.io/vpp/log/?h=stable/1704)
|
||||
|
||||
@page release_notes_17011 Release notes for VPP 17.01.1
|
||||
|
||||
This is bug fix release.
|
||||
|
||||
For the full list of fixed issues please reffer to:
|
||||
- fd.io [JIRA](https://jira.fd.io)
|
||||
- git [commit log](https://git.fd.io/vpp/log/?h=stable/1701)
|
||||
|
||||
@page release_notes_1701 Release notes for VPP 17.01
|
||||
|
||||
@note This release was for a while known as 16.12.
|
||||
@todo Release 17.01 needs release notes. It will show up here soon...
|
||||
|
||||
## Features
|
||||
|
||||
- [Integrated November 2016 DPDK release](http://www.dpdk.org/doc/guides/rel_notes/release_16_11.html)
|
||||
|
||||
- Complete rework of Forwarding Information Base (FIB)
|
||||
|
||||
- Performance Improvements
|
||||
- Improvements in DPDK input and output nodes
|
||||
- Improvements in L2 path
|
||||
- Improvmeents in IPv4 lookup node
|
||||
|
||||
- Feature Arcs Improvements
|
||||
- Consolidation of the code
|
||||
- New feature arcs
|
||||
- device-input
|
||||
- interface-output
|
||||
|
||||
- DPDK Cryptodev Support
|
||||
- Software and Hardware Crypto Support
|
||||
|
||||
- DPDK HQoS support
|
||||
|
||||
- Simple Port Analyzer (SPAN)
|
||||
|
||||
- Bidirectional Forwarding Detection
|
||||
- Basic implementation
|
||||
|
||||
- IPFIX Improvements
|
||||
|
||||
- L2 GRE over IPSec tunnels
|
||||
|
||||
- Link Layer Discovery Protocol (LLDP)
|
||||
|
||||
- Vhost-user Improvements
|
||||
- Performance Improvements
|
||||
- Multiqueue
|
||||
- Reconnect
|
||||
|
||||
- LISP Enhancements
|
||||
- Source/Dest control plane support
|
||||
- L2 over LISP and GRE
|
||||
- Map-Register/Map-Notify/RLOC-probing support
|
||||
- L2 API improvements, overall code hardening
|
||||
|
||||
- Plugins:
|
||||
- New: ACL
|
||||
- New: Flow per Packet
|
||||
- Improved: SNAT
|
||||
- Mutlithreading
|
||||
- Flow export
|
||||
|
||||
- Doxygen Enhancements
|
||||
|
||||
- Luajit API bindings
|
||||
|
||||
- API Refactoring
|
||||
- file split
|
||||
- message signatures
|
||||
|
||||
- Python and Scapy based unit testing infrastructure
|
||||
- Infrastructure
|
||||
- Various tests
|
||||
|
||||
- Packet Generator improvements
|
||||
|
||||
- TUN/TAP jumbo frames support
|
||||
|
||||
- Other various bug fixes and improvements
|
||||
|
||||
## Known issues
|
||||
|
||||
For the full list of issues please reffer to fd.io [JIRA](https://jira.fd.io).
|
||||
|
||||
## Issues fixed
|
||||
|
||||
For the full list of fixed issues please reffer to:
|
||||
- fd.io [JIRA](https://jira.fd.io)
|
||||
- git [commit log](https://git.fd.io/vpp/log/?h=stable/1701)
|
||||
|
||||
@page release_notes_1609 Release notes for VPP 16.09
|
||||
|
||||
|
@ -59,10 +59,6 @@ install-deb: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
|
||||
./scripts/find-vpp-api-java-contents $(INSTALL_PREFIX)$(ARCH) \
|
||||
deb/debian/vpp-api-java.install ; \
|
||||
\
|
||||
: vpp-api-python package ; \
|
||||
./scripts/find-vpp-api-python-contents $(INSTALL_PREFIX)$(ARCH) \
|
||||
deb/debian/vpp-api-python.install ; \
|
||||
\
|
||||
: bin package needs startup config ; \
|
||||
echo ../../src/vpp/conf/startup.conf /etc/vpp \
|
||||
>> deb/debian/vpp.install ; \
|
||||
|
@ -2,7 +2,7 @@ Source: vpp
|
||||
Section: net
|
||||
Priority: extra
|
||||
Maintainer: Cisco OpenVPP Packaging Team <bogus.address@cisco.com>
|
||||
Build-Depends: debhelper (>= 9), dh-systemd, dh-python, chrpath
|
||||
Build-Depends: debhelper (>= 9), dh-systemd, dh-python, chrpath, python-all
|
||||
Standards-Version: 3.9.4
|
||||
|
||||
Package: vpp
|
||||
|
@ -16,9 +16,15 @@ include /usr/share/dpkg/default.mk
|
||||
# package maintainers to append LDFLAGS
|
||||
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
|
||||
|
||||
export PYBUILD_NAME = vpp-api-python
|
||||
export PYBUILD_DIR = ../../src/vpp-api/python
|
||||
export PYBUILD_DESTDIR_python2=debian/vpp-api-python/
|
||||
export PYBUILD_DISABLE_python2=test
|
||||
export PYBUILD_SYSTEM=distutils
|
||||
|
||||
# main packaging script based on dh7 syntax
|
||||
%:
|
||||
dh $@ --with systemd,python2
|
||||
dh $@ --with systemd,python2 --buildsystem=pybuild
|
||||
|
||||
override_dh_install:
|
||||
dh_install --exclude .git
|
||||
|
@ -1,5 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# after installing python-api files
|
||||
python2_sitedir=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
easy_install --install-dir=$python2_sitedir -z $python2_sitedir/vpp_papi/vpp_papi-*.egg
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# before removing python-api files
|
||||
python2_sitedir=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
easy_install --install-dir=$python2_sitedir -mxNq vpp_papi
|
||||
|
||||
# the egg has been copied during install
|
||||
rm $python2_sitedir/vpp_papi-*.egg
|
@ -89,7 +89,7 @@ This package contains the java bindings for the vpp api
|
||||
%package api-python
|
||||
Summary: VPP api python bindings
|
||||
Group: Development/Libraries
|
||||
Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release}, python-setuptools libffi-devel
|
||||
Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release}, python-setuptools libffi-devel python-cffi
|
||||
|
||||
%description api-python
|
||||
This package contains the python bindings for the vpp api
|
||||
|
@ -53,7 +53,8 @@ DOXY_SRC_DIRECTORIES = \
|
||||
$(DOXY_SRC)/vlibsocket \
|
||||
$(DOXY_SRC)/vnet \
|
||||
$(DOXY_SRC)/vpp \
|
||||
$(DOXY_SRC)/vpp-api
|
||||
$(DOXY_SRC)/vpp-api \
|
||||
$(DOXY_SRC)/examples
|
||||
|
||||
# Input directories and files
|
||||
DOXY_INPUT ?= \
|
||||
@ -72,9 +73,8 @@ DOXY_INPUT := $(subst $(WS_ROOT)/,,$(DOXY_INPUT))
|
||||
# These must be left-anchored paths for the regexp below to work.
|
||||
DOXY_EXCLUDE ?= \
|
||||
$(DOXY_SRC)/vlib/vlib/buffer.c \
|
||||
$(DOXY_SRC)/vlib/example \
|
||||
$(DOXY_SRC)/vpp-api/lua \
|
||||
plugins/sample-plugin
|
||||
$(DOXY_SRC)/examples/sample-plugin
|
||||
|
||||
# Generate a regexp for filenames to exclude
|
||||
DOXY_EXCLUDE_REGEXP = ($(subst .,\.,$(shell echo '$(strip $(DOXY_EXCLUDE))' | sed -e 's/ /|/g')))
|
||||
|
@ -4,13 +4,14 @@ User Documentation {#user_doc}
|
||||
Several modules provide operational, dataplane-user focused documentation.
|
||||
|
||||
- [GUI guided user demo](https://wiki.fd.io/view/VPP_Sandbox/vpp-userdemo)
|
||||
- @subpage qos_doc
|
||||
- @subpage ipsec_gre_doc
|
||||
- @subpage dpdk_crypto_ipsec_doc
|
||||
- @subpage map_doc
|
||||
- @subpage lldp_doc
|
||||
- @subpage ioam_plugin_doc
|
||||
- @subpage lb_plugin_doc
|
||||
- @subpage flowperpkt_plugin_doc
|
||||
- @subpage span_doc
|
||||
- @subpage bfd_doc
|
||||
- @subpage ioam_plugin_doc
|
||||
- @subpage ipsec_gre_doc
|
||||
- @subpage lb_plugin_doc
|
||||
- @subpage lldp_doc
|
||||
- @subpage map_doc
|
||||
- @subpage dpdk_crypto_ipsec_doc
|
||||
- @subpage flowperpkt_plugin_doc
|
||||
- @subpage qos_doc
|
||||
- @subpage span_doc
|
||||
- @subpage srv6_doc
|
||||
|
@ -154,7 +154,6 @@ PLUGIN_ENABLED(lb)
|
||||
PLUGIN_ENABLED(memif)
|
||||
PLUGIN_ENABLED(sixrd)
|
||||
PLUGIN_ENABLED(snat)
|
||||
PLUGIN_DISABLED(srv6sample)
|
||||
|
||||
###############################################################################
|
||||
# Dependency checks
|
||||
|
@ -1,12 +1,4 @@
|
||||
# SRv6 Sample LocalSID documentation {#srv6_plugin_doc}
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This is a memo intended to contain documentation for the sample SRv6 LocalSID behavior plugin
|
||||
Everything that is not directly obvious should come here.
|
||||
For any feedback on content that should be explained please mailto:pcamaril@cisco.com
|
||||
|
||||
This plugin refers to Segment Routing. Please read the SR documentation first.
|
||||
# Sample SRv6 LocalSID documentation {#srv6_plugin_doc}
|
||||
|
||||
## Introduction
|
||||
|
@ -69,10 +69,6 @@ if ENABLE_SNAT_PLUGIN
|
||||
include snat.am
|
||||
endif
|
||||
|
||||
if ENABLE_SRV6SAMPLE_PLUGIN
|
||||
include sample_srv6_localsid.am
|
||||
endif
|
||||
|
||||
include ../suffix-rules.mk
|
||||
|
||||
# Remove *.la files
|
||||
|
@ -22,6 +22,7 @@ acl_plugin_la_SOURCES = \
|
||||
acl/l2sess.c \
|
||||
acl/l2sess_node.c \
|
||||
acl/l2sess.h \
|
||||
acl/manual_fns.h \
|
||||
acl/acl_plugin.api.h
|
||||
|
||||
API_FILES += acl/acl.api
|
||||
@ -29,8 +30,9 @@ API_FILES += acl/acl.api
|
||||
nobase_apiinclude_HEADERS += \
|
||||
acl/acl_all_api_h.h \
|
||||
acl/acl_msg_enum.h \
|
||||
acl/manual_fns.h \
|
||||
acl/acl.api.h
|
||||
|
||||
acl_test_plugin_la_SOURCES = acl/acl_test.c acl/acl_plugin.api.h
|
||||
acl_test_plugin_la_SOURCES = acl/acl_test.c acl/acl_plugin.api.h acl/acl_all_api.h
|
||||
|
||||
# vi:syntax=automake
|
||||
|
@ -60,7 +60,7 @@ define acl_plugin_get_version_reply
|
||||
@param tcp_flags_value - if proto==6, mask to AND the TCP flags in the packet with
|
||||
*/
|
||||
|
||||
typeonly manual_print manual_endian define acl_rule
|
||||
typeonly manual_print define acl_rule
|
||||
{
|
||||
u8 is_permit;
|
||||
u8 is_ipv6;
|
||||
@ -104,7 +104,7 @@ typeonly manual_print manual_endian define acl_rule
|
||||
@param src_ip_prefix_len - Source prefix length
|
||||
*/
|
||||
|
||||
typeonly manual_print manual_endian define macip_acl_rule
|
||||
typeonly manual_print define macip_acl_rule
|
||||
{
|
||||
u8 is_permit;
|
||||
u8 is_ipv6;
|
||||
@ -161,7 +161,7 @@ define acl_add_replace_reply
|
||||
@param acl_index - ACL index to delete
|
||||
*/
|
||||
|
||||
define acl_del
|
||||
manual_print define acl_del
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -190,7 +190,7 @@ define acl_del_reply
|
||||
@param acl_index - index of ACL for the operation
|
||||
*/
|
||||
|
||||
define acl_interface_add_del
|
||||
manual_print define acl_interface_add_del
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -224,7 +224,7 @@ define acl_interface_add_del_reply
|
||||
@param acls - vector of ACL indices
|
||||
*/
|
||||
|
||||
manual_endian define acl_interface_set_acl_list
|
||||
manual_print define acl_interface_set_acl_list
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -266,7 +266,7 @@ define acl_dump
|
||||
@param r - Array of rules within this ACL
|
||||
*/
|
||||
|
||||
manual_print manual_endian define acl_details
|
||||
manual_endian manual_print define acl_details
|
||||
{
|
||||
u32 context;
|
||||
u32 acl_index;
|
||||
@ -296,7 +296,7 @@ define acl_interface_list_dump
|
||||
@param acls - the vector of ACL indices
|
||||
*/
|
||||
|
||||
manual_endian define acl_interface_list_details
|
||||
define acl_interface_list_details
|
||||
{
|
||||
u32 context;
|
||||
u32 sw_if_index;
|
||||
@ -313,7 +313,7 @@ manual_endian define acl_interface_list_details
|
||||
@param r - vector of MACIP ACL rules
|
||||
*/
|
||||
|
||||
manual_print manual_endian define macip_acl_add
|
||||
manual_endian manual_print define macip_acl_add
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -341,7 +341,7 @@ define macip_acl_add_reply
|
||||
@param acl_index - MACIP ACL index to delete
|
||||
*/
|
||||
|
||||
define macip_acl_del
|
||||
manual_print define macip_acl_del
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -367,7 +367,7 @@ define macip_acl_del_reply
|
||||
@param acl_index - MACIP ACL index
|
||||
*/
|
||||
|
||||
define macip_acl_interface_add_del
|
||||
manual_print define macip_acl_interface_add_del
|
||||
{
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
@ -409,7 +409,7 @@ define macip_acl_dump
|
||||
@param r - rules comprising this ACL
|
||||
*/
|
||||
|
||||
manual_print manual_endian define macip_acl_details
|
||||
manual_endian manual_print define macip_acl_details
|
||||
{
|
||||
u32 context;
|
||||
u32 acl_index;
|
||||
|
@ -1767,8 +1767,6 @@ vl_api_macip_acl_interface_get_t_handler (vl_api_macip_acl_interface_get_t *
|
||||
vl_msg_api_send_shmem (q, (u8 *) & rmp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Set up the API message handling tables */
|
||||
static clib_error_t *
|
||||
acl_plugin_api_hookup (vlib_main_t * vm)
|
||||
@ -1968,6 +1966,10 @@ acl_sw_interface_add_del (vnet_main_t * vnm, u32 sw_if_index, u32 is_add)
|
||||
if (0 == is_add) {
|
||||
vlib_process_signal_event (am->vlib_main, am->fa_cleaner_node_index,
|
||||
ACL_FA_CLEANER_DELETE_BY_SW_IF_INDEX, sw_if_index);
|
||||
/* also unapply any ACLs in case the users did not do so. */
|
||||
macip_acl_interface_del_acl(am, sw_if_index);
|
||||
acl_interface_reset_inout_acls (sw_if_index, 0);
|
||||
acl_interface_reset_inout_acls (sw_if_index, 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -2010,6 +2012,11 @@ acl_set_aclplugin_fn (vlib_main_t * vm,
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
if (unformat (input, "l4-match-nonfirst-fragment %u", &val))
|
||||
{
|
||||
am->l4_match_nonfirst_fragment = (val != 0);
|
||||
goto done;
|
||||
}
|
||||
if (unformat (input, "session")) {
|
||||
if (unformat (input, "clear")) {
|
||||
acl_main_t *am = &acl_main;
|
||||
@ -2120,10 +2127,15 @@ acl_show_aclplugin_fn (vlib_main_t * vm,
|
||||
u64 n_dels = sw_if_index < vec_len(am->fa_session_dels_by_sw_if_index) ? am->fa_session_dels_by_sw_if_index[sw_if_index] : 0;
|
||||
out0 = format(out0, "sw_if_index %d: add %lu - del %lu = %lu\n", sw_if_index, n_adds, n_dels, n_adds - n_dels);
|
||||
}));
|
||||
out0 = format(out0, "\n\nConn cleaner thread counters:\n");
|
||||
#define _(cnt, desc) out0 = format(out0, " %20lu: %s\n", am->cnt, desc);
|
||||
foreach_fa_cleaner_counter;
|
||||
#undef _
|
||||
vlib_cli_output(vm, "\n\n%s\n\n", out0);
|
||||
vlib_cli_output(vm, "Sessions per interval: min %lu max %lu increment: %f ms current: %f ms",
|
||||
am->fa_min_deleted_sessions_per_interval, am->fa_max_deleted_sessions_per_interval,
|
||||
am->fa_cleaner_wait_time_increment * 1000.0, ((f64)am->fa_current_cleaner_timer_wait_interval) * 1000.0/(f64)vm->clib_time.clocks_per_second);
|
||||
|
||||
vec_free(out0);
|
||||
}
|
||||
return error;
|
||||
@ -2190,10 +2202,20 @@ acl_init (vlib_main_t * vm)
|
||||
am->fa_max_deleted_sessions_per_interval = ACL_FA_DEFAULT_MAX_DELETED_SESSIONS_PER_INTERVAL;
|
||||
am->fa_cleaner_wait_time_increment = ACL_FA_DEFAULT_CLEANER_WAIT_TIME_INCREMENT;
|
||||
|
||||
am->fa_cleaner_cnt_delete_by_sw_index = 0;
|
||||
am->fa_cleaner_cnt_delete_by_sw_index_ok = 0;
|
||||
am->fa_cleaner_cnt_unknown_event = 0;
|
||||
am->fa_cleaner_cnt_deleted_sessions = 0;
|
||||
am->fa_cleaner_cnt_timer_restarted = 0;
|
||||
am->fa_cleaner_cnt_wait_with_timeout = 0;
|
||||
|
||||
|
||||
#define _(N, v, s) am->fa_ipv6_known_eh_bitmap = clib_bitmap_set(am->fa_ipv6_known_eh_bitmap, v, 1);
|
||||
foreach_acl_eh
|
||||
#undef _
|
||||
|
||||
am->l4_match_nonfirst_fragment = 1;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -181,6 +181,9 @@ typedef struct {
|
||||
/* EH values that we can skip over */
|
||||
uword *fa_ipv6_known_eh_bitmap;
|
||||
|
||||
/* whether to match L4 ACEs with ports on the non-initial fragment */
|
||||
int l4_match_nonfirst_fragment;
|
||||
|
||||
/* conn table per-interface conn table parameters */
|
||||
u32 fa_conn_table_hash_num_buckets;
|
||||
uword fa_conn_table_hash_memory_size;
|
||||
@ -209,6 +212,22 @@ typedef struct {
|
||||
u32 fa_conn_list_head[ACL_N_TIMEOUTS];
|
||||
u32 fa_conn_list_tail[ACL_N_TIMEOUTS];
|
||||
|
||||
/* Counters for the cleaner thread */
|
||||
|
||||
#define foreach_fa_cleaner_counter \
|
||||
_(fa_cleaner_cnt_delete_by_sw_index, "delete_by_sw_index events") \
|
||||
_(fa_cleaner_cnt_delete_by_sw_index_ok, "delete_by_sw_index handled ok") \
|
||||
_(fa_cleaner_cnt_unknown_event, "unknown events received") \
|
||||
_(fa_cleaner_cnt_deleted_sessions, "sessions deleted") \
|
||||
_(fa_cleaner_cnt_timer_restarted, "session idle timers restarted") \
|
||||
_(fa_cleaner_cnt_wait_with_timeout, "event wait with timeout called") \
|
||||
_(fa_cleaner_cnt_wait_without_timeout, "event wait w/o timeout called") \
|
||||
_(fa_cleaner_cnt_event_cycles, "total event cycles") \
|
||||
_(fa_cleaner_cnt_already_deleted, "try to delete already deleted conn") \
|
||||
/* end of counters */
|
||||
#define _(id, desc) u32 id;
|
||||
foreach_fa_cleaner_counter
|
||||
#undef _
|
||||
|
||||
/* convenience */
|
||||
vlib_main_t * vlib_main;
|
||||
@ -219,6 +238,7 @@ typedef struct {
|
||||
_(HOPBYHOP , 0 , "IPv6ExtHdrHopByHop") \
|
||||
_(ROUTING , 43 , "IPv6ExtHdrRouting") \
|
||||
_(DESTOPT , 60 , "IPv6ExtHdrDestOpt") \
|
||||
_(FRAGMENT , 44 , "IPv6ExtHdrFragment") \
|
||||
_(MOBILITY , 135, "Mobility Header") \
|
||||
_(HIP , 139, "Experimental use Host Identity Protocol") \
|
||||
_(SHIM6 , 140, "Shim6 Protocol") \
|
||||
@ -231,7 +251,6 @@ typedef struct {
|
||||
Also, Fragment header needs special processing.
|
||||
|
||||
_(NONEXT , 59 , "NoNextHdr") \
|
||||
_(FRAGMENT , 44 , "IPv6ExtHdrFragment") \
|
||||
|
||||
|
||||
ESP is hiding its internal format, so no point in trying to go past it.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -164,14 +164,14 @@ vl_api_acl_rule_t_pretty_format (u8 *out, vl_api_acl_rule_t * a)
|
||||
inet_ntop(af, a->src_ip_addr, (void *)src, sizeof(src));
|
||||
inet_ntop(af, a->dst_ip_addr, (void *)dst, sizeof(dst));
|
||||
|
||||
out = format(out, "%s action %d src %s/%d dst %s/%d proto %d sport %d-%d dport %d-%d tcpflags %d %d",
|
||||
out = format(out, "%s action %d src %s/%d dst %s/%d proto %d sport %d-%d dport %d-%d tcpflags %d mask %d",
|
||||
a->is_ipv6 ? "ipv6" : "ipv4", a->is_permit,
|
||||
src, a->src_ip_prefix_len,
|
||||
dst, a->dst_ip_prefix_len,
|
||||
a->proto,
|
||||
a->srcport_or_icmptype_first, a->srcport_or_icmptype_last,
|
||||
a->dstport_or_icmpcode_first, a->dstport_or_icmpcode_last,
|
||||
a->tcp_flags_mask, a->tcp_flags_value);
|
||||
a->tcp_flags_value, a->tcp_flags_mask);
|
||||
return(out);
|
||||
}
|
||||
|
||||
@ -326,6 +326,7 @@ static int api_acl_add_replace (vat_main_t * vam)
|
||||
vl_api_acl_rule_t *rules = 0;
|
||||
int rule_idx = 0;
|
||||
int n_rules = 0;
|
||||
int n_rules_override = -1;
|
||||
u32 proto = 0;
|
||||
u32 port1 = 0;
|
||||
u32 port2 = 0;
|
||||
@ -363,6 +364,10 @@ static int api_acl_add_replace (vat_main_t * vam)
|
||||
vec_validate_acl_rules(rules, rule_idx);
|
||||
rules[rule_idx].is_permit = 1;
|
||||
}
|
||||
else if (unformat (i, "count %d", &n_rules_override))
|
||||
{
|
||||
/* we will use this later */
|
||||
}
|
||||
else if (unformat (i, "action %d", &action))
|
||||
{
|
||||
vec_validate_acl_rules(rules, rule_idx);
|
||||
@ -430,6 +435,12 @@ static int api_acl_add_replace (vat_main_t * vam)
|
||||
rules[rule_idx].tcp_flags_value = tcpflags;
|
||||
rules[rule_idx].tcp_flags_mask = tcpmask;
|
||||
}
|
||||
else if (unformat (i, "tcpflags %d mask %d", &tcpflags, &tcpmask))
|
||||
{
|
||||
vec_validate_acl_rules(rules, rule_idx);
|
||||
rules[rule_idx].tcp_flags_value = tcpflags;
|
||||
rules[rule_idx].tcp_flags_mask = tcpmask;
|
||||
}
|
||||
else if (unformat (i, "proto %d", &proto))
|
||||
{
|
||||
vec_validate_acl_rules(rules, rule_idx);
|
||||
@ -455,6 +466,9 @@ static int api_acl_add_replace (vat_main_t * vam)
|
||||
else
|
||||
n_rules = 0;
|
||||
|
||||
if (n_rules_override >= 0)
|
||||
n_rules = n_rules_override;
|
||||
|
||||
msg_size += n_rules*sizeof(rules[0]);
|
||||
|
||||
mp = vl_msg_api_alloc_as_if_client(msg_size);
|
||||
@ -812,6 +826,7 @@ static int api_macip_acl_add (vat_main_t * vam)
|
||||
vl_api_macip_acl_rule_t *rules = 0;
|
||||
int rule_idx = 0;
|
||||
int n_rules = 0;
|
||||
int n_rules_override = -1;
|
||||
u32 src_prefix_length = 0;
|
||||
u32 action = 0;
|
||||
ip4_address_t src_v4address;
|
||||
@ -843,6 +858,10 @@ static int api_macip_acl_add (vat_main_t * vam)
|
||||
vec_validate_macip_acl_rules(rules, rule_idx);
|
||||
rules[rule_idx].is_permit = 0;
|
||||
}
|
||||
else if (unformat (i, "count %d", &n_rules_override))
|
||||
{
|
||||
/* we will use this later */
|
||||
}
|
||||
else if (unformat (i, "action %d", &action))
|
||||
{
|
||||
vec_validate_macip_acl_rules(rules, rule_idx);
|
||||
@ -856,6 +875,10 @@ static int api_macip_acl_add (vat_main_t * vam)
|
||||
rules[rule_idx].src_ip_prefix_len = src_prefix_length;
|
||||
rules[rule_idx].is_ipv6 = 0;
|
||||
}
|
||||
else if (unformat (i, "src"))
|
||||
{
|
||||
/* Everything in MACIP is "source" but allow this verbosity */
|
||||
}
|
||||
else if (unformat (i, "ip %U/%d",
|
||||
unformat_ip6_address, &src_v6address, &src_prefix_length))
|
||||
{
|
||||
@ -897,6 +920,9 @@ static int api_macip_acl_add (vat_main_t * vam)
|
||||
else
|
||||
n_rules = 0;
|
||||
|
||||
if (n_rules_override >= 0)
|
||||
n_rules = n_rules_override;
|
||||
|
||||
msg_size += n_rules*sizeof(rules[0]);
|
||||
|
||||
mp = vl_msg_api_alloc_as_if_client(msg_size);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -22,10 +22,12 @@
|
||||
typedef union {
|
||||
u64 as_u64;
|
||||
struct {
|
||||
u8 tcp_flags_valid;
|
||||
u8 tcp_flags;
|
||||
u8 is_input;
|
||||
u8 l4_valid;
|
||||
u8 tcp_flags_valid:1;
|
||||
u8 is_input:1;
|
||||
u8 l4_valid:1;
|
||||
u8 is_nonfirst_fragment:1;
|
||||
u8 flags_reserved:4;
|
||||
};
|
||||
} fa_packet_info_t;
|
||||
|
||||
@ -61,7 +63,8 @@ typedef struct {
|
||||
u8 reserved1; /* +1 bytes = 64 */
|
||||
u32 link_prev_idx;
|
||||
u32 link_next_idx;
|
||||
u64 reserved2[7];
|
||||
u64 link_enqueue_time;
|
||||
u64 reserved2[6];
|
||||
} fa_session_t;
|
||||
|
||||
|
||||
|
348
src/plugins/acl/manual_fns.h
Normal file
348
src/plugins/acl/manual_fns.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -419,56 +419,35 @@ dpdk_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, u32 flags)
|
||||
}
|
||||
else if (ETHERNET_INTERFACE_FLAG_CONFIG_MTU (flags))
|
||||
{
|
||||
/*
|
||||
* DAW-FIXME: The Cisco VIC firmware does not provide an api for a
|
||||
* driver to dynamically change the mtu. If/when the
|
||||
* VIC firmware gets fixed, then this should be removed.
|
||||
*/
|
||||
if (xd->pmd == VNET_DPDK_PMD_ENIC)
|
||||
int rv;
|
||||
|
||||
xd->port_conf.rxmode.max_rx_pkt_len = hi->max_packet_bytes;
|
||||
|
||||
if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP)
|
||||
rte_eth_dev_stop (xd->device_index);
|
||||
|
||||
rv = rte_eth_dev_configure
|
||||
(xd->device_index, xd->rx_q_used, xd->tx_q_used, &xd->port_conf);
|
||||
|
||||
if (rv < 0)
|
||||
vlib_cli_output (vlib_get_main (),
|
||||
"rte_eth_dev_configure[%d]: err %d",
|
||||
xd->device_index, rv);
|
||||
|
||||
rte_eth_dev_set_mtu (xd->device_index, hi->max_packet_bytes);
|
||||
|
||||
if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP)
|
||||
{
|
||||
struct rte_eth_dev_info dev_info;
|
||||
|
||||
/*
|
||||
* Restore mtu to what has been set by CIMC in the firmware cfg.
|
||||
*/
|
||||
rte_eth_dev_info_get (xd->device_index, &dev_info);
|
||||
hi->max_packet_bytes = dev_info.max_rx_pktlen;
|
||||
|
||||
vlib_cli_output (vlib_get_main (),
|
||||
"Cisco VIC mtu can only be changed "
|
||||
"using CIMC then rebooting the server!");
|
||||
}
|
||||
else
|
||||
{
|
||||
int rv;
|
||||
|
||||
xd->port_conf.rxmode.max_rx_pkt_len = hi->max_packet_bytes;
|
||||
|
||||
if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP)
|
||||
rte_eth_dev_stop (xd->device_index);
|
||||
|
||||
rv = rte_eth_dev_configure
|
||||
(xd->device_index, xd->rx_q_used, xd->tx_q_used, &xd->port_conf);
|
||||
|
||||
int rv = rte_eth_dev_start (xd->device_index);
|
||||
if (!rv && xd->default_mac_address)
|
||||
rv = rte_eth_dev_default_mac_addr_set (xd->device_index,
|
||||
(struct ether_addr *)
|
||||
xd->default_mac_address);
|
||||
if (rv < 0)
|
||||
vlib_cli_output (vlib_get_main (),
|
||||
"rte_eth_dev_configure[%d]: err %d",
|
||||
xd->device_index, rv);
|
||||
|
||||
rte_eth_dev_set_mtu (xd->device_index, hi->max_packet_bytes);
|
||||
|
||||
if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP)
|
||||
{
|
||||
int rv = rte_eth_dev_start (xd->device_index);
|
||||
if (!rv && xd->default_mac_address)
|
||||
rv = rte_eth_dev_default_mac_addr_set (xd->device_index,
|
||||
(struct ether_addr *)
|
||||
xd->default_mac_address);
|
||||
if (rv < 0)
|
||||
clib_warning ("rte_eth_dev_start %d returned %d",
|
||||
xd->device_index, rv);
|
||||
}
|
||||
clib_warning ("rte_eth_dev_start %d returned %d",
|
||||
xd->device_index, rv);
|
||||
}
|
||||
|
||||
}
|
||||
return old;
|
||||
}
|
||||
@ -655,11 +634,13 @@ dpdk_lib_init (dpdk_main_t * dm)
|
||||
{
|
||||
xd->tx_conf.txq_flags |= ETH_TXQ_FLAGS_NOMULTSEGS;
|
||||
port_conf_template.rxmode.jumbo_frame = 0;
|
||||
port_conf_template.rxmode.enable_scatter = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
xd->tx_conf.txq_flags &= ~ETH_TXQ_FLAGS_NOMULTSEGS;
|
||||
port_conf_template.rxmode.jumbo_frame = 1;
|
||||
port_conf_template.rxmode.enable_scatter = 1;
|
||||
xd->flags |= DPDK_DEVICE_FLAG_MAYBE_MULTISEG;
|
||||
}
|
||||
|
||||
@ -1065,16 +1046,13 @@ dpdk_lib_init (dpdk_main_t * dm)
|
||||
hi = vnet_get_hw_interface (dm->vnet_main, xd->vlib_hw_if_index);
|
||||
|
||||
/*
|
||||
* DAW-FIXME: The Cisco VIC firmware does not provide an api for a
|
||||
* driver to dynamically change the mtu. If/when the
|
||||
* VIC firmware gets fixed, then this should be removed.
|
||||
* For cisco VIC vNIC, set default to VLAN strip enabled, unless
|
||||
* specified otherwise in the startup config.
|
||||
* For other NICs default to VLAN strip disabled, unless specified
|
||||
* otherwis in the startup config.
|
||||
*/
|
||||
if (xd->pmd == VNET_DPDK_PMD_ENIC)
|
||||
{
|
||||
/*
|
||||
* Initialize mtu to what has been set by CIMC in the firmware cfg.
|
||||
*/
|
||||
hi->max_packet_bytes = dev_info.max_rx_pktlen;
|
||||
if (devconf->vlan_strip_offload != DPDK_DEVICE_VLAN_STRIP_OFF)
|
||||
vlan_strip = 1; /* remove vlan tag from VIC port by default */
|
||||
else
|
||||
|
@ -736,8 +736,7 @@ ila_add_del_entry (ila_add_del_entry_args_t * args)
|
||||
fib_table_entry_special_add(0,
|
||||
&next_hop,
|
||||
FIB_SOURCE_RR,
|
||||
FIB_ENTRY_FLAG_NONE,
|
||||
ADJ_INDEX_INVALID);
|
||||
FIB_ENTRY_FLAG_NONE);
|
||||
e->next_hop_child_index =
|
||||
fib_entry_child_add(e->next_hop_fib_entry_index,
|
||||
ila_fib_node_type,
|
||||
|
@ -155,6 +155,19 @@ vxlan_gpe_ioam_export_plugin_api_hookup (vlib_main_t * vm)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define vl_msg_name_crc_list
|
||||
#include <ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_all_api_h.h>
|
||||
#undef vl_msg_name_crc_list
|
||||
|
||||
static void
|
||||
setup_message_id_table (ioam_export_main_t * sm, api_main_t * am)
|
||||
{
|
||||
#define _(id,n,crc) \
|
||||
vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id + sm->msg_id_base);
|
||||
foreach_vl_msg_name_crc_vxlan_gpe_ioam_export;
|
||||
#undef _
|
||||
}
|
||||
|
||||
|
||||
static clib_error_t *
|
||||
set_vxlan_gpe_ioam_export_ipfix_command_fn (vlib_main_t * vm,
|
||||
@ -233,6 +246,10 @@ vxlan_gpe_ioam_export_init (vlib_main_t * vm)
|
||||
em->vlib_time_0 = vlib_time_now (vm);
|
||||
|
||||
error = vxlan_gpe_ioam_export_plugin_api_hookup (vm);
|
||||
|
||||
/* Add our API messages to the global name_crc hash table */
|
||||
setup_message_id_table (em, &api_main);
|
||||
|
||||
em->my_hbh_slot = ~0;
|
||||
em->vlib_main = vm;
|
||||
em->vnet_main = vnet_get_main ();
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user