History log of /vpp/src/vnet/pg/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
0cf52823 09-Jun-2020 Mohsin Kazmi <sykazmi@cisco.com>

gso: fix the udp checksum in test

Type: fix

Change-Id: I7005e4763e73f3679c40f94bdab26d439cd23188
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

698eb87a 21-May-2020 Vladimir Isaev <visaev@netgate.com>

vxlan: Fixed checksum caclculation offset

VXLAN uses csum_offload for IPv6 packets.

But without gso node we have csum calculated only for inner
This patch adds support for outer header csum calculation.
Checksum for inner packet should be calculated before
interface-output node (for example in vxlan node).

Type: fix

Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Signed-off-by: Vladimir Isaev <visaev@netgate.com>
Change-Id: Ica68429ede4426293769207cd83c791ebe72fe56

7784140f 29-Apr-2020 Dave Barach <dave@barachs.net>

misc: binary api fuzz test fixes

Add a hook to src/vlibapi/api_shared.c to fuzz (screw up) binary API
messages, e.g. by xoring random data into them before processing. We
specifically exempt client connection messages, and inband debug CLI
messages. We step over msg_id, client index, client context, and
sw_if_index. Otherwise, "make test" vectors fail too rapidly to learn

The goal is to reduce the number of crashes caused to zero. We're
fairly close with this patch.

Add vl_msg_api_max_length(void *mp), which returns the maximum
plausible length for a binary API message.

Use it to hardern vl_api_from_api_to_new_vec(...) which takes an
additional argument - message pointer - so it can verify that
astr->length is sane. If it's not sane, return a u8 *vector of the
form "insane astr->length nnnn\0".

Verify array lengths in vl_api_dhcp6_send_client_message_t_handler(...)
and vl_api_dhcp6_pd_send_client_message_t_handler(...).

Add a fairly effective binary API fuzz hook to the unittest plugin,
and modify the "make test" framework.py to pass "api-fuzz { on|off }"
to enable API fuzzing: "make API_FUZZ=on TEST=xxx test-debug" or similar

Type: improvement

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I0157267652a163c01553d5267620f719cc6c3bde

08eb2bb2 15-Apr-2020 Dave Barach <dave@barachs.net>

pg: set vnet buffer flags in pg streams

See .../extras/pg/checksum_offload.pg for a nontrivial example, which
deliberately sets bogus ip and udp checksums in the generated packets,
then fixes the mess with (software emulated) hardware checksum

Validated via "pcap dispatch trace on max 1000 buffer-trace pg-input 100".
Packets stuffed into loop1-output have the configured bogus ip and udp
checksums. vnet_calc_checksums_inline(...) fixes the checksums, which
are correct when packets visit loop1-tx.

The packet generator is a dumb robot in this regard. If you ask for a
ridiculous flag combination - example: ip4 and ip6 - your mileage may

Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I6d9e790f373bcd9e445a89113ca8e4c8f9aa9419

db86329a 30-Jan-2020 Jakub Grajciar <jgrajcia@cisco.com>

pg: API cleanup

Use consistent API types.

Type: fix

Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Ibf693e4b178d2579bc3afb9653bffc07fbb7dd0a
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>

e053056b 07-Feb-2020 Dave Barach <dave@barachs.net>

misc: add FEATURE.yaml files

For src/vnet/classify, src/vnet/cop, src/vnet/pg, and src/vlib/unix

Type: docs

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ib6ab734608693a1e9562a44808246950616e8d36

19871f25 27-Sep-2019 Christian E. Hopps <chopps@chopps.org>

pg: don't leak open files in packet-generator

Fix pg code to close it's open file descriptors before zero'ing the
pcap_main structure for re-use.

Ticket: VPP-1780
Type: fix
Signed-off-by: Christian E. Hopps <chopps@chopps.org>
Change-Id: I32945c6476ae83b8d210ee67ac78db3e8f786f46

39d69112 27-Nov-2019 Dave Barach <dave@barachs.net>

api: multiple connections per process

Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I2272521d6e69edcd385ef684af6dd4eea5eaa953

157a4ab4 06-Dec-2019 Mohsin Kazmi <sykazmi@cisco.com>

gso: fix the tap/virtio driver for header offset

Type: fix

Change-Id: Ied34466907fa8ad44f997c600dbf481be4d22027
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

72e7312a 22-Oct-2019 Mohsin Kazmi <sykazmi@cisco.com>

gso: add protocol header parser

Type: feature

Change-Id: I7c6be2b96d19f82be237f6159944f3164ea512d0
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

3f5594d8 03-Dec-2019 Mohsin Kazmi <sykazmi@cisco.com>

gso: remove the interface count

Type: refactor

Change-Id: I51405b9d09fb6fb03d08569369fdd4e11c647908
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

87d7bac5 27-Sep-2019 Christian E. Hopps <chopps@chopps.org>

misc: add "maxframe" and "rate" to packet-generator cli.

Allow for setting the maximum number of generated packets to be included
in the frame passed to next nodes. This is very important for testing
code which may be susceptible to multi-frame vs single-frame bugs (e.g.,
code that is doing re-ordering where packets may be buffered between

- remove redundant packet "rate" option.
- reduce n_max_frame to u32 as that's what pulled from the CLI.

Type: feature
Signed-off-by: Christian E. Hopps <chopps@chopps.org>
Change-Id: Ie362bbb110b2cf01d9f65c559bbe9101e17b7fdc
Signed-off-by: Christian Hopps <chopps@labn.net>

7ca5aaac 24-Sep-2019 Damjan Marion <damarion@cisco.com>

vlib: add flag to explicitelly mark nodes which can init per-node packet trace

Type: feature

Change-Id: I913f08383ee1c24d610c3d2aac07cef402570e2c
Signed-off-by: Damjan Marion <damarion@cisco.com>

4da1506d 11-Sep-2019 Andrew Yourtchenko <ayourtch@gmail.com>

interface: use the correct condition for checking if the pcap fd is open

The 9af7e2e87e used a comparison that fd is >= 0 to check that
the pcap needs closing. While the pcap_close() function does
reset the file descriptor to -1, the freshly initialized structure
has it equal to 0.

This causes the VPP to close stdin if the packets are being seen
on pg interface without the capture file being opened.
This triggers the vpp attempting to read from STDIN
(another bug), which results in running out of memory.

Change-Id: I11d61422701500a9b3e0dd52d59383f297d57f54
Type: fix
Fixes: 9af7e2e87e
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>

9af7e2e8 27-Mar-2019 Jack Xu <jack.c.xu@ericsson.com>

fix pcap_write function

when use pcap cli to capture pcakets into two files rx01.pcap && rx02.pcap,
the first time:
1)pcap rx trace on max 100 intfc any file rx01.pcap
2)......the process of capture data to buffer......
3)pcap rx trace off

the second time:
4)pcap rx trace on max 100 intfc any file rx02.pcap
5)......the process of capture data to buffer......
6)pcap rx trace off

the pcap_write function bug in this two lines
pm->n_packets_captured = 0;
if (pm->n_packets_captured >= pm->n_packets_to_capture) referring to calling pcap_close()
will result in that the twice pcap cli both writes the packets
into rx01.pcap, but nothing into rx02.pcap. Beside, the rx02.pcap
file will not be created.

solution: separate the pcap_close() out of pcap_write()

Change-Id: Iedeb46f9cf0a4cb12449fd75a4014f95f3bb3fa8
Signed-off-by: Jack Xu <jack.c.xu@ericsson.com>

14bea1bb 29-Jul-2019 Mohsin Kazmi <sykazmi@cisco.com>

gso: fix l3 and l4 header offset in case of tagged interface

previously, PG and virtio interfaces calculate wrong l3 and l4
header offset. This patch fixes this issue.

Type: fix
Ticket: VPP-1739

Change-Id: I5ba978e464babeb65e0711e1027320d46b3b9932
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

7dfcf7f1 14-Aug-2019 Mohsin Kazmi <sykazmi@cisco.com>

gso: remove the ip checksum flag in case of ipv6

Type: fix
Ticket: VPP-1727

Change-Id: Icfee35c5ab5e1c65079d1ca7bb514162319113e5
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

e3cb1f94 29-Jul-2019 Andrew Yourtchenko <ayourtch@gmail.com>

pg: clarify the text of error message

Enabling capture on pg with the file already existing
results in a misleading error message. Fix the text.

Change-Id: I1aea49cfeda3b4bfe6ed7b18fd543948a078508a
Type: fix
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>

22e9cfd7 23-Jul-2019 Mohsin Kazmi <sykazmi@cisco.com>

pg: add GSO support

Type: feature

Change-Id: I72676495a85fbecc946aa266a75234cce70c3a5e
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>

58b2eb1a 15-Jul-2019 Andreas Schultz <andreas.schultz@travelping.com>

vlib: convert frame_index into real pointers

The fast path almost always has to deal with the real
pointers. Deriving the frame pointer from a frame_index requires a
load of the 32bit frame_index from memory, another 64bit load of the
heap base pointer and some calculations.

Lets store the full pointer instead and do a single 64bit load only.

This helps avoiding problems when the heap is grown and frames are
allocated below vm->heap_aligned_base.

Type: refactor
Change-Id: Ifa6e6e984aafe1e2755bff80f0a4dfcddee3623c
Signed-off-by: Andreas Schultz <andreas.schultz@travelping.com>
Signed-off-by: Dave Barach <dave@barachs.net>

1671d3be 26-Jun-2019 Paul Vinciguerra <pvinci@vinciconsulting.com>

pg: format_pg_input_trace - reorder fields

00:00:00:814640: pg-input
stream pcap0-sw_if_index-1, 42 bytes, 1 sw_if_index

is changed to:

00:00:00:814640: pg-input
stream pcap0-sw_if_index-1, 42 bytes, sw_if_index 1

Type: style

Change-Id: I9bb32494c9c1d08bc7588f088ed67a60ed3236dd
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>

233e4681 16-May-2019 Ole Troan <ot@cisco.com>

stats: support multiple works for error counters

The current code only allowed access to the main thread error counters.
That is not so useful for a multi worker instance.
No return a vector indexed by thread of counter_t values.

Type: fix

Change-Id: Ie322c8889c0c8175e1116e71de04a2cf453b9ed7
Signed-off-by: Ole Troan <ot@cisco.com>

9673e3e6 11-May-2019 Paul Vinciguerra <pvinci@vinciconsulting.com>

Tests: Raise exception if API cli_inband command fails.

* Configure tests to raise exception if cli_inband fails.
* Fix failing tests.
* Add filename detail to pcap.stat clib_error_return for debugging.

Note: this change identifies spurious issues with packet-generator such as:
CliFailedCommandError: packet-generator capture: pcap file
'/tmp/vpp-unittest-Test6RD-v09RPA/pg0_out.pcap' does not exist.

These issues resolve themselves on remaining test passes.

Change-Id: Iecbd09daee954d892306d11baff3864a43c5b603
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>

7d31ab2a 08-May-2019 Dave Barach <dave@barachs.net>

add mactime plugin unit / code coverage tests

The unit and code coverage tests are boring. The rest of the patch
involves test and packet-generator infra cleanups.

Teach the "make test-xxx" family of targets to set the api test plugin
path correctly, to make "binary-api <api-message-name> <args>" debug
CLI commands work correctly in the "make test"
environment. Unfortunately involves both the top-level and test

Add a minor pg cli feature, a CLI to manually set

Consider the case where one configures an interface with both a
device-input and an output feature. To test the output feature using
the pg, it's necessary to inject packets into the interface output
node with both b->sw_if_index[VLIB_TX] and b->sw_if_index[VLIB_RX] set
correctly. For example:

packet-generator new {
name tx
limit 15
size 128-128
interface local0 # rx: device input feature not configured on local0
tx-interface loop0 # tx: output node requires b->sw_if_index[VLIB_TX]
node loop0-output
data {
hex 0x01005e7ffffa000dead0000008000102030405060708090a0b0c0d0e0f0102030405

Fix a longstanding bug in the packet generator stream setup. Remove
kludges which set b->sw_if_index[VLIB_TX] to ~0 [in multiple places]
instead of using the stream value s->sw_if_index[VLIB_TX], and setting
THAT datum correctly.

Change-Id: I1097a18e8db73661ded6b822c1d718f7e5cf36ed
Signed-off-by: Dave Barach <dave@barachs.net>

8feeaff5 27-Mar-2019 Paul Vinciguerra <pvinci@vinciconsulting.com>

Typos. A bunch of typos I've been collecting.

Change-Id: I53ab8d17914e6563110354e4052109ac02bf8f3b
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>

296988d3 21-Feb-2019 Damjan Marion <damarion@cisco.com>

Add no-append flag to vlib_frame_t

Change-Id: I01c4f5755d579282773ac227b0bc24f8ddbb2bd1
Signed-off-by: Damjan Marion <damarion@cisco.com>

a052b78d 13-Feb-2019 Kingwel Xie <kingwel.xie@ericsson.com>

pg: fix payload hex-string bug

Change-Id: I0ea98bf9c203398d9cf85d22994a10217bb511d2
Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>

65cbcfe8 20-Feb-2019 Damjan Marion <damarion@cisco.com>

pg: fix tracing when device-input feature arc is used

Change-Id: I82240b43d3a5f3f33ac9ab2de106b3ec0ea31780
Signed-off-by: Damjan Marion <damarion@cisco.com>

2768cdc0 20-Feb-2019 Damjan Marion <damarion@cisco.com>

pg: fix crash when multiple streams are enqueuing to the same next

Only with debug image and when next node is not ethernet-input...

Change-Id: Iaa404b5d35d5c04996ff48cd16877858092b78d7
Signed-off-by: Damjan Marion <damarion@cisco.com>

3b77f67c 20-Feb-2019 Damjan Marion <damarion@cisco.com>

pg: remove no-recycle option

Change-Id: Ic47bde2d08b2719b5c6c87cb2e9a8af0d2160e6e
Signed-off-by: Damjan Marion <damarion@cisco.com>

8934a045 09-Feb-2019 Damjan Marion <damarion@cisco.com>

buffers: fix typo

Change-Id: I4e836244409c98739a13092ee252542a2c5fe259
Signed-off-by: Damjan Marion <damarion@cisco.com>

5de3fec5 06-Feb-2019 Damjan Marion <damarion@cisco.com>

buffers: make buffer data size configurable from startup config


buffers {
default data-size 1536

Change-Id: I5b4436850ca18025c9fdcfc7ed648c2c2732d660
Signed-off-by: Damjan Marion <damarion@cisco.com>

8eb102c2 24-Jan-2019 Kingwel Xie <kingwel.xie@ericsson.com>

pg: bugfix for pg paylod hdr-size

it was specified to 0 after https://gerrit.fd.io/r/16909
causes unformat_pg_ip4_header to wrongly set ip header len.

do more check when assigning e->lsb_bit_offset to avoid
negative value

Change-Id: Ib772c7135cdeb355f0d60f1ee11602f6b5a0ff21
Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>

4222347a 20-Jan-2019 Kingwel Xie <kingwel.xie@ericsson.com>

pg: cli improvement

1. show packet-generator verbose, display all edit-groups and hdr-size
2. unformat_pg_payload, always mark payload hdr-size as 0
3. packet-generator now can change rate/limit/size at runtime
4. validate_stream checks buffer min-size/max-size against all edit
groups' header size
5. remove incorrect max packet size limit check in validate_stream(...)

Change-Id: Ic45e4f2b98bc0fd7330e0b480dd677fa3c69a677
Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>
Signed-off-by: Dave Barach <dave@barachs.net>

64d557cd 18-Jan-2019 Damjan Marion <damarion@cisco.com>

Add vlib_buffer_copy_indices inline function

This reverts commit 1e59f9ddbdda14591967e1d66eab8623f9ba58e4.

Change-Id: Iae1d372b887e170d28cac2fe4c61325ee5a5894a
Signed-off-by: Damjan Marion <damarion@cisco.com>

3c8e1468 05-Jan-2019 Dave Barach <dave@barachs.net>

pktgen: support mixed multi/single chunk pcap replay

Change-Id: I3d387b5e2b17f89ed688ea6cfee3fb6d782fe326
Signed-off-by: Dave Barach <dave@barachs.net>

671e60e6 30-Dec-2018 Damjan Marion <damarion@cisco.com>

buffers: remove unused code

Change-Id: If2bbfbc52994f5de0879763e0b7a7864498debb6
Signed-off-by: Damjan Marion <damarion@cisco.com>

650223c0 14-Nov-2018 Damjan Marion <damarion@cisco.com>

ethernet-input optimizations

Change-Id: I4ec7750ef58363bd8966a16a2baeec6db18b7e9e
Signed-off-by: Damjan Marion <damarion@cisco.com>

3ae2873e 16-Nov-2018 Dave Barach <dave@barachs.net>

pcap-based dispatch tracer

To facilitate dispatch trajectory tracing, vlib_buffer_t decoding, etc.
through Wireshark

Change-Id: I31356b9fa1f40cba8830aaf10a86a9fbb7546438
Signed-off-by: Dave Barach <dave@barachs.net>

178cf493 13-Nov-2018 Dave Barach <dave@barachs.net>

Remove c-11 memcpy checks from perf-critical code

Change-Id: Id4f37f5d4a03160572954a416efa1ef9b3d79ad1
Signed-off-by: Dave Barach <dave@barachs.net>

a3d5986a 10-Nov-2018 Damjan Marion <dmarion@me.com>

vlib rename vlib_frame_args(...) to vlib_frame_scalar_args(..)

Typically we have scalar_size == 0, so it doesn't matter
but vlib_frame_args was providing pointer to scalar frame
data, not vector data. To avoid future confusion function
is renamed to vlib_frame_scalar_args(...)

Change-Id: I48b75523b46d487feea24f3f3cb10c528dde516f
Signed-off-by: Damjan Marion <damarion@cisco.com>

49cd3bad 27-Oct-2018 Kingwel Xie <kingwel.xie@ericsson.com>

pg: incrementing len should be truncated by

This length is the payload length, and will impact the ip length
when ip length is not specified. iplen = header_len + payload_len
SO, better to make it comply with max_packet_bytes

Change-Id: I8b0f7485e29fcaccae656f2d03b3b5e614300fb8
Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>

b7b92993 17-Oct-2018 Dave Barach <dave@barachs.net>

c11 safe string handling support

Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab
Signed-off-by: Dave Barach <dave@barachs.net>

2f6d7bb9 03-Oct-2018 Sirshak Das <sirshak.das@arm.com>

vppinfra: add atomic macros for __sync builtins

This is first part of addition of atomic macros with only macros for
__sync builtins.

- Based on earlier patch by Damjan (https://gerrit.fd.io/r/#/c/10729/)
- clib_atomic_release macro added and used in the absence
of any memory barrier.
- clib_atomic_bool_cmp_and_swap added

Change-Id: Ie4e48c1e184a652018d1d0d87c4be80ddd180a3b
Original-patch-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Sirshak Das <sirshak.das@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>

4d56e059 19-Jul-2018 Damjan Marion <damarion@cisco.com>

Cleanup of handoff code

- removed handoff-dispatch node
- removed some unused buffer metadata fields
- enqueue to thread logic moved to inline function

Change-Id: I7361e1d88f8cce74cd4fcec90d172eade1855cbd
Signed-off-by: Damjan Marion <damarion@cisco.com>

78c56890 16-May-2018 Dave Barach <dave@barachs.net>

Packet generator: preserve pcap file timestamps

Set vnet_buffer2(b0)->pg_replay_timestamp, for use when desired.

Fix a memory leak in pg_stream_free(...), which wasn't freeing the
replay packet templates.

Change-Id: I01822a9e91a52de4774d2b95cf0c2ee254a915e9
Signed-off-by: Dave Barach <dave@barachs.net>

aa682a39 26-Apr-2018 Damjan Marion <damarion@cisco.com>

A bit of buffer metadata reshuffling to accommodate flow_id

Change-Id: I2794384557c6272fe217269b14a9db09eda19220
Signed-off-by: Damjan Marion <damarion@cisco.com>

ef2e5845 07-Mar-2018 Damjan Marion <damarion@cisco.com>

packet-generator: use default free list

Change-Id: I2a34546f9b32edc9bfb86b5492dde34aaef49ccc
Signed-off-by: Damjan Marion <damarion@cisco.com>

dac03527 01-Feb-2018 Damjan Marion <damarion@cisco.com>

Refactor vlib_buffer flags

Change-Id: I853386aebfe488ebb10328435b81b6e3403c5dd0
Signed-off-by: Damjan Marion <damarion@cisco.com>

9d420871 12-Oct-2017 Ole Troan <ot@cisco.com>

VPPAPIGEN: vppapigen replacement in Python PLY.

This is a version of the VPP API generator in Python PLY. It supports
the existing language, and has a plugin architecture for generators.
Currently C and JSON are supported.

- vl_api_version to option version = "major.minor.patch"
- enum support
- Added error checking and reporting
- import support (removed the C pre-processor)
- services (tying request/reply together)

option version = "1.0.0";

enum colours {
BLUE = 50,
define foo {
vl_api_colours_t colours;

service {
rpc foo returns foo_reply;
rpc foo_dump returns stream foo_details;
rpc want_stats returns want_stats_reply
events ip4_counters, ip6_counters;

Future planned features:
- unions
- bool, text
- array support (including length)
- proto3 output plugin
- Refactor C/C++ generator as a plugin
- Refactor Java generator as a plugin

Change-Id: Ifa289966c790e1b1a8e2938a91e69331e3a58bdf
Signed-off-by: Ole Troan <ot@cisco.com>

bd846cdc 21-Nov-2017 Damjan Marion <damarion@cisco.com>

dpdk: add l2_hdr_offset and l3_hdr_offset in vlib_buffer_t

Change-Id: I0a6d1257e391c3b6f7da6498bd5f7d4c545d17e9
Signed-off-by: Damjan Marion <damarion@cisco.com>

b8d4481a 10-Nov-2017 Neale Ranns <neale.ranns@cisco.com>

Break up vpe.api

- makes the VAPI generated file more consumable.
- VOM build times improve.

Change-Id: I838488930bd23a0d3818adfdffdbca3eead382df
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>

d3c008d1 02-Oct-2017 Christophe Fontaine <christophe.fontaine@enea.com>

[aarch64] Fixes CLI crashes on dpaa2 platform.

- always use 'va_args' as pointer in all format_* functions
- u32 for all 'indent' params as it's declaration was inconsistent

Change-Id: Ic5799309a6b104c9b50fec309cba789c8da99e79
Signed-off-by: Christophe Fontaine <christophe.fontaine@enea.com>

04a7f05e 10-Jul-2017 Damjan Marion <damarion@cisco.com>

vlib: store buffer memory information in the buffer_main

Currently, buffer index is calculated as a offset to the physmem
region shifted by log2_cacheline size.

When DPDK is used we "hack" physmem data with information taken from
dpdk mempool. This makes physmem code not usable with DPDK.

This change makes buffer memory start and size independent of physmem
basically allowing physmem to be used when DPDK plugin is loaded.

Change-Id: Ieb399d398f147583b9baab467152a352d58c9c31
Signed-off-by: Damjan Marion <damarion@cisco.com>

586afd76 05-Apr-2017 Damjan Marion <damarion@cisco.com>

Use thread local storage for thread index

This patch deprecates stack-based thread identification,
Also removes requirement that thread stacks are adjacent.

Finally, possibly annoying for some folks, it renames
all occurences of cpu_index and cpu_number with thread
index. Using word "cpu" is misleading here as thread can
be migrated ti different CPU, and also it is not related
to linux cpu index.

Change-Id: I68cdaf661e701d2336fc953dcb9978d10a70f7c1
Signed-off-by: Damjan Marion <damarion@cisco.com>

180279b9 16-Mar-2017 Neale Ranns <nranns@cisco.com>

Fix IP feature ordering.

Drop comes before lookup when enabled. is_first_or_last is not required when setting a feature, the anchor is added in find_config_with_features().
Don't make the PG interfaces automatically L3 enabled, this way we can have tests that check the L3 protocol disbaled behaviour.

Change-Id: Icef22a920b27ff9cec6ab2da6b05f05c532cb60f
Signed-off-by: Neale Ranns <nranns@cisco.com>

3466c302 16-Feb-2017 Neale Ranns <nranns@cisco.com>

DHCP Multiple Servers (VPP-602, VPP-605)

Multiple DHCP (4 and/or 6) servers can be added and removed through multiple calls to the 'set dhcp server' API.
All 4/6/ discover/solicit messages will then be replicated to all servers in the list. The expectation is that the servers/system is configured in such a way that this is viable.
If VSS information is providied for the clinet VRF which also has multiple servers configured, then the same VSS information is sent to each server. Likewise the source address of packets sent to from VPP to each server is the same.

Change-Id: I3287cb084c84b3f612b78bc69cfcb5b9c1f8934d
Signed-off-by: Neale Ranns <nranns@cisco.com>

c3a814be 28-Feb-2017 Damjan Marion <damarion@cisco.com>

dpdk: be a plugin

Change-Id: I238258cdeb77035adc5e88903d824593d0a1da90
Signed-off-by: Damjan Marion <damarion@cisco.com>

a9a20e7f 15-Feb-2017 Billy McFall <bmcfall@redhat.com>

VPP-635: CLI Memory leak with invalid parameter

In the CLI parsing, below is a common pattern:
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
return 0;

while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
if (unformat (line_input, "x"))
x = 1;
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, line_input);
unformat_free (line_input);

The 'else' returns if an unknown string is encountered. There a memory
leak because the 'unformat_free(line_input)' is not called. There is a
large number of instances of this pattern.

Replaced the previous pattern with:
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
return 0;

while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
if (unformat (line_input, "x"))
x = 1;
error = clib_error_return (0, "unknown input `%U'",
format_unformat_error, line_input);
goto done:

/* ...Remaining code... */

unformat_free (line_input);
return error;

In multiple files, 'unformat_free (line_input);' was never called, so
there was a memory leak whether an invalid string was entered or not.

Also, there were multiple instance where:
error = clib_error_return (0, "unknown input `%U'",
format_unformat_error, line_input);
used 'input' as the last parameter instead of 'line_input'. The result
is that output did not contain the substring in error, instead just an
empty string. Fixed all of those as well.

There are a lot of file, and very mind numbing work, so tried to keep
it to a pattern to avoid mistakes.

Change-Id: I8902f0c32a47dd7fb3bb3471a89818571702f1d2
Signed-off-by: Billy McFall <bmcfall@redhat.com>
Signed-off-by: Dave Barach <dave@barachs.net>

bfe4dfa7 03-Feb-2017 Damjan Marion <damarion@cisco.com>

pg: add trace information for pg tx node

Change-Id: I31730d58c34331f25f5b02cd065be94251f1302c
Signed-off-by: Damjan Marion <damarion@cisco.com>

7cd468a3 19-Dec-2016 Damjan Marion <damarion@cisco.com>

Reorganize source tree to use single autotools instance

Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23
Signed-off-by: Damjan Marion <damarion@cisco.com>