Commit Graph

102 Commits

Author SHA1 Message Date
Georgy Borodin f46c5525d2 lb: fix using vip after free
fix use of vip after it was deleted

Type: fix
Fixes: 041eacc816
Change-Id: I5723485c5da7507fbc6c86ff6eb9f77127439f67
Signed-off-by: Georgy Borodin <bor1-go@yandex-team.ru>
2024-04-02 02:39:10 +00:00
Damjan Marion c3148b1be8 misc: remove GNU Indent directives
Type: refactor
Change-Id: I5235bf3e9aff58af6ba2c14e8c6529c4fc9ec86c
Signed-off-by: Damjan Marion <damarion@cisco.com>
2024-03-12 19:29:56 +00:00
Vladislav Grishenko fb9d1ac843 vnet: fix format of deleted sw interfaces
As similar 535364e904 is
merged, printing possibly deleted interfaces by index
only in all the rest cases.

Type: improvement
Signed-off-by: Vladislav Grishenko <themiron@yandex-team.ru>
Change-Id: I4fa58b382c0279ff893523ba0188fdb9b09e10af
2024-03-05 18:48:28 +00:00
Dave Wallace 21bc900c34 lb: fix intermittent per-port-vip idx lookup failure
- Causes per-port-vip testcases to fail when the
  uninitialized reserved field in the stack variable
  key for the hash lookup was a non-zero stack memory
  location.

Type: fix

Change-Id: I56afa15e7df60bc2340514f2c7ce5e71a9cb47a9
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2023-10-10 23:19:18 -04:00
Nobuhiro MIKI 95c2da7c25 lb: Fix src_ip_sticky evaluation bug in per-port-vip case.
Before this fix, the src_ip_sticky flag was passed as an argument to
the lb_node_get_hash function, which computes a hash value for a packet.
However, in per-port-vip case, the value of src_ip_sticky flag may be
different for each port number. As a result, the value is the same for
all port numbers, even though it is a per-port-vip case.

This commit fixes the src_ip_sticky evaluation by delaying it until the
packet is received, so that the correct value is obtained. Also, the
unit test case has been enhanced for this bug fix.

The steps to reproduce this bug are described below:
https://lists.fd.io/g/vpp-dev/message/23248

Type: fix
Fixes: 613e6dc0bf ("lb: add source ip based sticky load balancing")
Change-Id: I483492b214a1768e7a21fd86edd5151b3c46528b
Signed-off-by: Nobuhiro MIKI <nmiki@yahoo-corp.jp>
2023-07-13 08:10:26 +00:00
Vratko Polak 2cebd4270d lb: improve formatting in lb_types.api
Type: style

Change-Id: I969bc72185d3675a35cf227c60bedca20e09fdf5
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-04-21 08:46:38 +00:00
Vratko Polak 9339af358f lb: initialize lb_vip_add_args_t
Previously, .src_ip_sticky may have been left uninitialized.

Type: fix
Fixes: 613e6dc0bf

Change-Id: Ifd866d6322fe9ff723f92b7ab3fd77e720a3cfa4
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-04-19 12:38:15 +00:00
Benoît Ganne 064ff15150 lb: keep AddressSanitizer happy
vec_alloc() does not mark vector as accessible contrary to
vec_validate().
Also removes redundant memset(0) as vector allocation always zeroed
new memory.

Type: fix

Change-Id: I8309831b964a618454ed0bebbcdec7ec21149414
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2023-03-06 17:55:08 +00:00
Nobuhiro MIKI 613e6dc0bf lb: add source ip based sticky load balancing
This patch adds source ip based sticky session, which is already
implemented in many hardware LBs and software LBs. Note that sticky
sessions may be reset if the hash is recalculated as ASs are added
or deleted.

Since this feature is unrelated to the other existing options, the
lb_add_del_vip API version has been upgraded to v2 and a new option
"src_ip_sticky" has been added.

Type: feature
Signed-off-by: Nobuhiro MIKI <nmiki@yahoo-corp.jp>
Change-Id: I3eb3680a28defbc701f28c873933ec2fb54544ab
2023-01-18 10:53:23 +00:00
Damjan Marion dd298e804a misc: fix issues reported by clang-15
Type: improvement

Change-Id: I3fbbda0378b72843ecd39a7e8592dedc9757793a
Signed-off-by: Damjan Marion <dmarion@me.com>
2022-10-12 16:04:13 +02:00
Damjan Marion fe45f8f5af api: replace print functions wth format
Type: improvement
Change-Id: I7f7050c19453a69a7fb6c5e62f8f57db847d9144
Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-09-26 08:14:29 +00:00
Damjan Marion 8bea589cfe vppinfra: make _vec_len() read-only
Use of _vec_len() to set vector length breaks address sanitizer.
Users should use vec_set_len(), vec_inc_len(), vec_dec_len () instead.

Type: improvement
Change-Id: I441ae948771eb21c23a61f3ff9163bdad74a2cb8
Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-04-04 23:17:13 +00:00
Neale Ranns 2008912b56 fib: Fix the display (or lack of) for fib node types in dependent children lists
Type: fix

When registering a new FIB node type, no name was required on the API, and so no name was printed.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I8a99cf29c194637a550061b0a5e9782ffe8b31dd
2021-12-03 09:04:44 +00:00
Nathan Skrzypczak f47122e07e docs: convert plugins doc md->rst
Type: improvement

Change-Id: I7e821cce1feae229e1be4baeed249b9cca658135
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-10-13 23:22:20 +00:00
Nathan Skrzypczak d0ea764a5d docs: plugin comment nitfixes
Type: improvement

Change-Id: Ib7e2f5f314144064de7b6be0fade3db2f9c943fe
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-10-04 08:26:43 +00:00
Dave Wallace eddd8e3588 tests: move test source to vpp/test
- Generate copyright year and version
  instead of using hard-coded data

Type: refactor

Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: I6058f5025323b3aa483f5df4a2c4371e27b5914e
2021-05-13 09:33:06 +00:00
Damjan Marion b2c31b685f misc: move to new pool_foreach macros
Type: refactor
Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-14 12:14:21 +00:00
Paul Vinciguerra dc01471be7 api: add missing version info
Type: fix

Change-Id: I269214e3eae72e837f25ee61d714556d976d410f
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-12-14 01:34:51 +00:00
Ole Troan df87f8092f api: vat2 and json autogeneration for api messages
VAT2: A completely auto-generated replacement of VAT.
Reads input message in JSON from stdin and outputs received messages in JSON.

A VAT2 plugin is automatically built for a .api file.
There no longer a need for a separate _test.c.

Example:
vat2 show_version {}
{
        "_msgname":     "show_version_reply",
        "retval":       0,
        "program":      "vpe",
        "version":      "21.01-rc0~411-gf6eb348a6",
        "build_date":   "2020-11-19T09:49:25",
        "build_directory":      "/vpp/autogen3"
}

vat2 sw_interface_dump '{"sw_if_index": -1,
                         "name_filter_valid": 0,
                         "name_filter": ""}'
[{
                "_msgname":     "sw_interface_details",
                "sw_if_index":  0,
                "sup_sw_if_index":      0,
                "l2_address":   "00:00:00:00:00:00",
                "flags":        "Invalid ENUM",
                "type": "IF_API_TYPE_HARDWARE",
                "link_duplex":  "LINK_DUPLEX_API_UNKNOWN",
                "link_speed":   0,
                "link_mtu":     0,
                "mtu":  [0, 0, 0, 0],
                "sub_id":       0,
                "sub_number_of_tags":   0,
                "sub_outer_vlan_id":    0,
                "sub_inner_vlan_id":    0,
                "sub_if_flags": "Invalid ENUM",
                "vtr_op":       0,
                "vtr_push_dot1q":       0,
                "vtr_tag1":     0,
                "vtr_tag2":     0,
                "outer_tag":    0,
                "b_dmac":       "00:00:00:00:00:00",
                "b_smac":       "00:00:00:00:00:00",
                "b_vlanid":     0,
                "i_sid":        0,
                "interface_name":       "local0",
                "interface_dev_type":   "local",
                "tag":  ""
        }]

This is the first phase and vat2 is not integrated in packaging yet.

Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ib45ddeafb180ea7da8c5dc274a9274d7a4edc876
Signed-off-by: Ole Troan <ot@cisco.com>
2020-11-25 08:25:50 +00:00
Hiroki Narukawa fa4d4c635b lb: Loadbalancer plugin, correctly rewrite checksum in L3DSR, non-TCP cases
Current loadbalancer seems to rewrite the 17th and 18th octet of L4 header regardless of which kind of L4 protocol is used in case of L3DSR.

In case UDP, it rewrites 9th and 10th octet of payload (because UDP header is 8 octets long). If UDP payload is less than 8 octets, UDP checksum becomes invalid.

In other protocols similar problems is likely to occue.

This patch checks which L4 protocol is used, and rewrite packet regarding the L4 protocol.

Signed-off-by: Hiroki Narukawa <nhirokinet@nhiroki.net>
Change-Id: I84390ff58a33f05efac0421856beea89014adc72
Type: fix
2020-10-24 09:00:56 +00:00
Florin Coras b040f98a88 misc: minimize dependencies on udp.h
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Id13f33843b230a1d169560742c4f7b2dc17d8718
2020-10-21 10:56:34 +00:00
Dave Barach 11fb09e38f misc: harmonize names
Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ibad744788e200ce012ad88ff59c2c34920742454
2020-08-06 12:10:50 -04:00
Paul Vinciguerra b5a575b092 docs: clean up make docs job
Type: docs

Change-Id: I9b5e5137eb4c1e89f6e8d7a278cd11a0fd496471
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-05-06 15:13:09 +00:00
Paul Vinciguerra c0e9441e79 tests: move defaults from defaultmapping to .api files
facilitates use of papi beyond the tests.

Type: improvement

Change-Id: I3d502d9130b81a7fb65ee69bb06fe55802b28a27
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-04-28 01:12:04 -04:00
Dave Barach a53068905e lb: fix coverity warning
Type: fix
Ticket: VPP-1837
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I357eb72d478d8175ab9c7cf502d312ab3112213e
2020-03-10 14:16:04 +00:00
Yasuhiro Nakamura 551775eaaa lb: Fix generating illegal key in per-port vip
VIP prefix index becomes always 0 when adding a VIP which is already registered different port, causing LB config crash.
This change assigns the same VIP prefix index to the same VIP.

Ticket: https://jira.fd.io/browse/VPP-1834
Type: fix

Signed-off-by: Yasuhiro Nakamura <yanakamu@yahoo-corp.jp>
Change-Id: Ib63b3e58db9bd85714d68cd1292aadd0c8580da8
2020-02-26 12:46:14 +00:00
Yulong Pei db43bb6af7 lb: fix that lb_add_del_vip and lb_add_del_as api doesn't work correctly
Currently if user want to set ip4 address to the api, it must convert to ip6
format, e.g. user want to ip4 "90.1.2.1" but must convert to "::5A01:0201",
it is not acceptable, this fix solved the issue.

Ticket: FDIO-753
Type: fix

Change-Id: I2ffa5a3d38400ee176cf601421074f71fc395f03
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
2020-01-17 14:21:03 +00:00
John DeNisco 7c9fe920ce docs: Edit FEATURE.yaml files so they can be published
Type: docs
Signed-off-by: John DeNisco <jdenisco@cisco.com>
Change-Id: I7280e5c5ad10a66c0787a5282291a2ef000bff5f
2020-01-10 17:20:21 +00:00
Hongjun Ni 94501c49a4 lb: add FEATURE file for lb/pppoe/gtpu/vxlan-gpe/pppoe
Type: docs

Change-Id: Ia3949954423eb7691c02e99444767a9f01a14adf
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2020-01-06 08:13:05 +00:00
Neale Ranns 3bab8f9c53 fib: Decouple source from priority and behaviour
Type: feature

the fib_source_t enum alone no longer defines the priority and
behaviour, instead each source must be allocated these attributes.
This allows the creation of other sources by the plugins (and
soon over the API).

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I890ee820fbc16079ee417ea1fbc163192806e853
2019-12-04 22:47:12 +00:00
Hongjun Ni e69f471432 lb: lb_add_del_vip and lb_add_del_as doesn't work.
Ticket: FDIO-753
Type: fix

Change-Id: I4a8cf06970b658dfa15768459a3ff76571d6dfff
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-11-26 09:49:23 +00:00
Vratko Polak 40680c6601 lb: refactor ntohl in lb_conf handler
Type: refactor

Change-Id: Ibe8f3c1ed5c04d1800fea9b9a90772816aa38d65
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-10-30 00:36:02 +00:00
snaramre ec44e26372 tests: python3 changes for load balancer test
Type: fix
Change-Id: Id9a328158e7c4106a95928bf8ddceb7b9e73aa25
Signed-off-by: snaramre <snaramre@cisco.com>
2019-10-17 17:59:07 +00:00
Ole Troan ae07240340 lb: remove api boilerplate
Type: refactor
Change-Id: I5555037386d6f6593ac3328385603a382be1fc2a
Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-30 15:32:24 +00:00
Hongjun Ni 33538a1508 lb: add APIs for set interface nat4 and nat6
Type: feature

Change-Id: I5656cd798b108dd780381b87f574554442ed7b23
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-09-26 11:40:18 +00:00
Vratko Polak 6eb009ac02 lb: vl_api_lb_conf_t_handler has to ntohl
As requested in review, this is a minimal edit.
Refactor comes as a separate Change.

Type: fix

Change-Id: Ie3bdfc3cfde4bfee56848217133ca5f6bbccaeef
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-09-26 07:05:54 +00:00
Ole Troan 75761b933f api: split vl_api_prefix into two
One type for address with prefix and one type for prefix.

Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Icfec51d9b7d5cde1d69fbecdd97498688ab7b295
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-19 14:24:54 +00:00
Ole Troan 33a58171e5 api: autogenerate api trace print/endian
In addition to the external vppapitrace tool, VPP itself supports dumping of API trace files.
In two formats, "custom-dump" and "dump". "dump" gives a human friendly list,
and "custom-dump" is meant to give a list of commands that can be fed to VAT.
This patch only deals with "dump".
Prior to this fix, auto-generation was only done for the basic types.
This fix adds support for any type, including lists, and supports pretty-printing
of enums, strings, IP addresses, MAC addresses and so on.

Usage: api trace dump <api-trace-file>

For example

Change-Id: I4e485680e6dcfce7489299ae6cf31d835071ac40

---------- trace 48 -----------
vl_api_sw_interface_set_flags_t:
  _vl_msg_id: 75
  client_index: 0
  context: 10
  sw_if_index: 1
  flags: IF_STATUS_API_FLAG_ADMIN_UP
---------- trace 49 -----------
vl_api_sw_interface_add_del_address_t:
  _vl_msg_id: 88
  client_index: 0
  context: 11
  sw_if_index: 1
  is_add: 1
  del_all: 0
  prefix: 172.16.1.1/24
---------- trace 51 -----------
vl_api_cli_inband_t:
  _vl_msg_id: 819
  client_index: 0
  context: 13
  cmd: packet-generator capture pg0 pcap /tmp/vpp-unittest-TestMAP-YhcmDX/pg0_out.pcap disable
---------- trace 58 -----------
vl_api_ip_neighbor_add_del_t:
  _vl_msg_id: 199
  client_index: 0
  context: 20
  is_add: 1
  neighbor:
    sw_if_index: 2
    flags: IP_API_NEIGHBOR_FLAG_NONE
    mac_address: 0202.0000.ff02
    ip_address: fd01:2::2

Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I5556d06008de2762e7c2d35a8b0963ae670b3db1
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-16 12:23:27 +00:00
Yulong Pei 71f36067ca lb: fix memcpy error issue
vl_api_prefix_t size is 21 byte, ip46_address_t size is 16 byte, only copy
16 byte of vl_api_prefix_t to ip46_address_t is not correct.

Type:fix

Change-Id: I35ede7836a0c878d39388b29b15d91bb08f87a07
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
2019-08-29 12:34:16 +00:00
Dave Wallace a43c93f855 tests: move plugin tests to src/plugins/*/test
- Relocate plugin tests for 'make test' into
  src/plugins/*/test so that plugin test cases
  are co-located with the plugin source code.

Type: refactor

Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: I503e6a43528e14981799b735fa65674155713f67
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-08-22 15:33:59 +00:00
Paul Vinciguerra e717482911 vppapigen: remove support for legacy typedefs
vppapigen has remapped legacy to typedefs behind the scenes
for some time now.

- update .api files to use new style typedefs.
- issue error on 'typeonly define' in .api files
- remove unneeded macros redefining vl_noop_handler

Type: refactor

Change-Id: I7a8c4a6dafacee6a131f95cd0e9b03a8c60dea8b
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-08-20 13:35:21 +00:00
Florin Coras 23b26e71e7 lb: fix usage of lb_main in test
Type: fix

Change-Id: I9f8a8da31624637c060a9757256589c8f372f192
Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02 11:33:43 +00:00
Hongjun Ni 3efcd0d7c3 lb: vip and as dump/detail api's
- lb_vip_dump/lb_vip_details - get all vip.
- lb_as_dump/lb_as_details - get all as list per vip.
- adds api unit test.
- adds vpp_lb to test framework.

Ticket:
Type: feature

Change-Id: I24be50d62c5234f3535cc840603ddd9df7eb3f07
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-07-31 19:35:13 +00:00
jaszha03 5cdde5c25a vppinfra: refactor test_and_set spinlocks to use clib_spinlock_t
Spinlock performance improved when implemented with compare_and_exchange
instead of test_and_set. All instances of test_and_set locks were refactored
to use clib_spinlock_t when possible. Some locks e.g. ssvm synchronize
between processes rather than threads, so they cannot directly use
clib_spinlock_t.

Type: refactor

Change-Id: Ia16b5d4cd49209b2b57b8df6c94615c28b11bb60
Signed-off-by: Jason Zhang <jason.zhang2@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Lijian Zhang <Lijian.Zhang@arm.com>
2019-07-31 13:53:55 +00:00
Paul Vinciguerra a0cb32cb9f lb: update api.c to use scaffolding from latest skel
Type: refactor

Change-Id: I01329385684f4a4f477cb046079b554ae3024ded
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-18 07:22:56 +00:00
Dave Barach 21a438465c vat: unload unused vat plugins
If the corresponding vpp plugin is absent, return a non-zero
clib_error_t * from vat_plugin_register ("xxx plugin not loaded"). The
vat plugin calls dlclose on the vat plugin, and it disappears.

Depending on the plugin configuration, this can reduce the vpp virtual
size by several gigabytes.

Added a VAT_PLUGIN(<plugin-name>) macro to vat_helper_macros, clean up
boilerplate vat_plugin_register() implementations. Fixed a number of
non-standard vat_plugin_register methods.

Type: refactor

Change-Id: Iac908e5af7d5497c78d6aa9c3c51cdae08374045
Signed-off-by: Dave Barach <dave@barachs.net>
2019-07-09 15:24:41 +00:00
Benoît Ganne 49ee68443d build: add -Wall and -fno-common, fix reported issues
Type: refactor
Change-Id: I8489ccd54411c2aa9355439c5641dc31012c64a2
Signed-off-by: Benoît Ganne <bganne@cisco.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-06-07 11:21:59 +00:00
Hongjun Ni e56a786b73 lb: crashed with some specific commit under heavy traffic
- When deleting VIP member with flush, VPP will crash.
- When deleting VIP member without flush, vpp won't crash.
- This crash is almost 100% reproductive.

Ticket: VPP-1680
Type: fix
Change-Id: Ia4e8f9e0f987176c7f6ec52c92e66563f313b0c3
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-06-06 05:17:50 +00:00
Dave Wallace 1d1985de91 plugins: clean up plugin descriptions
- Make plugin descriptions more consistent
  so the output of "show plugin" can be
  used in the wiki.

Change-Id: I4c6feb11e7dcc5a4cf0848eed37f1d3b035c7dda
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2019-05-03 09:30:46 +00:00
Paul Vinciguerra f7f13347bc tests: update test_lb.py to use api call lb_conf.
Change-Id: I96a1d4b2b3ae22cf164c0acd6db9b323cd70f51a
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-03-22 08:30:11 +00:00