Commit Graph

51 Commits

Author SHA1 Message Date
Ole Troan
f3be34e443 dhcp: api to enable client detect on interface
DHCPv4 aka BOOTP is somewhat awkward. A DHCP client
on an interface must receive DHCP packets to
the broadcast address or to a unicast address.
Apparently before it's been assigned to itself.

Add this new API to allow external DHCP clients
enable the DHCP client detect feature per interface.

Type: improvement
Change-Id: If55aac03f25a045496be483940e4f5e7e18885b9
Signed-off-by: Ole Troan <otroan@employees.org>
2023-11-16 15:38:51 +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
Jing Peng
6a2868734c dhcp: fix dhcp_compl_event
This patch fixes two problems:

1. The lease field in the dhcp_compl_event message can include a list of
vl_api_domain_server_t structs, but no memory is allocated for it.
2. The DNS server address is not copied properly, resulting in wrong IP4
addresses in the event message.

Type: fix

Signed-off-by: Jing Peng <pj.hades@gmail.com>
Change-Id: I42c533e7af697568c69714011d983f88368a7e15
2022-05-02 06:46:18 +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
Paul Atkins
8e2b1b1298 fib: respect mfib entry flags on create with paths
When an mfib entry was created with both paths and entry_flags then
the entry flags were being ignored. If there are no paths then the
flags were passed into mfib_table_entry_update, but in the case where
the entry didn't exist and there were paths and flags, the entry was
created within mfib_table_entry_paths_update() which used a default
of MFIB_ENTRY_FLAG_NONE.

Pass the flags through into the mfib_table_entry_paths_update fn. All
existing callers other than the create case will now pass in
MFIB_ENTRY_FLAG_NONE.

Type: fix
Signed-off-by: Paul Atkins <patkins@graphiant.com>
Change-Id: I256375ba2fa863a62a88474ce1ea6bf2accdd456
2021-10-21 16:40:11 +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
Florin Coras
b5dec932b7 dhcp: fix coverity warning
Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I2367e86fb22176881d118342f6e991dbc708b1f2
2021-10-12 20:59:48 +00:00
Nathan Skrzypczak
bd23b405fb docs: nitfixes in FEATURE.yaml
Type: improvement

Change-Id: Iec585880085b12b08594a0640822cd831455d594
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-10-11 09:05:43 +00:00
Neale Ranns
d6953332db fib: A 16-8-8 and a 8-8-8-8 versions of an ip4_fib_t
Type: feature

The difference being the MTRIE type they contain.
THE FIB continues to use the 16-8-8 version.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I5a54d4e6e6cc639f18a3fb65ef2925507a7ef1de
2021-08-11 08:48:42 +00:00
Filip Tehlar
b7e4d4487c misc: remove vnet_all_api_h and vnet_msg_enum
These file are no longer needed

Type: improvement

Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Change-Id: I34f8e0b7e17d9e8c06dcd6c5ffe51aa273cdec07
2021-07-13 19:27:22 +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
Benoît Ganne
f89bbbe300 vlib: refactor trajectory trace debug feature
trajectory trace has been broken for a while because we used to save the
buffer trajectory in a vector pointed to in opaque2. This does not work
well when opaque2 is copied (eg. because of a clone) as 2 buffers end up
sharing the same vector.
This dedicates a full cacheline in the buffer metadata instead when
trajectory is compiled in. No dynamic allocation, no sharing, no tears.

Type: refactor

Change-Id: I6a028ca1b48d38f393a36979e5e452c2dd48ad3f
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2021-05-01 11:42:37 +00:00
Steven Luong
c3ba58cd14 dhcp: calls to vnet_feature_enable_disable needs to be protected
dhcp is makeing calls to vnet_feature_enable_disable without barrier sync
protection. This can cause data contention with the worker threads. Wrap
all calls to vnet_feature_enable_disable with barrier sync and barrier
release.

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I74545b074599273429f47e3e726551156bc11bbc
2021-03-03 05:25:03 +00:00
Andrew Yourtchenko
8dc0d488e6 tests: tag the tests that do not work with multi-worker configuration
If the multi-worker default VPP configuration is triggered by
setting VPP_WORKER_CONFIG="workers 2", some of the tests fail
for various reasons.

It's a substantial number, so this change marks all of the
testsets that have this issue, such that they can be addressed
later independently.

Type: test
Change-Id: I4f77196499edef3300afe7eabef9cbff91f794d3
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2021-02-11 09:54:02 +00:00
Andrew Yourtchenko
06f328129a tests: add generalized tags for tests, use them for run-solo tests
We have accumulated several scenarios in prod or wishlists
where it would be useful to have a general infra to say yes/no
about a certain test, and potentially make decisions based on that,
for example:

- runs solo (aka 'time-dependent')
- (wishlist) part of quick smoke-test set
- (wishlist) intermittent failure unrelated to timing
- (wishlist) test broken with a multi-worker config in vpp

Refactor the current "run-solo" code to allow for this extension.

Type: test

Change-Id: Ia5b3810e57c0543753c8e0dc4dc0cfb4a30b36ac
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2021-01-22 15:35:11 +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
Benoît Ganne
b44c77d01d ethernet: mac must support 64-bits loads
ethernet dataplane loads MAC addresses as 64-bits loads for efficiency.
We must make sure it is valid, especially for the vector of secondary
MACs.

Type: fix

Change-Id: I851e319b8a973c154e85ff9f05f3b8e385939788
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-11-13 11:17:50 +00:00
Damjan Marion
06d82260d9 vlib: print logs to stderr if interactive or nosyslog set
If VPP is started in interactive mode, instead of sending logs to syslog
server we print them directly to stderr.
Output is colorized, but that can be turned off with unix { nocolor }

Type: improvement
Change-Id: I9a0f0803e4cba2849a6efa0b6a86b9614ed33ced
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-21 17:46:01 +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
Neale Ranns
6e366be38f misc: Purge unused pg includes
Type: style

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I26a19e42076e031ec5399d5ca05cb49fd6fbe1cd
2020-10-07 16:05:16 +00:00
Andrew Yourtchenko
a3b7c554c6 tests: "force solo" testcase support
Some of the tests are time-sensitive, and at present require a non-trivial
modification in order to run at high concurrency.

Without these modifications, they intermittently fail, and require
the test retries.

Rather than setting them to the extended tests and forgetting
about them, put them into a "solo" set, which gets run in a
single-threaded mode after the rest of the tests are done.

Mark a few of the tests that showed errors during TEST_JOBS=48
as forced-solo.

Also, give a better diagnostic if the testcase misses a docstring
needed to represent it in the diagnostic outputs.

Type: fix

Change-Id: I33fe62eb17edc1885bd2c3523892051d52da6546
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2020-08-27 08:03:38 +00:00
Ole Troan
bad679291a api: register endian handlers for reply messages
Endian handlers was not registered for reply messages.
Causing endian-neutral handlers to crash.

Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Id14173300ee1ab2601e92d58c70d2fa260814b69
2020-08-25 07:35:49 +00:00
Benoît Ganne
dcd4aa2110 dhcp: use per-thread vlib main instead of global one
Type: fix

Change-Id: I8890aa5cc3c576fc9fb68735549dfab721714310
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-05-28 11:09:45 +00:00
Dave Barach
7f475bf4b7 dhcp: vat support for the dhcp_client_dump API
Also: permanently solve ordering issues with the vpp builtin vat
plugin loader, by explicitly loading vat plugins once we're sure that
all data plane plugins have registered their APIs / API message
handlers.

Fix compilation / link errors when the vpp builtin vat plugin loader
is disbled by cmake configuration.

Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Id553c63ae860ebfc196c5ad4b55c19e08fec2c9e
Signed-off-by: Ole Troan <ot@cisco.com>
2020-05-27 20:53:57 +00:00
Dave Barach
7784140f2b 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
anything.

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
2020-05-04 14:03:21 +00:00
Stanislav Zaikin
e65eea360c dhcp: fix dhcp proxy behavior for qinq and dot1q subinterfaces
Previous behavior worked only when subinterface ID matches with dot1q tag and doesn't work at all in QinQ case.
In this patch I'm checking how subinterface is configured.

Type: fix

Signed-off-by: Stanislav Zaikin <zstaseg@gmail.com>
Change-Id: I7a662a0442fdc8e68aba5d6f469f3b1139a4bc2d
2020-04-26 13:18:54 +00:00
Neale Ranns
ec40a7d2bc ip: Setting the Link-Local address from the API enables IPv6 on the
interface

Type: fix

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I0b7c189006e30a357cd6be4f3c9c61fded4157cb
2020-04-24 09:24:43 +00:00
Dave Barach
c54162981c dhcp: fix unicast pkts, clean up state machine
Send dhcp unicast packets to ip4-lookup. Otherwise, these packets
won't reach a dhcp server on a different subnet.

Do an immediate client scan after processing wakeup events.

Calculate the next process wakeup time by scanning all
clients.

Increase maximum (idle, no-clients-configured) timeout to 1000
seconds.

Reduce log spew.

Type: fix
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I3d10cd4c353298ed0b19e7e30887dc1d8d07b19e
2020-04-13 14:51:18 +00:00
Dave Barach
954c707972 misc: check return values from vlib_buffer_copy(...)
vlib_buffer_copy(...) returns NULL if the system is temporarily out of
buffers.

This is NOT correct. Please don't be this person:

   c0 = vlib_buffer_copy (vm, p0);
   ci0 = vlib_get_buffer_index (vm, c0);

Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ic25ef58965871ea5d2b40904df9506803f69e47e
2020-04-08 16:29:44 +00:00
Dave Barach
3e07a4a1e8 misc: sprintf be gone
Along with related static analysis warnings...

Type: fix
Ticket: VPP-1837
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I2c6949c7a2250b8f76a63508c7c210daecfe0f91
2020-04-04 10:14:06 -04:00
Dave Barach
d1586962a5 dhcp: update secondary radv_info structures
For details, see the Jira ticket below. Fix gerrit 23350.

Type: fix
Fixes: 28a6eb7
Ticket: VPP-1840

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ic9248734bb330eadb302f8410e8db9c64723f075
2020-02-21 09:52:42 +00:00
Dave Barach
f31acfafb2 dhcp: disable extraneous vlib_log spew
When there are no dhcp client interfaces configured, it's not
useful to make periodic / timeout log entries.

Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I16b68fe15ad9de789e49ad1b782b3b0e536bad60
2020-01-28 17:05:58 -05: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
Paul Vinciguerra
336bccdfe6 dhcp: client use local logger
Type: fix

Change-Id: I8383e04d01e0001c1cba176d2148b2c4c74e397a
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-12-17 18:37:18 +00:00
Neale Ranns
cbe25aab3b 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>
2019-12-17 10:56:20 +00:00
snaramre
5d4b8912d2 tests: changes for scapy 2.4.3 migration
Type: fix
Change-Id: I7e041b666dabd90df23a920a1f1d99db4c10ddfe
Signed-off-by: snaramre <snaramre@cisco.com>
2019-12-14 22:14:12 +00:00
Dave Barach
39d69112fc api: multiple connections per process
Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I2272521d6e69edcd385ef684af6dd4eea5eaa953
2019-12-10 01:13:05 +00:00
Jerome Tollet
ce43569d43 dhcp: add FEATURE.yaml for the DHCP plugin
Type: docs

Signed-off-by: Jerome Tollet <jtollet@cisco.com>
Change-Id: Ia2b892e550d391d421d9980d736768c918955cb6
2019-11-30 17:24:42 +00:00
Alexander Chernavin
d3b8c861a4 nat: fix dhcp client on outside interface with output feature
When a DHCP client is configured on a NAT outside interface with
output feature enabled, DHCP packets will reach the NAT in2out-output
node and will be dropped with "out of ports" reason.

With this commit, allow locally originated DHCP packets to be sent
from a NAT outside interface with output feature enabled.

Type: fix

Change-Id: I47d76b22587f2bf0c7b0b9dfda41c89f8f61d0b4
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
2019-11-27 10:57:30 +00:00
Dave Barach
211b9f6ad3 dhcp: option 61 add missing type field
Apparently some dhcp servers care about it. Also fixed the unit-test.

Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: If0af70d624f4122b0339f20f84be047053776fe8
2019-11-13 17:13:26 -05:00
Dave Barach
d318a996b7 dhcp: ipv6 prefix delegation improvements
Autoconfigure router advertisements for delegated prefixes.

Clean up a longstanding issue. If vpp receives a dhcpv6 renew reply,
do NOT reset per-delegated-prefix timers. That prevented vpp from
sending a solicit to renew the delegation on time. That, in turn
caused the RA code to send advertisements with valid_time =
preferred_time = 0.  That causes almost any downstream client to throw
away its delegated address.

Miscellaneous changes

o src/vnet/ip/ip6_neighbor.c - always memset elements allocated from pools
  to zero. DGMS.
o Remove debug spew from the ipv6 connection-tracker plugin

Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I428feccdc47efdc413898600e0d62916928a6eb7
2019-11-10 15:54:28 -05:00
Dave Barach
20b962d3e4 dhcp: fix dhcpv6 client and dhcpv6 prefix delegation
Keep trying even if the interface in question is not "admin-up,
link-up." In real life, it's normal for link autonegotiation to take a
good fraction of a second. The driver layer takes care of packets sent
to an interface which can't transmit at the moment.

Renew address leases at the preferred renewal time, not at the
expiration time.

Type: fix

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I68ec1c52cc1f4a8aa256185820748b845e92f7c1
2019-11-09 17:28:14 +00:00
Renato Botelho do Couto
ead1e536d6 misc: Fix python scripts shebang line
Type: fix

Since CentOS 8, RPM build script doesn't accept '#!/usr/bin/env python'
as a valid shebang line.  It requires scripts to explicitly chose
between python2 or python3.

Change all to use python3 as suggested by Paul Vinciguerra.

Depends-On: https://gerrit.fd.io/r/23170

Signed-off-by: Renato Botelho do Couto <renato@netgate.com>
Change-Id: Ie72af9f60fd0609e07f05b70f8d96e738b2754d1
2019-11-05 21:08:59 +00:00
Benoît Ganne
60ad1a59a3 dhcp: fix proxy dhcpv6 size check
Type: fix

Change-Id: Ibbb25bc530fdeaa3083c9b833a286a5d40e93c1e
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-10-31 22:46:58 +00:00
Aleksander Djuric
00217cb192 dhcp: allocate memory for dns
Type: fix

Signed-off-by: Aleksander Djuric <aleksander.djuric@gmail.com>
Change-Id: I56375d5d53eb07d80c1b12513798317f60c81a6d
Signed-off-by: Aleksander Djuric <aleksander.djuric@gmail.com>
2019-10-30 14:46:03 +00:00
Neale Ranns
6bcc6a4557 dhcp: fix crash on unicast renewal send
Type: fix

- when the addresses were learnt a copy of the client was sent to the
main thread, this meant the unicast adjacecny was saved on the copy
not on the original.
- Add logging.
- Improve the proxy-node that hands the clint packets so the DHCP
packets are traced.
 - allow a renewal to configure new address data

Change-Id: I6ab0afcccbc4a1cdefdd1b8beeda8fc7ba20ec1f
Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-10-25 17:56:06 +00:00
Ole Troan
12966a7a0a dhcp: python3 support in tests
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ie136c1e94e5c25f9547fc2d6d45ce8e1630a035c
2019-10-21 10:02:01 +00:00
Jakub Grajciar
d5262831a3 dhcp: dhcp6_pd_client_cp API cleanup
Use consistent API types.

Type: fix

Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: If6c102a53d074cba7eca6b6af9855aa4486f38cc
2019-10-09 13:52:32 +02:00
Ole Troan
b126ebcf42 api: autogenerate event handler functions for *_test.c
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: If75f63244f37ae3312832ca015f738c51ee7da1f
Signed-off-by: Ole Troan <ot@cisco.com>
2019-10-09 07:52:51 +00:00