#
1.154 |
|
04-Nov-2022 |
ozaki-r |
inpcb: rename functions to in6pcb_*
|
#
1.153 |
|
04-Nov-2022 |
ozaki-r |
inpcb: rename functions to inpcb_*
Inspired by rmind-smpnet patches.
|
#
1.152 |
|
28-Oct-2022 |
ozaki-r |
inpcb: separate inpcb again to reduce the size of PCB for IPv4
The data size of PCB for IPv4 increased because of the merge of struct in6pcb. The change decreases the size to the original size by separating struct inpcb (again). struct in4pcb and in6pcb that embed struct inpcb are introduced.
Even after the separation, users don't need to realize the separation and only have to use some macros to access dedicated data. For example, inp->inp_laddr is now accessed through in4p_laddr(inp).
|
#
1.151 |
|
28-Oct-2022 |
ozaki-r |
inpcb: integrate data structures of PCB into one
Data structures of network protocol control blocks (PCBs), i.e., struct inpcb, in6pcb and inpcb_hdr, are not organized well. Users of the data structures have to handle them separately and thus the code is cluttered and duplicated.
The commit integrates the data structures into one, struct inpcb. As a result, users of PCBs only have to handle just one data structure, so the code becomes simple.
One drawback is that the data size of PCB for IPv4 increases by 40 bytes (from 248 bytes to 288 bytes).
|
Revision tags: bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
#
1.150 |
|
19-Feb-2021 |
christos |
- Make ALIGNED_POINTER use __alignof(t) instead of sizeof(t). This is more correct because it works with non-primitive types and provides the ABI alignment for the type the compiler will use. - Remove all the *_HDR_ALIGNMENT macros and asserts - Replace POINTER_ALIGNED_P with ACCESSIBLE_POINTER which is identical to ALIGNED_POINTER, but returns that the pointer is always aligned if the CPU supports unaligned accesses. [ as proposed in tech-kern ]
|
#
1.149 |
|
14-Feb-2021 |
christos |
- centralize header align and pullup into a single inline function - use a single macro to align pointers and expose the alignment, instead of hard-coding 3 in 1/2 the macros. - fix an issue in the ipv6 lt2p where it was aligning for ipv4 and pulling for ipv6.
|
#
1.148 |
|
20-Aug-2020 |
riastradh |
branches: 1.148.2; [ozaki-r] Changes to the kernel core for wireguard
|
Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
branches: 1.141.2; Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.152 |
|
28-Oct-2022 |
ozaki-r |
inpcb: separate inpcb again to reduce the size of PCB for IPv4
The data size of PCB for IPv4 increased because of the merge of struct in6pcb. The change decreases the size to the original size by separating struct inpcb (again). struct in4pcb and in6pcb that embed struct inpcb are introduced.
Even after the separation, users don't need to realize the separation and only have to use some macros to access dedicated data. For example, inp->inp_laddr is now accessed through in4p_laddr(inp).
|
#
1.151 |
|
28-Oct-2022 |
ozaki-r |
inpcb: integrate data structures of PCB into one
Data structures of network protocol control blocks (PCBs), i.e., struct inpcb, in6pcb and inpcb_hdr, are not organized well. Users of the data structures have to handle them separately and thus the code is cluttered and duplicated.
The commit integrates the data structures into one, struct inpcb. As a result, users of PCBs only have to handle just one data structure, so the code becomes simple.
One drawback is that the data size of PCB for IPv4 increases by 40 bytes (from 248 bytes to 288 bytes).
|
Revision tags: bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
#
1.150 |
|
19-Feb-2021 |
christos |
- Make ALIGNED_POINTER use __alignof(t) instead of sizeof(t). This is more correct because it works with non-primitive types and provides the ABI alignment for the type the compiler will use. - Remove all the *_HDR_ALIGNMENT macros and asserts - Replace POINTER_ALIGNED_P with ACCESSIBLE_POINTER which is identical to ALIGNED_POINTER, but returns that the pointer is always aligned if the CPU supports unaligned accesses. [ as proposed in tech-kern ]
|
#
1.149 |
|
14-Feb-2021 |
christos |
- centralize header align and pullup into a single inline function - use a single macro to align pointers and expose the alignment, instead of hard-coding 3 in 1/2 the macros. - fix an issue in the ipv6 lt2p where it was aligning for ipv4 and pulling for ipv6.
|
#
1.148 |
|
20-Aug-2020 |
riastradh |
branches: 1.148.2; [ozaki-r] Changes to the kernel core for wireguard
|
Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
branches: 1.141.2; Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.150 |
|
19-Feb-2021 |
christos |
- Make ALIGNED_POINTER use __alignof(t) instead of sizeof(t). This is more correct because it works with non-primitive types and provides the ABI alignment for the type the compiler will use. - Remove all the *_HDR_ALIGNMENT macros and asserts - Replace POINTER_ALIGNED_P with ACCESSIBLE_POINTER which is identical to ALIGNED_POINTER, but returns that the pointer is always aligned if the CPU supports unaligned accesses. [ as proposed in tech-kern ]
|
#
1.149 |
|
14-Feb-2021 |
christos |
- centralize header align and pullup into a single inline function - use a single macro to align pointers and expose the alignment, instead of hard-coding 3 in 1/2 the macros. - fix an issue in the ipv6 lt2p where it was aligning for ipv4 and pulling for ipv6.
|
Revision tags: thorpej-futex-base
|
#
1.148 |
|
20-Aug-2020 |
riastradh |
[ozaki-r] Changes to the kernel core for wireguard
|
Revision tags: netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
branches: 1.141.2; Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.149 |
|
14-Feb-2021 |
christos |
- centralize header align and pullup into a single inline function - use a single macro to align pointers and expose the alignment, instead of hard-coding 3 in 1/2 the macros. - fix an issue in the ipv6 lt2p where it was aligning for ipv4 and pulling for ipv6.
|
Revision tags: thorpej-futex-base
|
#
1.148 |
|
20-Aug-2020 |
riastradh |
[ozaki-r] Changes to the kernel core for wireguard
|
Revision tags: netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
branches: 1.141.2; Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.148 |
|
20-Aug-2020 |
riastradh |
[ozaki-r] Changes to the kernel core for wireguard
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
branches: 1.141.2; Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
Revision tags: isaki-audio2-base
|
#
1.147 |
|
25-Feb-2019 |
maxv |
Fix the order in udp6_attach: soreserve should be called before in6_pcballoc, otherwise if it fails there is still a PCB attached, and we hit a KASSERT in socreate. In !DIAGNOSTIC this would have caused a memory leak.
By the way I find the splsoftnet highly suspicious, in6_pcballoc already does that.
Triggered by SyzKaller.
Reported-by: syzbot+7bace612ca3cc3e124f8@syzkaller.appspotmail.com
|
#
1.146 |
|
28-Jan-2019 |
martin |
Fix memory leaks pointed out by Ilja Van Sprundel: all sendoob() functions are expted to free both passed mbuf chains.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118
|
#
1.145 |
|
27-Dec-2018 |
maxv |
Remove unused arguments.
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.144 |
|
22-Nov-2018 |
knakahara |
Support IPv6 NAT-T. Implemented by hsuenaga@IIJ and ohishi@IIJ.
Add ATF later.
|
#
1.143 |
|
06-Nov-2018 |
ozaki-r |
Restore the length check of a sockaddr passed from userland at udp6_output
A sockaddr with invalid length could be passed to the network stack resulting in a kernel panic like this:
panic: sockaddr_copy: source too long, 28 < 128 bytes fatal breakpoint trap in supervisor mode trap type 1 code 0 rip 0xffffffff80216c35 cs 0x8 rflags 0x246 cr2 0x7f7ff7ef3000 ilevel 0x4 rsp 0xffff80003308b690 curlwp 0xfffffe803e11ca40 pid 48.1 lowest kstack 0xffff8000330852c0 Stopped in pid 48.1 (a.out) at netbsd:breakpoint+0x5: leave db{1}> bt breakpoint() at netbsd:breakpoint+0x5 vpanic() at netbsd:vpanic+0x140 panic() at netbsd:panic+0x3c sockaddr_copy() at netbsd:sockaddr_copy+0x95 rtcache_setdst() at netbsd:rtcache_setdst+0x73 rtcache_lookup2() at netbsd:rtcache_lookup2+0x56 in6_selectroute() at netbsd:in6_selectroute+0x184 in6_selectsrc() at netbsd:in6_selectsrc+0x119 udp6_output() at netbsd:udp6_output+0x25e udp6_send_wrapper() at netbsd:udp6_send_wrapper+0x8a sosend() at netbsd:sosend+0x7bf do_sys_sendmsg_so() at netbsd:do_sys_sendmsg_so+0x28e do_sys_sendmsg() at netbsd:do_sys_sendmsg+0x89 sys_sendto() at netbsd:sys_sendto+0x5c syscall() at netbsd:syscall+0x1ed --- syscall (number 133) --- 7f7ff790173a:
Reported by Paul Ripke
|
#
1.142 |
|
04-Nov-2018 |
mlelstv |
Fix error path in ip6 source address selection.
in6_selectsrc previously returned a pointer to an ipv6 address, the pointer was NULL in case of an error and is checked later instead of the also returned error code. When in6_selectsrc was changed to store the address into a buffer, the error code was still ignored, but the buffer pointer was never set to NULL.
As a result send() to an ipv6 address on a system that isn't configured for ipv6 no longer returns the expected EADDRAVAIL but fails later in ip6_output with EOPNOTSUPP when trying to send from an unspecified address. The wrong error code caused BIND to log the unexpected errors.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502
|
#
1.141 |
|
28-Apr-2018 |
maxv |
Remove unused ipsec_var.h includes.
|
Revision tags: pgoyette-compat-0422
|
#
1.140 |
|
18-Apr-2018 |
maxv |
Remove misleading comments.
|
Revision tags: pgoyette-compat-0415
|
#
1.139 |
|
12-Apr-2018 |
maxv |
Remove misleading comment; we're just checking the SP, not verifying the AH/ESP payload. While here style a bit.
|
Revision tags: pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322
|
#
1.138 |
|
19-Mar-2018 |
roy |
socket: report receive buffer overflows
Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input().
This allows userland to detect route(4) overflows so it can re-sync with the current state.
|
Revision tags: pgoyette-compat-0315 pgoyette-compat-base
|
#
1.137 |
|
28-Feb-2018 |
maxv |
branches: 1.137.2; Remove unused ipsec_private.h includes.
|
#
1.136 |
|
28-Feb-2018 |
maxv |
Remove duplicate IPSEC_STATINC(IPSEC_STAT_IN_POLVIO), ipsec_in_reject already increases it. IPSEC6_STATINC is now unused, so remove it too.
|
#
1.135 |
|
26-Feb-2018 |
maxv |
Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject. While here fix misleading comment.
ok ozaki-r@
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
branches: 1.129.4; Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.2; 1.115.4; 1.115.6; 1.115.10; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.134 |
|
08-Feb-2018 |
maxv |
Remove the IN6_IS_ADDR_V4MAPPED checks in the protocol functions. They are useless, because the IPv6 entry point (ip6_input) already performs them.
The checks were first added in the protocol functions:
Wed Dec 22 04:03:02 1999 UTC (18 years, 1 month ago) by itojun
"drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)"
Shortly afterwards they were also added in the IPv6 entry point, but where not removed from the protocol functions:
Mon Jan 31 10:33:22 2000 UTC (18 years ago) by itojun
"be proactive about malicious packet on the wire. we fear that v4 mapped address to be used as a tool to hose security filters (like bypassing "local host only" filter by using ::ffff:127.0.0.1)."
OpenBSD did the same a few months ago. FreeBSD has never had these checks.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.133 |
|
08-Feb-2018 |
maxv |
pr_send can be given a NULL lwp. It looks like the
control != NULL && lwp == NULL
condition is never supposed to happen, but add a panic for safety.
|
#
1.132 |
|
08-Feb-2018 |
maxv |
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is more consistent with IPv4, and there is no good reason for keeping a separate file only for one function. FreeBSD did the same.
|
#
1.131 |
|
08-Feb-2018 |
maxv |
Style, no functional change.
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.130 |
|
06-Jul-2017 |
christos |
Merge the two copies SO_TIMESTAMP/SO_OTIMESTAMP processing to a single function, and add a SOOPT_TIMESTAMP define reducing compat pollution from 5 places to 1.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
Revision tags: prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
|
#
1.129 |
|
20-Apr-2017 |
ozaki-r |
Remove unnecessary NULL checks for inp_socket and in6p_socket
They cannot be NULL except for programming errors.
|
#
1.128 |
|
20-Apr-2017 |
ozaki-r |
Simplify logic of udp4_sendup and udp6_sendup
They are always passed a socket with the same protocol faimiliy as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.
|
Revision tags: jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
branches: 1.126.2; fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
#
1.127 |
|
24-Jan-2017 |
ozaki-r |
Tweak softnet_lock and NET_MPSAFE
- Don't hold softnet_lock in some functions if NET_MPSAFE - Add softnet_lock to sysctl_net_inet_icmp_redirtimeout - Add softnet_lock to expire_upcalls of ip_mroute.c - Restore softnet_lock for in{,6}_pcbpurgeif{,0} if NET_MPSAFE - Mark some softnet_lock for future work
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|
Revision tags: nick-nhusb-base-20161204
|
#
1.126 |
|
18-Nov-2016 |
knakahara |
fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on.
ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock.
|
#
1.125 |
|
15-Nov-2016 |
mlelstv |
Enforce alignment requirements that are violated in some cases. For machines that don't need strict alignment (i386,amd64,vax,m68k) this is a no-op.
Fixes PR kern/50766 but should be improved.
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
#
1.124 |
|
15-Jul-2016 |
ozaki-r |
Use sin6tosa and sin6tocsa macros
No functional change.
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.123 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.123.2; 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.
|
Revision tags: nick-nhusb-base-20160529
|
#
1.122 |
|
26-Apr-2016 |
ozaki-r |
Sweep unnecessary route.h inclusions
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.121 |
|
24-Aug-2015 |
pooka |
sprinkle _KERNEL_OPT
|
Revision tags: nick-nhusb-base-20150606
|
#
1.120 |
|
02-May-2015 |
rtr |
make connect syscall use sockaddr_big and modify pr_{send,connect} nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
|
#
1.119 |
|
26-Apr-2015 |
rtr |
remove pr_generic from struct pr_usrreqs and all implementations of pr_generic in protocols.
bump to 7.99.13
approved by rmind@
|
#
1.118 |
|
24-Apr-2015 |
rtr |
make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.
* retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change.
patch posted to tech-net@ 2015/04/19
|
Revision tags: nick-nhusb-base-20150406
|
#
1.117 |
|
03-Apr-2015 |
rtr |
* change pr_bind to accept struct sockaddr * instead of struct mbuf * * update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type.
Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html
The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced.
Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
|
#
1.116 |
|
30-Mar-2015 |
ozaki-r |
Tidy up opt_ipsec.h inclusions
|
Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.115 |
|
09-Aug-2014 |
rtr |
branches: 1.115.4; split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented (for PRU_CONNECT2 only)
- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to pr_connect2()
- replace calls to pr_generic() with req = PRU_PURGEIF with calls to pr_purgeif()
put common code from unp_connect2() (used by unp_connect() into unp_connect1() and call out to it when needed
patch only briefly reviewed by rmind@
|
#
1.114 |
|
08-Aug-2014 |
rtr |
split PRU_RCVD function out of pr_generic() usrreq switches and put into separate functions
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_RCVD with calls to pr_rcvd()
|
#
1.113 |
|
05-Aug-2014 |
rtr |
split PRU_SEND function out of pr_generic() usrreq switches and put into separate functions
xxx_send(struct socket *, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_SEND with calls to pr_send()
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_send() PRUs
- l2cap_send() -> l2cap_send_pcb() - sco_send() -> sco_send_pcb() - rfcomm_send() -> rfcomm_send_pcb()
patch reviewed by rmind
|
#
1.112 |
|
05-Aug-2014 |
rtr |
revert the removal of struct lwp * parameter from bind, listen and connect user requests.
this should resolve the issue relating to nfs client hangs presented recently by wiz on current-users@
|
#
1.111 |
|
31-Jul-2014 |
rtr |
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *) xxx_shutdown(struct socket *) xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented - replace calls to pr_generic() with req = PRU_{DISCONNECT,SHUTDOWN,ABORT} with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() -> {l2cap,sco,rfcomm}_disconnect_pcb() - {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1() - unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
|
#
1.110 |
|
30-Jul-2014 |
rtr |
split PRU_CONNECT function out of pr_generic() usrreq switches and put into seaparate functions
xxx_listen(struct socket *, struct mbuf *)
- always KASSERT(solocked(so)) and KASSERT(nam != NULL) - replace calls to pr_generic() with req = PRU_CONNECT with pr_connect() - rename existin {l2cap,sco,rfcomm}_connect() to {l2cap,sco,rfcomm}_connect_pcb() respectively to permit naming consistency with other protocols functions. - drop struct lwp * parameter from unp_connect() and at_pcbconnect() and use curlwp instead where appropriate.
patch reviewed by rmind
|
#
1.109 |
|
24-Jul-2014 |
rtr |
split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq switches and put into separate functions xxx_bind(struct socket *, struct mbuf *) xxx_listen(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req = PRU_BIND with call to pr_bind()
- replace calls to pr_generic() with req = PRU_LISTEN with call to pr_listen()
- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and unp_bind() and always use curlwp.
rename existing functions that operate on PCB for consistency (and to free up their names for xxx_{bind,listen}() PRUs
- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb() - sco_{bind,listen}() -> sco_{bind,listen}_pcb() - rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()
patch reviewed by rmind
welcome to netbsd 6.99.48
|
#
1.108 |
|
23-Jul-2014 |
rtr |
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq switches and put into separate functions xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *) xxx_recvoob(struct socket *, struct mbuf *, int)
- always KASSERT(solocked(so)) even if request is not implemented
- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with calls to pr_{send,recv}oob() respectively.
there is still some tweaking of m_freem(m) and m_freem(control) to come for consistency. not performed with this commit for clarity.
reviewed by rmind
|
#
1.107 |
|
09-Jul-2014 |
rtr |
* split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
#
1.106 |
|
09-Jul-2014 |
rtr |
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic() usrreq switches and put into separate functions xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into easier to cut & paste functions tcp_debug_capture() and tcp_debug_trace()
- functions provided by rmind - remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a future commit.
* rename netbt functions to permit consistency of pru function names (as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb() - rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb() - sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from do_sys_getsockname() - have svr4_stream directly call do_sys_get{sock,peer}name() respectively instead of providing `which' & fix a DPRINTF string that incorrectly wrote "getpeername" when it meant "getsockname" - fix sys_getpeername() and sys_getsockname() to call do_sys_get{sock,peer}name() without `which' and `lwp' & adjust comments - bump kernel version for removal of lwp & which parameters from do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in xxx_{peer,sock}name() still to come, not done in this commit since it is easier to do post split.
patch reviewed by rmind
welcome to 6.99.47
|
#
1.105 |
|
07-Jul-2014 |
rtr |
* sprinkle KASSERT(solocked(so)); in all pr_stat() functions. * fix remaining inconsistent struct socket parameter names.
|
#
1.104 |
|
07-Jul-2014 |
rtr |
backout change that made pr_stat return EOPNOTSUPP for protocols that were not filling in struct stat.
decision made after further discussion with rmind and investigation of how other operating systems behave. soo_stat() is doing just enough to be able to call what gets returned valid and thus justifys a return of success.
additional review will be done to determine of the pr_stat functions that were already returning EOPNOTSUPP can be considered successful with what soo_stat() is doing.
|
#
1.103 |
|
07-Jul-2014 |
rtr |
* have pr_stat return EOPNOTSUPP consistently for all protocols that do not fill in struct stat instead of returning success.
* in pr_stat remove all checks for non-NULL so->so_pcb except where the pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).
proposed on tech-net@
|
#
1.102 |
|
06-Jul-2014 |
rtr |
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into separate xxx_stat(struct socket *, struct stat *) functions. * replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the pcb and test for its presence.
reviewed by rmind
|
#
1.101 |
|
01-Jul-2014 |
rtr |
fix parameter types in pr_ioctl, called xx_control() functions and remove abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command) param3 changed to void * type and uses parameter name 'data' param4 changed to struct ifnet * and uses parameter name 'ifp' param5 has been removed (formerly struct lwp *) and uses of 'l' have been replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called code has had (now unnecessary) casts to u_long, void * and struct ifnet * respectively removed.
reviewed by rmind@
|
#
1.100 |
|
23-Jun-2014 |
rtr |
where appropriate rename xxx_ioctl() struct mbuf * parameters from `control' to `ifp' after split from xxx_usrreq().
sys_socket.c fix wrapping of arguments to be consistent with other function calls in the file after replacing pr_usrreq() call with pr_ioctl() which required one less argument.
link_proto.c fix indentation of parameters in link_ioctl() prototype to be consistent with the rest of the file.
discussed with rmind@
|
#
1.99 |
|
22-Jun-2014 |
rtr |
* split PRU_CONTROL functionality out of xxx_userreq() switches and place into separate xxx_ioctl() functions. * place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now inappropriate for req = PRU_CONTROL in xxx_userreq(). * replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl(). * remove & fixup references to PRU_CONTROL xxx_userreq() function comments. * fix various comments references for xxx_userreq() that mentioned PRU_CONTROL as xxx_userreq() no longer handles the request.
a further change will follow to fix parameter and naming inconsistencies retained from original code.
Reviewed by rmind@
|
#
1.98 |
|
30-May-2014 |
christos |
Introduce 2 new variables: ipsec_enabled and ipsec_used. Ipsec enabled is controlled by sysctl and determines if is allowed. ipsec_used is set automatically based on ipsec being enabled, and rules existing.
|
#
1.97 |
|
22-May-2014 |
rmind |
Move udp6_input(), udp6_sendup(), udp6_realinput() and udp6_input_checksum() from udp_usrreq.c to udp6_usrreq.c where they belong. No functional change.
|
#
1.96 |
|
20-May-2014 |
rmind |
Adjust PR_WRAP_USRREQS() to include the attach/detach functions. We still need the kernel-lock for some corner cases.
|
#
1.95 |
|
19-May-2014 |
rmind |
- Split off PRU_ATTACH and PRU_DETACH logic into separate functions. - Replace malloc with kmem and eliminate M_PCB while here. - Sprinkle more asserts.
|
Revision tags: rmind-smpnet-nbase rmind-smpnet-base
|
#
1.94 |
|
18-May-2014 |
rmind |
Add struct pr_usrreqs with a pr_generic function and prepare for the dismantling of pr_usrreq in the protocols; no functional change intended. PRU_ATTACH/PRU_DETACH changes will follow soon.
Bump for struct protosw. Welcome to 6.99.62!
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
#
1.93 |
|
25-Feb-2014 |
pooka |
branches: 1.93.2; Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
#
1.92 |
|
02-Jan-2014 |
pooka |
Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.91 |
|
22-Jun-2012 |
christos |
branches: 1.91.2; 1.91.4; PR/46602: Move the rfc6056 port randomization to the IP layer.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.90 |
|
24-Sep-2011 |
christos |
branches: 1.90.2; Add inet6 part of the rfc6056 code contributed by Vlad Balan as part of Google SoC-2011
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.89 |
|
03-May-2011 |
dyoung |
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding socket and protocol control blocks (PCBs) stick around until the TCP Maximum Segment Lifetime (MSL) expires. On a host whose workload necessarily creates and closes down many TCP sockets, the sockets & PCBs for TCP sessions in TIME_WAIT state amount to many megabytes of dead weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to a class based on the nearness of the peer. Corresponding to each class is an MSL, and a session uses the MSL of its class. The classes are loopback (local host equals remote host), local (local host and remote host are on the same link/subnet), and remote (local host and remote host communicate via one or more gateways). Classes corresponding to nearer peers have lower MSLs by default: 2 seconds for loopback, 10 seconds for local, 60 seconds for remote. Loopback and local sessions expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket dead weight with a compact representation of the session, called a "vestigial PCB". VTW data structures are designed to be very fast and memory-efficient: for fast insertion and lookup of vestigial PCBs, the PCBs are stored in a hash table that is designed to minimize the number of cacheline visits per lookup/insertion. The memory both for vestigial PCBs and for elements of the PCB hashtable come from fixed-size pools, and linked data structures exploit this to conserve memory by representing references with a narrow index/offset from the start of a pool instead of a pointer. When space for new vestigial PCBs runs out, VTW makes room by discarding old vestigial PCBs, oldest first. VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT sessions as fast as it can is approximately 17% idle when VTW is active versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM when VTW is active (approximately 64k vestigial PCBs are created) than when it is inactive.
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
#
1.88 |
|
16-Sep-2009 |
pooka |
branches: 1.88.4; 1.88.6; Replace a large number of link set based sysctl node creations with calls from subsystem constructors. Benefits both future kernel modules and rump.
no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.87 |
|
18-Mar-2009 |
cegger |
bzero -> memset
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
#
1.86 |
|
04-May-2008 |
thorpej |
branches: 1.86.8; 1.86.14; Simplify the interface to netstat_sysctl() and allocate space for the collated counters using kmem_alloc().
PR kern/38577
|
#
1.85 |
|
28-Apr-2008 |
yamt |
udp6_init: fix a comment.
|
Revision tags: yamt-nfs-mp-base
|
#
1.84 |
|
24-Apr-2008 |
ad |
branches: 1.84.2; Merge the socket locking patch:
- Socket layer becomes MP safe. - Unix protocols become MP safe. - Allows protocol processing interrupts to safely block on locks. - Fixes a number of race conditions.
With much feedback from matt@ and plunky@.
|
#
1.83 |
|
23-Apr-2008 |
thorpej |
Use <net/net_stats.h> / netstat_sysctl().
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.82 |
|
15-Apr-2008 |
thorpej |
branches: 1.82.2; Make udp6 stats per-cpu.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.81 |
|
27-Feb-2008 |
matt |
Convert to ansi definitions from old-style definitons. Remember that func() is not ansi, func(void) is.
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
#
1.80 |
|
14-Nov-2007 |
dyoung |
branches: 1.80.10; 1.80.14; KNF. Remove superfluous parentheses. In the switch-statement, consolidate all of the 'error = EOPNOTSUPP;' cases. No functional change intended.
|
#
1.79 |
|
06-Nov-2007 |
dyoung |
Take a clue from udp_usrreq(): block IPL_SOFTNET in udp6_usrreq(), both while we purge an interface, and while we call udp6_output().
XXX udp6_usrreq() needs more attention.
|
Revision tags: jmcneill-base
|
#
1.78 |
|
01-Nov-2007 |
dyoung |
branches: 1.78.2; De-__P().
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
|
#
1.77 |
|
04-Mar-2007 |
christos |
branches: 1.77.14; 1.77.16; 1.77.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.76 |
|
17-Feb-2007 |
dyoung |
KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
#
1.75 |
|
23-Jul-2006 |
ad |
branches: 1.75.10; Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
#
1.74 |
|
05-May-2006 |
rpaulo |
Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). * RFC 3542 isn't binary compatible with RFC 2292. * RFC 2292 support is on by default but can be disabled. * update ping6, telnet and traceroute6 to the new API.
From the KAME project (www.kame.net). Reviewed by core.
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.73 |
|
21-Jan-2006 |
rpaulo |
branches: 1.73.2; 1.73.4; 1.73.6; 1.73.8; 1.73.10; Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of scope zone IDs and won't touch "s6_addr16[1]" directly. - similarly, most of the kernel code will not care about link-local scoped addresses as a special case. - scope boundary check will be stricter. For example, the current *BSD code allows a packet with src=::1 and dst=(some global IPv6 address) to be sent outside of the node, if the application do: s = socket(AF_INET6); bind(s, "::1"); sendto(s, some_global_IPv6_addr); This is clearly wrong, since ::1 is only meaningful within a single node, but the current implementation of the *BSD kernel cannot reject this attempt. - and, while there, don't try to remove the ff02::/32 interface route entry in in6_ifdetach() as it's already gone.
This also includes some level of support for the standard source address selection algorithm defined in RFC3484, which will be completed on in the future.
From the KAME project via JINMEI Tatuya. Approved by core@.
|
#
1.72 |
|
11-Dec-2005 |
christos |
branches: 1.72.2; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 ktrace-lwp-base
|
#
1.71 |
|
15-Nov-2005 |
dsl |
Pass the current process structure to in_pcbconnect() so that it can pass it to in_pcbbind() so that can allocate a low numbered port if setsockopt() has been used to set IP_PORTRANGE to IP_PORTRANGE_LOW. While there, fail in_pcbconnect() if the in_pcbbind() fails - rather than sending the request out from a port of zero. This has been largely broken since the socket option was added in 1998.
|
Revision tags: yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.70 |
|
28-Aug-2005 |
rpaulo |
branches: 1.70.6; Implement net.inet6.udp6.stats.
Reviewed by Elad Efrat.
|
#
1.69 |
|
10-Aug-2005 |
yamt |
move {tcp,udp}_do_loopback_cksum back to tcp/udp so that they can be referenced by ipv6.
|
#
1.68 |
|
29-May-2005 |
christos |
branches: 1.68.2; - avoid shadowed variables - sprinkle const.
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
#
1.67 |
|
11-Mar-2005 |
atatat |
Revert the change that made kern.file2 and net.*.*.pcblist into nodes instead of structs. It had other deleterious side-effects that are rather nasty. Another solution must be found.
|
#
1.66 |
|
10-Mar-2005 |
atatat |
Change types of kern.file2 and net.*.*.pcblist to NODE
|
#
1.65 |
|
09-Mar-2005 |
atatat |
Add the following nodes to the sysctl tree:
net.local.stream.pcblist net.local.dgram.pcblist net.inet.tcp.pcblist net.inet.udp.pcblist net.inet.raw.pcblist net.inet6.tcp6.pcblist net.inet6.udp6.pcblist net.inet6.raw6.pcblist
which allow retrieval of the pcbs in use for those protocols. The struct involved is 32/64 bit clean and incorporates parts of struct inpcb, struct unpcb, a bit of struct tcpcb, and two socket addresses.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
#
1.64 |
|
15-Dec-2004 |
thorpej |
branches: 1.64.2; 1.64.4; Don't perform checksums on loopback interfaces. They can be reenabled with the net.inet.*.do_loopback_cksum sysctl.
Approved by: groo
|
Revision tags: kent-audio1-base
|
#
1.63 |
|
25-May-2004 |
atatat |
Sysctl descriptions under net subtree (net.key not done)
|
Revision tags: netbsd-2-0-base
|
#
1.62 |
|
24-Mar-2004 |
atatat |
branches: 1.62.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
#
1.61 |
|
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
#
1.60 |
|
25-Oct-2003 |
christos |
fix uninitialized variables
|
#
1.59 |
|
06-Sep-2003 |
itojun |
clarify flowlabel handling
|
#
1.58 |
|
04-Sep-2003 |
itojun |
revamp inpcb/in6pcb so that they are more aligned with each other. in6pcb lookup now uses hash(9).
|
#
1.57 |
|
22-Aug-2003 |
itojun |
no need for opt_ipsec.h any longer
|
#
1.56 |
|
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
#
1.55 |
|
29-Jun-2003 |
fvdl |
branches: 1.55.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
#
1.54 |
|
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
#
1.53 |
|
11-Sep-2002 |
itojun |
KNF - return is not a function. sync w/kame.
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
#
1.52 |
|
12-May-2002 |
matt |
Eliminate commons.
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
#
1.51 |
|
13-Nov-2001 |
lukem |
add RCSIDs
|
Revision tags: thorpej-mips-cache-base
|
#
1.50 |
|
29-Oct-2001 |
simonb |
Don't need to include <uvm/uvm_extern.h> just to include <sys/sysctl.h> anymore.
|
#
1.49 |
|
24-Oct-2001 |
itojun |
more whitespace sync with kame
|
#
1.48 |
|
24-Oct-2001 |
itojun |
remove unused codepath (unifdef -UUDP6)
|
#
1.47 |
|
18-Oct-2001 |
itojun |
branches: 1.47.2; reduce diffs with kame (mostly cosmetic). move IPV6_CHECKSUM processing to sys/netinet6/raw_ip6.c. constify a couple of places.
|
#
1.46 |
|
15-Oct-2001 |
itojun |
implement IPV6_V6ONLY socket option from draft-ietf-ipngwg-rfc2553bis-03.txt. IPV6_BINDV6ONLY (netbsd only) is deprecated, but still work just like before.
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
#
1.45 |
|
25-Jul-2001 |
itojun |
allocate ipsec policy buffer attached to pcb in in*_pcballoc, before giving anyone accesses to pcb (do not reveal an inconsistent ones). sync with kame
|
#
1.44 |
|
03-Jul-2001 |
itojun |
branches: 1.44.2; call in{,6}_pcbpurgeif0() before in{,6}_purgeif().
|
#
1.43 |
|
27-May-2001 |
itojun |
remove debug printfs, which can be too noisy. sync with kame.
|
#
1.42 |
|
24-May-2001 |
itojun |
call icmp6_mtudisc_update(foo, 0) even if ICMPv6 messages are very short. let icmp6 layer decide whether we take PMTUD routes or not.
|
#
1.41 |
|
08-May-2001 |
itojun |
correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
#
1.40 |
|
11-Feb-2001 |
itojun |
branches: 1.40.2; pull latest kame pcbnotify code. synchronizes ICMPv6 path mtu discovery behavior with other protocols (i.e. validation, use of hiwat/lowat).
|
#
1.39 |
|
10-Feb-2001 |
itojun |
to sync with kame better, (1) remove register declaration for variables, (2) sync whitespaces, (3) update comments. (4) bring in some of portability and logging enhancements. no functional changes here.
|
#
1.38 |
|
08-Feb-2001 |
itojun |
move udp6_output() to separate file. (sync better with kame)
|
#
1.37 |
|
24-Jan-2001 |
itojun |
- record IPsec packet history into m_aux structure. - let ipfilter look at wire-format packet only (not the decapsulated ones), so that VPN setting can work with NAT/ipfilter settings. sync with kame.
TODO: use header history for stricter inbound validation
|
#
1.36 |
|
09-Dec-2000 |
itojun |
update icmp6 too big validation. the change is necessary since pmtud is mandatory for IPv6 (so we can't just validate by using connected pcb - we need to allow traffic from unconnected pcb to do pmtud). - if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud route entries. - if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud route entries (there's upper limit, so bad guys cannot blow up our routing table). sync with kame
XXX need to think again about default hiwat/lowat value. XXX victim selection to help starvation case
|
#
1.35 |
|
06-Nov-2000 |
itojun |
fix IPv4 TTL selection with AF_INET6 API. sync with kame. From: jdc
|
#
1.34 |
|
19-Oct-2000 |
itojun |
validate ICMPv6 too big message. XXX too restrictive given frequent uses of sendto(2)
|
#
1.33 |
|
13-Oct-2000 |
itojun |
validate mbuf chain length on *_ctlinput. remote node may be able to transmit a truncated icmp6 packet and panic the system. sync with kame.
|
#
1.32 |
|
07-Jul-2000 |
itojun |
sync with kame. introduce in6_{recover,embed}scope, for in-kernel scoped-address manipulation. improve in6_pcbnotify.
|
#
1.31 |
|
28-Jun-2000 |
mrg |
<vm/vm.h> -> <uvm/uvm_extern.h>
|
Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
|
#
1.30 |
|
08-Jun-2000 |
itojun |
branches: 1.30.2; make sure not to overwrite sockaddr on PRU_SEND/PRU_CONNECT to link-local address. From: frank
|
#
1.29 |
|
05-Jun-2000 |
itojun |
pass struct proc * down to udp6_output and in6_pcbbind.
|
Revision tags: minoura-xpg4dl-base
|
#
1.28 |
|
22-May-2000 |
itojun |
branches: 1.28.2; make net.inet6.udp6.* sysctl name meet with IPv4 counterpart. XXX do we need to keep symbols mistakingly added (like UDP6CTL_SENDMAX) for backward compatibility? I believe not.
|
#
1.27 |
|
17-Apr-2000 |
itojun |
fix endian issue in filling in interface id. better sync with kame (nuke space at EOL).
|
#
1.26 |
|
01-Mar-2000 |
itojun |
introduce m->m_pkthdr.aux to hold random data which needs to be passed between protocol handlers.
ipsec socket pointers, ipsec decryption/auth information, tunnel decapsulation information are in my mind - there can be several other usage. at this moment, we use this for ipsec socket pointer passing. this will avoid reuse of m->m_pkthdr.rcvif in ipsec code.
due to the change, MHLEN will be decreased by sizeof(void *) - for example, for i386, MHLEN was 100 bytes, but is now 96 bytes. we may want to increase MSIZE from 128 to 256 for some of our architectures.
take caution if you use it for keeping some data item for long period of time - use extra caution on M_PREPEND() or m_adj(), as they may result in loss of m->m_pkthdr.aux pointer (and mbuf leak).
this will bump kernel version.
(as discussed in tech-net, tested in kame tree)
|
#
1.25 |
|
28-Feb-2000 |
itojun |
make ICMPv6 redirect actually flush route cache in udp6/raw6 socket.
|
#
1.24 |
|
25-Feb-2000 |
itojun |
remove extra NULL check typo in PULLDOWN_TEST case note: the fixes does not affect normal configuration. (sync with kame)
|
Revision tags: chs-ubc2-newbase
|
#
1.23 |
|
06-Feb-2000 |
itojun |
fix include pathname for better rfc2292 compliance.
|
#
1.22 |
|
06-Feb-2000 |
itojun |
don't chase mbuf pointer when it is NULL.
|
#
1.21 |
|
02-Feb-2000 |
thorpej |
PRU_PURGEADDR -> PRU_PURGEIF, per a discussion w/ itojun. In the IPv4 and IPv6 code, also use this to traverse PCB tables, looking for cached routes referencing the dying ifnet, forcing them to be refreshed.
|
#
1.20 |
|
01-Feb-2000 |
thorpej |
First-draft if_detach() implementation, originally from Bill Studnemund, although this version has been changed somewhat: - reference counting on ifaddrs isn't as complete as Bill's original work was. This is hard to get right, and we should attack one protocol at a time. - This doesn't do reference counting or dynamic allocation of ifnets yet. - This version introduces a new PRU -- PRU_PURGEADDR, which is used to purge an ifaddr from a protocol. The old method Bill used didn't work on all protocols, and it only worked on some because it was Very Lucky.
This mostly works ... i.e. works for my USB Ethernet, except for a dangling ifaddr reference left by the IPv6 code; have not yet tracked this down.
|
#
1.19 |
|
31-Jan-2000 |
itojun |
bring in latest KAME ipsec tree. - interop issues in ipcomp is fixed - padding type (after ESP) is configurable - key database memory management (need more fixes) - policy specification is revisited
XXX m->m_pkthdr.rcvif is still overloaded - hope to fix it soon
|
#
1.18 |
|
31-Jan-2000 |
itojun |
destination port == 0 is illegal based on RFC768. (NetBSD PR: 9137 - I thought I committed this already but I wasn't)
|
#
1.17 |
|
06-Jan-2000 |
itojun |
remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
#
1.16 |
|
22-Dec-1999 |
itojun |
drop IPv6 packets with v4 mapped address on src/dst. they are illegal and may be used to fool IPv6 implementations (by using ::ffff:127.0.0.1 as source you may be able to pretend the packet is from local node)
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
#
1.15 |
|
15-Dec-1999 |
itojun |
do not overwrite traffic class field when we write IPv6 version field.
|
#
1.14 |
|
13-Dec-1999 |
itojun |
sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
#
1.13 |
|
13-Sep-1999 |
itojun |
branches: 1.13.2; 1.13.8; - Call in{,6}_pcbdetach if ipsec initialization is failed during PRU_ATTACH. This situation happens on severe memory shortage. We may need more improvements here and there. - Grab IEEE802 address from IFT_ETHER card, even if the card is inserted after bootup time. Is there any other card that can be inserted afterwards? pcmcia fddi card? :-P - RFC2373 u bit handling suggests that we SHOULD NOT copy interface id from ethernet card to pseudo interface, when ethernet card has IEEE802/EUI64 with u bit != 0 (this means that IEEE802/EUI64 is not universally unique). Do not use such address as, for example, interface id for gif interface. (I have such an ethernet card myself) This may change interface id for your gif interface. be careful upgrading rc files.
(sync with recent KAME)
|
#
1.12 |
|
25-Aug-1999 |
itojun |
ctlinput handling must look at ip6_src, not ip6_dst. (this makes path mtu handling wrong)
|
#
1.11 |
|
13-Aug-1999 |
itojun |
fix multicast demux.
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
|
#
1.10 |
|
09-Aug-1999 |
itojun |
return with doing nothing from xx_ctlinput(), when sa->sa_family is not the expected one.
I see PRC_REDIRECT_HOST with sa->sa_family == AF_UNIX coming to {tcp,udp}_ctlinput() when I use dhclient, and I feel like adding more sanity checks, without logging - if we log it it is too noisy.
|
#
1.9 |
|
09-Aug-1999 |
itojun |
log() needs "\n" at the end.
|
#
1.8 |
|
05-Aug-1999 |
itojun |
import recent kAME fixes. - initialize hoplimit for raw6 socket properly. - respect SO_TIMESTAMP on udp6. - more sanity checks.
|
Revision tags: chs-ubc2-base
|
#
1.7 |
|
31-Jul-1999 |
itojun |
sync with recent KAME. - loosen ipsec restriction on packet diredtion. - revise icmp6 redirect handling on IsRouter bit. - tcp/udp notification processing (link-local address case) - cosmetic fixes (better code share across *BSD).
|
#
1.6 |
|
30-Jul-1999 |
itojun |
remove reference to in6_systm.h (file itself will be removed afterwords)
|
#
1.5 |
|
09-Jul-1999 |
thorpej |
defopt IPSEC and IPSEC_ESP (both into opt_ipsec.h).
|
#
1.4 |
|
04-Jul-1999 |
itojun |
s/splnet/splsoftnet/ in IPv6/IPsec part. hope I made no mistake (the kernel works fine but I need a regress test)
Suggested by: thorpej
|
#
1.3 |
|
03-Jul-1999 |
thorpej |
RCS ID police.
|
#
1.2 |
|
01-Jul-1999 |
itojun |
branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
#
1.1 |
|
28-Jun-1999 |
itojun |
branches: 1.1.2; file udp6_usrreq.c was initially added on branch kame.
|