svn commit: r231456 - in stable/8: . contrib/bsnmp/snmpd
contrib/top contrib/xz gnu/usr.bin lib lib/libc/net
lib/liblzma lib/librtld_db lib/libusb
release/picobsd/floppy.tree/sbin sbin/geom/class/s...
Michael Tuexen
tuexen at FreeBSD.org
Fri Feb 10 22:42:04 UTC 2012
Author: tuexen
Date: Fri Feb 10 22:42:03 2012
New Revision: 231456
URL: http://svn.freebsd.org/changeset/base/231456
Log:
MFC r224641:
The result of a joint work between rrs@ and myself at the IETF:
* Decouple the path supervision using a separate HB timer per path.
* Add support for potentially failed state.
* Bring back RTO.min to 1 second.
* Accept packets on IP-addresses already announced via an ASCONF
* While there: do some cleanups.
Modified:
stable/8/lib/libc/net/sctp_sys_calls.c
stable/8/sys/netinet/sctp.h
stable/8/sys/netinet/sctp_asconf.c
stable/8/sys/netinet/sctp_cc_functions.c
stable/8/sys/netinet/sctp_constants.h
stable/8/sys/netinet/sctp_header.h
stable/8/sys/netinet/sctp_indata.c
stable/8/sys/netinet/sctp_input.c
stable/8/sys/netinet/sctp_output.c
stable/8/sys/netinet/sctp_output.h
stable/8/sys/netinet/sctp_pcb.c
stable/8/sys/netinet/sctp_pcb.h
stable/8/sys/netinet/sctp_structs.h
stable/8/sys/netinet/sctp_sysctl.c
stable/8/sys/netinet/sctp_sysctl.h
stable/8/sys/netinet/sctp_timer.c
stable/8/sys/netinet/sctp_timer.h
stable/8/sys/netinet/sctp_uio.h
stable/8/sys/netinet/sctp_usrreq.c
stable/8/sys/netinet/sctp_var.h
stable/8/sys/netinet/sctputil.c
stable/8/sys/netinet6/sctp6_usrreq.c
Directory Properties:
stable/8/ (props changed)
stable/8/COPYRIGHT (props changed)
stable/8/LOCKS (props changed)
stable/8/MAINTAINERS (props changed)
stable/8/Makefile (props changed)
stable/8/Makefile.inc1 (props changed)
stable/8/ObsoleteFiles.inc (props changed)
stable/8/README (props changed)
stable/8/UPDATING (props changed)
stable/8/bin/ (props changed)
stable/8/bin/chio/ (props changed)
stable/8/bin/chmod/ (props changed)
stable/8/bin/cp/ (props changed)
stable/8/bin/csh/ (props changed)
stable/8/bin/date/ (props changed)
stable/8/bin/df/ (props changed)
stable/8/bin/echo/ (props changed)
stable/8/bin/ed/ (props changed)
stable/8/bin/expr/ (props changed)
stable/8/bin/getfacl/ (props changed)
stable/8/bin/kenv/ (props changed)
stable/8/bin/kill/ (props changed)
stable/8/bin/ln/ (props changed)
stable/8/bin/ls/ (props changed)
stable/8/bin/mv/ (props changed)
stable/8/bin/pax/ (props changed)
stable/8/bin/pkill/ (props changed)
stable/8/bin/ps/ (props changed)
stable/8/bin/pwait/ (props changed)
stable/8/bin/setfacl/ (props changed)
stable/8/bin/sh/ (props changed)
stable/8/bin/sleep/ (props changed)
stable/8/bin/stty/ (props changed)
stable/8/bin/test/ (props changed)
stable/8/cddl/ (props changed)
stable/8/cddl/compat/opensolaris/ (props changed)
stable/8/cddl/contrib/dtracetoolkit/ (props changed)
stable/8/cddl/contrib/opensolaris/ (props changed)
stable/8/cddl/lib/ (props changed)
stable/8/cddl/lib/libnvpair/ (props changed)
stable/8/cddl/lib/libzpool/ (props changed)
stable/8/cddl/sbin/ (props changed)
stable/8/cddl/usr.bin/ (props changed)
stable/8/cddl/usr.sbin/ (props changed)
stable/8/contrib/ (props changed)
stable/8/contrib/amd/ (props changed)
stable/8/contrib/bc/ (props changed)
stable/8/contrib/bind9/ (props changed)
stable/8/contrib/binutils/ (props changed)
stable/8/contrib/bsnmp/ (props changed)
stable/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed)
stable/8/contrib/bzip2/ (props changed)
stable/8/contrib/com_err/ (props changed)
stable/8/contrib/cvs/ (props changed)
stable/8/contrib/diff/ (props changed)
stable/8/contrib/ee/ (props changed)
stable/8/contrib/expat/ (props changed)
stable/8/contrib/file/ (props changed)
stable/8/contrib/gcc/ (props changed)
stable/8/contrib/gcclibs/ (props changed)
stable/8/contrib/gdb/ (props changed)
stable/8/contrib/gdtoa/ (props changed)
stable/8/contrib/gnu-sort/ (props changed)
stable/8/contrib/gperf/ (props changed)
stable/8/contrib/groff/ (props changed)
stable/8/contrib/ipfilter/ (props changed)
stable/8/contrib/less/ (props changed)
stable/8/contrib/libarchive/ (props changed)
stable/8/contrib/libarchive/cpio/ (props changed)
stable/8/contrib/libarchive/libarchive/ (props changed)
stable/8/contrib/libarchive/libarchive_fe/ (props changed)
stable/8/contrib/libarchive/tar/ (props changed)
stable/8/contrib/libbegemot/ (props changed)
stable/8/contrib/libf2c/ (props changed)
stable/8/contrib/libobjc/ (props changed)
stable/8/contrib/libpcap/ (props changed)
stable/8/contrib/libreadline/ (props changed)
stable/8/contrib/libstdc++/ (props changed)
stable/8/contrib/lukemftp/ (props changed)
stable/8/contrib/lukemftpd/ (props changed)
stable/8/contrib/ncurses/ (props changed)
stable/8/contrib/netcat/ (props changed)
stable/8/contrib/ngatm/ (props changed)
stable/8/contrib/ntp/ (props changed)
stable/8/contrib/nvi/ (props changed)
stable/8/contrib/openbsm/ (props changed)
stable/8/contrib/openpam/ (props changed)
stable/8/contrib/opie/ (props changed)
stable/8/contrib/pam_modules/ (props changed)
stable/8/contrib/pf/ (props changed)
stable/8/contrib/pnpinfo/ (props changed)
stable/8/contrib/sendmail/ (props changed)
stable/8/contrib/smbfs/ (props changed)
stable/8/contrib/tcp_wrappers/ (props changed)
stable/8/contrib/tcpdump/ (props changed)
stable/8/contrib/tcsh/ (props changed)
stable/8/contrib/telnet/ (props changed)
stable/8/contrib/texinfo/ (props changed)
stable/8/contrib/top/ (props changed)
stable/8/contrib/top/install-sh (props changed)
stable/8/contrib/traceroute/ (props changed)
stable/8/contrib/wpa/ (props changed)
stable/8/contrib/xz/ (props changed)
stable/8/contrib/xz/AUTHORS (props changed)
stable/8/contrib/xz/COPYING (props changed)
stable/8/contrib/xz/ChangeLog (props changed)
stable/8/contrib/xz/FREEBSD-Xlist (props changed)
stable/8/contrib/xz/FREEBSD-upgrade (props changed)
stable/8/contrib/xz/README (props changed)
stable/8/contrib/xz/THANKS (props changed)
stable/8/contrib/xz/TODO (props changed)
stable/8/contrib/xz/po/ (props changed)
stable/8/contrib/xz/src/ (props changed)
stable/8/crypto/ (props changed)
stable/8/crypto/heimdal/ (props changed)
stable/8/crypto/openssh/ (props changed)
stable/8/etc/ (props changed)
stable/8/games/ (props changed)
stable/8/games/factor/ (props changed)
stable/8/games/fortune/ (props changed)
stable/8/games/grdc/ (props changed)
stable/8/games/pom/ (props changed)
stable/8/gnu/ (props changed)
stable/8/gnu/lib/csu/ (props changed)
stable/8/gnu/lib/libgcc/ (props changed)
stable/8/gnu/lib/libstdc++/ (props changed)
stable/8/gnu/usr.bin/ (props changed)
stable/8/gnu/usr.bin/Makefile (props changed)
stable/8/gnu/usr.bin/binutils/ld/ (props changed)
stable/8/gnu/usr.bin/cc/cc_tools/ (props changed)
stable/8/gnu/usr.bin/cc/include/ (props changed)
stable/8/gnu/usr.bin/dialog/ (props changed)
stable/8/gnu/usr.bin/gdb/ (props changed)
stable/8/gnu/usr.bin/gdb/arch/sparc64/ (props changed)
stable/8/gnu/usr.bin/gdb/kgdb/ (props changed)
stable/8/gnu/usr.bin/gperf/ (props changed)
stable/8/gnu/usr.bin/groff/ (props changed)
stable/8/gnu/usr.bin/patch/ (props changed)
stable/8/include/ (props changed)
stable/8/kerberos5/ (props changed)
stable/8/kerberos5/lib/libgssapi_krb5/ (props changed)
stable/8/kerberos5/lib/libgssapi_spnego/ (props changed)
stable/8/kerberos5/usr.bin/kdestroy/ (props changed)
stable/8/kerberos5/usr.bin/kpasswd/ (props changed)
stable/8/lib/ (props changed)
stable/8/lib/Makefile (props changed)
stable/8/lib/Makefile.inc (props changed)
stable/8/lib/bind/ (props changed)
stable/8/lib/csu/ (props changed)
stable/8/lib/libalias/ (props changed)
stable/8/lib/libarchive/ (props changed)
stable/8/lib/libauditd/ (props changed)
stable/8/lib/libautofs/ (props changed)
stable/8/lib/libbegemot/ (props changed)
stable/8/lib/libbluetooth/ (props changed)
stable/8/lib/libbsm/ (props changed)
stable/8/lib/libbsnmp/ (props changed)
stable/8/lib/libbz2/ (props changed)
stable/8/lib/libc/ (props changed)
stable/8/lib/libc/stdtime/ (props changed)
stable/8/lib/libc/sys/ (props changed)
stable/8/lib/libc_r/ (props changed)
stable/8/lib/libcalendar/ (props changed)
stable/8/lib/libcam/ (props changed)
stable/8/lib/libcom_err/ (props changed)
stable/8/lib/libcompat/ (props changed)
stable/8/lib/libcrypt/ (props changed)
stable/8/lib/libdevinfo/ (props changed)
stable/8/lib/libdevstat/ (props changed)
stable/8/lib/libdisk/ (props changed)
stable/8/lib/libdwarf/ (props changed)
stable/8/lib/libedit/ (props changed)
stable/8/lib/libelf/ (props changed)
stable/8/lib/libexpat/ (props changed)
stable/8/lib/libfetch/ (props changed)
stable/8/lib/libftpio/ (props changed)
stable/8/lib/libgeom/ (props changed)
stable/8/lib/libgpib/ (props changed)
stable/8/lib/libgssapi/ (props changed)
stable/8/lib/libipsec/ (props changed)
stable/8/lib/libipx/ (props changed)
stable/8/lib/libjail/ (props changed)
stable/8/lib/libkiconv/ (props changed)
stable/8/lib/libkse/ (props changed)
stable/8/lib/libkvm/ (props changed)
stable/8/lib/liblzma/ (props changed)
stable/8/lib/liblzma/Makefile (props changed)
stable/8/lib/liblzma/Symbol.map (props changed)
stable/8/lib/liblzma/Versions.def (props changed)
stable/8/lib/liblzma/config.h (props changed)
stable/8/lib/libmagic/ (props changed)
stable/8/lib/libmd/ (props changed)
stable/8/lib/libmemstat/ (props changed)
stable/8/lib/libmilter/ (props changed)
stable/8/lib/libmp/ (props changed)
stable/8/lib/libncp/ (props changed)
stable/8/lib/libnetgraph/ (props changed)
stable/8/lib/libngatm/ (props changed)
stable/8/lib/libopie/ (props changed)
stable/8/lib/libpam/ (props changed)
stable/8/lib/libpcap/ (props changed)
stable/8/lib/libpmc/ (props changed)
stable/8/lib/libproc/ (props changed)
stable/8/lib/libradius/ (props changed)
stable/8/lib/librpcsec_gss/ (props changed)
stable/8/lib/librpcsvc/ (props changed)
stable/8/lib/librt/ (props changed)
stable/8/lib/librtld_db/ (props changed)
stable/8/lib/librtld_db/Makefile (props changed)
stable/8/lib/librtld_db/librtld_db.3 (props changed)
stable/8/lib/librtld_db/rtld_db.c (props changed)
stable/8/lib/librtld_db/rtld_db.h (props changed)
stable/8/lib/libsbuf/ (props changed)
stable/8/lib/libsdp/ (props changed)
stable/8/lib/libsm/ (props changed)
stable/8/lib/libsmb/ (props changed)
stable/8/lib/libsmdb/ (props changed)
stable/8/lib/libsmutil/ (props changed)
stable/8/lib/libstand/ (props changed)
stable/8/lib/libtacplus/ (props changed)
stable/8/lib/libtelnet/ (props changed)
stable/8/lib/libthr/ (props changed)
stable/8/lib/libthread_db/ (props changed)
stable/8/lib/libufs/ (props changed)
stable/8/lib/libugidfw/ (props changed)
stable/8/lib/libusb/ (props changed)
stable/8/lib/libusb/usb.h (props changed)
stable/8/lib/libusbhid/ (props changed)
stable/8/lib/libutil/ (props changed)
stable/8/lib/libvgl/ (props changed)
stable/8/lib/libwrap/ (props changed)
stable/8/lib/liby/ (props changed)
stable/8/lib/libypclnt/ (props changed)
stable/8/lib/libz/ (props changed)
stable/8/lib/libz/contrib/ (props changed)
stable/8/lib/msun/ (props changed)
stable/8/lib/ncurses/ (props changed)
stable/8/libexec/ (props changed)
stable/8/libexec/comsat/ (props changed)
stable/8/libexec/ftpd/ (props changed)
stable/8/libexec/rshd/ (props changed)
stable/8/libexec/rtld-elf/ (props changed)
stable/8/libexec/tftpd/ (props changed)
stable/8/release/ (props changed)
stable/8/release/doc/en_US.ISO8859-1/hardware/ (props changed)
stable/8/release/picobsd/ (props changed)
stable/8/release/picobsd/floppy.tree/sbin/ (props changed)
stable/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed)
stable/8/release/picobsd/qemu/ (props changed)
stable/8/release/picobsd/tinyware/login/ (props changed)
stable/8/release/powerpc/ (props changed)
stable/8/rescue/ (props changed)
stable/8/rescue/rescue/ (props changed)
stable/8/sbin/ (props changed)
stable/8/sbin/atacontrol/ (props changed)
stable/8/sbin/bsdlabel/ (props changed)
stable/8/sbin/camcontrol/ (props changed)
stable/8/sbin/conscontrol/ (props changed)
stable/8/sbin/ddb/ (props changed)
stable/8/sbin/devd/ (props changed)
stable/8/sbin/devfs/ (props changed)
stable/8/sbin/dhclient/ (props changed)
stable/8/sbin/dump/ (props changed)
stable/8/sbin/dumpfs/ (props changed)
stable/8/sbin/fdisk/ (props changed)
stable/8/sbin/fsck/ (props changed)
stable/8/sbin/fsck_ffs/ (props changed)
stable/8/sbin/fsck_msdosfs/ (props changed)
stable/8/sbin/fsirand/ (props changed)
stable/8/sbin/geom/ (props changed)
stable/8/sbin/geom/class/multipath/ (props changed)
stable/8/sbin/geom/class/part/ (props changed)
stable/8/sbin/geom/class/sched/gsched.8 (props changed)
stable/8/sbin/geom/class/stripe/ (props changed)
stable/8/sbin/ggate/ (props changed)
stable/8/sbin/growfs/ (props changed)
stable/8/sbin/gvinum/ (props changed)
stable/8/sbin/hastctl/ (props changed)
stable/8/sbin/hastd/ (props changed)
stable/8/sbin/ifconfig/ (props changed)
stable/8/sbin/ipfw/ (props changed)
stable/8/sbin/iscontrol/ (props changed)
stable/8/sbin/kldload/ (props changed)
stable/8/sbin/kldstat/ (props changed)
stable/8/sbin/md5/ (props changed)
stable/8/sbin/mdconfig/ (props changed)
stable/8/sbin/mdmfs/ (props changed)
stable/8/sbin/mknod/ (props changed)
stable/8/sbin/mksnap_ffs/ (props changed)
stable/8/sbin/mount/ (props changed)
stable/8/sbin/mount_cd9660/ (props changed)
stable/8/sbin/mount_msdosfs/ (props changed)
stable/8/sbin/mount_nfs/ (props changed)
stable/8/sbin/mount_unionfs/ (props changed)
stable/8/sbin/natd/ (props changed)
stable/8/sbin/newfs/ (props changed)
stable/8/sbin/newfs_msdos/ (props changed)
stable/8/sbin/ping6/ (props changed)
stable/8/sbin/quotacheck/ (props changed)
stable/8/sbin/rcorder/ (props changed)
stable/8/sbin/reboot/ (props changed)
stable/8/sbin/restore/ (props changed)
stable/8/sbin/route/ (props changed)
stable/8/sbin/routed/ (props changed)
stable/8/sbin/setkey/ (props changed)
stable/8/sbin/shutdown/ (props changed)
stable/8/sbin/spppcontrol/ (props changed)
stable/8/sbin/sysctl/ (props changed)
stable/8/sbin/tunefs/ (props changed)
stable/8/sbin/umount/ (props changed)
stable/8/secure/ (props changed)
stable/8/secure/lib/libcrypto/ (props changed)
stable/8/secure/lib/libssl/ (props changed)
stable/8/secure/usr.bin/bdes/ (props changed)
stable/8/secure/usr.bin/openssl/ (props changed)
stable/8/share/ (props changed)
stable/8/share/dict/ (props changed)
stable/8/share/doc/ (props changed)
stable/8/share/doc/papers/devfs/ (props changed)
stable/8/share/doc/papers/jail/ (props changed)
stable/8/share/doc/smm/01.setup/ (props changed)
stable/8/share/examples/ (props changed)
stable/8/share/examples/cvsup/ (props changed)
stable/8/share/man/ (props changed)
stable/8/share/man/man1/ (props changed)
stable/8/share/man/man3/ (props changed)
stable/8/share/man/man4/ (props changed)
stable/8/share/man/man5/ (props changed)
stable/8/share/man/man7/ (props changed)
stable/8/share/man/man8/ (props changed)
stable/8/share/man/man9/ (props changed)
stable/8/share/misc/ (props changed)
stable/8/share/misc/bsd-family-tree (props changed)
stable/8/share/mk/ (props changed)
stable/8/share/skel/ (props changed)
stable/8/share/syscons/ (props changed)
stable/8/share/termcap/ (props changed)
stable/8/share/timedef/ (props changed)
stable/8/share/zoneinfo/ (props changed)
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/boot/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/e1000/ (props changed)
stable/8/tools/ (props changed)
stable/8/tools/build/mk/ (props changed)
stable/8/tools/build/options/ (props changed)
stable/8/tools/debugscripts/ (props changed)
stable/8/tools/kerneldoc/subsys/ (props changed)
stable/8/tools/regression/acct/ (props changed)
stable/8/tools/regression/acltools/ (props changed)
stable/8/tools/regression/aio/aiotest/ (props changed)
stable/8/tools/regression/bin/ (props changed)
stable/8/tools/regression/bin/date/ (props changed)
stable/8/tools/regression/bin/sh/ (props changed)
stable/8/tools/regression/bin/test/ (props changed)
stable/8/tools/regression/doat/ (props changed)
stable/8/tools/regression/fifo/ (props changed)
stable/8/tools/regression/geom/ (props changed)
stable/8/tools/regression/lib/libc/ (props changed)
stable/8/tools/regression/lib/msun/test-conj.t (props changed)
stable/8/tools/regression/mqueue/mqtest1/ (props changed)
stable/8/tools/regression/mqueue/mqtest2/ (props changed)
stable/8/tools/regression/mqueue/mqtest3/ (props changed)
stable/8/tools/regression/mqueue/mqtest4/ (props changed)
stable/8/tools/regression/mqueue/mqtest5/ (props changed)
stable/8/tools/regression/netinet/ (props changed)
stable/8/tools/regression/poll/ (props changed)
stable/8/tools/regression/posixsem/ (props changed)
stable/8/tools/regression/priv/ (props changed)
stable/8/tools/regression/sockets/unix_gc/ (props changed)
stable/8/tools/regression/usr.bin/ (props changed)
stable/8/tools/regression/usr.bin/pkill/ (props changed)
stable/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed)
stable/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed)
stable/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed)
stable/8/tools/regression/usr.bin/sed/ (props changed)
stable/8/tools/regression/usr.bin/tr/ (props changed)
stable/8/tools/test/ (props changed)
stable/8/tools/test/malloc/ (props changed)
stable/8/tools/tools/ (props changed)
stable/8/tools/tools/aac/ (props changed)
stable/8/tools/tools/ath/ (props changed)
stable/8/tools/tools/ath/common/dumpregs.h (props changed)
stable/8/tools/tools/ath/common/dumpregs_5210.c (props changed)
stable/8/tools/tools/ath/common/dumpregs_5211.c (props changed)
stable/8/tools/tools/ath/common/dumpregs_5212.c (props changed)
stable/8/tools/tools/ath/common/dumpregs_5416.c (props changed)
stable/8/tools/tools/cfi/ (props changed)
stable/8/tools/tools/ether_reflect/ (props changed)
stable/8/tools/tools/iwi/ (props changed)
stable/8/tools/tools/mctest/ (props changed)
stable/8/tools/tools/nanobsd/ (props changed)
stable/8/tools/tools/netrate/ (props changed)
stable/8/tools/tools/netrate/netblast/ (props changed)
stable/8/tools/tools/netrate/netsend/ (props changed)
stable/8/tools/tools/netrate/tcpp/ (props changed)
stable/8/tools/tools/termcap/termcap.pl (props changed)
stable/8/tools/tools/umastat/ (props changed)
stable/8/tools/tools/vimage/ (props changed)
stable/8/usr.bin/ (props changed)
stable/8/usr.bin/apply/ (props changed)
stable/8/usr.bin/ar/ (props changed)
stable/8/usr.bin/awk/ (props changed)
stable/8/usr.bin/biff/ (props changed)
stable/8/usr.bin/c89/ (props changed)
stable/8/usr.bin/c99/ (props changed)
stable/8/usr.bin/calendar/ (props changed)
stable/8/usr.bin/catman/ (props changed)
stable/8/usr.bin/checknr/ (props changed)
stable/8/usr.bin/chpass/Makefile (props changed)
stable/8/usr.bin/column/ (props changed)
stable/8/usr.bin/comm/ (props changed)
stable/8/usr.bin/compress/ (props changed)
stable/8/usr.bin/cpio/ (props changed)
stable/8/usr.bin/cpuset/ (props changed)
stable/8/usr.bin/csup/ (props changed)
stable/8/usr.bin/du/ (props changed)
stable/8/usr.bin/ee/ (props changed)
stable/8/usr.bin/enigma/ (props changed)
stable/8/usr.bin/fetch/ (props changed)
stable/8/usr.bin/find/ (props changed)
stable/8/usr.bin/finger/ (props changed)
stable/8/usr.bin/fold/ (props changed)
stable/8/usr.bin/fstat/ (props changed)
stable/8/usr.bin/gcore/ (props changed)
stable/8/usr.bin/getopt/ (props changed)
stable/8/usr.bin/gzip/ (props changed)
stable/8/usr.bin/hexdump/ (props changed)
stable/8/usr.bin/indent/ (props changed)
stable/8/usr.bin/ipcs/ (props changed)
stable/8/usr.bin/jot/ (props changed)
stable/8/usr.bin/kdump/ (props changed)
stable/8/usr.bin/killall/ (props changed)
stable/8/usr.bin/ktrace/ (props changed)
stable/8/usr.bin/lastcomm/ (props changed)
stable/8/usr.bin/ldd/ (props changed)
stable/8/usr.bin/less/ (props changed)
stable/8/usr.bin/lex/ (props changed)
stable/8/usr.bin/limits/ (props changed)
stable/8/usr.bin/locale/ (props changed)
stable/8/usr.bin/locate/ (props changed)
stable/8/usr.bin/lock/ (props changed)
stable/8/usr.bin/lockf/ (props changed)
stable/8/usr.bin/logger/ (props changed)
stable/8/usr.bin/look/ (props changed)
stable/8/usr.bin/m4/ (props changed)
stable/8/usr.bin/mail/ (props changed)
stable/8/usr.bin/make/ (props changed)
stable/8/usr.bin/makewhatis/ (props changed)
stable/8/usr.bin/minigzip/ (props changed)
stable/8/usr.bin/ncal/ (props changed)
stable/8/usr.bin/netstat/ (props changed)
stable/8/usr.bin/netstat/Makefile (props changed)
stable/8/usr.bin/netstat/atalk.c (props changed)
stable/8/usr.bin/netstat/bpf.c (props changed)
stable/8/usr.bin/netstat/if.c (props changed)
stable/8/usr.bin/netstat/inet.c (props changed)
stable/8/usr.bin/netstat/inet6.c (props changed)
stable/8/usr.bin/netstat/ipsec.c (props changed)
stable/8/usr.bin/netstat/ipx.c (props changed)
stable/8/usr.bin/netstat/main.c (props changed)
stable/8/usr.bin/netstat/mbuf.c (props changed)
stable/8/usr.bin/netstat/mroute.c (props changed)
stable/8/usr.bin/netstat/mroute6.c (props changed)
stable/8/usr.bin/netstat/netgraph.c (props changed)
stable/8/usr.bin/netstat/netisr.c (props changed)
stable/8/usr.bin/netstat/netstat.1 (props changed)
stable/8/usr.bin/netstat/netstat.h (props changed)
stable/8/usr.bin/netstat/pfkey.c (props changed)
stable/8/usr.bin/netstat/route.c (props changed)
stable/8/usr.bin/netstat/sctp.c (props changed)
stable/8/usr.bin/netstat/unix.c (props changed)
stable/8/usr.bin/newgrp/ (props changed)
stable/8/usr.bin/nfsstat/ (props changed)
stable/8/usr.bin/pathchk/ (props changed)
stable/8/usr.bin/perror/ (props changed)
stable/8/usr.bin/printf/ (props changed)
stable/8/usr.bin/procstat/ (props changed)
stable/8/usr.bin/rlogin/ (props changed)
stable/8/usr.bin/rpcgen/ (props changed)
stable/8/usr.bin/rpcinfo/ (props changed)
stable/8/usr.bin/rs/ (props changed)
stable/8/usr.bin/ruptime/ (props changed)
stable/8/usr.bin/script/ (props changed)
stable/8/usr.bin/sed/ (props changed)
stable/8/usr.bin/showmount/ (props changed)
stable/8/usr.bin/sockstat/ (props changed)
stable/8/usr.bin/split/ (props changed)
stable/8/usr.bin/stat/ (props changed)
stable/8/usr.bin/su/ (props changed)
stable/8/usr.bin/su/Makefile (props changed)
stable/8/usr.bin/su/su.1 (props changed)
stable/8/usr.bin/su/su.c (props changed)
stable/8/usr.bin/systat/ (props changed)
stable/8/usr.bin/tail/ (props changed)
stable/8/usr.bin/tar/ (props changed)
stable/8/usr.bin/tftp/ (props changed)
stable/8/usr.bin/tip/ (props changed)
stable/8/usr.bin/top/ (props changed)
stable/8/usr.bin/touch/ (props changed)
stable/8/usr.bin/tr/ (props changed)
stable/8/usr.bin/truss/ (props changed)
stable/8/usr.bin/uname/ (props changed)
stable/8/usr.bin/unifdef/ (props changed)
stable/8/usr.bin/uniq/ (props changed)
stable/8/usr.bin/unzip/ (props changed)
stable/8/usr.bin/usbhidaction/ (props changed)
stable/8/usr.bin/usbhidctl/ (props changed)
stable/8/usr.bin/uudecode/ (props changed)
stable/8/usr.bin/vmstat/ (props changed)
stable/8/usr.bin/w/ (props changed)
stable/8/usr.bin/wall/ (props changed)
stable/8/usr.bin/whois/ (props changed)
stable/8/usr.bin/xargs/ (props changed)
stable/8/usr.bin/xinstall/ (props changed)
stable/8/usr.bin/xlint/ (props changed)
stable/8/usr.bin/xz/ (props changed)
stable/8/usr.bin/yacc/ (props changed)
stable/8/usr.sbin/ (props changed)
stable/8/usr.sbin/IPXrouted/ (props changed)
stable/8/usr.sbin/Makefile (props changed)
stable/8/usr.sbin/Makefile.inc (props changed)
stable/8/usr.sbin/ac/ (props changed)
stable/8/usr.sbin/accton/ (props changed)
stable/8/usr.sbin/acpi/ (props changed)
stable/8/usr.sbin/adduser/ (props changed)
stable/8/usr.sbin/amd/ (props changed)
stable/8/usr.sbin/ancontrol/ (props changed)
stable/8/usr.sbin/apm/ (props changed)
stable/8/usr.sbin/apmd/ (props changed)
stable/8/usr.sbin/arp/ (props changed)
stable/8/usr.sbin/asf/ (props changed)
stable/8/usr.sbin/audit/ (props changed)
stable/8/usr.sbin/auditd/ (props changed)
stable/8/usr.sbin/auditreduce/ (props changed)
stable/8/usr.sbin/authpf/ (props changed)
stable/8/usr.sbin/bluetooth/ (props changed)
stable/8/usr.sbin/bluetooth/bthidcontrol/ (props changed)
stable/8/usr.sbin/bluetooth/bthidd/ (props changed)
stable/8/usr.sbin/bluetooth/l2control/ (props changed)
stable/8/usr.sbin/bluetooth/l2ping/ (props changed)
stable/8/usr.sbin/boot0cfg/ (props changed)
stable/8/usr.sbin/boot98cfg/ (props changed)
stable/8/usr.sbin/bootparamd/ (props changed)
stable/8/usr.sbin/bsnmpd/ (props changed)
stable/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed)
stable/8/usr.sbin/btxld/ (props changed)
stable/8/usr.sbin/burncd/ (props changed)
stable/8/usr.sbin/cdcontrol/ (props changed)
stable/8/usr.sbin/chkgrp/ (props changed)
stable/8/usr.sbin/chown/ (props changed)
stable/8/usr.sbin/chroot/ (props changed)
stable/8/usr.sbin/ckdist/ (props changed)
stable/8/usr.sbin/clear_locks/ (props changed)
stable/8/usr.sbin/config/ (props changed)
stable/8/usr.sbin/config/SMM.doc/ (props changed)
stable/8/usr.sbin/cpucontrol/ (props changed)
stable/8/usr.sbin/crashinfo/ (props changed)
stable/8/usr.sbin/cron/ (props changed)
stable/8/usr.sbin/cron/crontab/ (props changed)
stable/8/usr.sbin/crunch/ (props changed)
stable/8/usr.sbin/crunch/examples/ (props changed)
stable/8/usr.sbin/ctm/ (props changed)
stable/8/usr.sbin/daemon/ (props changed)
stable/8/usr.sbin/dconschat/ (props changed)
stable/8/usr.sbin/devinfo/ (props changed)
stable/8/usr.sbin/digictl/ (props changed)
stable/8/usr.sbin/diskinfo/ (props changed)
stable/8/usr.sbin/dnssec-dsfromkey/ (props changed)
stable/8/usr.sbin/dnssec-keyfromlabel/ (props changed)
stable/8/usr.sbin/dnssec-keygen/ (props changed)
stable/8/usr.sbin/dnssec-signzone/ (props changed)
stable/8/usr.sbin/dumpcis/ (props changed)
stable/8/usr.sbin/dumpcis/cardinfo.h (props changed)
stable/8/usr.sbin/dumpcis/cis.h (props changed)
stable/8/usr.sbin/editmap/ (props changed)
stable/8/usr.sbin/edquota/ (props changed)
stable/8/usr.sbin/eeprom/ (props changed)
stable/8/usr.sbin/extattr/ (props changed)
stable/8/usr.sbin/extattrctl/ (props changed)
stable/8/usr.sbin/faithd/ (props changed)
stable/8/usr.sbin/fdcontrol/ (props changed)
stable/8/usr.sbin/fdformat/ (props changed)
stable/8/usr.sbin/fdread/ (props changed)
stable/8/usr.sbin/fdwrite/ (props changed)
stable/8/usr.sbin/fifolog/ (props changed)
stable/8/usr.sbin/flowctl/ (props changed)
stable/8/usr.sbin/freebsd-update/ (props changed)
stable/8/usr.sbin/ftp-proxy/ (props changed)
stable/8/usr.sbin/fwcontrol/ (props changed)
stable/8/usr.sbin/getfmac/ (props changed)
stable/8/usr.sbin/getpmac/ (props changed)
stable/8/usr.sbin/gssd/ (props changed)
stable/8/usr.sbin/gstat/ (props changed)
stable/8/usr.sbin/i2c/ (props changed)
stable/8/usr.sbin/ifmcstat/ (props changed)
stable/8/usr.sbin/inetd/ (props changed)
stable/8/usr.sbin/iostat/ (props changed)
stable/8/usr.sbin/ip6addrctl/ (props changed)
stable/8/usr.sbin/ipfwpcap/ (props changed)
stable/8/usr.sbin/jail/ (props changed)
stable/8/usr.sbin/jexec/ (props changed)
stable/8/usr.sbin/jls/ (props changed)
stable/8/usr.sbin/kbdcontrol/ (props changed)
stable/8/usr.sbin/kbdmap/ (props changed)
stable/8/usr.sbin/kernbb/ (props changed)
stable/8/usr.sbin/keyserv/ (props changed)
stable/8/usr.sbin/kgmon/ (props changed)
stable/8/usr.sbin/kgzip/ (props changed)
stable/8/usr.sbin/kldxref/ (props changed)
stable/8/usr.sbin/lastlogin/ (props changed)
stable/8/usr.sbin/lmcconfig/ (props changed)
stable/8/usr.sbin/lpr/ (props changed)
stable/8/usr.sbin/lptcontrol/ (props changed)
stable/8/usr.sbin/mailstats/ (props changed)
stable/8/usr.sbin/mailwrapper/ (props changed)
stable/8/usr.sbin/makefs/ (props changed)
stable/8/usr.sbin/makemap/ (props changed)
stable/8/usr.sbin/manctl/ (props changed)
stable/8/usr.sbin/memcontrol/ (props changed)
stable/8/usr.sbin/mergemaster/ (props changed)
stable/8/usr.sbin/mfiutil/ (props changed)
stable/8/usr.sbin/mixer/ (props changed)
stable/8/usr.sbin/mld6query/ (props changed)
stable/8/usr.sbin/mlxcontrol/ (props changed)
stable/8/usr.sbin/mount_nwfs/ (props changed)
stable/8/usr.sbin/mount_portalfs/ (props changed)
stable/8/usr.sbin/mount_smbfs/ (props changed)
stable/8/usr.sbin/mountd/ (props changed)
stable/8/usr.sbin/moused/ (props changed)
stable/8/usr.sbin/mptable/ (props changed)
stable/8/usr.sbin/mptutil/ (props changed)
stable/8/usr.sbin/mtest/ (props changed)
stable/8/usr.sbin/mtree/ (props changed)
stable/8/usr.sbin/named/ (props changed)
stable/8/usr.sbin/named-checkconf/ (props changed)
stable/8/usr.sbin/named-checkzone/ (props changed)
stable/8/usr.sbin/named.reload/ (props changed)
stable/8/usr.sbin/ndiscvt/ (props changed)
stable/8/usr.sbin/ndp/ (props changed)
stable/8/usr.sbin/newsyslog/ (props changed)
stable/8/usr.sbin/nfscbd/ (props changed)
stable/8/usr.sbin/nfsd/ (props changed)
stable/8/usr.sbin/nfsdumpstate/ (props changed)
stable/8/usr.sbin/nfsrevoke/ (props changed)
stable/8/usr.sbin/nfsuserd/ (props changed)
stable/8/usr.sbin/ngctl/ (props changed)
stable/8/usr.sbin/nghook/ (props changed)
stable/8/usr.sbin/nologin/ (props changed)
stable/8/usr.sbin/nscd/ (props changed)
stable/8/usr.sbin/ntp/ (props changed)
stable/8/usr.sbin/nvram/ (props changed)
stable/8/usr.sbin/ofwdump/ (props changed)
stable/8/usr.sbin/pciconf/ (props changed)
stable/8/usr.sbin/periodic/ (props changed)
stable/8/usr.sbin/pkg_install/ (props changed)
stable/8/usr.sbin/pkg_install/info/ (props changed)
stable/8/usr.sbin/pmcannotate/ (props changed)
stable/8/usr.sbin/pmccontrol/ (props changed)
stable/8/usr.sbin/pmcstat/ (props changed)
stable/8/usr.sbin/pnpinfo/ (props changed)
stable/8/usr.sbin/portsnap/ (props changed)
stable/8/usr.sbin/powerd/ (props changed)
stable/8/usr.sbin/ppp/ (props changed)
stable/8/usr.sbin/pppctl/ (props changed)
stable/8/usr.sbin/praliases/ (props changed)
stable/8/usr.sbin/praudit/ (props changed)
stable/8/usr.sbin/procctl/ (props changed)
stable/8/usr.sbin/pstat/ (props changed)
stable/8/usr.sbin/pw/ (props changed)
stable/8/usr.sbin/pwd_mkdb/ (props changed)
stable/8/usr.sbin/quot/ (props changed)
stable/8/usr.sbin/quotaon/ (props changed)
stable/8/usr.sbin/rarpd/ (props changed)
stable/8/usr.sbin/repquota/ (props changed)
stable/8/usr.sbin/rip6query/ (props changed)
stable/8/usr.sbin/rmt/ (props changed)
stable/8/usr.sbin/rndc/ (props changed)
stable/8/usr.sbin/rndc-confgen/ (props changed)
stable/8/usr.sbin/route6d/ (props changed)
stable/8/usr.sbin/rpc.lockd/ (props changed)
stable/8/usr.sbin/rpc.statd/ (props changed)
stable/8/usr.sbin/rpc.umntall/ (props changed)
stable/8/usr.sbin/rpc.yppasswdd/ (props changed)
stable/8/usr.sbin/rpc.ypupdated/ (props changed)
stable/8/usr.sbin/rpc.ypxfrd/ (props changed)
stable/8/usr.sbin/rpcbind/ (props changed)
stable/8/usr.sbin/rrenumd/ (props changed)
stable/8/usr.sbin/rtadvd/ (props changed)
stable/8/usr.sbin/rtprio/ (props changed)
stable/8/usr.sbin/rtsold/ (props changed)
stable/8/usr.sbin/rwhod/ (props changed)
stable/8/usr.sbin/sa/ (props changed)
stable/8/usr.sbin/sade/ (props changed)
stable/8/usr.sbin/sendmail/ (props changed)
stable/8/usr.sbin/service/ (props changed)
stable/8/usr.sbin/service/Makefile (props changed)
stable/8/usr.sbin/service/service.8 (props changed)
stable/8/usr.sbin/service/service.sh (props changed)
stable/8/usr.sbin/services_mkdb/ (props changed)
stable/8/usr.sbin/services_mkdb/Makefile (props changed)
stable/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed)
stable/8/usr.sbin/services_mkdb/services_mkdb.c (props changed)
stable/8/usr.sbin/services_mkdb/uniq.c (props changed)
stable/8/usr.sbin/setfib/ (props changed)
stable/8/usr.sbin/setfmac/ (props changed)
stable/8/usr.sbin/setpmac/ (props changed)
stable/8/usr.sbin/sicontrol/ (props changed)
stable/8/usr.sbin/smbmsg/ (props changed)
stable/8/usr.sbin/snapinfo/ (props changed)
stable/8/usr.sbin/spkrtest/ (props changed)
stable/8/usr.sbin/spray/ (props changed)
stable/8/usr.sbin/sysinstall/ (props changed)
stable/8/usr.sbin/syslogd/ (props changed)
stable/8/usr.sbin/tcpdchk/ (props changed)
stable/8/usr.sbin/tcpdmatch/ (props changed)
stable/8/usr.sbin/tcpdrop/ (props changed)
stable/8/usr.sbin/tcpdump/ (props changed)
stable/8/usr.sbin/timed/ (props changed)
stable/8/usr.sbin/traceroute/ (props changed)
stable/8/usr.sbin/traceroute6/ (props changed)
stable/8/usr.sbin/trpt/ (props changed)
stable/8/usr.sbin/tzsetup/ (props changed)
stable/8/usr.sbin/uathload/ (props changed)
stable/8/usr.sbin/ugidfw/ (props changed)
stable/8/usr.sbin/uhsoctl/ (props changed)
stable/8/usr.sbin/usbconfig/ (props changed)
stable/8/usr.sbin/usbdevs/ (props changed)
stable/8/usr.sbin/usbdump/ (props changed)
stable/8/usr.sbin/usbdump/Makefile (props changed)
stable/8/usr.sbin/usbdump/usbdump.8 (props changed)
stable/8/usr.sbin/usbdump/usbdump.c (props changed)
stable/8/usr.sbin/vidcontrol/ (props changed)
stable/8/usr.sbin/vipw/ (props changed)
stable/8/usr.sbin/wake/ (props changed)
stable/8/usr.sbin/watch/ (props changed)
stable/8/usr.sbin/watchdogd/ (props changed)
stable/8/usr.sbin/wlandebug/ (props changed)
stable/8/usr.sbin/wlconfig/ (props changed)
stable/8/usr.sbin/wpa/ (props changed)
stable/8/usr.sbin/yp_mkdb/ (props changed)
stable/8/usr.sbin/ypbind/ (props changed)
stable/8/usr.sbin/yppoll/ (props changed)
stable/8/usr.sbin/yppush/ (props changed)
stable/8/usr.sbin/ypserv/ (props changed)
stable/8/usr.sbin/ypset/ (props changed)
stable/8/usr.sbin/zic/ (props changed)
stable/8/usr.sbin/zzz/ (props changed)
Modified: stable/8/lib/libc/net/sctp_sys_calls.c
==============================================================================
--- stable/8/lib/libc/net/sctp_sys_calls.c Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/lib/libc/net/sctp_sys_calls.c Fri Feb 10 22:42:03 2012 (r231456)
@@ -410,6 +410,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, i
case SCTP_DEFAULT_PRINFO:
((struct sctp_default_prinfo *)arg)->pr_assoc_id = id;
break;
+ case SCTP_PEER_ADDR_THLDS:
+ ((struct sctp_paddrthlds *)arg)->spt_assoc_id = id;
+ break;
default:
break;
}
Modified: stable/8/sys/netinet/sctp.h
==============================================================================
--- stable/8/sys/netinet/sctp.h Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp.h Fri Feb 10 22:42:03 2012 (r231456)
@@ -119,6 +119,7 @@ struct sctp_paramhdr {
#define SCTP_RECVNXTINFO 0x00000020
#define SCTP_DEFAULT_SNDINFO 0x00000021
#define SCTP_DEFAULT_PRINFO 0x00000022
+#define SCTP_PEER_ADDR_THLDS 0x00000023
/*
* read-only options
@@ -564,7 +565,6 @@ struct sctp_error_unrecognized_chunk {
#define SCTP_BLK_LOGGING_ENABLE 0x00000001
#define SCTP_CWND_MONITOR_ENABLE 0x00000002
#define SCTP_CWND_LOGGING_ENABLE 0x00000004
-#define SCTP_EARLYFR_LOGGING_ENABLE 0x00000010
#define SCTP_FLIGHT_LOGGING_ENABLE 0x00000020
#define SCTP_FR_LOGGING_ENABLE 0x00000040
#define SCTP_LOCK_LOGGING_ENABLE 0x00000080
@@ -572,23 +572,23 @@ struct sctp_error_unrecognized_chunk {
#define SCTP_MBCNT_LOGGING_ENABLE 0x00000200
#define SCTP_MBUF_LOGGING_ENABLE 0x00000400
#define SCTP_NAGLE_LOGGING_ENABLE 0x00000800
-#define SCTP_RECV_RWND_LOGGING_ENABLE 0x00001000
+#define SCTP_RECV_RWND_LOGGING_ENABLE 0x00001000
#define SCTP_RTTVAR_LOGGING_ENABLE 0x00002000
#define SCTP_SACK_LOGGING_ENABLE 0x00004000
-#define SCTP_SACK_RWND_LOGGING_ENABLE 0x00008000
+#define SCTP_SACK_RWND_LOGGING_ENABLE 0x00008000
#define SCTP_SB_LOGGING_ENABLE 0x00010000
#define SCTP_STR_LOGGING_ENABLE 0x00020000
#define SCTP_WAKE_LOGGING_ENABLE 0x00040000
#define SCTP_LOG_MAXBURST_ENABLE 0x00080000
#define SCTP_LOG_RWND_ENABLE 0x00100000
-#define SCTP_LOG_SACK_ARRIVALS_ENABLE 0x00200000
-#define SCTP_LTRACE_CHUNK_ENABLE 0x00400000
-#define SCTP_LTRACE_ERROR_ENABLE 0x00800000
-#define SCTP_LAST_PACKET_TRACING 0x01000000
-#define SCTP_THRESHOLD_LOGGING 0x02000000
-#define SCTP_LOG_AT_SEND_2_SCTP 0x04000000
-#define SCTP_LOG_AT_SEND_2_OUTQ 0x08000000
-#define SCTP_LOG_TRY_ADVANCE 0x10000000
+#define SCTP_LOG_SACK_ARRIVALS_ENABLE 0x00200000
+#define SCTP_LTRACE_CHUNK_ENABLE 0x00400000
+#define SCTP_LTRACE_ERROR_ENABLE 0x00800000
+#define SCTP_LAST_PACKET_TRACING 0x01000000
+#define SCTP_THRESHOLD_LOGGING 0x02000000
+#define SCTP_LOG_AT_SEND_2_SCTP 0x04000000
+#define SCTP_LOG_AT_SEND_2_OUTQ 0x08000000
+#define SCTP_LOG_TRY_ADVANCE 0x10000000
#undef SCTP_PACKED
Modified: stable/8/sys/netinet/sctp_asconf.c
==============================================================================
--- stable/8/sys/netinet/sctp_asconf.c Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp_asconf.c Fri Feb 10 22:42:03 2012 (r231456)
@@ -198,8 +198,9 @@ sctp_asconf_error_response(uint32_t id,
static struct mbuf *
sctp_process_asconf_add_ip(struct mbuf *m, struct sctp_asconf_paramhdr *aph,
- struct sctp_tcb *stcb, int response_required)
+ struct sctp_tcb *stcb, int send_hb, int response_required)
{
+ struct sctp_nets *net;
struct mbuf *m_reply = NULL;
struct sockaddr_storage sa_source, sa_store;
struct sctp_paramhdr *ph;
@@ -284,7 +285,7 @@ sctp_process_asconf_add_ip(struct mbuf *
SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, sa);
}
/* add the address */
- if (sctp_add_remote_addr(stcb, sa, SCTP_DONOT_SETSCOPE,
+ if (sctp_add_remote_addr(stcb, sa, &net, SCTP_DONOT_SETSCOPE,
SCTP_ADDR_DYNAMIC_ADDED) != 0) {
SCTPDBG(SCTP_DEBUG_ASCONF1,
"process_asconf_add_ip: error adding address\n");
@@ -298,10 +299,12 @@ sctp_process_asconf_add_ip(struct mbuf *
m_reply =
sctp_asconf_success_response(aph->correlation_id);
}
- sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb,
- NULL, SCTP_FROM_SCTP_ASCONF + SCTP_LOC_1);
+ sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, stcb->sctp_ep, stcb, net);
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep,
- stcb, NULL);
+ stcb, net);
+ if (send_hb) {
+ sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
+ }
}
return m_reply;
}
@@ -554,7 +557,12 @@ sctp_process_asconf_set_primary(struct m
"process_asconf_set_primary: primary address set\n");
/* notify upper layer */
sctp_ulp_notify(SCTP_NOTIFY_ASCONF_SET_PRIMARY, stcb, 0, sa, SCTP_SO_NOT_LOCKED);
-
+ if ((stcb->asoc.primary_destination->dest_state & SCTP_ADDR_REACHABLE) &&
+ (!(stcb->asoc.primary_destination->dest_state & SCTP_ADDR_PF)) &&
+ (stcb->asoc.alternate)) {
+ sctp_free_remote_addr(stcb->asoc.alternate);
+ stcb->asoc.alternate = NULL;
+ }
if (response_required) {
m_reply = sctp_asconf_success_response(aph->correlation_id);
}
@@ -622,7 +630,7 @@ sctp_handle_asconf(struct mbuf *m, unsig
struct sctp_asconf_ack_chunk *ack_cp;
struct sctp_asconf_paramhdr *aph, *ack_aph;
struct sctp_ipv6addr_param *p_addr;
- unsigned int asconf_limit;
+ unsigned int asconf_limit, cnt;
int error = 0; /* did an error occur? */
/* asconf param buffer */
@@ -717,6 +725,7 @@ sctp_handle_asconf(struct mbuf *m, unsig
goto send_reply;
}
/* process through all parameters */
+ cnt = 0;
while (aph != NULL) {
unsigned int param_length, param_type;
@@ -749,7 +758,8 @@ sctp_handle_asconf(struct mbuf *m, unsig
case SCTP_ADD_IP_ADDRESS:
asoc->peer_supports_asconf = 1;
m_result = sctp_process_asconf_add_ip(m, aph, stcb,
- error);
+ (cnt < SCTP_BASE_SYSCTL(sctp_hb_maxburst)), error);
+ cnt++;
break;
case SCTP_DEL_IP_ADDRESS:
asoc->peer_supports_asconf = 1;
@@ -1959,7 +1969,7 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *
int status;
- if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) == 0 &&
+ if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) == 0 ||
sctp_is_feature_off(inp, SCTP_PCB_FLAGS_DO_ASCONF)) {
/* subset bound, no ASCONF allowed case, so ignore */
return;
@@ -2075,8 +2085,7 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *
sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp,
stcb, stcb->asoc.primary_destination);
#else
- sctp_send_asconf(stcb, stcb->asoc.primary_destination,
- addr_locked);
+ sctp_send_asconf(stcb, NULL, addr_locked);
#endif
}
}
@@ -2328,8 +2337,7 @@ sctp_asconf_iterator_stcb(struct sctp_in
* If we have queued params in the open state, send out an ASCONF.
*/
if (num_queued > 0) {
- sctp_send_asconf(stcb, stcb->asoc.primary_destination,
- SCTP_ADDR_NOT_LOCKED);
+ sctp_send_asconf(stcb, NULL, SCTP_ADDR_NOT_LOCKED);
}
}
@@ -2384,8 +2392,7 @@ sctp_set_primary_ip_address_sa(struct sc
stcb->sctp_ep, stcb,
stcb->asoc.primary_destination);
#else
- sctp_send_asconf(stcb, stcb->asoc.primary_destination,
- SCTP_ADDR_NOT_LOCKED);
+ sctp_send_asconf(stcb, NULL, SCTP_ADDR_NOT_LOCKED);
#endif
}
} else {
@@ -2421,8 +2428,7 @@ sctp_set_primary_ip_address(struct sctp_
stcb->sctp_ep, stcb,
stcb->asoc.primary_destination);
#else
- sctp_send_asconf(stcb, stcb->asoc.primary_destination,
- SCTP_ADDR_NOT_LOCKED);
+ sctp_send_asconf(stcb, NULL, SCTP_ADDR_NOT_LOCKED);
#endif
}
}
@@ -2965,8 +2971,7 @@ sctp_process_initack_addresses(struct sc
stcb->sctp_ep, stcb,
stcb->asoc.primary_destination);
#else
- sctp_send_asconf(stcb, stcb->asoc.primary_destination,
- SCTP_ADDR_NOT_LOCKED);
+ sctp_send_asconf(stcb, NULL, SCTP_ADDR_NOT_LOCKED);
#endif
}
}
@@ -3540,5 +3545,5 @@ sctp_asconf_send_nat_state_update(struct
}
skip_rest:
/* Now we must send the asconf into the queue */
- sctp_send_asconf(stcb, net, 0);
+ sctp_send_asconf(stcb, net, SCTP_ADDR_NOT_LOCKED);
}
Modified: stable/8/sys/netinet/sctp_cc_functions.c
==============================================================================
--- stable/8/sys/netinet/sctp_cc_functions.c Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp_cc_functions.c Fri Feb 10 22:42:03 2012 (r231456)
@@ -728,40 +728,6 @@ sctp_cwnd_update_after_sack_common(struc
}
}
#endif
- if (SCTP_BASE_SYSCTL(sctp_early_fr)) {
- /*
- * So, first of all do we need to have a Early FR
- * timer running?
- */
- if ((!TAILQ_EMPTY(&asoc->sent_queue) &&
- (net->ref_count > 1) &&
- (net->flight_size < net->cwnd)) ||
- (reneged_all)) {
- /*
- * yes, so in this case stop it if its
- * running, and then restart it. Reneging
- * all is a special case where we want to
- * run the Early FR timer and then force the
- * last few unacked to be sent, causing us
- * to illicit a sack with gaps to force out
- * the others.
- */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck2);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_20);
- }
- SCTP_STAT_INCR(sctps_earlyfrstrid);
- sctp_timer_start(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net);
- } else {
- /* No, stop it if its running */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck3);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_21);
- }
- }
- }
/* if nothing was acked on this destination skip it */
if (net->net_ack == 0) {
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) {
@@ -769,51 +735,6 @@ sctp_cwnd_update_after_sack_common(struc
}
continue;
}
- if (net->net_ack2 > 0) {
- /*
- * Karn's rule applies to clearing error count, this
- * is optional.
- */
- net->error_count = 0;
- if ((net->dest_state & SCTP_ADDR_NOT_REACHABLE) ==
- SCTP_ADDR_NOT_REACHABLE) {
- /* addr came good */
- net->dest_state &= ~SCTP_ADDR_NOT_REACHABLE;
- net->dest_state |= SCTP_ADDR_REACHABLE;
- sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
- SCTP_RECEIVED_SACK, (void *)net, SCTP_SO_NOT_LOCKED);
- /* now was it the primary? if so restore */
- if (net->dest_state & SCTP_ADDR_WAS_PRIMARY) {
- (void)sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net);
- }
- }
- /*
- * JRS 5/14/07 - If CMT PF is on and the destination
- * is in PF state, set the destination to active
- * state and set the cwnd to one or two MTU's based
- * on whether PF1 or PF2 is being used.
- *
- * Should we stop any running T3 timer here?
- */
- if ((asoc->sctp_cmt_on_off > 0) &&
- (asoc->sctp_cmt_pf > 0) &&
- ((net->dest_state & SCTP_ADDR_PF) == SCTP_ADDR_PF)) {
- net->dest_state &= ~SCTP_ADDR_PF;
- old_cwnd = net->cwnd;
- net->cwnd = net->mtu * asoc->sctp_cmt_pf;
- SDT_PROBE(sctp, cwnd, net, ack,
- stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net,
- old_cwnd, net->cwnd);
- SCTPDBG(SCTP_DEBUG_INDATA1, "Destination %p moved from PF to reachable with cwnd %d.\n",
- net, net->cwnd);
- /*
- * Since the cwnd value is explicitly set,
- * skip the code that updates the cwnd
- * value.
- */
- goto skip_cwnd_update;
- }
- }
#ifdef JANA_CMT_FAST_RECOVERY
/*
* CMT fast recovery code
@@ -833,7 +754,7 @@ sctp_cwnd_update_after_sack_common(struc
* If we are in loss recovery we skip any cwnd
* update
*/
- goto skip_cwnd_update;
+ return;
}
/*
* Did any measurements go on for this network?
@@ -856,7 +777,7 @@ sctp_cwnd_update_after_sack_common(struc
if (net->cc_mod.rtcc.lbw) {
if (cc_bw_limit(stcb, net, nbw)) {
/* Hold here, no update */
- goto skip_cwnd_update;
+ continue;
}
} else {
uint64_t vtag, probepoint;
@@ -1049,27 +970,25 @@ sctp_cwnd_update_after_sack_common(struc
SCTP_CWND_LOG_NO_CUMACK);
}
}
-skip_cwnd_update:
- /*
- * NOW, according to Karn's rule do we need to restore the
- * RTO timer back? Check our net_ack2. If not set then we
- * have a ambiguity.. i.e. all data ack'd was sent to more
- * than one place.
- */
- if (net->net_ack2) {
- /* restore any doubled timers */
- net->RTO = (net->lastsa >> SCTP_RTT_SHIFT) + net->lastsv;
- if (net->RTO < stcb->asoc.minrto) {
- net->RTO = stcb->asoc.minrto;
- }
- if (net->RTO > stcb->asoc.maxrto) {
- net->RTO = stcb->asoc.maxrto;
- }
- }
}
}
static void
+sctp_cwnd_update_exit_pf_common(struct sctp_tcb *stcb, struct sctp_nets *net)
+{
+ int old_cwnd;
+
+ old_cwnd = net->cwnd;
+ net->cwnd = net->mtu;
+ SDT_PROBE(sctp, cwnd, net, ack,
+ stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net,
+ old_cwnd, net->cwnd);
+ SCTPDBG(SCTP_DEBUG_INDATA1, "Destination %p moved from PF to reachable with cwnd %d.\n",
+ net, net->cwnd);
+}
+
+
+static void
sctp_cwnd_update_after_timeout(struct sctp_tcb *stcb, struct sctp_nets *net)
{
int old_cwnd = net->cwnd;
@@ -1344,32 +1263,6 @@ sctp_cwnd_update_after_output(struct sct
}
static void
-sctp_cwnd_update_after_fr_timer(struct sctp_inpcb *inp,
- struct sctp_tcb *stcb, struct sctp_nets *net)
-{
- int old_cwnd = net->cwnd;
-
- sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_EARLY_FR_TMR, SCTP_SO_NOT_LOCKED);
- /*
- * make a small adjustment to cwnd and force to CA.
- */
- if (net->cwnd > net->mtu)
- /* drop down one MTU after sending */
- net->cwnd -= net->mtu;
- if (net->cwnd < net->ssthresh)
- /* still in SS move to CA */
- net->ssthresh = net->cwnd - 1;
- SDT_PROBE(sctp, cwnd, net, fr,
- stcb->asoc.my_vtag,
- ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)),
- net,
- old_cwnd, net->cwnd);
- if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) {
- sctp_log_cwnd(stcb, net, (old_cwnd - net->cwnd), SCTP_CWND_LOG_FROM_FR);
- }
-}
-
-static void
sctp_cwnd_update_after_sack(struct sctp_tcb *stcb,
struct sctp_association *asoc,
int accum_moved, int reneged_all, int will_exit)
@@ -1858,40 +1751,6 @@ sctp_hs_cwnd_update_after_sack(struct sc
}
}
#endif
- if (SCTP_BASE_SYSCTL(sctp_early_fr)) {
- /*
- * So, first of all do we need to have a Early FR
- * timer running?
- */
- if ((!TAILQ_EMPTY(&asoc->sent_queue) &&
- (net->ref_count > 1) &&
- (net->flight_size < net->cwnd)) ||
- (reneged_all)) {
- /*
- * yes, so in this case stop it if its
- * running, and then restart it. Reneging
- * all is a special case where we want to
- * run the Early FR timer and then force the
- * last few unacked to be sent, causing us
- * to illicit a sack with gaps to force out
- * the others.
- */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck2);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_20);
- }
- SCTP_STAT_INCR(sctps_earlyfrstrid);
- sctp_timer_start(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net);
- } else {
- /* No, stop it if its running */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck3);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_21);
- }
- }
- }
/* if nothing was acked on this destination skip it */
if (net->net_ack == 0) {
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) {
@@ -1899,47 +1758,6 @@ sctp_hs_cwnd_update_after_sack(struct sc
}
continue;
}
- if (net->net_ack2 > 0) {
- /*
- * Karn's rule applies to clearing error count, this
- * is optional.
- */
- net->error_count = 0;
- if ((net->dest_state & SCTP_ADDR_NOT_REACHABLE) ==
- SCTP_ADDR_NOT_REACHABLE) {
- /* addr came good */
- net->dest_state &= ~SCTP_ADDR_NOT_REACHABLE;
- net->dest_state |= SCTP_ADDR_REACHABLE;
- sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
- SCTP_RECEIVED_SACK, (void *)net, SCTP_SO_NOT_LOCKED);
- /* now was it the primary? if so restore */
- if (net->dest_state & SCTP_ADDR_WAS_PRIMARY) {
- (void)sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net);
- }
- }
- /*
- * JRS 5/14/07 - If CMT PF is on and the destination
- * is in PF state, set the destination to active
- * state and set the cwnd to one or two MTU's based
- * on whether PF1 or PF2 is being used.
- *
- * Should we stop any running T3 timer here?
- */
- if ((asoc->sctp_cmt_on_off > 0) &&
- (asoc->sctp_cmt_pf > 0) &&
- ((net->dest_state & SCTP_ADDR_PF) == SCTP_ADDR_PF)) {
- net->dest_state &= ~SCTP_ADDR_PF;
- net->cwnd = net->mtu * asoc->sctp_cmt_pf;
- SCTPDBG(SCTP_DEBUG_INDATA1, "Destination %p moved from PF to reachable with cwnd %d.\n",
- net, net->cwnd);
- /*
- * Since the cwnd value is explicitly set,
- * skip the code that updates the cwnd
- * value.
- */
- goto skip_cwnd_update;
- }
- }
#ifdef JANA_CMT_FAST_RECOVERY
/*
* CMT fast recovery code
@@ -1959,7 +1777,7 @@ sctp_hs_cwnd_update_after_sack(struct sc
* If we are in loss recovery we skip any cwnd
* update
*/
- goto skip_cwnd_update;
+ return;
}
/*
* CMT: CUC algorithm. Update cwnd if pseudo-cumack has
@@ -2004,23 +1822,6 @@ sctp_hs_cwnd_update_after_sack(struct sc
SCTP_CWND_LOG_NO_CUMACK);
}
}
-skip_cwnd_update:
- /*
- * NOW, according to Karn's rule do we need to restore the
- * RTO timer back? Check our net_ack2. If not set then we
- * have a ambiguity.. i.e. all data ack'd was sent to more
- * than one place.
- */
- if (net->net_ack2) {
- /* restore any doubled timers */
- net->RTO = (net->lastsa >> SCTP_RTT_SHIFT) + net->lastsv;
- if (net->RTO < stcb->asoc.minrto) {
- net->RTO = stcb->asoc.minrto;
- }
- if (net->RTO > stcb->asoc.maxrto) {
- net->RTO = stcb->asoc.maxrto;
- }
- }
}
}
@@ -2340,40 +2141,6 @@ sctp_htcp_cwnd_update_after_sack(struct
}
}
#endif
- if (SCTP_BASE_SYSCTL(sctp_early_fr)) {
- /*
- * So, first of all do we need to have a Early FR
- * timer running?
- */
- if ((!TAILQ_EMPTY(&asoc->sent_queue) &&
- (net->ref_count > 1) &&
- (net->flight_size < net->cwnd)) ||
- (reneged_all)) {
- /*
- * yes, so in this case stop it if its
- * running, and then restart it. Reneging
- * all is a special case where we want to
- * run the Early FR timer and then force the
- * last few unacked to be sent, causing us
- * to illicit a sack with gaps to force out
- * the others.
- */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck2);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_20);
- }
- SCTP_STAT_INCR(sctps_earlyfrstrid);
- sctp_timer_start(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net);
- } else {
- /* No, stop it if its running */
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck3);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_21);
- }
- }
- }
/* if nothing was acked on this destination skip it */
if (net->net_ack == 0) {
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) {
@@ -2381,47 +2148,6 @@ sctp_htcp_cwnd_update_after_sack(struct
}
continue;
}
- if (net->net_ack2 > 0) {
- /*
- * Karn's rule applies to clearing error count, this
- * is optional.
- */
- net->error_count = 0;
- if ((net->dest_state & SCTP_ADDR_NOT_REACHABLE) ==
- SCTP_ADDR_NOT_REACHABLE) {
- /* addr came good */
- net->dest_state &= ~SCTP_ADDR_NOT_REACHABLE;
- net->dest_state |= SCTP_ADDR_REACHABLE;
- sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
- SCTP_RECEIVED_SACK, (void *)net, SCTP_SO_NOT_LOCKED);
- /* now was it the primary? if so restore */
- if (net->dest_state & SCTP_ADDR_WAS_PRIMARY) {
- (void)sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net);
- }
- }
- /*
- * JRS 5/14/07 - If CMT PF is on and the destination
- * is in PF state, set the destination to active
- * state and set the cwnd to one or two MTU's based
- * on whether PF1 or PF2 is being used.
- *
- * Should we stop any running T3 timer here?
- */
- if ((asoc->sctp_cmt_on_off > 0) &&
- (asoc->sctp_cmt_pf > 0) &&
- ((net->dest_state & SCTP_ADDR_PF) == SCTP_ADDR_PF)) {
- net->dest_state &= ~SCTP_ADDR_PF;
- net->cwnd = net->mtu * asoc->sctp_cmt_pf;
- SCTPDBG(SCTP_DEBUG_INDATA1, "Destination %p moved from PF to reachable with cwnd %d.\n",
- net, net->cwnd);
- /*
- * Since the cwnd value is explicitly set,
- * skip the code that updates the cwnd
- * value.
- */
- goto skip_cwnd_update;
- }
- }
#ifdef JANA_CMT_FAST_RECOVERY
/*
* CMT fast recovery code
@@ -2441,7 +2167,7 @@ sctp_htcp_cwnd_update_after_sack(struct
* If we are in loss recovery we skip any cwnd
* update
*/
- goto skip_cwnd_update;
+ return;
}
/*
* CMT: CUC algorithm. Update cwnd if pseudo-cumack has
@@ -2457,23 +2183,6 @@ sctp_htcp_cwnd_update_after_sack(struct
SCTP_CWND_LOG_NO_CUMACK);
}
}
-skip_cwnd_update:
- /*
- * NOW, according to Karn's rule do we need to restore the
- * RTO timer back? Check our net_ack2. If not set then we
- * have a ambiguity.. i.e. all data ack'd was sent to more
- * than one place.
- */
- if (net->net_ack2) {
- /* restore any doubled timers */
- net->RTO = (net->lastsa >> SCTP_RTT_SHIFT) + net->lastsv;
- if (net->RTO < stcb->asoc.minrto) {
- net->RTO = stcb->asoc.minrto;
- }
- if (net->RTO > stcb->asoc.maxrto) {
- net->RTO = stcb->asoc.maxrto;
- }
- }
}
}
@@ -2566,30 +2275,6 @@ sctp_htcp_cwnd_update_after_timeout(stru
}
static void
-sctp_htcp_cwnd_update_after_fr_timer(struct sctp_inpcb *inp,
- struct sctp_tcb *stcb, struct sctp_nets *net)
-{
- int old_cwnd;
-
- old_cwnd = net->cwnd;
-
- sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_EARLY_FR_TMR, SCTP_SO_NOT_LOCKED);
- net->cc_mod.htcp_ca.last_cong = sctp_get_tick_count();
- /*
- * make a small adjustment to cwnd and force to CA.
- */
- if (net->cwnd > net->mtu)
- /* drop down one MTU after sending */
- net->cwnd -= net->mtu;
- if (net->cwnd < net->ssthresh)
- /* still in SS move to CA */
- net->ssthresh = net->cwnd - 1;
- if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) {
- sctp_log_cwnd(stcb, net, (old_cwnd - net->cwnd), SCTP_CWND_LOG_FROM_FR);
- }
-}
-
-static void
sctp_htcp_cwnd_update_after_ecn_echo(struct sctp_tcb *stcb,
struct sctp_nets *net, int in_window, int num_pkt_lost)
{
@@ -2618,42 +2303,42 @@ struct sctp_cc_functions sctp_cc_functio
{
.sctp_set_initial_cc_param = sctp_set_initial_cc_param,
.sctp_cwnd_update_after_sack = sctp_cwnd_update_after_sack,
+ .sctp_cwnd_update_exit_pf = sctp_cwnd_update_exit_pf_common,
.sctp_cwnd_update_after_fr = sctp_cwnd_update_after_fr,
.sctp_cwnd_update_after_timeout = sctp_cwnd_update_after_timeout,
.sctp_cwnd_update_after_ecn_echo = sctp_cwnd_update_after_ecn_echo,
.sctp_cwnd_update_after_packet_dropped = sctp_cwnd_update_after_packet_dropped,
.sctp_cwnd_update_after_output = sctp_cwnd_update_after_output,
- .sctp_cwnd_update_after_fr_timer = sctp_cwnd_update_after_fr_timer
},
{
.sctp_set_initial_cc_param = sctp_set_initial_cc_param,
.sctp_cwnd_update_after_sack = sctp_hs_cwnd_update_after_sack,
+ .sctp_cwnd_update_exit_pf = sctp_cwnd_update_exit_pf_common,
.sctp_cwnd_update_after_fr = sctp_hs_cwnd_update_after_fr,
.sctp_cwnd_update_after_timeout = sctp_cwnd_update_after_timeout,
.sctp_cwnd_update_after_ecn_echo = sctp_cwnd_update_after_ecn_echo,
.sctp_cwnd_update_after_packet_dropped = sctp_cwnd_update_after_packet_dropped,
.sctp_cwnd_update_after_output = sctp_cwnd_update_after_output,
- .sctp_cwnd_update_after_fr_timer = sctp_cwnd_update_after_fr_timer
},
{
.sctp_set_initial_cc_param = sctp_htcp_set_initial_cc_param,
.sctp_cwnd_update_after_sack = sctp_htcp_cwnd_update_after_sack,
+ .sctp_cwnd_update_exit_pf = sctp_cwnd_update_exit_pf_common,
.sctp_cwnd_update_after_fr = sctp_htcp_cwnd_update_after_fr,
.sctp_cwnd_update_after_timeout = sctp_htcp_cwnd_update_after_timeout,
.sctp_cwnd_update_after_ecn_echo = sctp_htcp_cwnd_update_after_ecn_echo,
.sctp_cwnd_update_after_packet_dropped = sctp_cwnd_update_after_packet_dropped,
.sctp_cwnd_update_after_output = sctp_cwnd_update_after_output,
- .sctp_cwnd_update_after_fr_timer = sctp_htcp_cwnd_update_after_fr_timer
},
{
.sctp_set_initial_cc_param = sctp_set_rtcc_initial_cc_param,
.sctp_cwnd_update_after_sack = sctp_cwnd_update_rtcc_after_sack,
+ .sctp_cwnd_update_exit_pf = sctp_cwnd_update_exit_pf_common,
.sctp_cwnd_update_after_fr = sctp_cwnd_update_after_fr,
.sctp_cwnd_update_after_timeout = sctp_cwnd_update_after_timeout,
.sctp_cwnd_update_after_ecn_echo = sctp_cwnd_update_rtcc_after_ecn_echo,
.sctp_cwnd_update_after_packet_dropped = sctp_cwnd_update_after_packet_dropped,
.sctp_cwnd_update_after_output = sctp_cwnd_update_after_output,
- .sctp_cwnd_update_after_fr_timer = sctp_cwnd_update_after_fr_timer,
.sctp_cwnd_update_packet_transmitted = sctp_cwnd_update_rtcc_packet_transmitted,
.sctp_cwnd_update_tsn_acknowledged = sctp_cwnd_update_rtcc_tsn_acknowledged,
.sctp_cwnd_new_transmission_begins = sctp_cwnd_new_rtcc_transmission_begins,
Modified: stable/8/sys/netinet/sctp_constants.h
==============================================================================
--- stable/8/sys/netinet/sctp_constants.h Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp_constants.h Fri Feb 10 22:42:03 2012 (r231456)
@@ -416,7 +416,7 @@ __FBSDID("$FreeBSD$");
#define SCTP_STR_RESET_IN_REQUEST 0x000e
#define SCTP_STR_RESET_TSN_REQUEST 0x000f
#define SCTP_STR_RESET_RESPONSE 0x0010
-#define SCTP_STR_RESET_ADD_STREAMS 0x0011
+#define SCTP_STR_RESET_ADD_STREAMS 0x0011
#define SCTP_MAX_RESET_PARAMS 2
#define SCTP_STREAM_RESET_TSN_DELTA 0x1000
@@ -508,14 +508,10 @@ __FBSDID("$FreeBSD$");
/* SCTP reachability state for each address */
#define SCTP_ADDR_REACHABLE 0x001
-#define SCTP_ADDR_NOT_REACHABLE 0x002
#define SCTP_ADDR_NOHB 0x004
#define SCTP_ADDR_BEING_DELETED 0x008
#define SCTP_ADDR_NOT_IN_ASSOC 0x010
-#define SCTP_ADDR_WAS_PRIMARY 0x020
-#define SCTP_ADDR_SWITCH_PRIMARY 0x040
#define SCTP_ADDR_OUT_OF_SCOPE 0x080
-#define SCTP_ADDR_DOUBLE_SWITCH 0x100
#define SCTP_ADDR_UNCONFIRMED 0x200
#define SCTP_ADDR_REQ_PRIMARY 0x400
/* JRS 5/13/07 - Added potentially failed state for CMT PF */
@@ -579,14 +575,13 @@ __FBSDID("$FreeBSD$");
#define SCTP_TIMER_TYPE_EVENTWAKE 13
#define SCTP_TIMER_TYPE_STRRESET 14
#define SCTP_TIMER_TYPE_INPKILL 15
-#define SCTP_TIMER_TYPE_EARLYFR 17
-#define SCTP_TIMER_TYPE_ASOCKILL 18
-#define SCTP_TIMER_TYPE_ADDR_WQ 19
-#define SCTP_TIMER_TYPE_ZERO_COPY 20
-#define SCTP_TIMER_TYPE_ZCOPY_SENDQ 21
-#define SCTP_TIMER_TYPE_PRIM_DELETED 22
+#define SCTP_TIMER_TYPE_ASOCKILL 16
+#define SCTP_TIMER_TYPE_ADDR_WQ 17
+#define SCTP_TIMER_TYPE_ZERO_COPY 18
+#define SCTP_TIMER_TYPE_ZCOPY_SENDQ 19
+#define SCTP_TIMER_TYPE_PRIM_DELETED 20
/* add new timers here - and increment LAST */
-#define SCTP_TIMER_TYPE_LAST 23
+#define SCTP_TIMER_TYPE_LAST 21
#define SCTP_IS_TIMER_TYPE_VALID(t) (((t) > SCTP_TIMER_TYPE_NONE) && \
((t) < SCTP_TIMER_TYPE_LAST))
@@ -655,16 +650,17 @@ __FBSDID("$FreeBSD$");
#define SCTP_DEFAULT_SECRET_LIFE_SEC 3600
#define SCTP_RTO_UPPER_BOUND (60000) /* 60 sec in ms */
-#define SCTP_RTO_LOWER_BOUND (300) /* 0.3 sec is ms */
+#define SCTP_RTO_LOWER_BOUND (1000) /* 1 sec is ms */
#define SCTP_RTO_INITIAL (3000) /* 3 sec in ms */
#define SCTP_INP_KILL_TIMEOUT 20/* number of ms to retry kill of inpcb */
#define SCTP_ASOC_KILL_TIMEOUT 10 /* number of ms to retry kill of inpcb */
-#define SCTP_DEF_MAX_INIT 8
-#define SCTP_DEF_MAX_SEND 10
-#define SCTP_DEF_MAX_PATH_RTX 5
+#define SCTP_DEF_MAX_INIT 8
+#define SCTP_DEF_MAX_SEND 10
+#define SCTP_DEF_MAX_PATH_RTX 5
+#define SCTP_DEF_PATH_PF_THRESHOLD SCTP_DEF_MAX_PATH_RTX
#define SCTP_DEF_PMTU_RAISE_SEC 600 /* 10 min between raise attempts */
@@ -679,7 +675,7 @@ __FBSDID("$FreeBSD$");
/* Send window update (incr * this > hiwat). Should be a power of 2 */
#define SCTP_MINIMAL_RWND (4096) /* minimal rwnd */
-#define SCTP_ADDRMAX 24
+#define SCTP_ADDRMAX 16
/* SCTP DEBUG Switch parameters */
#define SCTP_DEBUG_TIMER1 0x00000001
Modified: stable/8/sys/netinet/sctp_header.h
==============================================================================
--- stable/8/sys/netinet/sctp_header.h Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp_header.h Fri Feb 10 22:42:03 2012 (r231456)
@@ -98,9 +98,10 @@ struct sctp_heartbeat_info_param {
uint32_t time_value_2;
uint32_t random_value1;
uint32_t random_value2;
- uint16_t user_req;
uint8_t addr_family;
uint8_t addr_len;
+ /* make sure that this structure is 4 byte aligned */
+ uint8_t padding[2];
char address[SCTP_ADDRMAX];
} SCTP_PACKED;
Modified: stable/8/sys/netinet/sctp_indata.c
==============================================================================
--- stable/8/sys/netinet/sctp_indata.c Fri Feb 10 22:31:47 2012 (r231455)
+++ stable/8/sys/netinet/sctp_indata.c Fri Feb 10 22:42:03 2012 (r231456)
@@ -2434,7 +2434,8 @@ sctp_sack_check(struct sctp_tcb *stcb, i
sctp_timer_stop(SCTP_TIMER_TYPE_RECV,
stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_INDATA + SCTP_LOC_18);
}
- sctp_send_shutdown(stcb, stcb->asoc.primary_destination);
+ sctp_send_shutdown(stcb,
+ ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination));
sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED);
} else {
int is_a_gap;
@@ -4054,9 +4055,50 @@ sctp_express_handle_sack(struct sctp_tcb
}
/* JRS - Use the congestion control given in the CC module */
- if ((asoc->last_acked_seq != cumack) && (ecne_seen == 0))
+ if ((asoc->last_acked_seq != cumack) && (ecne_seen == 0)) {
+ TAILQ_FOREACH(net, &asoc->nets, sctp_next) {
+ if (net->net_ack2 > 0) {
+ /*
+ * Karn's rule applies to clearing error
+ * count, this is optional.
+ */
+ net->error_count = 0;
+ if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
+ /* addr came good */
+ net->dest_state |= SCTP_ADDR_REACHABLE;
+ sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
+ SCTP_RECEIVED_SACK, (void *)net, SCTP_SO_NOT_LOCKED);
+ }
+ if (net == stcb->asoc.primary_destination) {
+ if (stcb->asoc.alternate) {
+ /*
+ * release the alternate,
+ * primary is good
+ */
+ sctp_free_remote_addr(stcb->asoc.alternate);
+ stcb->asoc.alternate = NULL;
+ }
+ }
+ if (net->dest_state & SCTP_ADDR_PF) {
+ net->dest_state &= ~SCTP_ADDR_PF;
+ sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3);
+ sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net);
+ asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net);
+ /* Done with this net */
+ net->net_ack = 0;
+ }
+ /* restore any doubled timers */
+ net->RTO = (net->lastsa >> SCTP_RTT_SHIFT) + net->lastsv;
+ if (net->RTO < stcb->asoc.minrto) {
+ net->RTO = stcb->asoc.minrto;
+ }
+ if (net->RTO > stcb->asoc.maxrto) {
+ net->RTO = stcb->asoc.maxrto;
+ }
+ }
+ }
asoc->cc_functions.sctp_cwnd_update_after_sack(stcb, asoc, 1, 0, 0);
-
+ }
asoc->last_acked_seq = cumack;
if (TAILQ_EMPTY(&asoc->sent_queue)) {
@@ -4127,13 +4169,6 @@ again:
stcb, net,
SCTP_FROM_SCTP_INDATA + SCTP_LOC_22);
}
- if (SCTP_BASE_SYSCTL(sctp_early_fr)) {
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck4);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_23);
- }
- }
}
}
if ((j == 0) &&
@@ -4222,6 +4257,8 @@ again:
stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24;
sctp_abort_an_association(stcb->sctp_ep, stcb, SCTP_RESPONSE_TO_USER_REQ, oper, SCTP_SO_NOT_LOCKED);
} else {
+ struct sctp_nets *netp;
+
if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
(SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
SCTP_STAT_DECR_GAUGE32(sctps_currestab);
@@ -4229,26 +4266,36 @@ again:
SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT);
SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
sctp_stop_timers_for_shutdown(stcb);
- sctp_send_shutdown(stcb,
- stcb->asoc.primary_destination);
+ if (asoc->alternate) {
+ netp = asoc->alternate;
+ } else {
+ netp = asoc->primary_destination;
+ }
+ sctp_send_shutdown(stcb, netp);
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN,
- stcb->sctp_ep, stcb, asoc->primary_destination);
+ stcb->sctp_ep, stcb, netp);
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
- stcb->sctp_ep, stcb, asoc->primary_destination);
+ stcb->sctp_ep, stcb, netp);
}
} else if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) &&
(asoc->stream_queue_cnt == 0)) {
+ struct sctp_nets *netp;
+
+ if (asoc->alternate) {
+ netp = asoc->alternate;
+ } else {
+ netp = asoc->primary_destination;
+ }
if (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT) {
goto abort_out_now;
}
SCTP_STAT_DECR_GAUGE32(sctps_currestab);
SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT);
SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
- sctp_send_shutdown_ack(stcb,
- stcb->asoc.primary_destination);
+ sctp_send_shutdown_ack(stcb, netp);
sctp_stop_timers_for_shutdown(stcb);
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK,
- stcb->sctp_ep, stcb, asoc->primary_destination);
+ stcb->sctp_ep, stcb, netp);
}
}
/*********************************************/
@@ -4380,7 +4427,7 @@ sctp_handle_sack(struct mbuf *m, int off
num_dup,
SCTP_LOG_NEW_SACK);
}
- if ((num_dup) && (SCTP_BASE_SYSCTL(sctp_logging_level) & (SCTP_FR_LOGGING_ENABLE | SCTP_EARLYFR_LOGGING_ENABLE))) {
+ if ((num_dup) && (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE)) {
uint16_t i;
uint32_t *dupdata, dblock;
@@ -4468,13 +4515,6 @@ sctp_handle_sack(struct mbuf *m, int off
TAILQ_FOREACH(net, &asoc->nets, sctp_next) {
sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep,
stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_26);
- if (SCTP_BASE_SYSCTL(sctp_early_fr)) {
- if (SCTP_OS_TIMER_PENDING(&net->fr_timer.timer)) {
- SCTP_STAT_INCR(sctps_earlyfrstpidsck1);
- sctp_timer_stop(SCTP_TIMER_TYPE_EARLYFR, stcb->sctp_ep, stcb, net,
- SCTP_FROM_SCTP_INDATA + SCTP_LOC_26);
- }
- }
net->partial_bytes_acked = 0;
net->flight_size = 0;
}
@@ -4830,20 +4870,54 @@ sctp_handle_sack(struct mbuf *m, int off
asoc->saw_sack_with_nr_frags = 0;
/* JRS - Use the congestion control given in the CC module */
- if (ecne_seen == 0)
+ if (ecne_seen == 0) {
+ TAILQ_FOREACH(net, &asoc->nets, sctp_next) {
+ if (net->net_ack2 > 0) {
+ /*
+ * Karn's rule applies to clearing error
+ * count, this is optional.
+ */
+ net->error_count = 0;
+ if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
+ /* addr came good */
+ net->dest_state |= SCTP_ADDR_REACHABLE;
+ sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
+ SCTP_RECEIVED_SACK, (void *)net, SCTP_SO_NOT_LOCKED);
+ }
+ if (net == stcb->asoc.primary_destination) {
+ if (stcb->asoc.alternate) {
+ /*
+ * release the alternate,
+ * primary is good
+ */
+ sctp_free_remote_addr(stcb->asoc.alternate);
+ stcb->asoc.alternate = NULL;
+ }
+ }
+ if (net->dest_state & SCTP_ADDR_PF) {
+ net->dest_state &= ~SCTP_ADDR_PF;
+ sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3);
+ sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable-8
mailing list