Home | History | Annotate | Download | only in netinet6
History log of /src/sys/netinet6/in6_ifattach.c
RevisionDateAuthorComments
 1.122  11-Apr-2024  knakahara Fix invalid IPv6 route when ipsecif(4) is deleted tunnel. Pointed out by ohishi@IIJ.

The pointed bug is fixed by modification in nd6_need_cache().
Others are similar bugs.

XXX pullup-9, 10
 1.121  22-Dec-2022  msaitoh Fix typo in comment (s/mut be/msut be/). No functional change.
 1.120  17-May-2021  yamaguchi branches: 1.120.12;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.119  12-Jun-2020  roy branches: 1.119.6; 1.119.8;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).
 1.118  20-Jan-2020  thorpej Remove FDDI support.
 1.117  18-Oct-2019  ozaki-r branches: 1.117.2;
in6: reset the temporary address timer on a change of the interval period
 1.116  16-Oct-2019  ozaki-r Reorganize in6_tmpaddrtimer stuffs

- Move the related functions to where in6_tmpaddrtimer_ch exists
- Hide global variable in6_tmpaddrtimer_ch
- Rename ip6_init2 to in6_tmpaddrtimer_init
- Reduce callers of callout_reset
- Use callout_schedule
 1.115  01-May-2018  maxv branches: 1.115.2; 1.115.6;
Remove now unused net_osdep.h includes, the other BSDs did the same.
 1.114  24-Jan-2018  ozaki-r branches: 1.114.2;
Fix constraint violation of pserialize in in6_ifattach

in6_ifattach_loopback can sleep so we cannot use pserialize for it. Fortunately
in6_ifattach is alwasy called with IFNET_LOCK so pserialize isn't needed there
actually.
 1.113  10-Nov-2017  ozaki-r Use psref instead of pserialize because that code is sleepable
 1.112  23-Feb-2017  ozaki-r branches: 1.112.6;
Remove mkludge stuffs

For unknown reasons, IPv6 multicast addresses are linked to a first
IPv6 address assigned to an interface. Due to the design, when removing
a first address having multicast addresses, we need to save them to
somewhere and later restore them once a new IPv6 address is activated.
mkludge stuffs support the operations.

This change links multicast addresses to an interface directly and
throws the kludge away.

Note that as usual some obsolete member variables remain for kvm(3)
users. And also sysctl net.inet6.multicast_kludge remains to avoid
breaking old ifmcstat.

TODO: currently ifnet has a list of in6_multi but obviously the list
should be protocol independent. Provide a common structure (if_multi
or something) to handle in6_multi and in_multi together as well as
ifaddr does for in_ifaddr and in6_ifaddr.
 1.111  16-Feb-2017  knakahara add l2tp(4) L2TPv3 interface.

originally implemented by IIJ SEIL team.
 1.110  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
 1.109  04-Jan-2017  christos branches: 1.109.2;
- kill NULL argument from in6_update_ifa
- amend in6_update_ifa1 to return the ia, so that we can use it in pfil hooks
to avoid NULL pointer crash.
 1.108  19-Dec-2016  ozaki-r Get rid of extra nd6_purge from in6_ifdetach

There were two nd6_purge in in6_ifdetach for some reason, but at least now
We don't need extra nd6_purge. Remove it and instead add assertions that
check if surely purged.
 1.107  30-Nov-2016  ozaki-r Fix panic on destroying an interface with IPv6 addresses obtained with RA

nd6_purge depends on that IPv6 addresses are purged. If addresses remain,
pfxlist_onlink_check called from nd6_purge dereferences a dangling pointer
(ia->ia6_ndpr) that is freed before calling pfxlist_onlink_check. Fix it by
removing addresses before calling nd6_purge, which is the original behavior
that was changed by in6.c,v 1.203 and in6_ifattach.c,v 1.99.

Note that it seems the issue occurs because of a hack that forcibly destroys
prefix list entries of a given interface in nd6_purge. We should tackle the
hack in the future.

Fix PR kern/51467
 1.106  18-Oct-2016  ozaki-r Add missing pserialize_read_exit
 1.105  16-Aug-2016  roy Separate ioctl address prefix management from RA prefix management
as we have no API for controlling the latter.

This fixes a long standing problem where addresses added with non /128
prefixes and non infinte address lifetimes would register a prefix route
which would expire. Subsequent calls set new lifetimes for the same address
would not affect the prefix route management, so once expired, the
prefix route would be impossible to add back as the kernel would remove it.
 1.104  01-Aug-2016  ozaki-r Fix kernel builds (gcc 4.8)
 1.103  01-Aug-2016  ozaki-r Apply pserialize and psref to struct ifaddr and its variants

This change makes struct ifaddr and its variants (in_ifaddr and in6_ifaddr)
MP-safe by using pserialize and psref. At this moment, pserialize_perform
and psref_target_destroy are disabled because (1) we don't need them
because of softnet_lock (2) they cause a deadlock because of softnet_lock.
So we'll enable them when we remove softnet_lock in the future.
 1.102  20-Jul-2016  ozaki-r Apply pserialize to some iterations of IP address lists
 1.101  07-Jul-2016  ozaki-r branches: 1.101.2;
Switch the address list of intefaces to pslist(9)

As usual, we leave the old list to avoid breaking kvm(3) users.
 1.100  04-Jul-2016  ozaki-r Use pslist(9) for the global in6_ifaddr list

psz and psref will be applied in another commit.

No functional change intended.
 1.99  04-Jul-2016  ozaki-r Remove redundant codes purging IPv6 addresses

Proposed on tech-net and tech-kern.
 1.98  12-May-2016  ozaki-r Protect ifnet list with psz and psref

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

Note that the change adds a pslist(9) for ifnet but doesn't remove the
original ifnet list (ifnet_list) to avoid breaking kvm(3) users. We
shouldn't use the original list in the kernel anymore.
 1.97  27-Apr-2016  ozaki-r Get rid of unused argument from get_rand_ifid
 1.96  01-Apr-2016  ozaki-r Refine nd6log

Add __func__ to nd6log itself instead of adding it to callers.
 1.95  23-Feb-2015  martin Rearange interface detachement slightly: before we free the INET6 specific
per-interface data, make sure to call nd6_purge() with it to remove
routing entries pointing to the going interface.
When we should happen to call this function again later, with the data
already gone, just return.
Fixes PR kern/49682, ok: christos.
 1.94  14-Nov-2014  maxv branches: 1.94.2;
Do not uselessly include <sys/malloc.h>.
 1.93  09-Sep-2014  rmind Eliminate IFAREF() and IFAFREE() macros in favour of functions.
 1.92  05-Sep-2014  matt Don't use C++ keyword as variable.
Use different prefix for nd6_prefixctl members than for nd6_prefix members.
 1.91  05-Jun-2014  roy branches: 1.91.2;
Add IPV6CTL_AUTO_LINKLOCAL and ND6_IFF_AUTO_LINKLOCAL toggles which
control the automatic creation of IPv6 link-local addresses when an
interface is brought up.

Taken from FreeBSD.
 1.90  17-May-2014  rmind - Move IFNET_*() macros under #ifdef _KERNEL.
- Replace TAILQ_FOREACH on ifnet with IFNET_FOREACH().
 1.89  25-Oct-2013  martin branches: 1.89.2;
Mark a variable as used only in diagnostic kernels
 1.88  18-Oct-2013  mrg convert a DIAGNOSTIC / panic into a KASSERTMSG().
 1.87  31-Dec-2011  christos branches: 1.87.6; 1.87.10;
- fix offsetof usage, and redundant defines
- kill pointer casts to 0
 1.86  19-Nov-2011  tls branches: 1.86.2;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.85  19-Sep-2009  christos branches: 1.85.12;
backout the changes that establish a workqueue to synchronize the addresses
for arg and gre because they cause a race condition by calling ioctl() during
interface initialization. To make this work correctly we would need to
synchronize all interface init routines.
 1.84  13-Aug-2009  cegger buildfix: if_indexlim is of type size_t
 1.83  13-Aug-2009  dyoung Postpone to a workqueue adding link-local and loopback IPv6 addresses
to an interface. This keeps the kernel from entering ifp->if_ioctl
recursively, which can deadlock if if_ioctl takes locks. This will
fix deadlocks & LOCKDEBUG errors in agr(4) (kern/39940) and in
gre(4).
 1.82  30-Jul-2009  dyoung Fix typo in comment, s/SIOCSIFADDR/SIOCINITIFADDR/.
 1.81  07-Nov-2008  dyoung *** Summary ***

When a link-layer address changes (e.g., ifconfig ex0 link
02:de:ad:be:ef:02 active), send a gratuitous ARP and/or a Neighbor
Advertisement to update the network-/link-layer address bindings
on our LAN peers.

Refuse a change of ethernet address to the address 00:00:00:00:00:00
or to any multicast/broadcast address. (Thanks matt@.)

Reorder ifnet ioctl operations so that driver ioctls may inherit
the functions of their "class"---ether_ioctl(), fddi_ioctl(), et
cetera---and the class ioctls may inherit from the generic ioctl,
ifioctl_common(), but both driver- and class-ioctls may override
the generic behavior. Make network drivers share more code.

Distinguish a "factory" link-layer address from others for the
purposes of both protecting that address from deletion and computing
EUI64.

Return consistent, appropriate error codes from network drivers.

Improve readability. KNF.

*** Details ***

In if_attach(), always initialize the interface ioctl routine,
ifnet->if_ioctl, if the driver has not already initialized it.
Delete if_ioctl == NULL tests everywhere else, because it cannot
happen.

In the ioctl routines of network interfaces, inherit common ioctl
behaviors by calling either ifioctl_common() or whichever ioctl
routine is appropriate for the class of interface---e.g., ether_ioctl()
for ethernets.

Stop (ab)using SIOCSIFADDR and start to use SIOCINITIFADDR. In
the user->kernel interface, SIOCSIFADDR's argument was an ifreq,
but on the protocol->ifnet interface, SIOCSIFADDR's argument was
an ifaddr. That was confusing, and it would work against me as I
make it possible for a network interface to overload most ioctls.
On the protocol->ifnet interface, replace SIOCSIFADDR with
SIOCINITIFADDR. In ifioctl(), return EPERM if userland tries to
invoke SIOCINITIFADDR.

In ifioctl(), give the interface the first shot at handling most
interface ioctls, and give the protocol the second shot, instead
of the other way around. Finally, let compatibility code (COMPAT_OSOCK)
take a shot.

Pull device initialization out of switch statements under
SIOCINITIFADDR. For example, pull ..._init() out of any switch
statement that looks like this:

switch (...->sa_family) {
case ...:
..._init();
...
break;
...
default:
..._init();
...
break;
}

Rewrite many if-else clauses that handle all permutations of IFF_UP
and IFF_RUNNING to use a switch statement,

switch (x & (IFF_UP|IFF_RUNNING)) {
case 0:
...
break;
case IFF_RUNNING:
...
break;
case IFF_UP:
...
break;
case IFF_UP|IFF_RUNNING:
...
break;
}

unifdef lots of code containing #ifdef FreeBSD, #ifdef NetBSD, and
#ifdef SIOCSIFMTU, especially in fwip(4) and in ndis(4).

In ipw(4), remove an if_set_sadl() call that is out of place.

In nfe(4), reuse the jumbo MTU logic in ether_ioctl().

Let ethernets register a callback for setting h/w state such as
promiscuous mode and the multicast filter in accord with a change
in the if_flags: ether_set_ifflags_cb() registers a callback that
returns ENETRESET if the caller should reset the ethernet by calling
if_init(), 0 on success, != 0 on failure. Pull common code from
ex(4), gem(4), nfe(4), sip(4), tlp(4), vge(4) into ether_ioctl(),
and register if_flags callbacks for those drivers.

Return ENOTTY instead of EINVAL for inappropriate ioctls. In
zyd(4), use ENXIO instead of ENOTTY to indicate that the device is
not any longer attached.

Add to if_set_sadl() a boolean 'factory' argument that indicates
whether a link-layer address was assigned by the factory or some
other source. In a comment, recommend using the factory address
for generating an EUI64, and update in6_get_hw_ifid() to prefer a
factory address to any other link-layer address.

Add a routing message, RTM_LLINFO_UPD, that tells protocols to
update the binding of network-layer addresses to link-layer addresses.
Implement this message in IPv4 and IPv6 by sending a gratuitous
ARP or a neighbor advertisement, respectively. Generate RTM_LLINFO_UPD
messages on a change of an interface's link-layer address.

In ether_ioctl(), do not let SIOCALIFADDR set a link-layer address
that is broadcast/multicast or equal to 00:00:00:00:00:00.

Make ether_ioctl() call ifioctl_common() to handle ioctls that it
does not understand.

In gif(4), initialize if_softc and use it, instead of assuming that
the gif_softc and ifp overlap.

Let ifioctl_common() handle SIOCGIFADDR.

Sprinkle rtcache_invariants(), which checks on DIAGNOSTIC kernels
that certain invariants on a struct route are satisfied.

In agr(4), rewrite agr_ioctl_filter() to be a bit more explicit
about the ioctls that we do not allow on an agr(4) member interface.

bzero -> memset. Delete unnecessary casts to void *. Use
sockaddr_in_init() and sockaddr_in6_init(). Compare pointers with
NULL instead of "testing truth". Replace some instances of (type
*)0 with NULL. Change some K&R prototypes to ANSI C, and join
lines.
 1.80  24-Apr-2008  ad branches: 1.80.2; 1.80.8; 1.80.10;
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.79  06-Dec-2007  dyoung branches: 1.79.12; 1.79.14;
Use ifa_insert(), ifa_remove().
 1.78  05-Dec-2007  dyoung Extract common code, creating a subroutine if_purgeaddrs(ifp,
family, purgeaddr) which applies function `purgeaddr' to each
address on `ifp' belonging to `family'.
 1.77  05-Dec-2007  dyoung Use IFADDR_FIRST(), IFADDR_NEXT().
 1.76  04-Dec-2007  dyoung Use IFNET_FOREACH() and IFADDR_FOREACH().
 1.75  10-Nov-2007  dyoung branches: 1.75.2;
Use sockaddr_in6_init().
 1.74  01-Nov-2007  dyoung branches: 1.74.2;
De-__P().
 1.73  10-Aug-2007  dyoung branches: 1.73.2; 1.73.6;
Constify.
 1.72  09-Jul-2007  ad branches: 1.72.2; 1.72.6;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.71  23-May-2007  christos Ansify + add a few comments, from Karl Sjödahl
 1.70  15-Mar-2007  dyoung Bark if we cannot assign a link-local address. While I am here,
fix the grammar in a comment.
 1.69  22-Feb-2007  dyoung branches: 1.69.4; 1.69.6; 1.69.8;
Cosmetic: use TAILQ_FOREACH(). Remove extraneous () from return
statements.
 1.68  20-Nov-2006  dyoung branches: 1.68.4;
Use the TAILQ_/LIST_ macros instead of open-coding them.
 1.67  16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.66  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.65  18-May-2006  liamjfoy branches: 1.65.8; 1.65.10;
Integrate Common Address Redundancy Procotol (CARP) from OpenBSD

'pseudo-device carp'

Thanks to: joerg@ christos@ riz@ and others who tested
Ok: core@
 1.64  05-Mar-2006  rpaulo branches: 1.64.4;
NDP-related improvements:
RFC4191
- supports host-side router-preference

RFC3542
- if DAD fails on a interface, disables IPv6 operation on the
interface
- don't advertise MLD report before DAD finishes

Others
- fixes integer overflow for valid and preferred lifetimes
- improves timer granularity for MLD, using callout-timer.
- reflects rtadvd's IPv6 host variable information into kernel
(router only)
- adds a sysctl option to enable/disable pMTUd for multicast
packets
- performs NUD on PPP/GRE interface by default
- Redirect works regardless of ip6_accept_rtadv
- removes RFC1885-related code

From the KAME project via SUZUKI Shinsuke.
Reviewed by core.
 1.63  21-Jan-2006  rpaulo branches: 1.63.2; 1.63.4; 1.63.6;
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.62  11-Dec-2005  christos branches: 1.62.2;
merge ktrace-lwp.
 1.61  20-Apr-2004  itojun branches: 1.61.12;
remove duplicated #include. PR 25234
 1.60  11-Feb-2004  itojun we have IFT_BRIDGE already, no need for #ifdef
 1.59  11-Feb-2004  christos We don't have IFT_{PFLOG,PFSYNC} (yet).
 1.58  11-Feb-2004  itojun missing bzero
 1.57  06-Sep-2003  itojun committed by mistake, sorry
 1.56  06-Sep-2003  itojun correct comment
 1.55  08-Jul-2003  itojun on interface detach, clear multicast forwarding table. from kame
 1.54  02-Nov-2002  perry branches: 1.54.6;
/*CONTCOND*/ while (0)'ed macros
 1.53  15-Sep-2002  itojun remove extra blank line
 1.52  11-Sep-2002  itojun reduce diff w/kame
 1.51  11-Sep-2002  itojun KNF - return is not a function. sync w/kame.
 1.50  11-Sep-2002  itojun correct signedness mixup in pointer passing. sync w/kame
 1.49  11-Jun-2002  itojun silence some of log(), as the codepath will be visited for IPv6-non-capable
interfaces too and can be annoying. net.inet6.icmp6.nd6_debug will
re-enable them.
 1.48  08-Jun-2002  itojun sync with latest KAME in6_ifaddr/prefix/default router manipulation.
behavior changes:
- two iocts used by ndp(8) are now obsolete (backward compat provided).
use sysctl path instead.
- lo0 does not get ::1 automatically. it will get ::1 when lo0 comes up.
 1.47  07-Jun-2002  itojun minor KNF to sync w/kame
 1.46  29-May-2002  itojun attach nd_ifinfo structure into if_afdata.
split IPv6 link MTU (advertised by RA) from real link MTU.
sync with kame
 1.45  29-May-2002  itojun move per-interface ip6/icmp6 stat to ifnet->if_afdata. sync w/kame
 1.44  23-May-2002  itojun no longer need IFT_PROPVIRTUAL "bridge[0-9]+" check.
 1.43  23-May-2002  itojun simplify conditions to do DAD. sync w/kame
 1.42  23-May-2002  itojun do not have link-local address for IFT_BRIDGE
 1.41  21-Dec-2001  itojun branches: 1.41.8; 1.41.10;
whitespace/costmetic sync w/kame
 1.40  18-Dec-2001  itojun reduce white space/cosmetic diffs w/kame.
 1.39  13-Nov-2001  lukem add RCSIDs
 1.38  23-Aug-2001  itojun do not try to bring IPv6 up on bridge*.
 1.37  18-Jul-2001  itojun do not malloc() during interrupt context for IPv6 multicast kludge table.
malloc() during interface initialization. sync with kame
 1.36  24-May-2001  itojun branches: 1.36.2;
print more diag message on in6_addmulti() failures.
 1.35  13-Apr-2001  thorpej Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
 1.34  07-Feb-2001  itojun branches: 1.34.2;
during ip6/icmp6 inbound packet processing, do not call log() nor printf() in
normal operation (/var can get filled up by flodding bogus packets).
sysctl net.inet6.icmp6.nd6_debug will turn on diagnostic messages.
(#define ND6_DEBUG will turn it on by default)

improve stats in ND6 code.

lots of synchronziation with kame (including comments and cometic ones).
 1.33  18-Jan-2001  itojun on interface removal (ifconfig destroy) do not remove default route by mistake
 1.32  05-Nov-2000  onoe First Prototype implementation of network interface part for IEEE1394 (if_fw).

Current status:
Only OHCI chip is supported (fwohci).
ping (IPv4) works with Sony's implementation (SmartConnect) on Win98.
sometimes works but not stable.
Not implemented yet:
IRM (Isochronous Resource Manager) functionality.
Link layer fragmentation.
Topology map.
More to do:
clean ups
MCAP
charactor device part
dhcp

There is no entry in GENERIC config file yet.
Follow sys/dev/ieee1394/IMPLEMENTATION to enable if_fw.
 1.31  01-Oct-2000  itojun add missing \n. sync with kame.
 1.30  05-May-2000  itojun branches: 1.30.4;
correct in6_ifdetach() (previous code touched dangling pointers).
actually the corrected portion was never visited.
 1.29  27-Apr-2000  itojun correct in6_ifdetach(). free oia, not ia.
From: Lennart Augustsson <augustss@augustsson.net>
 1.28  16-Apr-2000  itojun perform neighbor unreachability detection on p2p links (spec requires
it for bidir p2p links).
improve -i in ndp(8) to allow tweaking per-interface ND flag on.
fix ndp(8) infinite loop on certain routing table setup.
 1.27  16-Apr-2000  itojun better sync with latest kame (cosmetic only).
 1.26  13-Apr-2000  itojun fix fatal bug in EUI64 generation (0xff -> 0xfe typo)
 1.25  12-Apr-2000  itojun revisit in6_ifattach().
- be persistent on initializing interfaces, even if there's manually-
assigned linklocal, multicast/whatever initialization is necessary.
- do not cache mac addr in the kernel. grab mac addr from existing cards
(this is important when you swap ethernet cards back and forth)
now ppp6 works just fine!

call in6_ifattach() on ATM PVC interface to assign link-local, using
hardware MAC address as seed.

(the change is in sync with kame tree).
 1.24  10-Apr-2000  itojun cosmetic (space before EOL), to ease diff against kame
 1.23  24-Mar-2000  itojun move ia6->ia6_dad_ch to dp->dad_timer_ch, to ease KAME code sharing.
now in6_var.h does not need to pull sys/callout.h in.
 1.22  23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.21  02-Mar-2000  itojun configure ::1 to loopback dstaddr.
honor ifa_refcnt when configuring loopback.
 1.20  02-Mar-2000  itojun don't configure ifa_dstaddr for non-pointopoint interface,
so that we won't be returning them from routing socket manipulation.
 1.19  06-Feb-2000  itojun fix include pathname for better rfc2292 compliance.
 1.18  04-Feb-2000  itojun avoid calling in6_control(SIOCDIFADDR_IN6) from interrupt context.
it is not supposed to work.
logging fix: add "\n" to some of log() in in6_prefix.c.

improve in6_ifdetach(). now almost all structure depend on ifnet
will be cleared up.
possible loose ends:
- cached route_in6 in static varaiables needs to be cleared as well
- there are ifaddr manipulation without reference counting,
which should be fixed
we still see panics after card removal, though... not sure what is left.

(sync with kame)
 1.17  02-Feb-2000  itojun implement in6_purgemkludge(). in6_ifdetach() calls it to avoid dangling
kludge entries. the situation would occur if you take the following steps:
- join multicast groups (default ones like linklocal all-node is fine)
- remove all IPv6 addresses manually
- remove pcmcia card

to thorpej: pls call in6_ifdetach() when PRU_PURGEIF is raised (just before
removing ifnet). it should do the right thing (unable to perform real test
though)
 1.16  02-Feb-2000  itojun remove route to link-local allnodes multicast address (ff02:x::/32),
when the last IPv6 address on an interface is get removed.
in6_ifattach() configures it and in6_ifdetach() removes it.

XXX last part of in6_purgeaddr looks very ugly, but there's no event for
"interface detach" (events are for "address detach").
 1.15  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.14  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.13  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...)
 1.12  26-Sep-1999  is branches: 1.12.2; 1.12.8;
Don't even pretend we can create a nonglobal EUI64 out of an ARCNET link
level address. Instead, create the link-local address directly.
 1.11  25-Sep-1999  is invert u bit to convert EUI64 to RFC2373 interface ID for ARCnet
 1.10  20-Sep-1999  itojun tiny fix to ARCnet IPv6 support.
- in in6_ifattach_getifid(), we can grab interface id source iff the source
is universally (worldwide) unique. ARCnet hardware address is of 8bit and
does not satisfy the condition.
(in6_ifattach_getifid() is for getting interface id usable for pseudo
interfaces like gif*)
- xx_to_eui64() should return EUI64 format, not IPv6 interface id format.
this may seem awkward so I wish to clean these things up.
- in nd6.c, change if clause into case clause to allow future addition
of IFT_xxx easier.
 1.9  19-Sep-1999  is fix mergo
 1.8  19-Sep-1999  is Zeroth version of IPv6 support for ARCnet. Correct MTU handling still needs
to be done.
 1.7  13-Sep-1999  itojun - 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.6  08-Sep-1999  itojun fix u bit in interface identifier for ether and p2p-802 interfacde.
 1.5  05-Sep-1999  itojun - invert u bit on interface id for pseudo interfaces, as suggested in RFC2373.
- do not perform IPv6 initialization for faith* interface, as they become
mistakingly IFF_UP. we are wondering if we should nuke in6_ifattach_p2p().
(sync with recent kame)
 1.4  10-Jul-1999  thorpej Clean up some printfs(), and mark a few for possible later nuking,
since they appear to be for debugging purposes only.
 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 in6_ifattach.c was initially added on branch kame.
 1.1.2.2  30-Nov-1999  itojun bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch
just for reference purposes.
This commit includes 1.4 -> 1.4.1 sync for kame branch.

The branch does not compile at all (due to the lack of ALTQ and some other
source code). Please do not try to modify the branch, this is just for
referenre purposes.

synchronization to latest KAME will take place on HEAD branch soon.
 1.1.2.1  28-Jun-1999  itojun KAME/NetBSD 1.4 SNAP kit, dated 19990628.

NOTE: this branch (kame) is used just for refernce. this may not compile
due to multiple reasons.
 1.2.2.3  02-Aug-1999  thorpej Update from trunk.
 1.2.2.2  01-Jul-1999  thorpej Sync w/ -current.
 1.2.2.1  01-Jul-1999  thorpej file in6_ifattach.c was added on branch chs-ubc2 on 1999-07-01 23:48:27 +0000
 1.12.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.12.2.4  21-Apr-2001  bouyer Sync with HEAD
 1.12.2.3  11-Feb-2001  bouyer Sync with HEAD.
 1.12.2.2  22-Nov-2000  bouyer Sync with HEAD.
 1.12.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.30.4.2  05-Aug-2003  msaitoh Pull up revision 1.55 via patch (requested by itojun in ticket #57):
on interface detach, clear multicast forwarding table.
 1.30.4.1  26-Feb-2001  he Pull up revision 1.33 (requested by itojun):
Do not remove default route by mistake on interface removal.
 1.34.2.8  11-Nov-2002  nathanw Catch up to -current
 1.34.2.7  17-Sep-2002  nathanw Catch up to -current.
 1.34.2.6  20-Jun-2002  nathanw Catch up to -current.
 1.34.2.5  08-Jan-2002  nathanw Catch up to -current.
 1.34.2.4  14-Nov-2001  nathanw Catch up to -current.
 1.34.2.3  21-Sep-2001  nathanw Catch up to -current.
 1.34.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.34.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.36.2.5  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.36.2.4  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.36.2.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.36.2.2  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.36.2.1  03-Aug-2001  lukem update to -current
 1.41.10.1  01-Sep-2003  tron Pull up revision 1.55 via patch (requested by itojun in ticket #1375):
on interface detach, clear multicast forwarding table. from kame
 1.41.8.2  20-Jun-2002  gehenna catch up with -current.
 1.41.8.1  30-May-2002  gehenna Catch up with -current.
 1.54.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.54.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.54.6.1  03-Aug-2004  skrll Sync with HEAD
 1.61.12.6  07-Dec-2007  yamt sync with head
 1.61.12.5  15-Nov-2007  yamt sync with head.
 1.61.12.4  03-Sep-2007  yamt sync with head.
 1.61.12.3  26-Feb-2007  yamt sync with head.
 1.61.12.2  30-Dec-2006  yamt sync with head.
 1.61.12.1  21-Jun-2006  yamt sync with head.
 1.62.2.1  01-Feb-2006  yamt sync with head.
 1.63.6.2  24-May-2006  yamt sync with head.
 1.63.6.1  13-Mar-2006  yamt sync with head.
 1.63.4.2  01-Jun-2006  kardel Sync with head.
 1.63.4.1  22-Apr-2006  simonb Sync with head.
 1.63.2.1  09-Sep-2006  rpaulo sync with head
 1.64.4.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.65.10.2  10-Dec-2006  yamt sync with head.
 1.65.10.1  22-Oct-2006  yamt sync with head
 1.65.8.2  12-Jan-2007  ad Sync with head.
 1.65.8.1  18-Nov-2006  ad Sync with head.
 1.68.4.2  24-Mar-2007  yamt sync with head.
 1.68.4.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.69.8.1  18-Mar-2007  reinoud First attempt to bring branch in sync with HEAD
 1.69.6.1  11-Jul-2007  mjf Sync with head.
 1.69.4.4  20-Aug-2007  ad Sync with HEAD.
 1.69.4.3  01-Jul-2007  ad Adapt to callout API change.
 1.69.4.2  08-Jun-2007  ad Sync with head.
 1.69.4.1  10-Apr-2007  ad Sync with head.
 1.72.6.4  09-Dec-2007  jmcneill Sync with HEAD.
 1.72.6.3  11-Nov-2007  joerg Sync with HEAD.
 1.72.6.2  04-Nov-2007  jmcneill Sync with HEAD.
 1.72.6.1  16-Aug-2007  jmcneill Sync with HEAD.
 1.72.2.1  15-Aug-2007  skrll Sync with HEAD.
 1.73.6.1  13-Nov-2007  bouyer Sync with HEAD
 1.73.2.2  09-Jan-2008  matt sync with HEAD
 1.73.2.1  06-Nov-2007  matt sync with HEAD
 1.74.2.2  08-Dec-2007  mjf Sync with HEAD.
 1.74.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.75.2.1  08-Dec-2007  ad Sync with head.
 1.79.14.1  18-May-2008  yamt sync with head.
 1.79.12.2  17-Jan-2009  mjf Sync with HEAD.
 1.79.12.1  02-Jun-2008  mjf Sync with HEAD.
 1.80.10.1  19-Jan-2009  skrll Sync with HEAD.
 1.80.8.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.80.2.3  11-Mar-2010  yamt sync with head
 1.80.2.2  19-Aug-2009  yamt sync with head.
 1.80.2.1  04-May-2009  yamt sync with head.
 1.85.12.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.85.12.1  17-Apr-2012  yamt sync with head
 1.86.2.1  18-Feb-2012  mrg merge to -current.
 1.87.10.2  18-May-2014  rmind sync with head
 1.87.10.1  17-Jul-2013  rmind Checkpoint work in progress:
- Move PCB structures under __INPCB_PRIVATE, adjust most of the callers
and thus make IPv4 PCB structures mostly opaque. Any volunteers for
merging in6pcb with inpcb (see rpaulo-netinet-merge-pcb branch)?
- Move various global vars to the modules where they belong, make them static.
- Some preliminary work for IPv4 PCB locking scheme.
- Make raw IP code mostly MP-safe. Simplify some of it.
- Rework "fast" IP forwarding (ipflow) code to be mostly MP-safe. It should
run from a software interrupt, rather than hard.
- Rework tun(4) pseudo interface to be MP-safe.
- Work towards making some other interfaces more strict.
 1.87.6.2  03-Dec-2017  jdolecek update from HEAD
 1.87.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.89.2.1  10-Aug-2014  tls Rebase.
 1.91.2.2  06-Apr-2015  snj Pull up following revision(s) (requested by martin in ticket #655):
sys/netinet6/in6.c: revision 1.182 via patch
sys/netinet6/in6_ifattach.c: revision 1.95 via patch
sys/netinet6/nd6.c: revision 1.158 via patch
sys/netinet6/nd6.h: revision 1.62 via patch
sys/netinet6/nd6_nbr.c: revision 1.104 via patch
sys/netinet6/nd6_rtr.c: revision 1.96 via patch
Rearange interface detachement slightly: before we free the INET6 specific
per-interface data, make sure to call nd6_purge() with it to remove
routing entries pointing to the going interface.
When we should happen to call this function again later, with the data
already gone, just return.
Fixes PR kern/49682, ok: christos.
 1.91.2.1  17-Jan-2015  martin Pull up following revision(s) (requested by maxv in ticket #427):
sys/compat/svr4/svr4_schedctl.c: revision 1.8
sys/netinet/tcp_timer.c: revision 1.88
sys/miscfs/genfs/layer_vfsops.c: revision 1.45
sys/compat/svr4/svr4_ioctl.c: revision 1.37
sys/ufs/chfs/chfs_vfsops.c: revision 1.14
sys/miscfs/fdesc/fdesc_vfsops.c: revision 1.91
sys/compat/linux/arch/i386/linux_ptrace.c: revision 1.30
sys/compat/common/kern_time_50.c: revision 1.28
sys/netinet6/ip6_forward.c: revision 1.74
sys/miscfs/umapfs/umap_vnops.c: revision 1.57
sys/compat/svr4/svr4_fcntl.c: revision 1.74
distrib/sets/lists/comp/mi: revision 1.1931
sys/netinet6/udp6_output.c: revision 1.46
sys/fs/puffs/puffs_compat.c: revision 1.3
sys/fs/udf/udf_rename.c: revision 1.11
sys/compat/svr4/svr4_filio.c: revision 1.24
sys/fs/udf/udf_rename.c: revision 1.12
sys/netinet/tcp_usrreq.c: revision 1.202
sys/miscfs/umapfs/umap_subr.c: revision 1.29
sys/compat/linux/common/linux_fadvise64.c: revision 1.3
sys/netinet/if_atm.c: revision 1.34
sys/miscfs/procfs/procfs_subr.c: revision 1.106
sys/miscfs/genfs/layer_subr.c: revision 1.37
sys/netinet/tcp_sack.c: revision 1.30
sys/compat/freebsd/freebsd_misc.c: revision 1.33
sys/compat/freebsd/freebsd_file.c: revision 1.33
sys/ufs/chfs/chfs_vnode.c: revision 1.12
sys/compat/svr4/svr4_ttold.c: revision 1.34
sys/compat/linux/common/linux_file.c: revision 1.114
sys/compat/linux/arch/mips/linux_machdep.c: revision 1.43
sys/compat/linux/common/linux_signal.c: revision 1.76
sys/compat/common/compat_util.c: revision 1.46
sys/compat/linux/arch/arm/linux_ptrace.c: revision 1.18
sys/compat/svr4/svr4_sockio.c: revision 1.36
sys/compat/linux/arch/arm/linux_machdep.c: revision 1.32
sys/compat/svr4/svr4_signal.c: revision 1.66
sys/kern/kern_exec.c: revision 1.410
sys/fs/puffs/puffs_vfsops.c: revision 1.115
sys/compat/svr4/svr4_exec_elf64.c: revision 1.15
sys/compat/linux/arch/i386/linux_machdep.c: revision 1.159
sys/compat/linux/arch/alpha/linux_machdep.c: revision 1.50
sys/compat/linux32/common/linux32_misc.c: revision 1.24
sys/netinet/in_pcb.c: revision 1.153
sys/sys/malloc.h: revision 1.116
sys/compat/common/if_43.c: revision 1.9
share/man/man9/Makefile: revision 1.380
sys/netinet/tcp_vtw.c: revision 1.12
sys/miscfs/umapfs/umap_vfsops.c: revision 1.95
sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.186
sys/compat/common/uipc_syscalls_43.c: revision 1.46
sys/ufs/ext2fs/ext2fs_vnops.c: revision 1.115
sys/fs/puffs/puffs_msgif.c: revision 1.97
sys/compat/svr4/svr4_ipc.c: revision 1.27
sys/compat/linux/common/linux_exec.c: revision 1.117
sys/ufs/ext2fs/ext2fs_readwrite.c: revision 1.66
sys/netinet/tcp_output.c: revision 1.179
sys/compat/svr4/svr4_termios.c: revision 1.28
sys/fs/udf/udf_strat_bootstrap.c: revision 1.4
sys/fs/puffs/puffs_subr.c: revision 1.67
sys/fs/puffs/puffs_node.c: revision 1.36
sys/miscfs/overlay/overlay_vnops.c: revision 1.21
sys/fs/cd9660/cd9660_node.c: revision 1.34
sys/netinet/raw_ip.c: revision 1.146
sys/sys/mallocvar.h: revision 1.13
sys/miscfs/overlay/overlay_vfsops.c: revision 1.63
share/man/man9/malloc.9: revision 1.50
sys/netinet6/dest6.c: revision 1.18
sys/compat/linux/common/linux_uselib.c: revision 1.33
sys/compat/linux/common/linux_socket.c: revision 1.120
share/man/man9/malloc.9: revision 1.51
sys/netinet/tcp_subr.c: revision 1.257
sys/compat/linux/common/linux_socketcall.c: revision 1.45
sys/compat/linux/common/linux_fadvise64_64.c: revision 1.3
sys/compat/freebsd/freebsd_ipc.c: revision 1.17
sys/compat/linux/common/linux_misc_notalpha.c: revision 1.109
sys/compat/linux/arch/alpha/linux_pipe.c: revision 1.17
sys/netinet6/in6_pcb.c: revision 1.132
sys/netinet6/in6_ifattach.c: revision 1.94
sys/compat/svr4/svr4_exec_elf32.c: revision 1.15
sys/miscfs/nullfs/null_vfsops.c: revision 1.90
sys/fs/cd9660/cd9660_util.c: revision 1.12
sys/compat/linux/arch/powerpc/linux_machdep.c: revision 1.48
sys/compat/freebsd/freebsd_exec_elf32.c: revision 1.20
sys/miscfs/procfs/procfs_vfsops.c: revision 1.94
sys/compat/linux/arch/powerpc/linux_ptrace.c: revision 1.28
sys/compat/linux/common/linux_sched.c: revision 1.67
sys/compat/linux/common/linux_exec_aout.c: revision 1.67
sys/compat/linux/common/linux_pipe.c: revision 1.67
sys/compat/linux/common/linux_llseek.c: revision 1.34
sys/compat/linux/arch/mips/linux_ptrace.c: revision 1.10
Do not uselessly include <sys/malloc.h>.
Cleanup:
- remove struct kmembuckets (dead)
- correctly deadify MALLOC_XX
- remove MALLOC_DEFINE_LIMIT and MALLOC_JUSTDEFINE_LIMIT (dead)
- remove malloc_roundup(), malloc_type_setlimit(), MALLOC_DEFINE_LIMIT()
and MALLOC_JUSTDEFINE_LIMIT() from man 9 malloc
New sentence, new line. Bump date for previous.
Obsolete malloc_roundup(9), malloc_type_setlimit(9) and MALLOC_DEFINE_LIMIT(9)
man pages.
 1.94.2.8  28-Aug-2017  skrll Sync with HEAD
 1.94.2.7  05-Feb-2017  skrll Sync with HEAD
 1.94.2.6  05-Dec-2016  skrll Sync with HEAD
 1.94.2.5  05-Oct-2016  skrll Sync with HEAD
 1.94.2.4  09-Jul-2016  skrll Sync with HEAD
 1.94.2.3  29-May-2016  skrll Sync with HEAD
 1.94.2.2  22-Apr-2016  skrll Sync with HEAD
 1.94.2.1  06-Apr-2015  skrll Sync with HEAD
 1.101.2.5  20-Mar-2017  pgoyette Sync with HEAD
 1.101.2.4  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.101.2.3  04-Nov-2016  pgoyette Sync with HEAD
 1.101.2.2  06-Aug-2016  pgoyette Sync with HEAD
 1.101.2.1  26-Jul-2016  pgoyette Sync with HEAD
 1.109.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.112.6.1  17-Nov-2017  snj Pull up following revision(s) (requested by ozaki-r in ticket #354):
sys/netinet6/in6_ifattach.c: revision 1.113
sys/netinet6/nd6.c: revision 1.238
Use psref instead of pserialize because that code is sleepable
--
Use psref instead of pserialize because that code is sleepable
 1.114.2.1  02-May-2018  pgoyette Synch with HEAD
 1.115.6.1  23-Oct-2019  martin Pull up following revision(s) (requested by ozaki-r in ticket #368):

sys/netinet6/in6_ifattach.h: revision 1.14
sys/netinet6/ip6_input.c: revision 1.212
sys/netinet6/ip6_input.c: revision 1.213
sys/netinet6/ip6_input.c: revision 1.214
sys/netinet6/in6_var.h: revision 1.101
sys/netinet6/in6_var.h: revision 1.102
sys/netinet6/in6_ifattach.c: revision 1.116
sys/netinet6/in6_ifattach.c: revision 1.117
tests/net/ndp/t_ra.sh: revision 1.33

Reorganize in6_tmpaddrtimer stuffs
- Move the related functions to where in6_tmpaddrtimer_ch exists
- Hide global variable in6_tmpaddrtimer_ch
- Rename ip6_init2 to in6_tmpaddrtimer_init
- Reduce callers of callout_reset
- Use callout_schedule

Validate ip6_temp_preferred_lifetime (net.inet6.ip6.temppltime) on a change
ip6_temp_preferred_lifetime is used to calculate an interval period to
regenerate temporary addresse by
TEMP_PREFERRED_LIFETIME - REGEN_ADVANCE - DESYNC_FACTOR
as per RFC 3041 3.5. So it must be greater than (REGEN_ADVANCE +
DESYNC_FACTOR), otherwise it will be negative and go wrong, for example
KASSERT(to_ticks >= 0) in callout_schedule_locked fails.

tests: add tests for the validateion of net.inet6.ip6.temppltime

in6: reset the temporary address timer on a change of the interval period
 1.115.2.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.115.2.1  08-Apr-2020  martin Merge changes from current as of 20200406
 1.117.2.1  25-Jan-2020  ad Sync with head.
 1.119.8.1  31-May-2021  cjep sync with head
 1.119.6.1  17-Jun-2021  thorpej Sync w/ HEAD.
 1.120.12.1  18-Apr-2024  martin Pull up following revision(s) (requested by knakahara in ticket #659):

sys/netinet6/in6_ifattach.c: revision 1.122
sys/netinet/sctp_asconf.c: revision 1.14
sys/netinet6/nd6.c: revision 1.282

Fix invalid IPv6 route when ipsecif(4) is deleted tunnel. Pointed out by ohishi@IIJ.
The pointed bug is fixed by modification in nd6_need_cache().
Others are similar bugs.

RSS XML Feed