Home | History | Annotate | Download | only in netinet
History log of /src/sys/netinet/sctp_output.c
RevisionDateAuthorComments
 1.39  12-Jun-2025  ozaki-r sctp: follow the recent change of ip_newid()
 1.38  14-Apr-2025  andvar fix few typos in comments and update link to Printer Device Class spec.
 1.37  08-Sep-2024  rillig fix a/an grammar in obvious cases
 1.36  05-Jul-2024  rin sys: Drop redundant NULL check before m_freem(9)

m_freem(9) safely has accepted NULL argument at least since 4.2BSD:
https://www.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/sys/uipc_mbuf.c

Compile-tested on amd64/ALL.

Suggested by knakahara@
 1.35  09-Feb-2024  andvar branches: 1.35.2;
fix spelling mistakes, mainly in comments and log messages.
 1.34  13-Sep-2023  bouyer handle EHOSTDOWN the same way as EHOSTUNREACH in sctp_med_chunk_output().
Compile-tested only (I don't have a sctp setup); proposed in
http://mail-index.netbsd.org/tech-net/2023/09/11/msg008611.html
LGTM from Greg Troxel and Robert Swindells
 1.33  04-Nov-2022  ozaki-r branches: 1.33.2;
inpcb: rename functions to in6pcb_*
 1.32  28-Oct-2022  ozaki-r Adjust dccp and sctp for struct inpcb separation
 1.31  31-May-2022  andvar fix various typos in comments, documentation and messages.
 1.30  28-May-2022  andvar fix various typos, mainly in comments.
 1.29  08-Apr-2022  andvar fix various typos, mainly in comments, but also log messages, docs, game text.
 1.28  05-Dec-2021  msaitoh s/futher/further/ in comment.
 1.27  05-Dec-2021  msaitoh s/measurment/measurement/ in comment.
 1.26  21-Oct-2021  andvar fix various typos, mainly in comments, but also in man pages and log messages.
 1.25  07-Sep-2021  andvar s/aquire/acquire/ in comments, also one typo fix acqure->acquire.
 1.24  03-Sep-2021  andvar fix typos in comments, mainly s/extention/extension/ and s/sufficent/sufficient/
 1.23  24-Jul-2021  andvar Fix all remaining typos, mainly in comments but also in few definitions and log messages, reported by me in PR kern/54889.
Also fixed some additional typos in comments, found on review of same files or typos.
 1.22  13-Jun-2020  roy branches: 1.22.6;
SCTP: Use ifp->if_mtu rather than ND_IFINFO(ifp)->linkmtu
 1.21  26-Dec-2019  msaitoh Fix typo in comment.
 1.20  03-Dec-2019  msaitoh s/upate/update/ in comment.
 1.19  13-Nov-2019  ozaki-r Get rid of unnecessary NULL checks for rt_ifa and ifa_ifp

They are always non-NULL nowadays.
 1.18  22-Dec-2018  maxv Replace M_ALIGN and MH_ALIGN by m_align.
 1.17  16-Sep-2018  skrll interrupt has two 'r's

fix another typo while I'm here (flsah)
 1.16  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.15  03-May-2018  maxv branches: 1.15.2;
Remove m_copy completely.
 1.14  01-May-2018  maxv Remove now unused net_osdep.h includes, the other BSDs did the same.
 1.13  30-Mar-2018  maya correct typo: and and -> and (comments only)

heads up on this being a common typo from chris28.
 1.12  10-Dec-2017  rjs branches: 1.12.2;
Improve compliance to RFC 6458.
 1.11  27-Jun-2017  rjs branches: 1.11.4;
Use host byte order for a debug message.
 1.10  03-Mar-2017  ozaki-r Pass inpcb/in6pcb instead of socket to ip_output/ip6_output

- Passing a socket to Layer 3 is layer violation and even unnecessary
- The change makes codes of callers and IPsec a bit simple
 1.9  23-Dec-2016  maya branches: 1.9.2;
Remove extraneous parentheses. no functional change

Appeases clang
 1.8  08-Dec-2016  ozaki-r Add rtcache_unref to release points of rtentry stemming from rtcache

In the MP-safe world, a rtentry stemming from a rtcache can be freed at any
points. So we need to protect rtentries somehow say by reference couting or
passive references. Regardless of the method, we need to call some release
function of a rtentry after using it.

The change adds a new function rtcache_unref to release a rtentry. At this
point, this function does nothing because for now we don't add a reference
to a rtentry when we get one from a rtcache. We will add something useful
in a further commit.

This change is a part of changes for MP-safe routing table. It is separated
to avoid one big change that makes difficult to debug by bisecting.
 1.7  07-Jul-2016  ozaki-r branches: 1.7.2;
Switch the address list of intefaces to pslist(9)

As usual, we leave the old list to avoid breaking kvm(3) users.
 1.6  10-Jun-2016  ozaki-r Avoid storing a pointer of an interface in a mbuf

Having a pointer of an interface in a mbuf isn't safe if we remove big
kernel locks; an interface object (ifnet) can be destroyed anytime in any
packet processing and accessing such object via a pointer is racy. Instead
we have to get an object from the interface collection (ifindex2ifnet) via
an interface index (if_index) that is stored to a mbuf instead of an
pointer.

The change provides two APIs: m_{get,put}_rcvif_psref that use psref(9)
for sleep-able critical sections and m_{get,put}_rcvif that use
pserialize(9) for other critical sections. The change also adds another
API called m_get_rcvif_NOMPSAFE, that is NOT MP-safe and for transition
moratorium, i.e., it is intended to be used for places where are not
planned to be MP-ified soon.

The change adds some overhead due to psref to performance sensitive paths,
however the overhead is not serious, 2% down at worst.

Proposed on tech-kern and tech-net.
 1.5  10-Jun-2016  ozaki-r Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.4  12-May-2016  ozaki-r Protect ifnet list with psz and psref

The change ensures that ifnet objects in the ifnet list aren't freed during
list iterations by using pserialize(9) and psref(9).

Note that the change adds a pslist(9) for ifnet but doesn't remove the
original ifnet list (ifnet_list) to avoid breaking kvm(3) users. We
shouldn't use the original list in the kernel anymore.
 1.3  25-Apr-2016  rjs Fix build when IPSEC enabled.
 1.2  03-Apr-2016  mlelstv Replace generic queue macros with IFNET/IFADDR macros.
 1.1  13-Oct-2015  rjs branches: 1.1.2;
Add core networking support for SCTP.
 1.1.2.7  28-Aug-2017  skrll Sync with HEAD
 1.1.2.6  05-Feb-2017  skrll Sync with HEAD
 1.1.2.5  09-Jul-2016  skrll Sync with HEAD
 1.1.2.4  29-May-2016  skrll Sync with HEAD
 1.1.2.3  22-Apr-2016  skrll Sync with HEAD
 1.1.2.2  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1  13-Oct-2015  skrll file sctp_output.c was added on branch nick-nhusb on 2015-12-27 12:10:07 +0000
 1.7.2.2  20-Mar-2017  pgoyette Sync with HEAD
 1.7.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.9.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.11.4.2  03-Dec-2017  jdolecek update from HEAD
 1.11.4.1  27-Jun-2017  jdolecek file sctp_output.c was added on branch tls-maxphys on 2017-12-03 11:39:04 +0000
 1.12.2.6  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.12.2.5  30-Sep-2018  pgoyette Ssync with HEAD
 1.12.2.4  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.12.2.3  21-May-2018  pgoyette Sync with HEAD
 1.12.2.2  02-May-2018  pgoyette Synch with HEAD
 1.12.2.1  07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.15.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.15.2.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.15.2.1  10-Jun-2019  christos Sync with HEAD
 1.22.6.1  01-Aug-2021  thorpej Sync with HEAD.
 1.33.2.2  29-Jul-2025  martin Pull up following revision(s) (requested by ozaki-r in ticket #1140):

sys/netinet/ip_output.c: revision 1.330
sys/netinet/sctp_output.c: revision 1.39
sys/netinet/ip_mroute.c: revision 1.166
sys/netipsec/ipsecif.c: revision 1.24
sys/netipsec/xform_ipip.c: revision 1.80
sys/netinet/ip_output.c: revision 1.327
sys/netinet/ip_output.c: revision 1.328
sys/netinet/ip_input.c: revision 1.406
sys/netinet/ip_output.c: revision 1.329
sys/netinet/in_var.h: revision 1.105

in: get rid of unused argument from ip_newid() and ip_newid_range()

in: take a reference of ifp on IP_ROUTETOIF
The ifp could be released after ia4_release(ia).

in: narrow the scope of ifa in ip_output (NFC)

sctp: follow the recent change of ip_newid()

in: avoid racy ifa_acquire(rt->rt_ifa) in ip_output()
If a rtentry is being destroyed asynchronously, ifa referenced by rt_ifa
can be destructed and taking ifa_acquire(rt->rt_ifa) aborts with a
KASSERT failure. Fortunately, the ifa is not actually freed because of
a reference by rt_ifa, it can be available (except some functions like
psref) so as long the rtentry is held.
PR kern/59527

in: avoid racy ia4_acquire(ifatoia(rt->rt_ifa) in ip_rtaddr()
Same as the case of ip_output(), it's racy and should be avoided.
PR kern/59527
 1.33.2.1  13-Sep-2024  martin Pull up following revision(s) (requested by rin in ticket #863):

sys/netinet/sctp_output.c: revision 1.34

handle EHOSTDOWN the same way as EHOSTUNREACH in sctp_med_chunk_output().

Compile-tested only (I don't have a sctp setup); proposed in
http://mail-index.netbsd.org/tech-net/2023/09/11/msg008611.html

LGTM from Greg Troxel and Robert Swindells
 1.35.2.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed