Make internet PCB connect more consistent.
authorbluhm <bluhm@openbsd.org>
Fri, 1 Dec 2023 14:08:03 +0000 (14:08 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 1 Dec 2023 14:08:03 +0000 (14:08 +0000)
commitcff23a6b16962577314a62a2c3229aba06fe95e3
tree9c417d7d7bccb519002d1a494dcdd2cd4251f73c
parentc37ccfbb7114364f8fda34077d96edd992ec9ad9
Make internet PCB connect more consistent.

The public interface is in_pcbconnect().  It dispatches to
in6_pcbconnect() if necessary.  Call the former from tcp_connect()
and udp_connect().
In in6_pcbconnect() initialization in6a = NULL is not necessary.
in6_pcbselsrc() sets the pointer, but does not read the value.
Pass a constant in6_addr pointer to in6_pcbselsrc() and in6_selectsrc().
It returns a reference to the address of some internal data structure.
We want to be sure that in6_addr is not modified this way.  IPv4
in_pcbselsrc() solves this by passing a copy of the address.

OK kn@ sashan@ mvs@
sys/netinet/tcp_usrreq.c
sys/netinet/udp_usrreq.c
sys/netinet6/in6_pcb.c
sys/netinet6/in6_src.c
sys/netinet6/ip6_var.h
sys/netinet6/raw_ip6.c
sys/netinet6/udp6_output.c