mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-10 04:45:46 +00:00
So far there was no generalized way how to handle negotiation of "my options" (those sent with Conf-Req packet to peer). Peer response for proposed options and their values were not tracked in any way, so rejected (by peer) options were sent over and over again in subsequent Conf-Req packets. In case of IPCP it means that all sent options such as IP_ADDRESS, DNS1, DNS2 were mandatory for being supported by peer in order to successfully finish negotiation. For example if 'pppd' was the configured peer (e.g. when using with QEMU and net-tools scripts), without ms-dns being configured (which is the default), then "my options" negotiation failed. Introduce generalized mechanism for negotiating "my options", so it is easier to maintain current set of supported options and easily add new options to the implementation in future. FSM instance inititialization function can provide information about supported "my options". Information is is passed as a table of 'struct ppp_my_option_info' containing: * option code (type), * callback for adding option to Conf-Req packet, * callback for received Conf-Ack with that option, * callback for received Conf-Nak with that option. Store also runtime information about each negotiated option. First of all remember which options have been rejected, so they are not sent to peer once again in the next Conf-Req packet. This will solve issue with IPCP negotiation when peer doesn't support DNS1 or DNS2 options. Keep also track about which options have been acked, so such information can be verified before bringing FSM instance up. Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> |
||
---|---|---|
.. | ||
app_memory | ||
arch | ||
audio | ||
bluetooth | ||
canbus | ||
cmsis_rtos_v1 | ||
cmsis_rtos_v2 | ||
console | ||
crypto | ||
data | ||
debug | ||
devicetree | ||
dfu | ||
disk | ||
display | ||
drivers | ||
dt-bindings | ||
fs | ||
linker | ||
logging | ||
mgmt | ||
net | ||
posix | ||
power | ||
random | ||
settings | ||
shell | ||
stats | ||
storage | ||
sys | ||
toolchain | ||
tracing | ||
usb | ||
zephyr | ||
cache.h | ||
device.h | ||
devicetree.h | ||
exc_handle.h | ||
fatal.h | ||
generated_dts_board.h | ||
init.h | ||
irq_nextlevel.h | ||
irq_offload.h | ||
irq.h | ||
kernel_includes.h | ||
kernel_structs.h | ||
kernel_version.h | ||
kernel.h | ||
mempool_heap.h | ||
mempool_sys.h | ||
ptp_clock.h | ||
sched_priq.h | ||
shared_irq.h | ||
spinlock.h | ||
sw_isr_table.h | ||
sys_clock.h | ||
syscall_handler.h | ||
syscall.h | ||
timeout_q.h | ||
toolchain.h | ||
wait_q.h | ||
zephyr.h |