vpp.git
4 years agonat: use SVR 63/23963/8
Klement Sekera [Thu, 10 Oct 2019 09:46:06 +0000 (09:46 +0000)]
nat: use SVR

Remove NAT's implementation of shallow virtual reassembly with
corresponding CLIs, APIs & tests. Replace with standalone shallow
virtual reassembly provided by ipX-sv-reass* nodes.

Type: refactor
Change-Id: I7e6c7487a5a500d591f6871474a359e0993e59b6
Signed-off-by: Klement Sekera <ksekera@cisco.com>
4 years agoabf: add feature.yaml 64/24164/4
Neale Ranns [Thu, 2 Jan 2020 23:34:33 +0000 (23:34 +0000)]
abf: add feature.yaml

Type: docs

Change-Id: I4959010617b0fb51652beafe6967afd556f27e92
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agotls: add features.yaml 62/24162/5
Florin Coras [Thu, 2 Jan 2020 23:28:14 +0000 (23:28 +0000)]
tls: add features.yaml

Type: docs

Signed-off-by: Florin Coras <fcoras@cisco.com>
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Change-Id: I847463fd38b9d569d2607b8a17f6d45a04b6fe09

4 years agotcp: add FEATURE.yaml 61/24161/8
Florin Coras [Thu, 2 Jan 2020 22:11:41 +0000 (22:11 +0000)]
tcp: add FEATURE.yaml

Type: feature

Signed-off-by: Florin Coras <fcoras@cisco.com>
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Change-Id: I21f822b597bfa44004bf2afaaf54463cb0ae2efc

4 years agofib: add adjacency feature.yaml 69/24169/5
Neale Ranns [Fri, 3 Jan 2020 00:16:12 +0000 (00:16 +0000)]
fib: add adjacency feature.yaml

Type: docs

Change-Id: I6cdfbae5a0eab8a69dfa2ae054945c510a3c63f6
Signed-off-by: Neale Ranns <nranns@cisco.com>
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agobier: add FEATURE.yaml 74/24174/2
Neale Ranns [Fri, 3 Jan 2020 03:36:40 +0000 (03:36 +0000)]
bier: add FEATURE.yaml

Type: docs

Change-Id: I843a410b7a14c7c61e44ea38cf7cb74f40ccf853
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agoarp: add FEATURE.yaml 73/24173/2
Neale Ranns [Fri, 3 Jan 2020 03:03:33 +0000 (03:03 +0000)]
arp: add FEATURE.yaml

Type: docs

Change-Id: If03488de772204a984e1785c33646833f2de6e1e
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agoigmp: Add feature.yaml 65/24165/2
Neale Ranns [Thu, 2 Jan 2020 23:36:52 +0000 (23:36 +0000)]
igmp: Add feature.yaml

Type: docs

Change-Id: I8d6ab1b4fd9f059a3f4c8ba28fc9f20debfb65cb
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agol3xc: add feature.yaml 66/24166/2
Neale Ranns [Thu, 2 Jan 2020 23:46:10 +0000 (23:46 +0000)]
l3xc: add feature.yaml

Type: docs

Change-Id: I0d939b26079e9e45fba1cbb7c8e668918c128526
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agoudp: add features.yaml 68/24168/2
Florin Coras [Thu, 2 Jan 2020 23:53:22 +0000 (23:53 +0000)]
udp: add features.yaml

Type: docs

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I2a7d509a2aaed6dba7d821b469c6de90d487f068

4 years agonat: add feature.yaml 60/24160/4
Ole Troan [Thu, 2 Jan 2020 21:32:57 +0000 (22:32 +0100)]
nat: add feature.yaml

And add support for multiple maintainers in JSON schema.

Type: docs
Change-Id: Ice430927ceecf53526a3fdf46c075a95206bf0ac
Signed-off-by: Ole Troan <ot@cisco.com>
4 years agosession: add feature.yaml 70/24170/2
Florin Coras [Fri, 3 Jan 2020 00:23:13 +0000 (00:23 +0000)]
session: add feature.yaml

Type: docs

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: If9065b03c0cd7d567c54eda383d6297ef554d9f0

4 years agovcl: add feature.yaml 71/24171/2
Florin Coras [Fri, 3 Jan 2020 00:57:33 +0000 (00:57 +0000)]
vcl: add feature.yaml

Type: docs

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ifda0404cfc6710d7ecf21da96eb1cb92750b495f

4 years agolisp: add feature.yaml 72/24172/3
Florin Coras [Fri, 3 Jan 2020 01:25:30 +0000 (01:25 +0000)]
lisp: add feature.yaml

Type: docs

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Iba2203e98c627d550021beee2ec1cfe3cb02686f

4 years agosvs: add feature.yaml 67/24167/2
Neale Ranns [Thu, 2 Jan 2020 23:52:30 +0000 (23:52 +0000)]
svs: add feature.yaml

Type: docs

Change-Id: Ie75368f64201f2f6623413bc2ba015d9dc8fbc9f
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agocrypto-ipsecmb: Add FEATURE.yaml for all crypto engine plugins 63/24163/1
Neale Ranns [Thu, 2 Jan 2020 23:25:05 +0000 (23:25 +0000)]
crypto-ipsecmb: Add FEATURE.yaml for all crypto engine plugins

Type: docs

Change-Id: Ia00e3167e954271c9eb7618792fd86df288d5c19
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agohttp_static: add FEATURE.yaml 57/24157/2
Dave Barach [Thu, 2 Jan 2020 15:26:40 +0000 (10:26 -0500)]
http_static: add FEATURE.yaml

Type: docs

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

4 years agosession: fix listener global endpoint lookup 46/24146/4
Florin Coras [Tue, 31 Dec 2019 05:53:19 +0000 (21:53 -0800)]
session: fix listener global endpoint lookup

Type: fix

Ensure listeners for app transport protocols are added to lookup tables
using their session endpoints instead of their transport connections,
which can override the network connection id in the transport connection.

Change-Id: I56fa3666bb1422c0799fc7143cd099751ff6e2e6
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agotests: configure 32 mb physmem 27/24127/2
Dave Barach [Wed, 25 Dec 2019 14:24:58 +0000 (09:24 -0500)]
tests: configure 32 mb physmem

Absolutely nothing good happens when we force the kernel to briefly
map and then unmap 16gb as vpp starts. Effect exacerbated when
TEST_JOBS = 20...40, and so forth.

Type: test

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

4 years agovirtio: fix checksum offload support 43/23643/4
Benoît Ganne [Tue, 26 Nov 2019 16:59:41 +0000 (17:59 +0100)]
virtio: fix checksum offload support

Checksum offload and GSO are independent. We must support checksum
offload if it has been negotiated, independently of GSO.

Ticket: VPPSUPP-47
Type: fix

Change-Id: I8cb6dd58b61714ebb2726eb4aab0d74d49fdab99
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agogso: fix number of buffers required for segmentation 25/24125/3
Mohsin Kazmi [Tue, 24 Dec 2019 23:12:52 +0000 (00:12 +0100)]
gso: fix number of buffers required for segmentation

Type: fix

Change-Id: I73ef0ce81b2d6a799f6a6e59908ec24cc2290a2c
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
4 years agotests: bfd - move test_poll_response to EXTENDED_TESTS 54/23854/2
Paul Vinciguerra [Fri, 6 Dec 2019 16:06:02 +0000 (11:06 -0500)]
tests: bfd - move test_poll_response to EXTENDED_TESTS

  test_bfd.BFD4TestCase.test_poll_response providing
  inconsistent results is the per-patch tests.

Type: test

Change-Id: I8f1864511526fd330a7da1abfa19be3f565c683a
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agoip: indent format typo fix 47/24147/1
Neale Ranns [Wed, 1 Jan 2020 21:55:41 +0000 (21:55 +0000)]
ip: indent format typo fix

Type: style

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

4 years agoip-neighbor: set link-type ARP on incomplete adjacencies 44/24144/1
Neale Ranns [Tue, 31 Dec 2019 03:49:34 +0000 (03:49 +0000)]
ip-neighbor: set link-type ARP on incomplete adjacencies

Type: fix

Change-Id: I05d74da311d6a86ec4eb3df50d53ecaa9c622f50
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agosvm: broadcast on raw dequeues and full rings 40/24140/5
Florin Coras [Fri, 27 Dec 2019 18:26:56 +0000 (10:26 -0800)]
svm: broadcast on raw dequeues and full rings

Type: fix

Change-Id: I0cac9001290e7ed4e2e318ae62c56e97ec75a3db
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agovcl: hold errno when calling LDBG 42/24142/2
hanlin [Mon, 30 Dec 2019 08:25:20 +0000 (16:25 +0800)]
vcl: hold errno when calling LDBG

Type: fix

Call trace of LDBG:
LDBG->clib_warning->_clib_error->dispatch_message->os_puts->writev
However, writev will hijacked by LDP, and then execute following code:
if ((errno = -ldp_init ()))
    return -1;
Now, errno will be set.

Because we always call LDBG just before return from ldp_accept4, listen,
and etc. So errno will be overwritted after LDBG called.

Signed-off-by: hanlin <hanlin_wang@163.com>
Change-Id: I7a90f3a14772994f11f09650481411796e3f5630

4 years agotcp: validate port reuse 39/24139/1
Florin Coras [Fri, 27 Dec 2019 17:27:52 +0000 (09:27 -0800)]
tcp: validate port reuse

Type: fix

Make sure existing connection is in time-wait

Change-Id: I8e8bef151f81bcd589b4da0d4bf63cc59f9f451b
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agotcp: Enable TCP timewait port use 34/24134/3
Yu Ping [Thu, 26 Dec 2019 20:04:33 +0000 (04:04 +0800)]
tcp: Enable TCP timewait port use

Improve host stack CPS test, and it help improve 10x performance

Type: feature

Change-Id: I6af61e0bad7c16ee2d30a1422cc46bb89f1cedb4
Signed-off-by: Yu Ping <ping.yu@intel.com>
Signed-off-by: Yuwei Zhang <yuwei1.zhang@intel.com>
4 years agotests: test_mpls_v6_ebgp_pic - don't write to stdout 36/24136/1
Paul Vinciguerra [Fri, 27 Dec 2019 05:17:01 +0000 (00:17 -0500)]
tests: test_mpls_v6_ebgp_pic - don't write to stdout

Type: test

Change-Id: I2cccc68b1b4b6c576580ae0eb5d4511ca2f4663d
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agovcl: EPOLLOUT should be generated when epoll_ctl called with EPOLLOUT 29/24129/3
hanlin [Thu, 26 Dec 2019 03:44:28 +0000 (11:44 +0800)]
vcl: EPOLLOUT should be generated when epoll_ctl called with EPOLLOUT
event

Type: fix

When we call epoll_ctl to add or mod fd with EPOLLOUT event, mostly to
check if we can write. So we expect a EPOLLOUT event should be generated
immediately unless tx queue is full.

Signed-off-by: hanlin <hanlin_wang@163.com>
Change-Id: Ie99986a44dbb07b6ff2fba6512171056f79e77bd

4 years agotests: tls - don't print skip info to stdout 33/24133/1
Paul Vinciguerra [Fri, 27 Dec 2019 00:13:02 +0000 (19:13 -0500)]
tests: tls - don't print skip info to stdout

Type: test

Change-Id: Id1bffbfe698113d85c4c6bf432ddf4908ed2b788
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agoclassify: "classify filter ..." debug CLI cleanup 23/24123/3
Dave Barach [Tue, 24 Dec 2019 21:59:38 +0000 (16:59 -0500)]
classify: "classify filter ..." debug CLI cleanup

The pcap trace filter initial table index lives in
cm->filter_set_by_sw_if_index [0], which corresponds to the "local0"
interface. Debug cli makes sure that folks don't accidentally specify
the "local0" interface. At least it does now...

Fix the "vlib format.c code coverage" test in test/test_vlib.py.

Type: fix
Change-Id: I35320bc2c8f0c6f1f8c12e3529d1938548185151
Signed-off-by: Dave Barach <dave@barachs.net>
4 years agounittest: test_bihash call clib_time_init(...) 22/24122/1
Dave Barach [Tue, 24 Dec 2019 20:25:37 +0000 (15:25 -0500)]
unittest: test_bihash call clib_time_init(...)

Fix "Rejecting large frequency change of +infinity" errors.

Type: test

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

4 years agotests: fix skip logic on test_tap 24/24024/3
Paul Vinciguerra [Mon, 16 Dec 2019 23:24:24 +0000 (18:24 -0500)]
tests: fix skip logic on test_tap

log.txt message:
17:52:59,969 API call failed, expected 0 return value instead of -13 in tap_create_v2_reply(_0=58, context=77019, retval=-13, sw_if_index=4294967295)

Test was failing with log message:
  tap: tap0: tap_create_if: ioctl(TUNSETIFF): Operation not permitted

Type: test
Change-Id: I5bcd9d2b0c870ea5eef92b79314b97821399722f
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agoip-neighbor: ip_neighbor_advertise() handles null 20/24120/1
Matthew Smith [Mon, 23 Dec 2019 22:25:11 +0000 (16:25 -0600)]
ip-neighbor: ip_neighbor_advertise() handles null

Type: fix
Fixes: cbe25aab3b

ip_neighbor_advertise() was calling one of both of
ip4_neighbor_advertise() and/or ip6_neighbor_advertise() with
&addr->{ip4|ip6} as an argument. If addr is null, which is likely
a requirement when the type is IP46_TYPE_BOTH, this results in a
SEGV.

Check addr and pass a pointer to one of it's members if it is not
null, otherwise pass null.

Change-Id: I6261bb8fe947365fe3d6c58788ea27d5cb28ff05
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
4 years agoipsec: Test and fix IPSec worker hand-off 13/24113/2
Neale Ranns [Mon, 23 Dec 2019 04:10:25 +0000 (04:10 +0000)]
ipsec: Test and fix IPSec worker hand-off

Type: fix

Change-Id: I5cb9a3845ddbc5f4de4eb4e9c481f606fe5cec9a
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agotcp: accept sack reneging as a cc event 08/24108/2
Florin Coras [Sun, 22 Dec 2019 17:20:26 +0000 (09:20 -0800)]
tcp: accept sack reneging as a cc event

Type: fix

Change-Id: Iead1303ca3dec7593eb3ce54f291b82d94c821a4
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agovcl: fix multi-thread app segment attaching 09/24109/2
Florin Coras [Sun, 22 Dec 2019 20:48:05 +0000 (12:48 -0800)]
vcl: fix multi-thread app segment attaching

Type: fix

Guard segment attaching/deletion, not only the hash table CRD
operations.

Change-Id: Ic96e4adedffb73baf89e971438596927e6daf930
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agotests: vpp_memif fix formatting error in exception 61/23861/4
Paul Vinciguerra [Sat, 7 Dec 2019 02:40:38 +0000 (21:40 -0500)]
tests: vpp_memif fix formatting error in exception

Type: test

Change-Id: I2d32797efd1c3478a862b7950ef9ab63428da890
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agotests: TestL2bdMultiInst - break serial dependency on tests 29/24029/5
Paul Vinciguerra [Tue, 17 Dec 2019 01:56:00 +0000 (20:56 -0500)]
tests: TestL2bdMultiInst - break serial dependency on tests

enable the tests to run out of order/enable running an individual test.
  Before:
  [gw1] [ 20%] FAILED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_02
  [gw0] [ 40%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_01
  [gw1] [ 60%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_04
  [gw0] [ 80%] FAILED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_03
  [gw1] [100%] SKIPPED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_05
  -------
  After:
  [gw1] [ 20%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_02
  [gw0] [ 40%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_01
  [gw1] [ 60%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_04
  [gw0] [ 80%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_03
  [gw1] [100%] PASSED test/test_l2bd_multi_instance.py::TestL2bdMultiInst::test_l2bd_inst_05

Type: test

Change-Id: Ie40eb310f5fccacf854c364aa017891bce9b9372
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agofib: use 32 bits per-source reference counter 94/24094/3
Miklos Tirpak [Fri, 20 Dec 2019 10:55:43 +0000 (11:55 +0100)]
fib: use 32 bits per-source reference counter

The 16 bits reference counter limited the number of interfaces
per FIB table to 65K from a given source. Some use cases, for example
GTP-U tunnels require much more interfaces than that.
This change increases the size of the reference counter to 32 bits.

Type: fix

Signed-off-by: Miklos Tirpak <miklos.tirpak@gmail.com>
Change-Id: I944a98513018840f904f2808c2a1e963b37886cc

4 years agoip-neighbor: fix API initialization call 02/24102/2
Matthew Smith [Fri, 20 Dec 2019 18:39:41 +0000 (12:39 -0600)]
ip-neighbor: fix API initialization call

Type: fix
Fixes: cbe25aab3b

Wrap ip_neighbor_api_init() in VLIB_API_INIT_FUNCTION() macro
instead of VLIB_INIT_FUNCTION() so API message IDs get allocated.

Change-Id: Id0c36c16b982feb9d7442015f9ddf2449a9e5b60
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
4 years agosession: move add/del segment msg to mq 97/21497/20
Florin Coras [Sun, 25 Aug 2019 01:17:34 +0000 (18:17 -0700)]
session: move add/del segment msg to mq

Type: refactor

Change-Id: I32234173ebd69f80acb1afa4039fffbd19157f6d
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agosvm: fix multichunk alloc with not enough space 04/24104/1
Florin Coras [Sat, 21 Dec 2019 02:48:20 +0000 (18:48 -0800)]
svm: fix multichunk alloc with not enough space

Type: fix

Change-Id: Ia89c76b0e897fc3a3ebbc8dcba25e8ac9974b7fa
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agovxlan: reuse inner packet flow hash for tunnel outer header load balance 49/24049/6
Shawn Ji [Wed, 18 Dec 2019 02:10:54 +0000 (10:10 +0800)]
vxlan: reuse inner packet flow hash for tunnel outer header load balance

Type: fix

Several tunnels encapsulation use udp as outer header and udp src port
is set by inner header flow hash, such as gtpu, geneve, vxlan, vxlan-gbd
Since flow hash of inner header is already been calculated, keeping it
to vnet_buffere[b]->ip.flow_hash should save load-balance node work to
select ECMP uplinks.

Change-Id: I0e4e2b27178f4fcc5785e221d6d1f3e8747d0d59
Signed-off-by: Shawn Ji <xiaji@tethrnet.com>
4 years agosvm: fix sh ssvm size for private segments 81/24081/4
Florin Coras [Thu, 19 Dec 2019 18:13:15 +0000 (10:13 -0800)]
svm: fix sh ssvm size for private segments

Type: fix

Change-Id: Id11cb596923541c12d37f1afa00416d73c6ff5e3
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agotests: don't prompt to launch gdb for sanity test case 84/24084/2
Paul Vinciguerra [Thu, 19 Dec 2019 21:09:43 +0000 (16:09 -0500)]
tests: don't prompt to launch gdb for sanity test case

Type: test

Change-Id: I4c54121b76b341381a819cee928c3c2455a83503
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agohsa: Add periodic timing 68/24068/3
Nathan Skrzypczak [Thu, 19 Dec 2019 10:54:10 +0000 (11:54 +0100)]
hsa: Add periodic timing

Type: feature

Change-Id: I18cf38d6f77e0d42212c85262f3bb769b9477b29
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
4 years agointerface: Prevent bad inner-dot1q any exact-match configuration 77/24077/3
Jon Loeliger [Thu, 19 Dec 2019 15:03:52 +0000 (09:03 -0600)]
interface: Prevent bad inner-dot1q any exact-match configuration

Someone much more knowledgeable than I wrote:

    For L3 IP forwarding, any VLAN tags on a packet must be exact
    match to a sub-interface which means both outer and inner VLAN
    tag IDs must be exact-matched to specific values defined of that
    sub-interface.  Without exact match on a L3 sub-interface, VPP
    has no mechanism to know what VLAN tags to use for packet output,
    such as ARP request packets or IP packets, on that sub-interface.

    Thus, sub-interface with "inner-dot1q any" is not an exact match
    sub-interface by definition since no match is present on inner
    tag.

While in the area, fix a memory leak that would ensue on poorly
configured interfaces.

Change-Id: I8d17a96dbca3e3724c297ecc935ca61764e6ce2e
Type: fix
Signed-off-by: Jon Loeliger <jdl@netgate.com>
4 years agobash: add -j <jobs> option to vpp-make-test 64/24064/4
Dave Wallace [Wed, 18 Dec 2019 19:06:31 +0000 (14:06 -0500)]
bash: add -j <jobs> option to vpp-make-test

- Also cleanup local var declarations
- remove extraneous export statement

Type: test

Change-Id: I22198a65d1785ba53d1de22b2aa498cab910701b
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
4 years agogtpu: Track the dst FIB entry instead of RR sourcing that 70/24070/2
Miklos Tirpak [Thu, 19 Dec 2019 11:06:20 +0000 (12:06 +0100)]
gtpu: Track the dst FIB entry instead of RR sourcing that

RR sourcing the destination FIB entry limits the number of tunnels
to 255 for a particular destination. This change removes this limit.

Type: fix

The patch is based on 1f50bf8fc57ebf78f9056185a342493be460a847
that introduced the FIB entry tracking but did not update
the gtpu plugin.

Signed-off-by: Miklos Tirpak <miklos.tirpak@gmail.com>
Change-Id: I8a4a87382a6eb5120e2bb65b9bc3c446bbfdbd3b

4 years agosession: reserve memory for rbtree 65/24065/5
Florin Coras [Wed, 18 Dec 2019 21:06:41 +0000 (13:06 -0800)]
session: reserve memory for rbtree

Type: fix

Change-Id: I2b89f6e4c09297e3712d88cd25c80a806d3005aa
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agopapi: lazily initialize stats client 03/23703/5
Paul Vinciguerra [Fri, 29 Nov 2019 22:41:20 +0000 (17:41 -0500)]
papi: lazily initialize stats client

  remove wait-loop on stats socket from test framework.

Type: refactor

Change-Id: I5bb95a7c597707a87f9d9a471215c4b4af1a2280
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agogre: multipoint ingress lookup fix 42/24042/3
Neale Ranns [Tue, 17 Dec 2019 20:15:03 +0000 (20:15 +0000)]
gre: multipoint ingress lookup fix

Type: fix

Change-Id: I170edd62220a63cb19efea3032e173fb87730b1b
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agoquic: fix accept failure 67/24067/2
Nathan Skrzypczak [Thu, 19 Dec 2019 09:22:06 +0000 (10:22 +0100)]
quic: fix accept failure

Type: fix

Change-Id: Ic85cedae268a3abc452a2b1d4cc6672a464e2d2c
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
4 years agobuild tests: fail test run if we can't patch scapy 39/24039/5
Paul Vinciguerra [Tue, 17 Dec 2019 22:29:34 +0000 (17:29 -0500)]
build tests: fail test run if we can't patch scapy

Type: fix

Change-Id: I694e44f449863b3edbbc8b6095e94f770dc20330
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agodocs: add physmem section in configuration parameters 83/23083/7
Jieqiang Wang [Tue, 22 Oct 2019 12:09:16 +0000 (20:09 +0800)]
docs: add physmem section in configuration parameters

physmem section is listed in 'Advanced Parameters', which has two
parameters, base-addr and max-size, for pmalloc module in VPP.

Type:feature

Change-Id: I7beef40603b864e4c8f3cf0fa716de74036cfdcc
Signed-off-by: Jieqiang Wang <jieqiang.wang@arm.com>
4 years agotests: fix cdp patch for scapy 2.4.3 40/24040/4
Paul Vinciguerra [Tue, 17 Dec 2019 22:53:44 +0000 (17:53 -0500)]
tests: fix cdp patch for scapy 2.4.3

Type: test
Fixes: 5d4b8912d2fe186b4fb920a72b3a2f7b556f4e7d

Change-Id: Ib64ae00eba41b2b6afc728142cbccc02d07f4997
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agodocs: update troubleshooting commands 24/23324/5
Paul Vinciguerra [Thu, 7 Nov 2019 20:38:59 +0000 (15:38 -0500)]
docs: update troubleshooting commands

Depends-On: https://gerrit.fd.io/r/c/vpp/+/22819

Type: docs

Change-Id: I1e2170a524e19cb91836a8073f62100b88f46cee
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agoquic: Hotfix crypto context on migrate 48/24048/2
Nathan Skrzypczak [Wed, 18 Dec 2019 12:37:45 +0000 (13:37 +0100)]
quic: Hotfix crypto context on migrate

Type: fix

quicly_connections have internal references to crypto
contexts which need to be updated when we switch thread
as the supporting pools are thread-based.
This under the assumption that the new contexts will be
exactly identical

Change-Id: I38083e59657ff068e347d9e7b47abe91a1167b6c
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
4 years agosvm: decrease svm map verbosity 43/24043/2
Florin Coras [Wed, 18 Dec 2019 03:46:45 +0000 (19:46 -0800)]
svm: decrease svm map verbosity

Type: fix

Change-Id: I833b6c23c376f1e806f94f0780be365c82ad1f88
Signed-off-by: Florin Coras <fcoras@cisco.com>
4 years agoipsec: Fix decap of IPSEC/GRE in transport mode 44/24044/1
Neale Ranns [Wed, 18 Dec 2019 05:54:40 +0000 (05:54 +0000)]
ipsec: Fix decap of IPSEC/GRE in transport mode

Type: fix

in transport mode the header sequence is:
  MAC - IP (tun) - ESP - GRE - L2
so popping the GRE header is done in the ESP decrypt node.

Change-Id: Ia125eb65b9300368617d2bffca09683851e43be0
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agotests: fix import from change to scapy 2.4.3 41/24041/3
Paul Vinciguerra [Tue, 17 Dec 2019 23:02:54 +0000 (18:02 -0500)]
tests: fix import from change to scapy 2.4.3

Type: test
Fixes: 8d27fa73f22803d518993090804724f76350cfcc

Change-Id: I4656a9769011ed2399c1799f6f17520e44f375c7
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agosrv6-mobile 99/23899/8
Tetsuya Murakami [Tue, 10 Dec 2019 08:18:47 +0000 (00:18 -0800)]
srv6-mobile

Type: fix

Plug-in for IPv6 Segment Routing Mobile

Fix the packet forwarding issue on GTP4/6.D when configuring only 1 segment in SRH.

Signed-off-by: Tetsuya Murakami <tetsuya.mrk@gmail.com>
Change-Id: I3a1d14b82821fc6e038d4ef719fd2aa006df2903
Signed-off-by: Tetsuya Murakami <tetsuya.mrk@gmail.com>
4 years agomisc: don't os_exit(1) causing core on SIGINT 58/22358/2
Christian E. Hopps [Fri, 27 Sep 2019 17:52:50 +0000 (13:52 -0400)]
misc: don't os_exit(1) causing core on SIGINT

It's not typical for a program to core when it receives a SIGINT, so
keep this from happening.

Type: fix
Signed-off-by: Christian E. Hopps <chopps@chopps.org>
Change-Id: I2c15985a57e6ea898ff05c4001e4b30b41154eba

4 years agopg: don't leak open files in packet-generator 61/22361/2
Christian E. Hopps [Fri, 27 Sep 2019 18:35:32 +0000 (14:35 -0400)]
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

4 years agovpp: fix .short_help for "ip virtual" 80/23180/2
Paul Vinciguerra [Sun, 3 Nov 2019 14:50:15 +0000 (09:50 -0500)]
vpp: fix .short_help for "ip virtual"

Type: fix

"# <feature-name>: <subject>

Change-Id: I8b6b6b8c70faec7cd95e1842259e907fb9587017
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agodhcp: client use local logger 26/23126/4
Paul Vinciguerra [Thu, 31 Oct 2019 00:07:15 +0000 (20:07 -0400)]
dhcp: client use local logger

Type: fix

Change-Id: I8383e04d01e0001c1cba176d2148b2c4c74e397a
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agovxlan geneve gtpu: fix short help 28/23328/2
Paul Vinciguerra [Thu, 7 Nov 2019 22:20:48 +0000 (17:20 -0500)]
vxlan geneve gtpu: fix short help

Type: fix

Change-Id: Id53eb6ed15f270d747b9831a7b585cbafe515dd2
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agoip: cleanup punt socket cli help 64/22964/4
Paul Vinciguerra [Wed, 23 Oct 2019 20:07:32 +0000 (16:07 -0400)]
ip: cleanup punt socket cli help

Make the help string consistent with the cli parser.

Type: fix

Change-Id: I7140bd589c2a94dbf5af5cc633cb495457a6af22
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agofeature: add descriptive cli command output for 'set interface feature' 95/23295/9
Paul Vinciguerra [Wed, 6 Nov 2019 18:25:17 +0000 (13:25 -0500)]
feature: add descriptive cli command output for 'set interface feature'

  DBGvpp# set interface feature local0 arp-foo arc bad-arc
  set interface feature: Unknown arc name (bad-arc)...

  DBGvpp# set interface feature local0 arp-foo arc arp
  set interface feature: Feature (arp-foo) not registered to arc (arp)...
  See 'show features verbose' for valid feature/arc combinations.

  DBGvpp# set interface feature local0 arp-disabled arc arp

Type: fix

Change-Id: I036bb2a75dd2d40f6901e4fde3eb14925238e19b
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agofeature: add [verbose] to show features help 98/23298/3
Paul Vinciguerra [Wed, 6 Nov 2019 20:41:45 +0000 (15:41 -0500)]
feature: add [verbose] to show features help

Type: fix

Change-Id: Idf694477c18852e5541c28a493a56b302122e46c
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
4 years agobuild: Add missing package to Makefile 54/23554/3
Paul Vinciguerra [Wed, 20 Nov 2019 05:09:04 +0000 (00:09 -0500)]
build: Add missing package to Makefile

- add dependency for pip install psutil.
See: https://github.com/giampaolo/psutil/blob/master/INSTALL.rst#linux

Type: fix

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

4 years agomisc: Add CentOS 8 package support 08/23308/8
Renato Botelho do Couto [Thu, 7 Nov 2019 12:10:34 +0000 (06:10 -0600)]
misc: Add CentOS 8 package support

Type: feature

Added missing dependencies on RPM spec file and install-dep

Ticket: VPP-1800

Signed-off-by: Renato Botelho do Couto <renato@netgate.com>
Change-Id: I91d39c94b3f03c213249dff42b264718ef772bdb

4 years agovlib: add max-size configuration parameter for pmalloc 82/23082/3
jieqiang wang [Tue, 22 Oct 2019 07:54:40 +0000 (15:54 +0800)]
vlib: add max-size configuration parameter for pmalloc

Enable 'max-size' configuration parameter to set maximum size of
memory space allocated for pmalloc module. This parameter along
with existing 'base-addr' falls into physmem section. Both are
dedicated parameters to pmalloc module.

Type: feature

Change-Id: I939f25156b9a43440a24d69a7397d57eb6c2d392
Signed-off-by: Jieqiang Wang <Jieqiang.Wang@arm.com>
4 years agol2: l2_patch_main should not be static 71/23471/3
Vratko Polak [Thu, 21 Nov 2019 09:29:40 +0000 (10:29 +0100)]
l2: l2_patch_main should not be static

Without understanding what is going on,
a pattern from l2_fwd.c is applied to l2_patch.c file.

Type: fix
Fixes: d770cfc96257f9bd9e0c96c8ebe50e4531dc1bc5
Ticket: VPP-1799

Change-Id: Ia97d448f9d1846549f57ea69044ae15fa39bb942
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
4 years agovlib: fix startup-config-process stack overflow 94/23794/2
GordonNoonan [Wed, 4 Dec 2019 15:16:40 +0000 (15:16 +0000)]
vlib: fix startup-config-process stack overflow

Type: fix

Startup config setting an i40e/ice interface
up in Debug VPP consumes more than the currently
available stack space.

Signed-off-by: GordonNoonan <gordon.noonan@intel.com>
Change-Id: I98b52c5596799017b97f802a8661b76cd1bb3245

4 years agobonding: drop traffic on backup interface for active-backup mode 62/23862/5
Steven Luong [Sat, 7 Dec 2019 05:12:41 +0000 (21:12 -0800)]
bonding: drop traffic on backup interface for active-backup mode

For active-backup mode, we transmit on one and only one interface. However,
we might still receive traffic on the backup interface. We should drop them
and strictly process incoming traffic on only the active interface.

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: Idb6b798b30033e84044b151c616be3c157329731

4 years agoflow: add ethernet flow 01/24001/3
Chenmin Sun [Sat, 14 Dec 2019 17:16:45 +0000 (01:16 +0800)]
flow: add ethernet flow

Type: feature

This patch adds the ethernet type flow support

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I6de163d04c6472df60a5f296fb428efd000267c4

4 years agomisc: address sanitizer: do not instrument dlmalloc internals 35/23735/2
Benoît Ganne [Mon, 2 Dec 2019 16:42:56 +0000 (17:42 +0100)]
misc: address sanitizer: do not instrument dlmalloc internals

Type: fix

Change-Id: I2b8273666db864d80012c39623ae866ac3527426
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agovlib: fix an issue with show pci 49/23849/4
Vratko Polak [Fri, 6 Dec 2019 15:49:36 +0000 (16:49 +0100)]
vlib: fix an issue with show pci

The fix has been received over e-mail from Lijian Zhang.
https://lists.fd.io/g/vpp-dev/message/14808

Type: fix
Ticket: VPP-1805

Change-Id: I73e5fe7dcbe2b0b1c639d844f29183eab3b6dd66
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
4 years agobuild: export vapi generation in vpp-dev 67/23867/8
Oliver Giles [Thu, 5 Dec 2019 21:37:36 +0000 (23:37 +0200)]
build: export vapi generation in vpp-dev

Adds the higher-level vapi generation to cmake/api.cmake and exposes
the necessary python scripts in vpp-dev, so that out-of-tree/downstream
plugins can also leverage the more convenient API.

Type: feature

Signed-off-by: Oliver Giles <oliver_g@radwin.com>
Change-Id: I8c40a14d27ba3cb972c6907632e03c0e7b0ce982

4 years agobuild: Allow to override build date with SOURCE_DATE_EPOCH 19/23819/6
Bernhard M. Wiedemann [Thu, 5 Dec 2019 15:51:26 +0000 (16:51 +0100)]
build: Allow to override build date with SOURCE_DATE_EPOCH

and make host and user overridable
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

Also switch to UTC to be independent of timezone.
Also use ISO 8601 date format to be easier to parse.
This is similar to c9f40227836b827b71a6cbc4744d4b7151b2fcef
and df82ec8fe7d91467c8b479bba74c761c0a6ffc59
which was lost in the move away from automake.

Note: This date call is designed to work with different flavors
of date (GNU, BSD and others).
If only GNU (Linux) support is needed, the patch can be simplified.

This PR was done while working on reproducible builds for openSUSE.

Type: fix

Change-Id: If4cab12320e6b5fcb1f2842fac5d745b33b01ed7
Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
4 years agovlib: fix vector-as-C-string overflow 16/24016/2
Benoît Ganne [Mon, 16 Dec 2019 14:49:47 +0000 (15:49 +0100)]
vlib: fix vector-as-C-string overflow

Type: fix

Change-Id: If0419ff1a82d45e5b3326973008e1b9feb290c5a
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agomisc: address sanitizer: fix instrumentation 15/24015/2
Benoît Ganne [Mon, 16 Dec 2019 14:37:28 +0000 (15:37 +0100)]
misc: address sanitizer: fix instrumentation

Type: fix

Change-Id: I99e3951f8cfb7ab9d2f0a7dcee92199eab29043c
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agoclassify: add complex encap packet tracing test 13/23913/4
Benoît Ganne [Tue, 10 Dec 2019 11:48:26 +0000 (12:48 +0100)]
classify: add complex encap packet tracing test

Type: test

Change-Id: I392975c00d7dae86dacedf7559aafa431e71cb14
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agoclassify: forbid invalid match config 12/23912/4
Benoît Ganne [Tue, 10 Dec 2019 11:44:46 +0000 (12:44 +0100)]
classify: forbid invalid match config

Forbid too long match to be configured.

Type: fix

Change-Id: Icfced0f86821d5febd6a3c81e1315bd9737498c0
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agoipsec: bind an SA to a worker 64/18664/15
Neale Ranns [Tue, 2 Apr 2019 08:13:33 +0000 (08:13 +0000)]
ipsec: bind an SA to a worker

the sequence number increment and the anti-replay window
checks must be atomic. Given the vector nature of VPP we
can't simply use atomic increments for sequence numbers,
since a vector on thread 1 with lower sequence numbers could
be 'overtaken' by packets on thread 2 with higher sequence
numbers.
The anti-replay logic requires a critical section, not just
atomics, and we don't want that.
So when the SA see the first packet it is bound to that worker
all subsequent packets, that arrive on a different worker,
are subject to a handoff.

Type: feature

Change-Id: Ia20a8645fb50622ea6235ab015a537f033d531a4
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agodpdk: add devargs support 89/23989/2
Chenmin Sun [Fri, 13 Dec 2019 22:59:03 +0000 (06:59 +0800)]
dpdk: add devargs support

Type: feature

This patch adds the devargs support for dpdk device
The devargs are used as hardware-specific init args for dpdk devices
please refer to the nic guides under
$(DPDK_DIR)/doc/guides/nics/$(NIC_DRIVER).rst

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Id380d04720090bb66afe5ce09d664e5e248b8eb9

4 years agovppinfra: fix cpu flag string overflow 18/24018/2
Benoît Ganne [Mon, 16 Dec 2019 15:00:14 +0000 (16:00 +0100)]
vppinfra: fix cpu flag string overflow

Type: fix

Change-Id: Idb1fff8a172034044bb33d5b271a84d1fd672ef5
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agoperfmon: fix per-worker data initialization 13/24013/2
Benoît Ganne [Mon, 16 Dec 2019 14:26:49 +0000 (15:26 +0100)]
perfmon: fix per-worker data initialization

When perfmon_init is called at initialization time worker threads are
not created yet and vec_len(vlib_mains) returns 1.
Initialize per-worker data when the number of workers is known, when
enabling data collection instead.

Type: fix

Change-Id: I36887cc7b2a3e88d9728d3cd7262d9b1c968dd3c
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agonhrp: mGREv6 28/24028/3
Neale Ranns [Tue, 17 Dec 2019 00:14:26 +0000 (00:14 +0000)]
nhrp: mGREv6

Type: test

Change-Id: I7d0496c37e06d3b6eee325a262e5398860282b63
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agol2: fix l2input_feat_names overflow 17/24017/2
Benoît Ganne [Mon, 16 Dec 2019 14:51:38 +0000 (15:51 +0100)]
l2: fix l2input_feat_names overflow

Type: fix

Change-Id: I59549b3aab5a0ccfe7db02757f78528e028121a5
Signed-off-by: Benoît Ganne <bganne@cisco.com>
4 years agovirtio: fix the tx queue thread binding 97/23097/6
Mohsin Kazmi [Wed, 30 Oct 2019 14:00:04 +0000 (15:00 +0100)]
virtio: fix the tx queue thread binding

Type: fix

Change-Id: Ibbe7e20aebc9153ceba07e048dc0eaa45193f4ea
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
4 years agoquic: Implement crypto contexts 10/23310/15
Nathan Skrzypczak [Thu, 7 Nov 2019 12:52:09 +0000 (13:52 +0100)]
quic: Implement crypto contexts

Type: feature

Make quic use the crypto contexts. This introduces a crypto context
pool backed by a hashtable giving ctx indexes by connect params
(ckpair, engine, rx & tx fifo sizes).
Applications keep the initialization vector common.

Change-Id: I22ed6711196cd70a2f2f74240f12113c7af8dfcd
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
4 years agogso: minor fixes to gso segmentation 07/23907/2
Mohsin Kazmi [Mon, 9 Dec 2019 10:46:01 +0000 (11:46 +0100)]
gso: minor fixes to gso segmentation

Type: fix

Change-Id: I01602ba7f1a4820c7790a771a5a7281ed66ff905
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
4 years agodocs: improve compressed core file documentation 34/24034/1
Dave Barach [Tue, 17 Dec 2019 14:35:23 +0000 (09:35 -0500)]
docs: improve compressed core file documentation

In particular, document "zcat vpp_core.gz | dd conv=sparse of=vpp_core"

Type: docs

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

4 years agoip: Protocol Independent IP Neighbors 19/22819/26
Neale Ranns [Mon, 30 Sep 2019 10:53:31 +0000 (10:53 +0000)]
ip: Protocol Independent IP Neighbors

Type: feature

 - ip-neighbour: generic neighbour handling; APIs, DBs, event handling,
aging
 - arp: ARP protocol implementation
 - ip6-nd; IPv6 neighbor discovery implementation; separate ND,
MLD, RA
 - ip6-link; manage link-local addresses
 - l2-arp-term; events separated from IP neighbours, since they are not
the same.

vnet retains just enough education to perform ND/ARP packet
construction.
arp and ip6-nd to be moved to plugins soon.

Change-Id: I88dedd0006b299344f4c7024a0aa5baa6b9a8bbe
Signed-off-by: Neale Ranns <nranns@cisco.com>
4 years agovcl: RX event may lost when accept session repeatedly 10/24010/3
wanghanlin [Mon, 16 Dec 2019 11:14:39 +0000 (19:14 +0800)]
vcl: RX event may lost when accept session repeatedly

Type: fix

Some applications may call accept repeatedly to process all connect
request until get EAGIAIN error. Subsequent call may get RX event of
previous accepted session, then should process it rather than just
discard it.

Signed-off-by: wanghanlin <wanghanlin@corp.netease.com>
Change-Id: Ice53442de66289a62591b79a9cc31e883e894c23

4 years agoquic: update quicly to v0.0.8-vpp 09/23909/4
MathiasRaoul [Tue, 10 Dec 2019 10:56:20 +0000 (10:56 +0000)]
quic: update quicly to v0.0.8-vpp

Type: feature

Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
Change-Id: I7470d79d1e39716ff83ba2d2b320813d79e2554c