aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2016-04-29Fix decap-next for ethernet format in nsh-vxlan-gpeHongjun Ni1-0/+2
Change-Id: I9f5efef4c2b821e4c7d76ed6e2c4f52c2495e512 Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-29VPP-27 Extend telnet protocol buffer guardChris Luke1-1/+1
With Telnet protocol overhead, the string "xterm-256color", which is the norm when the terminal is iTerm on a Mac, is longer than the 16 byte lookahead overflow guard in the Telnet protocol processor. This extends it to 24 bytes. This guard is designed to encourage the protocol processor to quit waiting for bytes indefinitely if those already in the buffer do not form a complete message. Whilst this is unlikely, extending the guard length would mean more bytes need to be received before it gives up. Change-Id: Ibaa3d35b78bfd298fe0e4f4c6e508440f122e916 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-29Add support for LCAF Instance IDFilip Tehlar11-102/+976
Change-Id: Ifce3f2bdcba099157a42d0b694f3161b9f700ed2 Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-04-29Add lisp-gpe ip6 data-plane supportFlorin Coras12-762/+1682
The implementation mimics that of the ip4 data-plane. Therefore, a new lgpe-ip6-lookup lookup node is introduced for ip6 source lookups, a lisp-gpe-ip6-input node for decapsulating ip6 encapsulated packets and the tx function of the lisp-gpe interface is updated to support any mix of v4 and v6 in underlay and overlay. Change-Id: Ib3a6e339b8cd7618a940acf0dd8e61c042fd83dd Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-29Clean up per-thread mheap setup.Dave Barach3-25/+22
The stats thread was sharing the main mheap when we started at least one worker or I/O thread, but ran on its own mheap when we started 0 worker + io threads. Net of this change; if a VLIB_REGISTER_THREAD instance specifies a per-thread mheap, a per-thread mheap will be provided. Otherwise, threads share the main heap. The stats thread now uses the main heap. Simpler is better. Change-Id: I1fff0dd66ae8f7dfe44923f702734e2832b55b09 Signed-off-by: Dave Barach <dbarach@cisco.com>
2016-04-28Fix for java8 releated breakage in make install-depEd Warnicke1-2/+2
Change-Id: I17ae3c7031a820746a3785a35b440e17430d0ac5 Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-04-28LISP IPv6 control support, create IPv6 headerAndrej Kozemcak2-15/+21
Change-Id: I50d2946df8f5de0142b76f4023d8bd60ee6d2f0d Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
2016-04-28VXLAN over IPv6.Chris Luke13-206/+793
Refactors the VXLAN node to work with both IPv4 and IPv6 transports. There is a discussion thread for this change at https://lists.fd.io/pipermail/vpp-dev/2016-March/000279.html Note that this changes the binary configuration API to support both address families; each address uses the same memory for either address type and a flag to indicate which is in use. This also includes changes to the Java API to support both address families. The CLI and VAT syntax remains unchanged; the code detects whether an IPv4 or an IPv6 address was given. Configuration examples: IPv4 CLI: create vxlan tunnel src 192.168.1.1 dst 192.168.1.2 vni 10 encap-vrf-id 0 decap-next l2 IPv6 CLI: create vxlan tunnel src 2620:124:9000::1 dst 2620:124:9000::2 vni 16 encap-vrf-id 0 decap-next l2 IPv4 VAT: vxlan_add_del_tunnel src 192.168.1.1 dst 192.168.1.2 vni 10 encap-vrf-id 0 decap-next l2 IPv6 VAT: vxlan_add_del_tunnel src 2620:124:9000::1 dst 2620:124:9000::2 vni 16 encap-vrf-id 0 decap-next l2 TODO: The encap path is not as optimal as it could be. Change-Id: I87be8bf0501e0c9cd7e401be4542bb599f1b6e47 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-28Fix bug that prevented packet trace from working on multicoreBud Grise1-6/+14
The vlib_node_runtime can change after the thread starts up. Change-Id: Id5bc248c009ef9be26213b36a0115938b61cb8c4 Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-04-28Add ability to set l2_mode_noprotChristian Dechamplain (cdechamp)2-0/+36
Change-Id: I3767a1bbe55452600863e145cbc12b114d6d1024 Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-04-28VPP-8: Set java-8 for JNIMarek Gradzki2-2/+15
Change-Id: Ia81713a72e3c48b1d97bbf3f20a908bbc4ebd3b1 Signed-off-by: Maros Marsalek <mmarsale@cisco.com> Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-04-28Add histogram to frame queue tracingBud Grise3-32/+132
Display it via "show frame histogram" CLI. Change-Id: I436a2125f391af85d1743cf8765e5f27fa0ca809 Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-04-28Python API: Fix mistaken removal of '_' in field names.Ole Troan2-8/+23
Change-Id: I1e39970bc6ded9e6da64385b2289321ba43bebfd Signed-off-by: Ole Troan <ot@cisco.com>
2016-04-28Track number of ethernet vlans in a frameChris Luke9-9/+84
Adds flags to the packet buffer to track the number of VLANs in the current Ethernet frame. We use two bits to signify 0, 1 or 2 VLANs. The value 3 signififies an unknown quantity of VLANs, which includes "three or more" which is not widely supported. We place the bits in the vlib_buffer section; that is not the opaque section, so that all subordinate nodes can use it. For background, see the discussion thread at https://lists.fd.io/pipermail/vpp-dev/2016-March/000354.html The helper macro ethernet_buffer_header_size(buffer) uses these bits stored in "buffer" to calculate the Ethernet header size. The macro ethernet_buffer_set_vlan_count(buffer, count) sets the appropriate bit values based on the number in "count". By current frame we are referring to the case where a packet that arrives from the wire is carrying an encapsulated Ethernet packet. Once decapsulated that inner packet becomes the current frame. There are two places where this value is set; For most Ethernet frames this will be in the "ethernet-input" node when that node parses the Ethernet header. The second place is whenever vnet_update_l2_len() is used to update the layer 2 opaque data. Typically this function is used by nodes just before they send a packet into l2-input. These bits are zeroed in vlib_buffer_init_for_free_list() meaning that wherever the buffer comes from they have a reasonable value (eg, if ip4/ip6 generates the packet.) Primarily this VLAN counter is used by nodes below "ethernet- input" and "l2-input" to determine where the start of the current Ethernet header is. There is opaque data set by "ethernet-input" storing the offset of the current Ethernet header but, since this is opaque, it's not usable by downstream nodes. Previously several nodes have made assumptions regarding the location of the Ethernet header, including that it is always at the start of the packet buffer (incorrect when we have encapsulated packets) or that it is exactly sizeof(ethernet_header_t) away (incorrect when we have VLAN tags.) One notable case where this functionality is required is in ip6_neighbor when it generates a response to a received neighbor soliciation request; it reuses the incoming Ethernet header in-situ and thus needs to reliably know where that header begins. Also, at the suggestion of Dave Barach, this patch removes definition of HGSHM bits in the buffer flags since they are unused and unlikely to ever be. Change-Id: I00e4b9ced5ef814a776020c395d1774aba6185b3 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-28Update Makefile to add debuginfo RPMs for gdbThomas F Herbert1-1/+2
Change-Id: I29d8cc839565999e2fabe09d29c40e09aa1ea784 Signed-off-by: Thomas F Herbert <therbert@redhat.com>
2016-04-28Fix Bug VPP-22Florin Coras1-1/+1
Change-Id: Iaac12e63e4a5ee026276638afd5d5ba3b9503a40 Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-27Increase the trace bufffer sizeChris Luke2-2/+2
In some cases, the packet header size with IPv6 and a tunnel can overflow the buffer used for packet tracing. This patch increases this buffer a little to avoid truncated header information in the trace. Change-Id: Ib800e3b908ebe7e80bae4428a94541a803b40b8c Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-27ENIC driver updates for DPDK 16.04 and 2.2.0John Lo6-12/+3814
Change-Id: I896925ea2208d318d353d486707b97f295c78426 Signed-off-by: John Lo <loj@cisco.com>
2016-04-27Remove historical artifacts from vnet/buffer.hDave Barach1-26/+0
Change-Id: I7f50074a4ed5b62bef4584190eb849d90e90e592 Signed-off-by: Dave Barach <dave@barachs.net>
2016-04-27VPP-18: Creating tap interface through API broken. Fixed and removed ↵Ole Troan1-138/+50
duplicate code by CLI to create TAPs. Change-Id: Ib6b30e3dc20ddad7c78d2038955df7af020f0671 Signed-off-by: Ole Troan <ot@cisco.com>
2016-04-27Fix pcap trace capture crash for packets > 512 bytesJohn Lo1-1/+2
Change-Id: I9397ac756290953a14e3adfe5b7c980ecf92bac2 Signed-off-by: John Lo <loj@cisco.com>
2016-04-27CLI output pagerChris Luke3-85/+744
Buffers output from CLI commands as it arrives and allows the terminal to view this buffer one page at a time. - View of the buffer is moved with space/enter/up/down/page-up/page-down/ home/end. - At the end of the CLI command if less than one page of output was generated then the pager is not engaged. - 'q' to quit the pager, or scroll off the bottom. - Pager prompt displays the current view aperture line numbers and total number of lines buffered. - Can be disabled at runtime with "no-cli-pager" in the unix configuration. - The number of lines that will be stored in the buffer is limited to prevent excessive memory use; this limit is configurable with "cli-pager-buffer-limit" in the unix configuration. - Both these options can also be set in the console with "set terminal pager [on|off] [limit <lines>]". Limitations: - Does not yet implement a search function. - Whilst the terminal size is detected and tracked, changing the terminal size when the pager is being used will not cause a redraw of the page. - Lines that wrap the right most column are not yet handled gracefully. Change-Id: I69548c1464eff79c53e122668f25758266daf1c2 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-27Add "history" CLI commandChris Luke1-24/+48
- Remove the '?' mechanism that previously only worked on telnet connections in favor of a more shell-like "history" command. The '?' approach had strange side-effects, like executing what was already in the command buffer. Change-Id: I043086b7f400c66c332a32dbd06ef580ecb18ee8 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-27Add a (small) banner to the Debug and Telnet CLIChris Luke3-2/+65
_______ _ _ _____ ___ __/ __/ _ \ (_)__ | | / / _ \/ _ \ _/ _// // / / / _ \ | |/ / ___/ ___/ /_/ /____(_)_/\___/ |___/_/ /_/ - For terminals that look like they support ANSI output the FD.io part is colored red. - This is only shown at the start of a debug CLI or a telnet CLI session. - This banner can be disabled with "cli-no-banner" in the "unix" section of the startup config file. Change-Id: I085b3780dcca3eae546859dbde6c1c34c8258b9f Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-27Debug/Telnet CLI enhancementsChris Luke2-222/+1063
A fairly comprehensive re-work of the built-in debug and telnet CLI to add various command line editing features and to add command history to the debug CLI. This may seem like a large change but a good amount of it is merely reworking the existing CLI code (which changed its indent level). The features this patch enables include: - Enable history in the debug CLI. - Put both stdin and telnet connections in char-by-char mode. - Echo from the server, not the client, for more control. - Add a mostly no-op but fairly complete Telnet protocol processor. - Perform control code parsing on the input byte stream to match strings of both control codes and ANSI/VT100 escape sequences. - Up/down keys scroll through the history (like ^P/^N). - Do CRLF output cooking (\n -> \r\n) for connections that need it. - Left/right cursor movements, insert/erase at cursor. - Home/end cursor jumps. - Jump left/right word at a time (Ctrl-left/right). - Negotiate the terminal type from Telnet clients. (well, the code doesn’t really negotiate, it demands it, but the client is led to believe it was a negotiation) - Read terminal type from TERM variable for the local debug CLI. - Delete from cursor to end of line (^K). Delete char-right (^D/Del). - Clear screen (^L) and repaint prompt/current command (on non-ANSI terminals it just newlines and repaints the line). Change-Id: Id274b56ccfd4cc8c19ddc0f478890f21f284262a Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-04-27HONEYCOMB-10: Add missing context parameter to *details structsMaros Marsalek2-8/+24
Some of the *details structures defined in vpe.api did not have the context parameter that is used for request<->reply matching. Without the context, it is difficult for upper layers (users of vpp binary apis) to identify which reply or details message belongs to which request Tested manually using vat Change-Id: I5fda54a891b68349f80c87fae06009791a028147 Signed-off-by: Maros Marsalek <mmarsale@cisco.com> Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-04-27Live VM migration support for vhost-userShesha Sreenivasamurthy2-4/+63
Change-Id: I79bef6dc94b3ad688564a409d14d63ca3125a305 Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
2016-04-26Make automake silent rules defaultDamjan Marion10-11/+10
Change-Id: Ia504ccdac1deac20f20cf7fb76f78b2d8c505474 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-26Fix clang warnings in api codeDamjan Marion2-13/+13
Change-Id: I7a4bc4678fea723c35bbeac1b893c5c52235aa67 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-26MTU: set interface mtu tapMohsin Kazmi5-33/+57
This patch introduces standard command line 'set interface mtu' for setting the MTU for tap devices. It allows user to set the mtu in between 68 to 65535 bytes aligned to what linux kernel supports for tun/tap devices. Right now tapcli set the same MTU size for each tap interface. But it should be set and configure to per interface rather than per tap instance. Change-Id: I81b7f3ad95ca56d585907ff8f51d9935a428e01b Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2016-04-26Fix compile errors reported by clangDamjan Marion14-16/+55
For using clang as a compiler it is enough to specify CC=clang in the make command line Change-Id: I06f1c1d418b68768f8119de5bdc8748c51f90c02 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-26Port glean neighbor entry support to IPv6Pierre Pfister12-74/+343
This patch is more or less a port of I71f3ba0c8192 to IPv6. In practice it allows creating a route via a neighbor which is not resolved yet. It also adds static flag to IPv6 neighbor entries. And as Damjan suggested, it formalizes ip46_address_t by using the IPv4 embedded IPv6 address format. Change-Id: Ifa7328a03380ea4ff118b7ca4897b4ab23a3e57c Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-04-26Fix decap's second-loop failure issue within nsh-vxlan-gpeHongjun Ni1-3/+3
Change-Id: I7c5c93b6490baa05b9b203b6d065d9c31f36d531 Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-26Build vpp w/ dpdk-16.04 by defaultDave Barach1-1/+1
Change-Id: I82cdd82213517c51064eb439c44068d8977e5619 Signed-off-by: Dave Barach <dave@barachs.net>
2016-04-26Gernerate dpdk config out of target specific filesDamjan Marion1-7/+2
DPDK 16.04 introduced new config parameter RTE_ARCH_X86 which was missing in the dpdk/Makefile That caused issues with virtio devices on older kernels (observed on 3.13.0). This patch changes the source of generated config so it will also include all defines in config/defconfig_TARGET file. Change-Id: Idc6ccbef1d01da84235281ea1078c081846446de Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-25Put back VMXNET3 driver init for DPDK 2.2.0 or older versionsJohn Lo1-0/+19
Change-Id: I3fb9441fb7272072aba9721ca729d6ce5f2c00af Signed-off-by: John Lo <loj@cisco.com>
2016-04-25Disable TSO/CSUM offloadingShesha Sreenivasamurthy1-0/+15
Enabling these features breaks L4 traffic when a VHOST interface is bridged with a hardware interface which does not support such offloading. (Eg: enic) Change-Id: Ife3d292a8860eb60b82f1473e2d0dd7329e51d5e Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
2016-04-25Fix vpp crash in DBG modeShesha Sreenivasamurthy1-1/+2
virtio-vhost driver was specifying wrong prefetch size. This caused VPP to assert in DBG mode. Change-Id: Icbe3d5574bd2463b98dfc618a001b16198ab82be Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
2016-04-25Break boostrap.sh into piecesEd Warnicke8-111/+132
In order to make it easier for folks who have existing Centos or Ubuntu boxes to utilize the same 'Getting started' scripting that is used in Vagrant, as well as enable us to use that scripting in CI, broke up bootstrap.sh into update.sh - Things like apt-get update build.sh - Install any dependencies and build vpp clearinterfaces.sh - Clean off any non-default gateway interfaces. Used by vagrant. run.sh - Start vpp as a service on the box. A user (or CI) just wanting to get going and build on an existing Ubuntu or Centos image (ie, not via vagrant) can simply run build.sh Change-Id: I8f19342f163cad07c6c05def943a5fb8e394b879 Signed-off-by: Ed Warnicke <eaw@cisco.com>
2016-04-25Add native NETMAP driverDamjan Marion10-5/+1666
This is first drop of native NETMAP driver. It is mainly tested with NETMAP pipes but also support for native interfaces should work. New CLI: create netmap [<intf name>|valeXXX:YYY] [hw-addr <mac>] [pipe] [master|slave] Following example creates NETMAP pipe where VPP acts as master: create netmap name vale00:vpp1 pipe master then NETMAP pkt-gen tool can be used to send traffic: pkt-gen -i vale00:vpp1}0 -f tx Change-Id: Ie0ddaa5facc75285b78467420e8a9f9c8dfc39e5 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-25Allow the number of elements in a frame queue to be specified per thread.Bud Grise2-1/+8
Change-Id: I026a61a943960dc52539565968a942fbd851da93 Signed-off-by: Todd Foggoa <tfoggoa@cisco.com>
2016-04-25Add APIs to access dpdk informationTodd Foggoa (tfoggoa)2-0/+62
- Add an API to get the number of DPDK mbufs - Add an API to detemrine if the io thread has been released - Add an API to get the DPKD pmd type - Add an API to get the cpu socket of a device Change-Id: I926401891fb6053c676125c9d0621cc9ed1f80bb Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-04-25Change ethernet's result within unformat_decap_nextHongjun Ni1-1/+1
Change-Id: Ib3f9d1a03930842063ebfbfcfeefca533a678416 Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-25Convert lisp-gpe encap to interface tx nodeFlorin Coras12-539/+950
With this change, one lisp-gpe interface is created per vrf/overlay tenant and its tx node is used as encapsulator (or tunnel ingress). For all intents and purposes, the tx node inherits all functions previously performed by the lisp-gpe-encap node and it maintains said node's position in lisp-gpe's data-path graph. Chiefly, this opens the possibility to chain interface features, like IPSec, transparently with LISP. Furthermore, it brings basic data plane support for vrfs and LISP instance-ids (or virtual network instances as per RFC7364). Other changes include improvements to lisp-gpe enable and disable sequences and corresponding API/VAT fixes. Change-Id: I085500450660a976b587b1a720e282f6e728d580 Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-25Improve mechanism for using loopback interface as BVI for BDsJohn Lo7-82/+68
When loopback interface is configured as BVI, instead of changing its output node from loopN-output to l2-input, the loopN-output node is now kept while its next tx node is changed from ethernet-input to l2-input. The packet setup previously done in bvi_to_l2 as part of l2-input is now performed in the loop output node. This change adds an extra node in the BVI output path but provides the following improvements: 1. IP address/route created on loopback prior to it being configured as BVI will still work properly. The requirement to (re)configure IP/route on loopback after it is configured as BVI is removed. 2. The output stats for loopback interfaces are always provided irrespective of their BVI configuration. 3. The loopback-BVI output stats can be batch updated outside the packet loop in output node, instead of per packet update in l2-input node, making l2-input node more efficient for BVI packets. 4. Restore original node property as implemented in node.c function vlib_node_add_next_with_slot() where next node indices stored in next slots of each node will remain unique. 5. Packet trace for BVI output includes loopN output node which provides useful packet data. Change-Id: I7f5bc72ef953a367363a179088210596881f9e73 Signed-off-by: John Lo <loj@cisco.com>
2016-04-25Python-API: Python 2 support.Ole Troan2-11/+43
Change-Id: I6bc656caf22e284233e27f9e003f11502f306c11 Signed-off-by: Ole Troan <ot@cisco.com>
2016-04-25Python-API: Support for zero-length arrays from caller to VPP. (Previously ↵Ole Troan1-20/+26
only VPP to caller was supported.) Change-Id: Id660caeb780f3b26cc091467291463980f485178 Signed-off-by: Ole Troan <ot@cisco.com>
2016-04-24Updated .gitignore for Python API generated fileKeith Burns (alagalah)1-0/+1
Change-Id: I7c08b52124b44feb36e04a7fd417fe14b367cb44 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-04-22Add clib_memcpy macro based on DPDK rte_memcpy implementationDamjan Marion142-803/+1407
Change-Id: I22cb443c4bd0bf298abb6f06e8e4ca65a44a2854 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-22Add a vpp_restart commandDave Barach4-5/+250
vpp_restart solves the problem of restarting vpp and not exiting until the new vpp instance is sufficiently established to allow immediate binary API connections. The point is to avoid using arbitrary "sleep N" commands e.g. in CSIT shell scripts. We send SIGTERM to the current vpp process, and expect / depend on the process-monitor du jour to remove the vpp-api shared-memory segment. vpp_restart exits w/ status 0 if all is well, non-zero upon failure. In trying to make vpp_restart reliable, we discovered a recently-introduced heap corruption bug in .../dpdk/init.c, which caused vpp to crash on startup once every 20 times on a particular rig. If possible, we should check /var/log/syslog for evidence of unexpected multiple restarts during regression-testing. Change-Id: Ic48c74b1a94a4368066ba2e326d4b12d51192088 Signed-off-by: Dave Barach <dbarach@cisco.com>