Compare commits

...

49 Commits

Author SHA1 Message Date
Pierre Pfister
22665d23e1 Vhost: Add thread sync while receiving vhost message
It is important to stop the working threads while
some operations are performed on the working threads.

This is a backport of a fix brought in commit e21c52861d.
This should solve Jira ticket VPP526

Change-Id: I6deb27f5de44f0f19401161ee6adecaba86dae1a
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-11-09 10:16:57 +00:00
Pierre Pfister
d1f3123795 Update tx and output node runtime when recycling interface
When an interface is removed, and another one is created,
the nodes from the previous interface are reused. The current
code fails when the new interface type differs from the original.
It is necessary to update the node runtime, in particular the
node function, and the node format function.

Jira: VPP-460

Change-Id: I2fc3c609e0173a7f62597230768669039853ab03
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
(cherry picked from commit 064f55da7798f3a4c790b656dba71b32a3b82a5c)
2016-11-04 12:30:49 +00:00
Jan
638aee3e84 Use released 1609 CSIT branch for test in stable/1609 VPP branch
- csit branch changed from oper-rls1609-161009 to rls1609

Change-Id: I20b70960794f67a4f779a7cbae446a7f485a0336
Signed-off-by: Jan Gelety <jgelety@cisco.com>
2016-11-04 12:03:59 +01:00
Jan
c021053491 Update CSIT tests 160919 -> 160925
- update of CSIT operational branch to be used for VPP-patch test
  in VPP branch stable/1609

Change-Id: I7e9d4993356016f02fe173b94b5477231480290d
Signed-off-by: Jan Gelety <jgelety@cisco.com>
2016-09-26 12:16:52 +02:00
Chris Luke
019886e7e6 Temporary fix for CLI doc macro expansion; VPP-417
One CLI initializer has been modified temporarily to
avoid macro expansion that the siphon CLI documentation parser
doesn't understand.

Removed macros: ila_type_list, ila_csum_list and ila_direction_list.

Also make docs use the official version without the offset-from-tag
count we would other wise get in this stable release.

Change-Id: I52e1fa215f540583f0610200ec28349e67f56a32
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-20 22:18:07 -04:00
Jan
dd8e9a5dc5 Update CSIT tests 160912 -> 160919
- update of CSIT operational branch to be used for VPP-patch test
  in VPP branch stable/1609

Change-Id: I0045726035b09f97f55f817f1581b86fd9f34b1a
Signed-off-by: Jan <jgelety@cisco.com>
2016-09-19 12:38:16 +02:00
Keith Burns (alagalah)
21bc8624f5 Update of release notes, disable SIXRD; VPP-412
Change-Id: I74ca4846e41f1bd8b4bf384f4c1e5791d0481f6d
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-09-16 22:00:30 +00:00
Pierre Pfister
9b15f28295 Add ILA API and API test plugin VPP-412
The ILA plugin could only be configured through CLI.
This patch adds API support to ila_interface and
ila_add_del_entry functions.
The patch also adds a test plugin for vpp_api_test.

Change-Id: I35d96c4e56bb32862cd08cc86a9fa25ff56ef583
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-09-16 16:25:23 +00:00
Ed Warnicke
2dfd08242d Fix vpp-plugins rpms
vpp by default looks in /usr/lib/vpp_plugins
rpmbuild has ${_libdir} as /usr/lib64

Thus vpp doesn't see the plugins.

Change-Id: Iecbc491940678728305c181b04bb0914ad174bf1
Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-09-14 17:31:17 -07:00
Keith Burns (alagalah)
bcc0cf6137 16.09 Release Notes - VPP-135
Change-Id: I9a2ae5dc859e73682003175a8987d49bf0729d02
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-09-14 13:59:20 -07:00
Chris Luke
0f53393c82 Add structure to some of the documentation; VPP-223
Moves the random .md files into a config examples tree

Change-Id: If423b82f1047f1c84f90876a786313054b5f7c77
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-14 18:03:31 +00:00
Billy McFall
1a30f38192 VPP-282: Document changes for vnet/vnet/ethernet
Change-Id: Ie75f43516fdd76ba3720f65f38d66f14749e3e2d
Signed-off-by: Billy McFall <bmcfall@redhat.com>
2016-09-14 17:06:52 +00:00
Billy McFall
4eaae3d363 VPP-306: Document changes for vnet/vnet/vxlan
Change-Id: I1ec4a80ee431758998716014e3fb6f80a5b9c168
Signed-off-by: Billy McFall <bmcfall@redhat.com>
2016-09-14 10:59:04 -04:00
Jan
56ca4b7688 Update CSIT tests 160904 -> 160912
- update of CSIT operational branch to be used for VPP-patch test
  in VPP branch stable/1609

Change-Id: Ia053d152dd20bbd0f967313ac058e0b7be1db585
Signed-off-by: Jan <jgelety@cisco.com>
2016-09-13 01:33:37 +00:00
Ed Warnicke
0d49712e05 VPP-402 Provide vpp-plugins rpm packaging
Change-Id: Ifbd99818ead5f38c5f8ad3ecdb36b24a9fa59798
Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-09-12 21:31:59 +00:00
Pierre Pfister
861698f9f1 vhost user buffer allocation and counter fix for 1609
This patch backports parts of ba1d04641454 to 1609 branch:
- Bug allocation error (Not enough buffers were allocated)
- Dropped packet counting bugfix

Those fixes are more critical than what I expected.

DO NOT CHERRY-PICK TO MASTER
Sorry for the inconveniance.

Change-Id: I96bd9beb54924ab13fc87e6d4546cd9fa4dd6725
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-09-12 07:59:35 +00:00
Shwetha
a4b01cb2b4 VPP-341: iOAM plugin documentation
Change-Id: I0042ce8b8a70bb709765037c3636be667ad88aa2
Signed-off-by: Shwetha <shwethab@cisco.com>
(cherry picked from commit f074eef0409a64475e840f59581306273313b218)
2016-09-11 20:50:17 +00:00
Keith Burns (alagalah)
61a7a7fb9f Move CLI examples from wiki to code - VPP-165
Change-Id: I50ad0d79a6ffaf0a51848abf2c5ed57e83c8640f
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-09-11 20:33:27 +00:00
Ed Warnicke
0024dfb307 Peg vpp and vpp-plugins to depend on specific versions; VPP-367
vpp now depends on the version of vpp-lib it was built with
vpp-plugins now depends on the version of vpp it was built with

Change-Id: Idf706f94d3a35bdf51930badf61cac288855873d
Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-09-11 13:47:05 +00:00
Chris Luke
2cb4e68aae Check for zero-sized Graphvix config file on Ubuntu; VPP-396
- The previous change only accounted for a missing Graphviz config
  file; apparently it can be zero-sized too.

Change-Id: Ic6957d10cdc7cb7b9da72d2b2a0f8913100870c5
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-09 20:20:09 -04:00
Chris Luke
331f1a8eac On Ubuntu check for graphviz system config; VPP-396
- Sometimes it seems Ubuntu doesn't always set up the Graphviz
  handler config. If it's missing, generate it.
  https://bugs.launchpad.net/ubuntu/+source/graphviz/+bug/1349026

Change-Id: I2c1e566817de8415f8b360c6f967cd76307a2a52
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-09 18:16:31 -04:00
Florin Coras
73a52de862 VPP-388 Improve IP header lookup in ipsec_output
Change-Id: I5df0067c9ce56d7a15a991b82d4761924d91758b
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit fb28e9a80c8e36db0a3a484a20e9e0114be517bd)
2016-09-08 14:55:29 +00:00
Chris Luke
fcaa2f1010 VPP-223 Various documentation fixes.
[Note: This is an amalgamation of two patches on master with
only the parts relevant to stable included. See 16bcf7d8 and
d4024f58]

This is a cleanup of some obvious syntactic issues with Doxygen
tags in the documentation. It is not an attempt to improve the
documentation itself.

Change-Id: I278ad91fe980243778f84560c5e4b84a9423dc09
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-07 15:17:14 -04:00
Chris Luke
78e0e3af70 VPP-221 CLI auto-documentation infrastructure
[Note: This is an amalgamation of several patches cherry-picked from
master all related to introducing auto-CLI documentation. See commits
d4024f58 ee4743ad 16bcf7d8 e0d802bc 54ccf226]

As a step before Doxygen, extract CLI-related struct initializers
from the code and parse that into a summary of the CLI commands
available with the provided help text, such as it is. At the moment
this only renders this into an indexed Markdown file that Doxygen
then picks up but later we can use this information to enrich the
existing VLIB_CLI_COMMAND macro documentor as well as provide
runtime documentation to VPP that is stored on disk outside the
binary image.

Additionally support a comment block immediately prior to
VLIB_CLI_COMMAND CLI command definitions in the form /*? ... ?*/
that can be used to include long-form documentation without having
it compiled into VPP.

Examples of documenting CLI commands can be found in
vlib/vlib/unix/cli.c which, whilst not perfect, should provide a
starting point. Screen captures of sample output can be seen at
https://chrisy.flirble.org/vpp/doxy-cli-example.png and
https://chrisy.flirble.org/vpp/doxy-cli-index.png .

Next, shift the Doxygen root makefile targets to their own Makefile.
The primary reason for this is that the siphon targets do dependency
tracking which means it needs to generate those dependencies whenever
make is run; that is pointless if we're not going to generate any
documentation. This includes the package dependencies since they since
they sometimes unnecessarily interfere with the code build in some cases
at the moment; later we will look to building a Python venv to host the
Python modules we use.

One final remark: In future we may consider deprecating .long_help
in the VLIB_CLI_COMMAND structure entirely but add perhaps .usage_help.
.short_help would be reserved for a summary of the command function
and .usage_help provide the syntax of that command. These changes would
provide great semantic value to the automaticly generated CLI
documentation. I could also see having .long_help replaced by a
mechanism that reads it from disk at runtime with a rudimentary
Markdown/Doxygen filter so that we can use the same text that is used in
the published documentation.

Change-Id: I8afccfd7fe2096411d8064ac954ca5a2cbca9ae7
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-07 15:16:36 -04:00
Ed Warnicke
c1ac47b61c VPP-390: include *.so symlinks in vpp-lib
Currently, vpp-lib rpm includes symlinks for

*.so.0 -> *.so.0.0.0

but not

*.so -> *.so.0.0.0

This causes linker issues in cases where vpp-lib and vpp-devel rpms
are installed and sources are built that rely on libraries in vpp-lib.

Example:

libtool: link: gcc -shared -fPIC -DPIC jvpp/.libs/libjvpp_nsh_la-jvpp_nsh.o -lvlibmemoryclient -lvlibapi -lsvm -lvppinfra -lpthread -lm -lrt -ljvpp_common -L/usr/lib64 -O2 -Wl,-soname -Wl,libjvpp_nsh.so.0 -o .libs/libjvpp_nsh.so.0.0.0
/usr/bin/ld: cannot find -lvlibmemoryclient
/usr/bin/ld: cannot find -lvlibapi
/usr/bin/ld: cannot find -lsvm
/usr/bin/ld: cannot find -lvppinfra
collect2: error: ld returned 1 exit status

Change-Id: Ic8eebc696f973ea348be0b43e7cfb289efbe44fe
Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-09-07 17:15:18 +00:00
Keith Burns (alagalah)
c278ebdd39 VPP-307 - vnet/vnet/vxlan-gpe Documentation fixes
Change-Id: Icd7b82306f49e8148d5e7b2fccd8b5f1005f935d
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-09-07 13:18:41 +00:00
Keith Burns (alagalah)
d193b8e41d VPP-303 - Documentation changes for vnet/vnet/sr
Change-Id: If8b76959d7c29c216bf03609483a2c9e1d034f46
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-09-07 13:18:07 +00:00
Florin Coras
c2787a42ff VPP-386 Fix map-server output in lisp-cp-lookup trace
Change-Id: I67dd7896932b8ea96062b9ff074959c172b51ba4
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 5a1c11b53f60f4339e893b1a24cfc6515d2b08f7)
2016-09-06 23:00:48 +00:00
Florin Coras
c16427e794 VPP-381 Add LISP interfaces to sw_interface_dump
Change-Id: I62b65472e77a33b1fc94f7c4975b5e9cbf358f41
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit ce98275ac31f1120c263d22d667841e6e7a7b936)
2016-09-06 20:05:19 +00:00
Jan
7d3322a388 Update CSIT tests 160821 -> 160904
- update of CSIT operational branch to be used for VPP-patch test
  in VPP branch stable/1609

Change-Id: I4dfd568d1078e0ce92053dd64225dd043f556575
Signed-off-by: Jan <jgelety@cisco.com>
2016-09-06 18:48:41 +00:00
Florin Coras
73bb1458f7 VPP-385: Fix ARP for indirect adjacencies
Change-Id: I48cffb8acbd9e6655d7ec661ee8f7e0689b12a2d
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-09-06 17:15:21 +00:00
Ed Warnicke
88ccc91ba9 VPP-374: getting jvppgen.py into rpm vpp-devel package
Change-Id: Ia2643f33170da92fde0f8228c8d8393f23e98d11
Signed-off-by: Ed Warnicke <eaw@cisco.com>
(cherry picked from commit 406ab9d3657d028c974069ce63807a88dfa62a4f)
2016-09-06 15:01:48 +00:00
Ed Warnicke
6b85ac7fa1 VPP-373: stop building from /vpp mount
Change-Id: I7f8fe8fa6c24b4229b0cb45e6c83e7cb2828e2da
Signed-off-by: Ed Warnicke <eaw@cisco.com>
(cherry picked from commit 3ba4d36d927444cfd1929c3d130af7dc9194ea6c)
2016-09-06 15:01:48 +00:00
Filip Tehlar
a7601b44ac VPP-375: Fix LSIP locator set hash table on addition
Change-Id: Iec9e6538d2731ba12ae8338b72fdc3a0bd5f0c69
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-02 17:45:56 +02:00
Ed Warnicke
6214326f41 VPP-371: Fix for vppctl to suppress "load_one_plugin:63: Loaded plugin:" msgs
Change-Id: I06fcb024036b48a6401d2865a2181b122cb32108
Signed-off-by: Ed Warnicke <eaw@cisco.com>
(cherry picked from commit f53db2a6c2a7e511716018aa37bc8ae8d0c18156)
2016-09-01 18:35:51 +00:00
Filip Tehlar
08377f8ff7 VPP-365: Fix sending of bd_index in lisp_eid_table_add_del_map
Change-Id: I1f8fd65fa33b0bc7ee07aa0eeb5f794a7ede9537
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
(cherry picked from commit 5a4e2dde94262a6f93c0c87be81a10317f2ae426)
2016-08-30 19:28:58 +00:00
John Lo
2544ca81c3 VPP-361: Memory leak on delete of VXLAN over IPv6 tunnel
The key for VXLAN over IPv6 tunnel is allocated on create and should
be freed on delete.

Change-Id: I11bdd9465030fed57cc4bbd28dbccdf952633b34
Signed-off-by: John Lo <loj@cisco.com>
2016-08-30 00:10:09 -04:00
Steve Shin
eb5cad76ea vhost-user: unmap previously configured memory if necessary
If there's any memory-mapped region configued previously,
it should be unmapped before setting up a new vhost memory table.
Otherwise, huge page leakage will happen.

Change-Id: I375f603ea303919f1502df44a26a7384ab2ea00e
Signed-off-by: Steve Shin <jonshin@cisco.com>
(cherry picked from commit 5e15c91b6c2b5fbd7f989c5dc4edde506d254926)
2016-08-30 03:07:00 +00:00
Steve Shin
d7935e8c42 tuntap_rx modification to handle jumbo packets ( > 2K bytes)
Change-Id: Iebe30b87457741ac268b24c96fa7ea8ad1e101a6
Signed-off-by: Steve Shin <jonshin@cisco.com>
(cherry picked from commit 82a7af95e7553747dcebdb865a9c9a67826745d4)
2016-08-30 01:47:57 +00:00
Filip Tehlar
94195c85fe VPP-356: Fix wrong byte order in LISP API
Change-Id: Ib2284025b8394a87f1d5765713adb7070b450cba
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
(cherry picked from commit e3552c45f38d1f101cf512c9046647201d6c121b)
2016-08-27 10:40:26 +00:00
Florin Coras
ab4e86cb95 VPP-357 Fix vni for LISP fwd entry removals
Change-Id: I5d20c1939f7a5a142bf696b34143f7ebca6afbcb
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-08-26 16:46:52 +00:00
Sean Chandler
ea60221218 VPP-345: pull in upstream checksum patch for ICMP packets
http://www.dpdk.org/dev/patchwork/patch/15216/

Change-Id: I91b67f3e5c0abff52626e504e2707814ae0c3ed0
Signed-off-by: Sean Chandler <seandchandler@gmail.com>
(cherry picked from commit dc731bd4b1ad6ea588334c681d1409cbdec9ce67)
2016-08-26 12:39:33 +00:00
Keith Burns (alagalah)
217872424d VPP-305: Documentation for vnet/vnet/unix
Change-Id: I3f1a225033ecebe0cedfc3466b552176461b76ab
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-08-26 12:38:42 +00:00
Keith Burns (alagalah)
aa4338556e VPP-307: Documentation for vnet/vnet/vxlan-gpe
Change-Id: Iaab6f4b63ed0d986be1ac0636c692b46098ad54d
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-08-25 13:56:13 -07:00
Filip Tehlar
52ecf85946 VPP-321: Fix param order of unformat_lisp_eid_api
Change-Id: Ib00ca0f0dab4784a3fb34ffd91c18a3940e9a5d5
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
(cherry picked from commit 251aec436b9e3be15f92a464fa4559396b115b2a)
2016-08-25 12:14:47 +00:00
Damjan Marion
78c7daaf6d Fix issues with vhost-user when dpdk vhost-user is disabled, fixes VPP-347, VPP-349
Change-Id: I774bab98e43d55678a67a7708ca50edbbd4cbb06
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-08-25 07:42:37 +00:00
Ole Troan
8b66c77920 VPP-340: MAP-T wrong destination address
The bug was in VAT MAP code parsing a 32 bit integer into a 8 bit
type.  Perhaps we should try to build some defences in
unformat_chech_input() to avoid these errors.

Rebuild.

Change-Id: Iae4959f7e04d889da2e9650a4201c4db15d74201
Signed-off-by: Ole Troan <ot@cisco.com>
2016-08-24 18:50:12 +02:00
Filip Tehlar
a20d317e63 VPP-342: Don't allow remote mapping to overwrite local or static mapping
Change-Id: I9888d7c087da538b81a6a1967edbdf1103cc095a
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
(cherry picked from commit 3cd9e730f9db0d998e5e8a27ddff1da5a123625b)
2016-08-23 13:27:23 +00:00
Dave Barach
dbc6e3f0bb Change default branch in .gitreview
Change-Id: Ia39cdfd2b3d6c9dbe252dff0bcea3ba0adabdaaf
Signed-off-by: Dave Barach <dave@barachs.net>
2016-08-17 20:26:03 -04:00
105 changed files with 4757 additions and 614 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
*~
*.sw[op]
/build-root/.ccache
/build-root/build-*/
@ -66,6 +67,8 @@ GTAGS
# Generated documentation
/build-root/docs
/build-root/.doxygen-bootstrap.ok
/build-root/.doxygen-siphon.dep
# indent backup files
*.BAK

View File

@ -2,3 +2,4 @@
host=gerrit.fd.io
port=29418
project=vpp
defaultbranch=stable/1609

View File

@ -30,7 +30,7 @@ OS_VERSION_ID= $(shell grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed
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
DEB_DEPENDS += doxygen graphviz
DEB_DEPENDS += python-dev
ifeq ($(OS_VERSION_ID),14.04)
DEB_DEPENDS += openjdk-8-jdk-headless
else
@ -40,7 +40,7 @@ endif
RPM_DEPENDS_GROUPS = 'Development Tools'
RPM_DEPENDS = redhat-lsb glibc-static java-1.8.0-openjdk-devel yum-utils
RPM_DEPENDS += openssl-devel https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm apr-devel
RPM_DEPENDS += doxygen graphviz
RPM_DEPENDS += python-devel
EPEL_DEPENDS = libconfuse-devel ganglia-devel
ifneq ($(wildcard $(STARTUP_DIR)/startup.conf),)
@ -54,7 +54,7 @@ endif
.PHONY: help bootstrap wipe wipe-release build build-release rebuild rebuild-release
.PHONY: run run-release debug debug-release build-vat run-vat pkg-deb pkg-rpm
.PHONY: ctags cscope doxygen wipe-doxygen plugins plugins-release
.PHONY: ctags cscope plugins plugins-release build-vpp-api
help:
@echo "Make Targets:"
@ -80,6 +80,7 @@ help:
@echo " gtags - (re)generate gtags database"
@echo " cscope - (re)generate cscope database"
@echo " doxygen - (re)generate documentation"
@echo " bootstrap-doxygen - setup Doxygen dependencies"
@echo " wipe-doxygen - wipe all generated documentation"
@echo ""
@echo "Make Arguments:"
@ -233,24 +234,21 @@ cscope: cscope.files
# Build the documentation
#
DOXY_INPUT ?= \
README.md \
vppinfra \
svm \
vlib \
vlib-api \
vnet \
vpp \
vpp-api
# Doxygen configuration and our utility scripts
export DOXY_DIR ?= $(WS_ROOT)/doxygen
define make-doxy
@OS_ID="$(OS_ID)" WS_ROOT="$(WS_ROOT)" BR="$(BR)" make -C $(DOXY_DIR) $@
endef
.PHONY: bootstrap-doxygen doxygen wipe-doxygen
bootstrap-doxygen:
$(call make-doxy)
doxygen:
@mkdir -p "$(BR)/docs"
ROOT="$(WS_ROOT)" \
BUILD_ROOT="$(BR)" \
INPUT="$(addprefix $(WS_ROOT)/,$(DOXY_INPUT))" \
HTML=YES \
VERSION="`git describe --tags --dirty`" \
doxygen doxygen/doxygen.cfg
$(call make-doxy)
wipe-doxygen:
rm -rf "$(BR)/docs"
$(call make-doxy)

View File

@ -25,7 +25,6 @@ Directory name | Description
doxygen | Documentation generator configuration
dpdk | DPDK patches and build infrastructure
g2 | Event log visualization tool
gmod | perf related?
perftool | Performance tool
plugins | VPP bundled plugins directory
@ref svm | Shared virtual memory allocation library
@ -90,5 +89,8 @@ for this can be found [on the Setting up Vagrant wiki page]
## More information.
Several modules provide documentation, see @subpage user_doc for more
information.
Visit the [VPP wiki](https://wiki.fd.io/view/VPP) for details on more
advanced building strategies and development notes.

137
RELEASE.md Normal file
View File

@ -0,0 +1,137 @@
Release Notes
=============
## Features
- [Integrated July 2016 DPDK release](http://www.dpdk.org/doc/guides/rel_notes/release_16_07.html)
- DPDK-vhost is depreciated pending a complete rework of the original integration and
addressing of rx performance deltas.
- Patches required for DPDK 16.07:
- Correctly setting the Packet Type in the IGB, IXGBE and i40e drivers.
- Correctly setting checksum in the i40e driver.
- NXP DPAA2 PMD Driver.
- rte_delay (yield) functionality.
- Add “in tree” plugins:
- IPv6 ILA.
- iOAM.
- Load Balancer.
- SNAT.
- High-performance (line-rate) “neutron like” L4 port-filtering.
- API refactoring - addressing some of the issues around JVPP bindings.
- Accommodating plugins [(e.g. NSH_SFC)](https://wiki.fd.io/view/NSH_SFC)
- Binding for [python](https://wiki.fd.io/view/VPP/Python_API)
- LISP
- L2 LISP overlays
- Multitenancy
- Multihoming
- RTR mode
- Map-resolver failover algorithm
- Support 64-bit vector lengths, huge shared-memory segments.
- Dynamic IP Feature ordering
- IP Features can now specify features they appear before and after
- 16.09 Builds
- Ubuntu 14.04 LTS - Trusty Tahr
- Ubuntu 16.04 LTS - Xenial Xerus
- CentOS 7
- More information on [VPP wiki](https://wiki.fd.io/view/VPP/Installing_VPP_binaries_from_packages)
- Performance, characterize and document performance for this release
[(more information on CSIT page)](https://wiki.fd.io/view/CSIT)
- IPv4 and IPv6 Scale - performance tests.
- Bidirectional 10k/100k/1M flows.
- 64B,570B, 1518B,9000B packet sizes.
- IPv6 iACL - performance
- DUT1 and DUT2 are configured with IPv6 routing, two static IPv6 /64 routes and IPv6 iAcl
security whitelist ingress /64 filter entries applied on links.
- TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per
flow-group) with all packets containing Ethernet header, IPv6 header and generated payload.
MAC addresses are matching MAC addresses of the TG node interfaces.
- L2XC VXLANoIPv4 - performance
- DUT1 and DUT2 are configured with L2 cross-connect. VXLAN tunnels are configured between
L2XCs on DUT1 and DUT2.
- TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per
flow-group) with all packets containing Ethernet header, IPv4 header with IP protocol=61
and generated payload. MAC addresses are matching MAC addresses of the TG node interfaces.
- Documentation
- Autogenerated CLI documentation.
- Using doxygen to automate API/Node documentation.
- [(available online)](https://docs.fd.io/vpp/16.09/)
- Resolved all static analysis issues found by Coverity
- Beginning of 16.09 cycle: 505 issues.
- Release: 0 outstanding issues.
## Known issues
Issues in fd.io are tracked in [JIRA](https://jira.fd.io)
Issue | Description
--- | ---
VPP-391 | vpp debug version assert appeared in the process of start
VPP-380 | Mapping algorithm compute wrong ea-bits when IPv4 prefix 0.0.0.0/0
VPP-371 | load_one_plugin:63: Loaded plugin: message from vppctl
VPP-367 | vpp packages need to depend on specific versions of each other
VPP-312 | IP6 FIB gets in indeterminate state by duplicating commands
VPP-224 | Lookup-in-vrf can not be set correctly
VPP-206 | Fix classify table delete
VPP-203 | Fix binary API for reading vpp node graph
VPP-147 | Inconsistent behaviour when adding L2 FIB filter entry
VPP-99 | VPP doesn't discard DHCPOFFER message with wrong XID
## Issues fixed
Issues in fd.io are tracked in [JIRA](https://jira.fd.io)
Issue | Description
--- | ---
VPP-396 | Ubuntu systems Graphviz bug
VPP-390 | vpp-lib rpm fails to include *.so symlinks, causing linking problems with out of tree builds
VPP-388 | IPSec output feature assumes packets have been ethernet rewritten
VPP-385 | ARP for indirect adjacencies not working correctly
VPP-361 | Memory leak on delete of VXLAN over IPv6 tunnel
VPP-357 | VNI not set correctly when removing LISP fwd entries
VPP-349 | sw_interface_vhost_user_dump not working
VPP-345 | net/enic: bad L4 checksum ptype set on ICMP packets
VPP-340 | MAP-T wrong destination address
VPP-330 | Use fifo to store LISP pending map-requests
VPP-326 | map_add_domain VAT command: unable to configure domain with mtu parameter
VPP-318 | The map_add_domain VAT command accepts invalid arguments
VPP-315 | Fix "show vxlan-gpe" issue
VPP-310 | Mapping algorithm compute wrong ea-bits
VPP-239 | LISP IP forwarding does not tag packets that hit negative mapping entries
VPP-235 | Invalid help in VAT for sw_interface_set_l2_bridge
VPP-228 | Mapping algorithm sends packet to wrong IPv6 address
VPP-214 | vpp-api-test: api_ipsec_sad_add_del_entry: vector "ck" not initialized
VPP-200 | VPP - TAP port create problem
VPP-189 | Coverity Issues for 16.09
VPP-184 | u16 translating to char ,not short
VPP-179 | Adjacency share-count botch
VPP-163 | "show ip6 interface" ignores non-global addresses
VPP-155 | Netmap: Inconsistency in interface state between "show hardware" and "show interface"
VPP-145 | Dynamically compute IP feature ordering based on constraints
VPP-137 | VPP sends ARP with wrong requested IP
VPP-118 | JVpp: 0 length arrays not handled properly in VPP responses
VPP-112 | linux kernel info missing from build log
VPP-110 | vxlan encap node should never touch a deleted tunnel
VPP-107 | RPM build broken in master
VPP-92 | segment routing is not properly filling out the segment list
VPP-91 | segment routing add/del tunnel lookup doesn't work
VPP-84 | af_packet throws a fatal error on EAGAIN
VPP-74 | Clang compile fails due to warning in vlib/unix/cli.c
VPP-64 | Top level "make pkg-deb" fails if CDPATH is set in user env.
VPP-48 | Traceroute does not terminate when VPP is the target
VPP-23 | CLI pager does not gracefully handle lines longer than the terminal width

View File

@ -7,7 +7,7 @@ Standards-Version: 3.9.4
Package: vpp
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Depends: vpp-lib (= ${source:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Vector Packet Processing--executables
This package provides VPP executables: vpp, vpp_api_test, vpp_json_test
vpp - the vector packet engine
@ -49,7 +49,7 @@ Description: Vector Packet Processing--runtime libraries
Package: vpp-plugins
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Depends: vpp (= ${source:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Vector Packet Processing--runtime plugins
This package contains VPP plugins
.

View File

@ -49,6 +49,13 @@ allocator (mheap.c), extendable printf-like interface built on top of vectors
time-based function calls (timer.c).
TODO: reference and describe only the .h files
%package plugins
Summary: Vector Packet Processing--runtime plugins
Group: System Environment/Libraries
Requires: vpp = %{_version}-%{_release}
%description plugins
This package contains VPP plugins
%pre
# Add the vpp group
groupadd -f -r vpp
@ -82,7 +89,10 @@ do
# make lib symlinks
( cd %{buildroot}%{_libdir} &&
ln -fs $file $(echo $file | sed -e 's/\(\.so\.[0-9]\+\).*/\1/') )
( cd %{buildroot}%{_libdir} &&
ln -fs $file $(echo $file | sed -e 's/\(\.so\)\.[0-9]\+.*/\1/') )
done
#
# devel
#
@ -97,6 +107,13 @@ do
install -p -m 644 $dir/$file %{buildroot}%{_includedir}/$file
done
done
mkdir -p -m755 %{buildroot}%{python2_sitelib}/jvppgen
install -p -m755 ../../vpp-api/java/jvpp/gen/jvpp_gen.py %{buildroot}/usr/bin
for i in $(ls ../../vpp-api/java/jvpp/gen/jvppgen/*.py); do
install -p -m666 ${i} %{buildroot}%{python2_sitelib}/jvppgen
done;
# sample plugin
mkdir -p -m755 %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/sample
for file in $(cd %{_vpp_install_dir}/../../sample-plugin && find -type f -print)
@ -105,6 +122,24 @@ do
%{buildroot}/usr/share/doc/vpp/examples/sample-plugin/$file
done
#
# vpp-plugins
#
mkdir -p -m755 %{buildroot}/usr/lib/vpp_plugins
mkdir -p -m755 %{buildroot}/usr/lib/vpp_api_test_plugins
for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_plugins && find -type f -print)
do
install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_plugins/$file \
%{buildroot}/usr/lib/vpp_plugins/$file
done
for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins && find -type f -print)
do
install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins/$file \
%{buildroot}/usr/lib/vpp_api_test_plugins/$file
done
%post
sysctl --system
%systemd_post vpp.service
@ -123,10 +158,19 @@ sysctl --system
%files lib
%defattr(-,bin,bin)
%exclude %{_libdir}/vpp_plugins
%exclude %{_libdir}/vpp_api_test_plugins
%{_libdir}/*
%files devel
%defattr(-,bin,bin)
/usr/bin/vppapigen
/usr/bin/jvpp_gen.py
%{_includedir}/*
%{python2_sitelib}/jvppgen/*
/usr/share/doc/vpp/examples/sample-plugin
%files plugins
%defattr(-,bin,bin)
/usr/lib/vpp_plugins/*
/usr/lib/vpp_api_test_plugins/*

View File

@ -1,2 +1,2 @@
#!/bin/sh
echo oper-160815
echo rls1609

View File

@ -14,8 +14,9 @@ Vagrant.configure(2) do |config|
config.vm.box_check_update = false
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"update.sh")
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"build.sh"), :args => "/vpp vagrant"
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"install.sh"), :args => "/vpp"
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"clone.sh")
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"build.sh"), :args => "/home/vagrant/git/vpp vagrant"
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"install.sh"), :args => "/home/vagrant/git/vpp"
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"clearinterfaces.sh")
config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"run.sh")
@ -59,8 +60,11 @@ Vagrant.configure(2) do |config|
vmcpu=(ENV['VPP_VAGRANT_VMCPU'] || 2)
vmram=(ENV['VPP_VAGRANT_VMRAM'] || 4096)
config.ssh.forward_agent = true
config.vm.synced_folder "../../", "/vpp", disabled: false
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.memory = "#{vmram}"

View File

@ -47,8 +47,8 @@ make UNATTENDED=yes install-dep
# Really really clean things up so we can be sure
# that the build works even when switching distros
make wipe
(cd build-root/;make distclean)
$SUDOCMD make wipe
(cd build-root/;$SUDOCMD make distclean)
rm -f build-root/.bootstrap.ok
if [ $DISTRIB_ID == "CentOS" ]; then

54
build-root/vagrant/clone.sh Executable file
View File

@ -0,0 +1,54 @@
#!/bin/bash
# Figure out what system we are running on
if [ -f /etc/lsb-release ];then
. /etc/lsb-release
elif [ -f /etc/redhat-release ];then
sudo yum install -y redhat-lsb
DISTRIB_ID=`lsb_release -si`
DISTRIB_RELEASE=`lsb_release -sr`
DISTRIB_CODENAME=`lsb_release -sc`
DISTRIB_DESCRIPTION=`lsb_release -sd`
fi
KERNEL_OS=`uname -o`
KERNEL_MACHINE=`uname -m`
KERNEL_RELEASE=`uname -r`
KERNEL_VERSION=`uname -v`
echo KERNEL_OS: $KERNEL_OS
echo KERNEL_MACHINE: $KERNEL_MACHINE
echo KERNEL_RELEASE: $KERNEL_RELEASE
echo KERNEL_VERSION: $KERNEL_VERSION
echo DISTRIB_ID: $DISTRIB_ID
echo DISTRIB_RELEASE: $DISTRIB_RELEASE
echo DISTRIB_CODENAME: $DISTRIB_CODENAME
echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION
# Make sure git is installed
if [ $DISTRIB_ID == "CentOS" ]; then
yum -y install git
elif [ $DISTRIB_ID == "Ubuntu" ]; then
apt-get -y install git
fi
# Setup the vpp code
cd ~vagrant/
sudo -u vagrant mkdir git
cd git/
echo "SSH_AUTH_SOCK $SSH_AUTH_SOCK x"
chmod 777 $SSH_AUTH_SOCK
CLONE_URL=`cd /vpp;git remote -v | grep origin |grep fetch |awk '{print $2}'`
echo "CLONE_URL $CLONE_URL"
echo $CLONE_URL | grep -q "^ssh:"
if [ $? == 0 ]; then
SSH_HOST=`echo $CLONE_URL| awk -F/ '{print $3}'`
SSH_PORT=`echo $SSH_HOST| awk -F: '{print $2}'`
if [ -n $SSH_PORT ]; then
SSH_PORT="-p $SSH_PORT"
fi
SSH_HOST=`echo $SSH_HOST| awk -F: '{print $1}'`
echo "SSH_HOST $SSH_HOST"
echo "SSH_PORT $SSH_PORT"
sudo -HE -u vagrant ssh -oStrictHostKeyChecking=no -v $SSH_PORT $SSH_HOST
fi
sudo -HE -u vagrant git clone $CLONE_URL

160
doxygen/Makefile Normal file
View File

@ -0,0 +1,160 @@
# Copyright (c) 2016 Comcast Cable Communications Management, LLC.
#
# 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.
#
# Build the documentation
#
# These should be passed in by the root Makefile
WS_ROOT ?= $(CURDIR)/..
BR ?= $(WS_ROOT)/build-root
OS_ID ?= $(shell grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
# Package dependencies
DOC_DEB_DEPENDS = doxygen graphviz python-pyparsing
DOC_RPM_DEPENDS = doxygen graphviz pyparsing
# Doxygen configuration and our utility scripts
DOXY_DIR ?= $(WS_ROOT)/doxygen
# Input directories and files
DOXY_INPUT ?= \
README.md \
doxygen/user_doc.md \
RELEASE.md \
vppinfra \
svm \
vlib \
vlib-api \
vnet \
vpp \
vpp-api \
plugins
# Files to exclude, from pre-Doxygen steps, eg because they're
# selectively compiled.
# Examples would be to exclude non-DPDK related sources when
# there's a DPDK equivalent that conflicts.
# This is specifically for the pre-Doxygen steps; Doxygen uses
# @cond for this instead.
DOXY_PRE_EXCLUDE ?= \
vlib/vlib/buffer.c
# Generate a regexp for filenames to exclude
DOXY_PRE_EXCLUDE_REGEXP = ($(subst .,\.,$(shell echo '$(strip $(DOXY_PRE_EXCLUDE))' | sed -e 's/ /|/g')))
# Discover all the directories we might, possibly, maybe, have include files in
DOXY_INCLUDE_PATH = $(shell set -e; cd $(WS_ROOT); for item in $(DOXY_INPUT); do find $$item -type d; done)
# Discover if we have CPP available
CPP ?= $(shell which cpp)
ifneq ($(strip $(CPP)),)
# Add whatever directories CPP normally includes
DOXY_INCLUDE_PATH += $(shell set -e; $(CPP) -v </dev/null 2>&1 | grep -A 1000 '\#include' | awk '/^ /{print $$1}')
endif
# Target directory for doxygen output
DOXY_OUTPUT ?= $(BR)/docs
# Siphoned fragments end up in here
SIPHON_INPUT ?= $(DOXY_OUTPUT)/siphon_fragments
# Siphoned fragements are processed into here
SIPHON_OUTPUT ?= $(DOXY_OUTPUT)/siphon_docs
# Extra document inputs that are processed in addition to DOXY_INPUT
EXTRA_DOXY_INPUT += $(SIPHON_OUTPUT)
# All the siphon types we know about
SIPHONS ?= clicmd
SIPHON_FILES = $(addprefix $(SIPHON_INPUT)/,$(addsuffix .siphon,$(SIPHONS)))
SIPHON_DOCS = $(addprefix $(SIPHON_OUTPUT)/,$(addsuffix .md,$(SIPHONS)))
$(BR)/.doxygen-bootstrap.ok:
ifeq ($(OS_ID),ubuntu)
@set -e; inst=; \
for i in $(DOC_DEB_DEPENDS); do \
dpkg-query --show $$i >/dev/null 2>&1 || inst="$$inst $$i"; \
done; \
if [ "$$inst" ]; then sudo apt-get $(CONFIRM) $(FORCE) install $$inst; fi
@if [ ! -s /usr/lib/graphviz/config6a ]; then \
echo "Rebuidlding system Graphviz configuration."; \
sudo dot -c; \
fi
else ifneq ("$(wildcard /etc/redhat-release)","")
@sudo yum install $(CONFIRM) $(DOC_RPM_DEPENDS)
else
$(error "This option currently works only on Ubuntu or Centos systems")
endif
@touch $@
.PHONY: bootstrap-doxygen
bootstrap-doxygen: $(BR)/.doxygen-bootstrap.ok
.DELETE_ON_ERROR: $(BR)/.doxygen-siphon.dep
$(BR)/.doxygen-siphon.dep: Makefile
set -e; rm -f "$@"; for input in $(DOXY_INPUT); do \
find "$(WS_ROOT)/$$input" -type f \
\( -name '*.[ch]' -or -name '*.dox' \) -print \
| grep -v -E '^$(WS_ROOT)/$(DOXY_PRE_EXCLUDE_REGEXP)$$' \
| sed -e "s/^/\$$(SIPHON_FILES): /" \
>> $@; \
done
# Include the source -> siphon dependencies
-include $(BR)/.doxygen-siphon.dep
.NOTPARALLEL: $(SIPHON_FILES)
$(SIPHON_FILES): $(DOXY_DIR)/siphon_generate.py $(BR)/.doxygen-bootstrap.ok
@rm -rf "$(SIPHON_INPUT)" "$(SIPHON_OUTPUT)"
@mkdir -p "$(SIPHON_INPUT)" "$(SIPHON_OUTPUT)"
@touch $(SIPHON_INPUT)/files
for input in $(DOXY_INPUT); do \
cd "$(WS_ROOT)"; \
find "$$input" -type f \
\( -name '*.[ch]' -or -name '*.dox' \) -print \
| grep -v -E '^$(DOXY_PRE_EXCLUDE_REGEXP)$$' \
>> $(SIPHON_INPUT)/files; \
done
set -e; cd "$(WS_ROOT)"; $(DOXY_DIR)/siphon_generate.py \
--output="$(SIPHON_INPUT)" \
"@$(SIPHON_INPUT)/files"
.DELETE_ON_ERROR: $(SIPHON_DOCS)
$(SIPHON_OUTPUT)/%.md: $(SIPHON_INPUT)/%.siphon $(DOXY_DIR)/siphon_process.py
set -e; cd "$(WS_ROOT)"; \
$(DOXY_DIR)/siphon_process.py --type=$(basename $(notdir $<)) \
--output="$(SIPHON_OUTPUT)" $< > $@
# This target can be used just to generate the siphoned docs
.PHONY: doxygen-siphon
doxygen-siphon: $(SIPHON_DOCS)
# Generate the doxygen docs
doxygen: $(SIPHON_DOCS)
@mkdir -p "$(DOXY_OUTPUT)"
set -e; cd "$(WS_ROOT)"; \
ROOT="$(WS_ROOT)" \
BUILD_ROOT="$(BR)" \
INPUT="$(addprefix $(WS_ROOT)/,$(DOXY_INPUT)) $(EXTRA_DOXY_INPUT)" \
INCLUDE_PATH="$(DOXY_INCLUDE_PATH)" \
HTML=YES \
VERSION="v`./build-root/scripts/version rpm-version`" \
doxygen $(DOXY_DIR)/doxygen.cfg
wipe-doxygen:
rm -rf "$(BR)/docs" "$(BR)/.doxygen-siphon.d"

View File

@ -18,7 +18,7 @@
/**
@dir
@brief Someone please fix this description
@brief Someone please fix this description.
@todo This directory needs a description.
This is where you would document the contents of a directory.
@ -26,3 +26,4 @@ This is where you would document the contents of a directory.
This looks like a C file but it is not part of the build; it is purely
for documentation.
*/
/*? %%clicmd:group_label CLI section description%% ?*/

View File

@ -229,8 +229,22 @@ TAB_SIZE = 8
# newlines.
ALIASES =
## Indexes VPP graph nodes
ALIASES += "node=@xrefitem nodes \"Node Identifier\" \"Node Identifiers\" @c "
## Formatting for CLI commands and output
ALIASES += "cli{1}=<code><pre>\1</code></pre>"
ALIASES += "clistart=<code><pre>"
ALIASES += "cliend=</pre></code>"
## Formatting for CLI example paragraphs
ALIASES += "cliexpar=@par Example usage"
ALIASES += "cliexcmd{1}=@clistart<b>vpp# <em>\1</em></b>@cliend"
ALIASES += "cliexstart{1}=@cliexcmd{\1}@clistart"
ALIASES += "cliexend=@cliend"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
@ -630,7 +644,7 @@ GENERATE_DEPRECATEDLIST= YES
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.
ENABLED_SECTIONS =
ENABLED_SECTIONS = DPDK
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
@ -901,6 +915,7 @@ INPUT_FILTER =
FILTER_PATTERNS = \
*.c=$(ROOT)/doxygen/filter_c.py \
*.h=$(ROOT)/doxygen/filter_h.py \
*.api=$(ROOT)/doxygen/filter_api.py
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
@ -2022,7 +2037,7 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH = $(INPUT)
INCLUDE_PATH = $(INCLUDE_PATH)
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
@ -2046,7 +2061,8 @@ PREDEFINED = \
__ORDER_LITTLE_ENDIAN__=1234 \
__BYTE_ORDER__=1234 \
__FLOAT_WORD_ORDER__=1234 \
DPDK=1
DPDK=1 \
always_inline:="static inline"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The

View File

@ -15,38 +15,73 @@
# Filter for .c files to make various preprocessor tricks Doxygenish
import sys, re
import os, sys, re
if len(sys.argv) < 2:
sys.stderr.write("Usage: %s <filename>\n" % (sys.argv[0]))
sys.exit(1)
patterns = [
# Search for VLIB_CLI_COMMAND, extract its parameter and add a docblock for it
( re.compile("(?P<m>VLIB_CLI_COMMAND)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (\g<name>) */ vlib_cli_command_t \g<name>"),
replace_patterns = [
# Search for VLIB_CLI_COMMAND, extract its parameters and add a docblock for it
( re.compile("(?P<m>VLIB_CLI_COMMAND)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>) */ vlib_cli_command_t \g<name>"),
( re.compile("(?P<m>VLIB_CLI_COMMAND)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<qual>[^)]*)[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>) */ \g<qual> vlib_cli_command_t \g<name>"),
# Search for VLIB_REGISTER_NODE, extract its parameter and add a docblock for it
( re.compile("(?P<m>VLIB_REGISTER_NODE)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (\g<name>) */ vlib_node_registration_t \g<name>"),
# Search for VLIB_REGISTER_NODE, extract its parameters and add a docblock for it
( re.compile("(?P<m>VLIB_REGISTER_NODE)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>) */ vlib_node_registration_t \g<name>"),
( re.compile("(?P<m>VLIB_REGISTER_NODE)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<qual>[^)]*)[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>) */ \g<qual> vlib_node_registration_t \g<name>"),
# Search for VLIB_INIT_FUNCTION, extract its parameter and add a docblock for it
( re.compile("(?P<m>VLIB_INIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"), r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ vlib_init_function_t * _vlib_init_function_\g<name>"),
( re.compile("(?P<m>VLIB_DECLARE_INIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"), r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ vlib_init_function_t * _vlib_init_function_\g<name>"),
( re.compile("(?P<m>VLIB_INIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"),
r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ vlib_init_function_t * _vlib_init_function_\g<name>"),
( re.compile("(?P<m>VLIB_DECLARE_INIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)[)]"),
r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ vlib_init_function_t * _vlib_init_function_\g<name>"),
# Search for VLIB_LOOP_ENTER_FUNCTION, extract the 1st parameter (ignore any others) and add a docblock for it
( re.compile("(?P<m>VLIB_MAIN_LOOP_ENTER_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ _vlib_main_loop_enter_\g<name>"),
( re.compile("(?P<m>VLIB_MAIN_LOOP_EXIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ _vlib_main_loop_exit_\g<name>"),
# Search for VLIB_LOOP_ENTER_FUNCTION, extract the parameters and add a docblock for it
( re.compile("(?P<m>VLIB_MAIN_LOOP_ENTER_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"),
r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ _vlib_main_loop_enter_\g<name>"),
( re.compile("(?P<m>VLIB_MAIN_LOOP_EXIT_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+)(,[^)]*)?[)]"),
r"/** @brief (@em constructor) \g<m> (@ref \g<name>) */ _vlib_main_loop_exit_\g<name>"),
# Search for VLIB_CONFIG_FUNCTION, extract the 1st parameter (ignore any others) and add a docblock for it
( re.compile("(?P<m>VLIB_CONFIG_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<n>\"[^\"]+\")(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (\g<name>, \g<n>) */ vlib_config_function_runtime_t _vlib_config_function_\g<name>"),
( re.compile("(?P<m>VLIB_EARLY_CONFIG_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<n>\"[^\"]+\")(,[^)]*)?[)]"), r"/** @brief (@em constructor) \g<m> (\g<name>, \g<n>) */ vlib_config_function_runtime_t _vlib_config_function_\g<name>"),
# Search for VLIB_CONFIG_FUNCTION, extract the parameters and add a docblock for it
( re.compile("(?P<m>VLIB_CONFIG_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<n>\"[^\"]+\")(,[^)]*)?[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>, \g<n>) */ vlib_config_function_runtime_t _vlib_config_function_\g<name>"),
( re.compile("(?P<m>VLIB_EARLY_CONFIG_FUNCTION)\s*[(](?P<name>[a-zA-Z0-9_]+),\s*(?P<n>\"[^\"]+\")(,[^)]*)?[)]"),
r"/** @brief (@em constructor) \g<m> (\g<name>, \g<n>) */ vlib_config_function_runtime_t _vlib_config_function_\g<name>"),
# Search for "format_thing" and "unformat_thing" when used as a function pointer and add parens
( re.compile("(?P<pre>(^|,)\s*)(?P<name>(un)?format_[a-zA-Z0-9_]+)(?P<post>\s*(,|$))") , r"\g<pre>\g<name>()\g<post>" ),
( re.compile("(?P<pre>(^|,)\s*)(?P<name>(un)?format_[a-zA-Z0-9_]+)(?P<post>\s*(,|$))"),
r"\g<pre>\g<name>()\g<post>" ),
# Search for CLIB_PAD_FROM_TO(...); and replace with padding
# #define CLIB_PAD_FROM_TO(from,to) u8 pad_##from[(to) - (from)]
( re.compile("(?P<m>CLIB_PAD_FROM_TO)\s*[(](?P<from>[^,]+),\s*(?P<to>[^)]+)[)]"),
r"/** Padding. */ u8 pad_\g<from>[(\g<to>) - (\g<from>)]" ),
]
with open(sys.argv[1]) as fd:
filename = sys.argv[1]
cwd = os.getcwd()
if filename[0:len(cwd)] == cwd:
filename = filename[len(cwd):]
if filename[0] == "/":
filename = filename[1:]
with open(filename) as fd:
line_num = 0
for line in fd:
line_num += 1
str = line[:-1] # filter \n
for p in patterns:
# Look for search/replace patterns
for p in replace_patterns:
str = p[0].sub(p[1], str)
sys.stdout.write(str+"\n")
# All done

53
doxygen/filter_h.py Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env python
# Copyright (c) 2016 Comcast Cable Communications Management, LLC.
#
# 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.
# Filter for .c files to make various preprocessor tricks Doxygenish
import os, sys, re
if len(sys.argv) < 2:
sys.stderr.write("Usage: %s <filename>\n" % (sys.argv[0]))
sys.exit(1)
replace_patterns = [
# Search for CLIB_PAD_FROM_TO(...); and replace with padding
# #define CLIB_PAD_FROM_TO(from,to) u8 pad_##from[(to) - (from)]
( re.compile("(?P<m>CLIB_PAD_FROM_TO)\s*[(](?P<from>[^,]+),\s*(?P<to>[^)]+)[)]"),
r"/** Padding. */ u8 pad_\g<from>[(\g<to>) - (\g<from>)]" ),
]
filename = sys.argv[1]
cwd = os.getcwd()
if filename[0:len(cwd)] == cwd:
filename = filename[len(cwd):]
if filename[0] == "/":
filename = filename[1:]
with open(filename) as fd:
line_num = 0
for line in fd:
line_num += 1
str = line[:-1] # filter \n
# Look for search/replace patterns
for p in replace_patterns:
str = p[0].sub(p[1], str)
sys.stdout.write(str+"\n")
# All done

322
doxygen/siphon_generate.py Executable file

File diff suppressed because it is too large Load Diff

323
doxygen/siphon_process.py Executable file

File diff suppressed because it is too large Load Diff

11
doxygen/user_doc.md Normal file
View File

@ -0,0 +1,11 @@
User Configuration Examples {#user_doc}
===========================
Several modules provide operational documentation.
- [GUI guided user demo](https://wiki.fd.io/view/VPP_Sandbox/vpp-userdemo)
- @subpage ipsec_gre_doc
- @subpage map_doc
- @subpage ioam_plugin_doc
- @subpage lb_plugin_doc

View File

@ -0,0 +1,18 @@
diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c
index 50f0b28..ad59613 100644
--- a/drivers/net/enic/enic_rxtx.c
+++ b/drivers/net/enic/enic_rxtx.c
@@ -212,9 +212,12 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
/* checksum flags */
if (!enic_cq_rx_desc_csum_not_calc(cqrd) &&
(mbuf->packet_type & RTE_PTYPE_L3_IPV4)) {
+ uint32_t l4_flags = mbuf->packet_type & RTE_PTYPE_L4_MASK;
+
if (unlikely(!enic_cq_rx_desc_ipv4_csum_ok(cqrd)))
pkt_flags |= PKT_RX_IP_CKSUM_BAD;
- if (mbuf->packet_type & (RTE_PTYPE_L4_UDP | RTE_PTYPE_L4_TCP)) {
+ if (l4_flags == RTE_PTYPE_L4_UDP ||
+ l4_flags == RTE_PTYPE_L4_TCP) {
if (unlikely(!enic_cq_rx_desc_tcp_udp_csum_ok(cqrd)))
pkt_flags |= PKT_RX_L4_CKSUM_BAD;
}

View File

@ -53,13 +53,13 @@ AM_CONDITIONAL(ENABLE_$1_PLUGIN, test "$enable_the_plugin" = "1")
# SUBDIRS += new-plugin
# endif
PLUGIN_ENABLED(sixrd)
PLUGIN_ENABLED(ioam)
PLUGIN_ENABLED(snat)
PLUGIN_ENABLED(ila)
PLUGIN_ENABLED(lb)
# Disabled plugins, require --enable-XXX-plugin
PLUGIN_DISABLED(sixrd)
PLUGIN_DISABLED(vcgn)
PLUGIN_DISABLED(sample)

View File

@ -16,14 +16,27 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CFLAGS = -Wall
AM_LDFLAGS = -module -shared -avoid-version
vppapitestpluginsdir = ${libdir}/vpp_api_test_plugins
vpppluginsdir = ${libdir}/vpp_plugins
vppapitestplugins_LTLIBRARIES = ila_test_plugin.la
vppplugins_LTLIBRARIES = ila_plugin.la
ila_plugin_la_SOURCES = ila/ila.c
ila_plugin_la_SOURCES = ila/ila.c ila/ila_api.c
noinst_HEADERS = ila/ila.h
SUFFIXES = .api.h .api
%.api.h: %.api
mkdir -p `dirname $@` ; \
$(CC) $(CPPFLAGS) -E -P -C -x c $^ \
| vppapigen --input - --output $@ --show-name $@
noinst_HEADERS = ila/ila.h ila/ila.api.h
ila_test_plugin_la_SOURCES = \
ila/ila_api_test.c
# Remove *.la files
install-data-hook:
@(cd $(vpppluginsdir) && $(RM) $(vppplugins_LTLIBRARIES))
@(cd $(vppapitestpluginsdir) && $(RM) $(vppapitestplugins_LTLIBRARIES))

View File

@ -0,0 +1,62 @@
/** \brief Enable ILA processing of SIR-to-ILA packets on a given interface.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - The software interface index.
@param enable - Enable if not null, disable otherwise.
*/
define ila_iface
{
u32 client_index;
u32 context;
u32 sw_if_index;
u8 enable;
};
define ila_iface_reply {
u32 context;
i32 retval;
};
/** \brief Add or delete an ILA entry.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param type - The ILA type to be used.
Supported values:
0: Interface Identifier (iid)
1: Locally Unique Identifier (luid)
3: IPv6 Virtual Network Identifier (vnid-ip6)
4: Multicast Virtual Network Identifier (vnid-multicast)
@param sir_address - Standard Identifier Representation address which uniquely
identifies the ILA entry.
@param local_adj_index - The local FIB index if the entry is a local entry,
~0 if the entry is not local (only used to translate from SIR to ILA).
@param csum_mode - The checksum mode for this entry.
Supported values:
0: No action
1: Neutral Mapping
2: Adjust for Transport Layer
@param dir - The translation direction
Supported values:
0: Bidirection
1: SIR to ILA only
2: ILA to SIR only
@param is_del - Whether the entry with the given SIR address should be deleted.
*/
define ila_add_del_entry {
u32 client_index;
u32 context;
u8 type;
u8 sir_address[16];
u64 locator;
u32 vnid;
u32 local_adj_index;
u8 csum_mode;
u8 dir;
u8 is_del;
};
define ila_add_del_entry_reply {
u32 context;
i32 retval;
};

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,10 @@
_(VNID6, 3, "vnid-ip6") \
_(VNIDM, 4, "vnid-multicast")
typedef enum {
#define ila_type_list "iid,luid,vnid-ip4,vnid-ip6,vnid-multicast"
typedef enum
{
#define _(i,n,s) ILA_TYPE_##i = n,
ila_foreach_type
#undef _
@ -40,7 +43,10 @@ _(NO_ACTION, 0, "no-action") \
_(NEUTRAL_MAP, 1, "neutral-map") \
_(ADJUST_TRANSPORT, 2, "adjust-transport")
typedef enum {
#define ila_csum_list "no-action,neutral-map,adjust-transport"
typedef enum
{
#define _(i,n,s) ILA_CSUM_MODE_##i = n,
ila_csum_foreach_type
#undef _
@ -52,13 +58,17 @@ _(BIDIR, 0, "bidir") \
_(SIR2ILA, 1, "sir2ila") \
_(ILA2SIR, 2, "ila2sir")
typedef enum {
#define ila_direction_list "bidir,sir2ila,ila2sir"
typedef enum
{
#define _(i,n,s) ILA_DIR_##i = n,
ila_foreach_direction
#undef _
} ila_direction_t;
typedef struct {
typedef struct
{
ila_type_t type;
ip6_address_t sir_address;
ip6_address_t ila_address;
@ -67,11 +77,13 @@ typedef struct {
ila_direction_t dir;
} ila_entry_t;
typedef struct {
typedef struct
{
u32 entry_index;
} ila_adj_data_t;
typedef struct {
typedef struct
{
ila_entry_t *entries; //Pool of ILA entries
u64 lookup_table_nbuckets;
@ -84,7 +96,8 @@ typedef struct {
} ila_main_t;
typedef struct {
typedef struct
{
ila_type_t type;
ip6_address_t sir_address;
u64 locator;
@ -98,4 +111,9 @@ typedef struct {
int ila_add_del_entry (ila_add_del_entry_args_t * args);
int ila_interface (u32 sw_if_index, u8 disable);
u8 *format_half_ip6_address (u8 * s, va_list * va);
u8 *format_ila_direction (u8 * s, va_list * args);
u8 *format_ila_csum_mode (u8 * s, va_list * va);
u8 *format_ila_type (u8 * s, va_list * args);
#endif //ILA_H

View File

@ -0,0 +1,159 @@
/*
* Copyright (c) 2016 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.
*/
#include <ila/ila.h>
#include <vppinfra/byte_order.h>
#include <vlibapi/api.h>
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
#include <vlibsocket/api.h>
typedef struct
{
u16 msg_id_base;
} ila_api_main_t;
ila_api_main_t ila_api_main;
#define vl_msg_id(n,h) n,
typedef enum
{
#include <ila/ila.api.h>
/* We'll want to know how many messages IDs we need... */
VL_MSG_FIRST_AVAILABLE,
} vl_msg_id_t;
#undef vl_msg_id
/* define message structures */
#define vl_typedefs
#include <ila/ila.api.h>
#undef vl_typedefs
/* define generated endian-swappers */
#define vl_endianfun
#include <ila/ila.api.h>
#undef vl_endianfun
#define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__)
/* Get the API version number */
#define vl_api_version(n,v) static u32 api_version=(v);
#include <ila/ila.api.h>
#undef vl_api_version
#define FINISH \
vec_add1 (s, 0); \
vl_print (handle, (char *)s); \
vec_free (s); \
return handle;
#define REPLY_MACRO(t) \
do { \
unix_shared_memory_queue_t * q = \
vl_api_client_index_to_input_queue (mp->client_index); \
if (!q) \
return; \
\
rmp = vl_msg_api_alloc (sizeof (*rmp)); \
rmp->_vl_msg_id = ntohs((t)+ila_api_main.msg_id_base); \
rmp->context = mp->context; \
rmp->retval = ntohl(rv); \
\
vl_msg_api_send_shmem (q, (u8 *)&rmp); \
} while(0);
static void
vl_api_ila_iface_t_handler (vl_api_ila_iface_t * mp)
{
vl_api_ila_iface_reply_t *rmp;
int rv = 0;
rv = ila_interface (mp->sw_if_index, !mp->enable);
REPLY_MACRO (VL_API_ILA_IFACE_REPLY);
}
static void *
vl_api_ila_iface_t_print (vl_api_ila_iface_t * mp, void *handle)
{
u8 *s;
s = format (0, "SCRIPT: ila_iface ");
s = format (s, "%d ", mp->sw_if_index);
s = format (s, "%s", mp->enable ? "enable" : "disable");
FINISH;
}
static void
vl_api_ila_add_del_entry_t_handler (vl_api_ila_add_del_entry_t * mp)
{
vl_api_ila_add_del_entry_reply_t *rmp;
int rv = 0;
ila_add_del_entry_args_t args;
args.type = mp->type;
memcpy (&args.sir_address, mp->sir_address, sizeof (args.sir_address));
args.locator = mp->locator;
args.vnid = mp->vnid;
args.local_adj_index = mp->local_adj_index;
args.csum_mode = mp->csum_mode;
args.dir = mp->dir;
args.is_del = mp->is_del;
rv = ila_add_del_entry (&args);
REPLY_MACRO (VL_API_ILA_ADD_DEL_ENTRY_REPLY);
}
static void *vl_api_ila_add_del_entry_t_print
(vl_api_ila_add_del_entry_t * mp, void *handle)
{
u8 *s;
s = format (0, "SCRIPT: ila_add_del_entry ");
s = format (s, "%U ", format_ila_type, mp->type);
s = format (s, "%U ", format_ip6_address, mp->sir_address);
s = format (s, "%U ", format_half_ip6_address, mp->locator);
s = format (s, "%d ", mp->vnid);
s = format (s, "%d ", mp->local_adj_index);
s = format (s, "%U ", format_ila_csum_mode, mp->csum_mode);
s = format (s, "%U ", format_ila_direction, mp->dir);
s = format (s, "%s ", mp->is_del ? "del" : "add");
FINISH;
}
/* List of message types that this plugin understands */
#define foreach_ila_plugin_api_msg \
_(ILA_IFACE, ila_iface) \
_(ILA_ADD_DEL_ENTRY, ila_add_del_entry)
static clib_error_t *
ila_api_init (vlib_main_t * vm)
{
u8 *name = format (0, "ila_%08x%c", api_version, 0);
ila_api_main.msg_id_base = vl_msg_api_get_msg_ids
((char *) name, VL_MSG_FIRST_AVAILABLE);
#define _(N,n) \
vl_msg_api_set_handlers((VL_API_##N + ila_api_main.msg_id_base), \
#n, \
vl_api_##n##_t_handler, \
vl_noop_handler, \
vl_api_##n##_t_endian, \
vl_api_##n##_t_print, \
sizeof(vl_api_##n##_t), 1);
foreach_ila_plugin_api_msg;
#undef _
return 0;
}
VLIB_INIT_FUNCTION (ila_api_init);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
/*
* Copyright (c) 2016 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 Inband OAM (iOAM) implementation
*/

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
# Load Balancer plugin for VPP
# Load Balancer plugin for VPP {#lb_plugin_doc}
## Version

Some files were not shown because too many files have changed in this diff Show More