Commit Graph

654 Commits

Author SHA1 Message Date
006eb2689b Add support for ethernet address in LISP API
Change-Id: I9f1522f55bdd11602784a421fd850b839a1070e6
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-06-29 18:54:02 +00:00
71fb06fba0 Don't re-write adjacency with same information.
This will cause FIB counters to appear to be reset.
This is an implementation of a patch from Dave Barach.

Change-Id: I19b9953d42dfb92ec22af6a855e2e519ae7c3bdc
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-29 07:07:16 -07:00
0f8ecf0eb2 Decouple worker thread code from dpdk, enable worker threads in vpp_lite
Change-Id: I28616f1a89f2da95484438ec1a1db64845f15ef6
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-29 13:26:21 +00:00
2838a2355a VPP-158: VPP crashes in IKEv2 code when running multithreaded
Change tunnel interface creation to be done from the main thread instead
of a worker thread by calling vl_api_rpc_call_main_thread.

Make per-thread copies of volatile elements in ikev2_main.

Change-Id: I4cda8aaa392a04c2aea2d50a52a07933cf40c016
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2016-06-29 09:18:43 +00:00
816f3e1b87 VPP-48 Fixes for ip4/6 ttl checks and icmp responses
This patch fixes a few minor things:

- Previously ip[46]_input was rejecting packets with an input TTL (hop
  limit) of one; this was not correct behavior. Packets that are bound
  for this device can validly have a TTL of one.
- ip[46]_forward was not generating an ICMP TTL expired message if the
  act of decrementing the TTL caused it to become zero. This was not
  previously an issue because ip[46]_input was filtering packets where
  this could happen.
- udp_local was not generating ICMP Port Unreachable messages if
  UDP packets arrived for a port that is not listened to. This is
  typically the signal that "traceroute" uses to terminate its
  search.

Together these fixes mean that traceroute probes transiting a VPP
node, or are targetted toward a VPP node, now work as expected.

Change-Id: I84bb940883f7a18435f29f4518fb0445b989a3e3
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-06-28 23:35:13 +00:00
154d445f7f Fix native build on non x86_64 systems
Change-Id: Iab9f6793112f19a5b54a555623d84099aa8bb03e
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-28 19:10:41 +02:00
a06dfb39c6 Reduce ring size for dpdk NICs and overtal mem footprint
Size of interface descriptor rings have direct impact
on Last Level Cache utilization, and can significantly affect performance.
So generally having smaller ring size is good idea as long as
there is enough buffer in the ring to accomodate line rate.

Here we are reducing rings sizes to 1024 which is still bigger
than lab verified 512 buffers per ring.

Indirectly, this also affects memory footprint, as we can have
smaller buffer allocation, which is now 16384 (previously it was 32768)

This patch also fixes issue with i40e vector PMD which was leaking
buffers when previous default ring sizes were set.

Change-Id: I58fb40586304b2f0cb5de9a444055da3cd3acb53
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-28 15:08:45 +00:00
310dca43a3 Add support for classify table/session read to jvpp:
* provides length information for variable length arrays
  in classify table/sessione reply messages
* provides jvpp example for reading classify tables/sessions

Change-Id: I47f8fca5c849ec874d4e23f28177e310689db522
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-06-27 17:11:41 +02:00
ea3e1fc875 Plugins: Clean up the plugin directory so that each plugin has its own
directory and GNU autotools setup.

Change-Id: I6c59d1297389c9413db0c0b9bdf3b759080bf1b8
Signed-off-by: Ole Troan <ot@cisco.com>
2016-06-27 15:04:00 +00:00
aa6920e0a8 More janitorial work
Install vpp api header files in /usr/include/vpp-api, instead of
/usr/include/api. Someone will eventually complain if we continue with
the status quo.

Generate /usr/bin/vpp_plugin_configure, to correctly configure
standalone plugin compilation against header files installed from the
dev package.

If a plugin's CFLAGS don't precisely match the installed vpp engine
binary, subtle misbehavior can and will occur. Example: the ip4/ip6
main_t structure size / member offsets depend on DPDK=[0|1]. Screw
that one up, and your brand-new configurable ip feature will
mysteriously fail to appear, even though the plugin loads perfectly.

Change-Id: I20c97fe1042808a79935863209d995c31953b98c
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-27 06:54:32 -07:00
20c90f765d VPP-108 : API calls to read classify table and sessions
Added new API calls to read
- classify table ids as array
- classify table ids for specified interface
- classsify table info
and to dump sessions of specified classify table.

Change-Id: I089604fa98eea92866495089d76c2330ae7d850c
Signed-off-by: Pavel Kotucek <pavel.kotucek@pantheon.tech>
2016-06-27 13:47:34 +00:00
8e39bb402a Add MAC address support to LISP map-cache
Change-Id: I80f05a222cb0f728ad2460efe33955e781b6849f
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-06-27 13:15:39 +02:00
203c632d29 Misc. janitorial work:
Remove private / name-colliding "give me the first ip address on an
interface" routine from proxy_node.c

Return a proper error from ip4_lookup_init / ip6_lookup_init.

Change-Id: Idd3c574424ba2ea77c263af16b02cd4ad0cb4605
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-26 10:37:14 -04:00
63617fc8e4 Netmap: Resolve interface state issue
[VPP-155]: There is inconsistency in the netmap interface
state for software interface state and hardware interface
state. This patch resolves that issue.

Change-Id: I92199e117f919bd985670366a6d3b7753e40659c
Signed-off-by: Mohsin KAZMI <sykazmi@cisco.com>
2016-06-25 17:38:01 +00:00
034fccccab Doubly-linked list element pools
Change-Id: I96e7602be48dfb5bb3867ad1e9f15c543903b3d6
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-25 17:35:29 +00:00
692581faf8 vhost-dpdk: dequeue size fix
Burst size for DPDK is 32, which is different from VLIB_FRAME_SIZE.
A loop is needed to dequeue all packets.

Change-Id: Ie611c58c4e3434251a47fe6ad1f38abcb85180cb
Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
2016-06-25 17:34:30 +00:00
07515d7aae add buf_physaddr to dpdk trace
Change-Id: Icbb6814306f51873af6ad9d1425b52d660bb99ce
Signed-off-by: Georgii Tkachuk <georgii.tkachuk@intel.com>
2016-06-25 16:04:18 +00:00
f8035649e9 Vagrantfile RAM default is too small.
- Will raise JIRA for someone to convert this to use binaries by default
- This means we should be able to get away with smaller VM for non-dev users

Change-Id: If3d9283ba2c169792a1ab71ff692c25de82d41f4
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-25 03:50:28 -07:00
a7575eacb9 netmap: multithreading support
This patch adds multithreading support for netmap interfaces.

Change-Id: Iba94386fe309a4aac71646fe567f8dabbebd0459
Signed-off-by: Mohsin KAZMI <sykazmi@cisco.com>
2016-06-24 21:24:33 +00:00
d6b3850c64 Move vcgn as plugin
Use appropriate libnames to copy

Change-Id: Iaa1e7e3ceed52f328e26e75ee7309fc6464d5c66
Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
2016-06-24 11:25:13 -07:00
b0ccf03b6e Reformat output of lisp eid-table show command.
Example output:

DBGvpp# sh lisp eid
EID                                type                locators
[100] 6.0.2.0/24                   local(ls1)          host-intervpp1
[200] 6.0.2.0/24                   local(ls2)          host-intervpp1
[100] 6.0.4.0/24                   remote              6.0.3.2
[200] 6.0.99.0/24                  local(ls3)          local0
                                                       host-intervpp1
[0] 6.0.0.0/16                     remote

Change-Id: I69200bf7636167bce931def88828503a75496f4b
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-06-24 15:57:17 +00:00
fa42e25c4e VPP-118: add support for variable length arrays to jvpp
* extends VPP's message definition language with the following syntax:

u32 count:
u8 array[count];

which is traslated to:

u32 count;
u8 array[0];

but now, python API representation generated by vppapigen
contains information about where the array length is stored.

* modifies existing response messages to use the new syntax

Change-Id: I68210bc7a3a755d03d067e9b79a567f40e2d31f3
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
2016-06-24 13:23:16 +00:00
80ee21386c Add admin-up flag to L2TP tunnels and start tunnels set to down
L2TP tunnels use virtual interfaces but directly send
packets to l2-input node (not ethernet-input).
This node requires a bridge-domain to be associated with
the interface.

Past code was immediatly turning the interface up, but
some packets could be sent to l2-input without bridge domain
between interface creation and association with a bridge domain.

The tunnel is now created as down and has to be set up later
(typically after being associated with a bridge-domain).

Another option would have been to change the api and enforce
a bridge-domain to be specified before the tunnel, but this
is less flexible for the user.

Change-Id: I26d1f36bb4f327d9fa1c8044023f2210c4117904
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-06-24 12:55:22 +00:00
de393bb76d Show command support for ip feature paths
"show ip features" displays all available features, in execution
order.

"show ip interface features <intfc>" displays all features currently
configures on an interface, in execution order.

Change-Id: I489bbdb85799a01721ba60b12ffaffcab1e0d1df
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-23 23:28:41 +00:00
0f6b796071 Use lisp_gpeX iface counters to store decap stats
The patch switches to using LISP interface counters for storing the
number of decapsulated packets instead of using per decap node stats. It
also removes the encap node (iface tx node) stats since the iface output
node already keeps track of the number of encapsulated packets.

Change-Id: I636702a824264c173792f2f0c7fec0b0f4c6a9f7
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-06-23 21:48:48 +00:00
2c21a9aa88 VPP-72 Added api call aquivalents to:
"show mpls fib" -> "mpls_fib_encap_dump" and "mpls_fib_decap_dump"
    "show mpls tunnel" -> "mpls_eth_tunnel_dump [tunnel-index <tunnel-id>]" and
                          "mpls_gre_tunnel_dump [tunnel-index <tunnel-id>]"

Change-Id: I59699039392f06dc61f62a015d07186a91cfaf45
Signed-off-by: marek zavodsky <mazavods@gmail.com>
2016-06-23 14:22:12 +00:00
324112fad0 LISP EID virtualization support
Change-Id: I892c001cfdff9d8d93e646641d96520beb3c6265
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-06-23 13:00:39 +00:00
0443212371 More LISP SD FIB and forwarding fixes
o) Avoid using explicit_fib_index in the dst (main) FIBs. It's used in
the IP6 lookup
o) use if_address_index instead of rewrite_header.node_index to store
tunnel indexes. This ensures the tunnel index is used in the signature
computation and thus avoids all complications/hacks needed to make src
adjacencies unique.
o) Fixed negative fwd entry route insertion

Change-Id: Ie56356f165b96dfa929da5672a3a429996366460
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-06-23 12:00:13 +00:00
d076f19b5e ARP/NDP does not send solicitation when no source address is available
Currently, when the interface has no address assigned to it,
VPP crashes as ip_interface_address_for_packet assumes there
always is at least one address.

This patch checks if an address is available at all.
The only part of VPP using it is ARP or NDP.
When a neighbor discovery message has to be sent while
there is no address assigned on the interace, no
solicitation is sent and an error counter is incremented.

Change-Id: Ia9fdaf8e84050a1ceeb47f5370819d3df95714f0
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-06-22 17:09:33 +00:00
5b7a563ff0 Add MAC address support for LISP
Change-Id: I79e3915fa61b497e6b586babcdf093937af07b2b
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-06-22 17:18:43 +02:00
7511ae85b6 CLI to update locator-set
Change-Id: I60ea36362a2c4b7c936dde501a3d737b68a8c9ff
Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
2016-06-22 11:28:10 +00:00
355cf68f92 Fix for build failure due to iOAM plugin header file path
Change-Id: Ie5d270a01e3ca0687a407aeebc42aacc53a01ddc
Signed-off-by: Shwetha <shwethab@cisco.com>
2016-06-22 10:16:47 +00:00
010972a95d Vagrantfile syntax error correction - requires string input instead of integer.
Change-Id: Ib291662c4ea2f5bef0f2c417b16d256f5c480d5c
Signed-off-by: Srivatsa Sangli<srivrama@cisco.com>
2016-06-21 12:58:19 -07:00
8ebb2a1632 Check if LISP is enable
Lisp enable flag is enforced. DP API should not be call if the dp is disable.

Change-Id: I265cf3ea0460987f3fd5fd84b43127dd3b1c43c3
Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
2016-06-21 13:41:22 +00:00
0977e4baab Fix problem with DPDK vector PMDs not working in VPP
Linker was picking wrong, weakly linked function from
dpdk drivers, so detection of vector mode was always failing.

Change-Id: I11725c8ddbc4604dd04ecb89ebb7f02ee05e52c7
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-20 18:07:01 -07:00
a026eb1a6d VPP-143: Correctly drop local l2tp packets when no session is found
When receiving a local ipv6 packet containing an l2tp packet not associated
with any session, l2tp node was handling the packet as if provided by an ipv6 feature,
hence crashing.

This patch fixes the issue by correctly dropping the packet instead.

This patch also fixes a typo from commit d65346098d.

Change-Id: I1b377fc5685568c16831920227671feffac64287
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-06-20 15:32:08 +00:00
e0965d4e05 Using env.sh file for Vagrantfile inputs, but assume some defaults
Change-Id: Ia4b45d88be5943d413d61435ff38796d1b6a32a2
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-20 12:13:15 +00:00
889178c02a VPP-152: mheap_alloc returns 0 when the requested heap size is too small
mheap_alloc allocates memory_size bytes of memory and returns
a page-aligned memory space prefixed with a word-aligned
header of type mheap_t.

This header includes the actual usable space size, but
when the requested size is too small, the computed size
was incorrect (infinite).

mheap_alloc now returns 0 in such cases.

With help from Yoann Desmouceaux.

Change-Id: I00af63d573d6939aca53dbe7ff612b726bd8f0df
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-06-19 13:31:59 +00:00
f2868fcd2e Output interface MTU check ignored in double-loop
In the double loop of ip4-rewrite, when forwarding packets,
the outbound interface MTU check occurs too late in the
double-loop to be actioned.

Change-Id: Ifc44e65d6ddb832aa0161d0685b1a28378541905
Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-06-19 13:30:36 +00:00
2459e4c5f5 Fix use of lookup_next_index in LISP src/dst FIB
Adjacencies in LISP src/dst FIB store the index of the LISP output
interface (next node after lookup) in the lookup_next_index. Since the
values of interface node indexes are not constrained, they can collide
with the 'special' adjacencies IP_LOOKUP_NEXT_LOCAL and
IP_LOOKUP_NEXT_DROP. As a result, at allocation time, LISP ajacencies
may be automatically shared with the previous two, predefined
adjacencies and all LISP specific state stored in the rewrite area is
lost.

This fixes the problem by 'hijacking' the explicit_fib_index instead
of the lookup_next_index field.

Change-Id: I3c59121dcf0851decf5c08004143d1201dbd1ece
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-06-19 13:26:11 +00:00
808b2db964 Improving cross_ldflags arguments for dpaa2 platform
- This helps in avoiding manual export of
   LD_LIBRARY_PATH for /usr/lib64/

Change-Id: I15fc9c9f961848411b093c891ca9517ef4e074a0
Signed-off-by: Sachin <sachin.saxena@nxp.com>
2016-06-19 13:25:05 +00:00
e62c796b28 gitignore gtags
Change-Id: I0160cdfc8e749f875a232e07526d53a3a7c8395c
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-19 00:48:01 +00:00
693b7026a8 Enhanced RPM build process to make rpm for any given platform
- Currently default rpm.spec only look for  "install-vpp-native"

Change-Id: Iaa78c46ae62d2747bda6ffc1189cb8ac6d578bd8
Signed-off-by: Sachin <sachin.saxena@nxp.com>
2016-06-18 15:28:08 +05:30
98897e26ce Fix node registration in ixge driver
Change-Id: Ia98ed873954feaa7bf1f13d8eb4054d0afba495e
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-18 02:52:24 +00:00
a18e413085 Give correct argument to ip_call_add_del_adjacency_callbacks
ip_call_add_del_adjacency_callbacks requires an adjacency index, not a
sw_if_index.

Change-Id: I4ae6a6bbbe0abee4791217463d353c56f9735ba3
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-06-18 02:50:44 +00:00
b5adaeab2f Move pkt replication counter to the opaque2 cache line
Change-Id: I5e6edfd03ab41949be2c768dfe68aa824bbc1f38
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-18 01:01:36 +00:00
f289ca6bc6 Updated Makefile so install-dep doesn't prompt
Change-Id: I8e5f4d120c9add636054e740f2a8aa3a0f8bb7d1
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2016-06-17 22:11:04 +00:00
d65346098d Dynamically compute ip feature subgraph order
This change-set enables plugins to add themselves to the ip4/ip6
feature subgraphs without having to modify core vpp engine code
at all. Add VNET_IP4/IP6_UNICAST/MULTICAST_FEATURE_INIT macros
which express the required ordering constraints, and off you go.

Along the way, added an implementation of Warshall's algorithm to
vppinfra; to compute the positive transitive closure of a relation. In
this case, the relation is "feature A runs before feature B."

With that in hand, ip_feature_init_cast(...) computes a partial order
across the set of configured feature subgraph nodes.

In unit-testing, we discovered VPP-145 - ip4/6 inacl wiped out
vnet_buffer(b)->ip>current_config_index, which exists in main. So, we
fixed that by moving b->trace_index, adding b->current_config_index,
and removing the ip opaque union current_config_index.

Change-Id: Iff132116f66413dc6b31ac3377198c7a32d51f48
Signed-off-by: Dave Barach <dave@barachs.net>
2016-06-17 16:24:16 +00:00
378893a485 Support NAT across multiple interface pairs
Some of the commands require interface name as an
    additional parameter as we support multiple interfaces.
    Example:
    set vcgn map inside TenGigabitEthernete/0/0 10.1.0.1 - 10.1.0.1
    show vcgn inside-translation protocol tcp interface TenGigabitEthernete/0/0 inside-addr 1.0.0.2
    show vcgn outside-translation protocol tcp interface TenGigabitEthernet9/0/0 outside-addr 10.1.0.1

Change-Id: Id691ccd3f2c863c665a1568982c819b79dda007e
Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
2016-06-17 12:34:38 +00:00
bd05e17d79 NXP DPAA2 Poll Mode Driver Support in DPDK
Upstreaming of DPAA2 driver changes is in progress.This patch will
 temporary add the support in VPP in built DPDK.

 Two types of changes:
     1. Driver specfic independent files. No impact on any other functionality.
     2. Changes in common EAL framework. These changes are done in compile time DPAA2
        specific flag, so no impact is expected on other existing features if not
	compiling for DPAA2.

Change-Id: I02abe7189313835b51ff654b4d7e566bc0fb8327
Signed-off-by: Sachin <sachin.saxena@nxp.com>
2016-06-17 12:33:43 +00:00