Drop this redundant check that was likely meant to be checking that Z
field is zero but in the case of reception the RFC says it MUST be
ignored anyway.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
add timestamping on Tx to packets marked for timestamping
add timestamping on Rx to all packets for later use
fix race condidition on adding timestamp when sending delay_req
Signed-off-by: Adib Taraben <theadib@gmail.com>
Allow network shell DNS module to verify that the DNS SD
record is a valid one. Currently this is not exposed to
applications.
Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
In high throughput tests it's fairly easy to overflow the current 32-bit
byte counters in net statistics (it's just over 4 GB of data).
Therefore, make the byte counters 64-bit to prevent overflows.
Rearrange some fields to avoid padding.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
net_stats_t type is an unsigned type, therefore %u should be used
instead of %d when printing values of this type, otherwise negative
values will be printer if INT32_MAX is exceeded.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Add new socket offloading functions, allowing to enable/disable
offloaded DNS implementation at runtime. This may be useful if there is
a mix of offloaded/native network interfaces in the system, so the
application can choose which DNS backend to use.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Add a new "if_name" pointer to the transport configuration structure,
allowing the application to bind MQTT client to a specific network
interface.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
remove phy related configs from eth config.
phy related configs chould go directly into the phy.
Most ethernet drivers didn't support the now removed
functions yet. Users should instead use `phy_configure_link()`
together with the `net_eth_get_phy()` function.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
Add this to set link speed through net_shell.
Current zephyr version doesn't have user interface to change
speed, hence adding this to accomodate it. Full duplex will
be set by default for each link speed.
Able to change link speed using command below:
net iface set_link <iface idx> <speed> <optional:h(half)/f(full)>
eg: net iface set_link 1 100 h
net iface set_link 1 10 f
net iface set_link 1 1000
Able to set multiple link speed like below:
net iface set_link <iface idx> <speed1> <speed2> <optional:h/f>
eg: net iface set_link 1 10 100 h
net iface set_link 1 1000 f 10
Signed-off-by: Ling Pei Lee <pei.lee.ling@intel.com>
Also allow `gethostname` to be compiled in, even when the socket offloading
option is selected.
Signed-off-by: Cla Mattia Galliard <cla-mattia.galliard@zuehlke.com>
Add support for skipping UDP upload server report, useful in test TX
only with loopback (packets are dropped, so, no report).
Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
The send_queue was used as SYN/FIN packet retransmission. Before
the SYN/FIN being ACKed and dequeue-ed, the following packets in
the send_queue cannot be sent out. That's why Zephyr had to send
a FIN+ACK instead of a duplicated ACK-only in FINWAIT1, CLOSING.
In fact, we can take SYN/FIN as kind of data and use the same
send_data_timer for retransmission, like other OSes do. This way,
the send_queue is simply used for local traffics.
Benefits (in theory):
1. The code is easier,
2. TxPkt performance is better after skipping enq/deq send_queue,
3. The struct tcp{} node is a few bytes smaller, saving memory.
Signed-off-by: Shrek Wang <inet_eman@outlook.com>
If we're parsing a CoAP request with an observe option of '1', but there is
no matching observer, return an error instead of returning a zero.
Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
"udp bind" and "udp send" commands use the same net context
variable and they fail early if the context is already used.
This prevents from using "udp send" after "udp bind", which
makes the commands hard to use for testing bidirectional
communication. Make "udp send" reuse the already bound
context if possible, and resort to allocating temporary one
otherwise.
Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
Update the response callback function signature to allow the callback to
return an error code, which in turn will cause the HTTP client to abort
the download.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
The return value can only be -1, errno value should be verified instead
for the actual error code.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Add new TLS socket option, TLS_CERT_VERIFY_CALLBACK, which allows to
register an application callback to verify certificates obtained during
the TLS handshake.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Add new TLS socket option, TLS_CERT_VERIFY_RESULT, to obtain the
certificate verification result from the most recent handshake on the
socket. The option works if TLS_PEER_VERIFY_OPTIONAL was set on the
socket, in which case the handshake may succeed even if certificate
verification fails.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Fix regression introduced by #88747 that breaks linking
with zperf server enabled but TCP or UDP disabled.
Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
https://github.com/zephyrproject-rtos/zephyr/actions/runs/\
15014534061/job/42189411225
We were seeing a linker error of the form
```
picolibc/x86_64-zephyr-elf/lib/32/libc.a(libc_time_time.c.o): \
in function `time':
time.c:(.text.time+0x11): undefined reference to `gettimeofday'
```
Update the dependency from CONFIG_POSIX_TIMERS to
CONFIG_XSI_SINGLE_PROCESS for gettimeofday().
Note: this is really only a workaround. The proper solution would
be to have libc functions not depend on POSIX functions.
Specifically, here
https://github.com/zephyrproject-rtos/picolibc/blob/\
51a8b32857e75345c37652a80b5cda98b28d69e5/newlib/libc/time/\
time.c#L54
and here
https://github.com/zephyrproject-rtos/zephyr/blob/\
3a4e12899c2ae5962a64055f4739f774fb7262e5/lib/libc/common/\
source/time/time.c#L17
Also mentioned in #89068
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Validate that the file descriptor is not a negative number before
writing to the `dispatch_table` `ctx` field. Setting file descriptors
to `-1` is the standard "not in use" value, and in fact the entire array
of `fds` is set to this value in `dns_resolve_init_locked`. This
resolves memory corruption of whichever variable is unfortunate to exist
just before `dispatch_table` in memory.
Signed-off-by: Jordan Yates <jordan@embeint.com>
Keep Alive timeout is represented by 2-byte unsigned integer, however
the corresponding Kconfig option was limited to UINT8_MAX only.
Also, similarly to regular MQTT, allow to disable the Keep Alive
functionality by specifying the Keep Alive value to 0.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Turn the MBEDTLS_RSA_FULL selects into depends on.
This is how the other MBEDTLS_KEY_EXCHANGE_* Kconfig options are defined.
This is done to avoid circular dependencies.
At the same time update uses of the affected MBEDTLS_KEY_EXCHANGE_*
Kconfig options to enable/disable the dependencies which used to be
automatically handled.
Signed-off-by: Tomi Fontanilles <tomi.fontanilles@nordicsemi.no>
After the PR #85000 the calculation of NUM field of
Block 1 option on CoAP Ack packet started to advance
to next packet block.
We should not update the ctx->current field because it is
used for calculating the NUM field in response packet.
It should point to beginning of the payload,
so the response is correct.
Leshan server don't seem to care about this, but Coiote does.
Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
There was wrong implementation in pkt frag removing and inserting.
This was causing infinite loop in either net_buf_frag_last or
net_pkt_get_len. This happened only when the pkt frag removing
and inserting was executed too fast after sending pkt before
ethernet_send calling net_pkt_get_len.
Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Add option to use the connection manager to
schedule a (re-) sync on connection and diabeling the
work, when there is no connection.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
Use connection manager to deactivate and activate
net log backend.
This removes the warnings about dropped packages
completly.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
Avoid early enabling of the syslog backend in
the the dhcpv4 options parser.
When CONFIG_NET_IPV4_ACD is enabled, the assigned ip address has
not been checked, when the other dhcpv4 options are parsed, this would
lead to the syslog backend being enabled before the src ip address
is valid, so we get lots of warnings about dropd packets, this fixes
it at least on start. We will still get the warnings, when the iface
goes down and then up later.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
Use zsock_inet_ntop() instead of inet_ntop() to avoid dependency to the
POSIX subsystem in the library.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
The result of the transport init() function should be propagated to the
application, otherwise the initialization could fail silently.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
UDP transport for the MQTT SN libraries depends on IGMP/MLD APIs
unconditionally (via respective setsockopt calls) and without them being
enabled transport initialization would fail. Therefore, ensure
respective multicast libraries are always enabled if MQTT SN UDP
transport is used.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
According to RFC 2131, DHCP clients should use the same xid as
received in the Offer message when sending DHCP Requests. Therefore,
when generating DHCP Request message, the xid value should not be
incremented.
One vague topic is whether the xid value should be updated when
sending Requests from Renewing or Rebinding states, however RFC makes no
exception for those states, and other implementations (dhclient, lwip)
seem to reuse the same xid in such cases, so comply with this behavior.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Pad option (option code 0) can be present in between other options for
alignment. The option has a fixed 1-byte length (i. e. no length field),
therefore it did not fall under the common processing code for
unrecognized options (which include the length field at the second
byte). Therefore, not processing this option explicitly could disturb
other options processing, as the parser would wrongly interpret the next
option code as the length field. This commit adds Pad option handling to
fix the issue.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
In case the received DHCP message is malformed and contains invalid
message type, the code responsible for matching message type with a
string would assert. This shouldn't be the case that external conditions
(like receiving malformed packet) trigger asserts in the system.
Therefore modify that code, to return "invalid" string in such case
instead.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Response "data_len" field needs to be set with the size of the
received data before calling the parser as it's used inside the on_body
callback, this commit fixes it.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Current clock synchronization was always stepping clock. This was
causing large offset, and discontiguous ptp hardware clock time.
For TSN hardware, discontiguous ptp hardware clock time was not
able to be used for other TSN protocols.
This patch is to convert to frequency adjustment with a basic
PI control algorithm.
Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
At the starting of ptp syncrhonization, there may be not Sync frame
TX/RX timestamps in first time link delay calculation.
So, need a check for that in case of wrong link delay calculated.
Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Doing another init of the log_backend_net in
the net config init could lead to the
server, set during runtime, being overwritten
by the Kconfig default.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
In case HTTP client read out more data from a socket that it processed
it will indicate there is leftover data in the receive buffer available.
Make use of it at the websocket level, so that no data is lost. As we
reuse the same receive buffer in this case, it's only needed to update
the count variable to indicate how many bytes are available.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
The HTTP client would read data from a socket up to the size of the
receiving buffer, however it may not process them all. This is usually
only the case if protocol switching takes place, where the data read may
belong to another protocol. Therefore we need a way to notify the caller
about any potential data that is already present in the buffer and needs
to be processed.
Introduce an new data_len member in struct http_request to provide the
information about the data already available in the receive buffer. If,
after HTTP response processing, the value is non-zero, the data will be
available in the beginning of the user provided receive buffer.
To make this possible however, we need to track how many bytes were
actually processed by the http_parser, therefore the code will no longer
ignore the http_parser_execute() return value. To simplify processing,
it's also been changed how the receive buffer is used. Instead of using
it in a ring-buffer-like way, the offset variable will track how many
bytes are available in the buffer, and in the rare occasions when not
all data from the buffer was processed by the HTTP parser, we'll
memmomve the remaining data to the beginning of the buffer.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
In order to be able to receive packets on unbound packet sockets (which
should collect packet from all interfaces in such case), it's needed to
register receive callback at the socket layer as soon as the socket is
created.
In additional to that, the default binding for packet sockets need to be
revisited. Packet socket should not be bound to the default interface,
as this way the socket would only be receiving packets from that
particular interface. Instead, leave the interface unspecified in such
case.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>