Home | History | Annotate | Download | only in netinet6
History log of /src/sys/netinet6/scope6.c
RevisionDateAuthorComments
 1.23  16-Jun-2020  maxv remove unused
 1.22  23-Sep-2019  kamil Remove __noubsan from in6_clearscope()

The alignment issues for x86 should be handled by
- src/sys/arch/amd64/include/types.h r. 1.62 and
- src/sys/arch/i386/include/types.h r. 1.90
 1.21  20-Sep-2019  kamil Decorate in6_clearscope() with __noubsan

sys/netinet6/scope6.c:480:6,
member access within misaligned address 0xffff9457bc441286 for type
'struct in6_addr' which requires 4 byte alignment

This issue is caused by accessing non-__packed struct in __packed.
This is a[always?] false-positive reported by the sanitizer and there is no
clear non-invasive approach to handle this, without changing ABI of long
term existing code.

Reported-by: syzbot+b53a9bcf030288081e65@syzkaller.appspotmail.com
 1.20  01-May-2018  maxv Remove now unused net_osdep.h includes, the other BSDs did the same.
 1.19  01-Feb-2018  maxv branches: 1.19.2;
Style, no real functional change.
 1.18  17-Sep-2017  christos explain why in6_setscope fails...
 1.17  16-Jan-2017  christos ip6_sprintf -> IN6_PRINT so that we pass the size.
 1.16  16-Jan-2017  ryo Make ip6_sprintf(), in_fmtaddr(), lla_snprintf() and icmp6_redirect_diag() mpsafe.

Reviewed by ozaki-r@
 1.15  12-Aug-2016  christos branches: 1.15.2;
In rump (ifp)->if_afdata[AF_INET6] == NULL if we did not register netinet6
yet. Treat this like we don't have a scope, and make the sid tests consistent.
 1.14  15-Jun-2016  ozaki-r branches: 1.14.2;
Protect if_byindex by pserialize
 1.13  19-May-2016  ozaki-r Replace DIAGNOSTIC & panic with KASSERT
 1.12  26-Apr-2016  ozaki-r Sweep unnecessary route.h inclusions
 1.11  10-Dec-2014  christos printable version of the scope.
remove stray breaks.
 1.10  16-Nov-2014  joerg branches: 1.10.2;
Drop impossible check.
 1.9  17-May-2014  rmind branches: 1.9.2;
Replace open-coded access (and boundary checking) of ifindex2ifnet with
if_byindex() function.
 1.8  11-Sep-2009  dyoung branches: 1.8.22; 1.8.26; 1.8.36;
Make ifconfig(8) set and display preference numbers for IPv6
addresses. Make the kernel support SIOC[SG]IFADDRPREF for IPv6
interface addresses.

In in6ifa_ifpforlinklocal(), consult preference numbers before
making an otherwise arbitrary choice of in6_ifaddr. Otherwise,
preference numbers are *not* consulted by the kernel, but that will
be rather easy for somebody with a little bit of free time to fix.

Please note that setting the preference number for a link-local
IPv6 address does not work right, yet, but that ought to be fixed
soon.

In support of the changes above,

1 Add a method to struct domain for "externalizing" a sockaddr, and
provide an implementation for IPv6. Expect more work in this area: it
may be more proper to say that the IPv6 implementation "internalizes"
a sockaddr. Add sockaddr_externalize().

2 Add a subroutine, sofamily(), that returns a struct socket's address
family or AF_UNSPEC.

3 Make a lot of IPv4-specific code generic, and move it from
sys/netinet/ to sys/net/ for re-use by IPv6 parts of the kernel and
ifconfig(8).
 1.7  15-Mar-2009  cegger ansify function definitions
 1.6  11-Dec-2007  lukem branches: 1.6.12; 1.6.20; 1.6.26;
use __KERNEL_RCSID()
 1.5  24-Oct-2007  dyoung branches: 1.5.4; 1.5.6; 1.5.8;
Replace rote sockaddr_in6 initializations (memset(), set sa6_family,
sa6_len, and sa6_add) with sockaddr_in6_init() calls.

De-__P(). Constify. KNF. Shorten a staircase. Change bcmp() to
memcmp().

Extract subroutine in6_setzoneid() from in6_setscope(), for re-use
soon.
 1.4  03-Sep-2006  christos branches: 1.4.26; 1.4.28; 1.4.32;
comment out impossible comparison.
 1.3  01-Sep-2006  dyoung Re-use macro IN6_IS_SCOPE_EMBEDDABLE().
 1.2  05-Mar-2006  rpaulo branches: 1.2.2; 1.2.12;
bzero -> memset
 1.1  21-Jan-2006  rpaulo branches: 1.1.2; 1.1.4; 1.1.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.1.6.1  22-Apr-2006  simonb Sync with head.
 1.1.4.2  01-Feb-2006  yamt sync with head.
 1.1.4.1  21-Jan-2006  yamt file scope6.c was added on branch yamt-uio_vmspace on 2006-02-01 14:52:42 +0000
 1.1.2.1  09-Sep-2006  rpaulo sync with head
 1.2.12.5  21-Jan-2008  yamt sync with head
 1.2.12.4  27-Oct-2007  yamt sync with head.
 1.2.12.3  30-Dec-2006  yamt sync with head.
 1.2.12.2  21-Jun-2006  yamt sync with head.
 1.2.12.1  05-Mar-2006  yamt file scope6.c was added on branch yamt-lazymbuf on 2006-06-21 15:11:09 +0000
 1.2.2.2  03-Sep-2006  yamt sync with head.
 1.2.2.1  05-Mar-2006  yamt file scope6.c was added on branch yamt-pdpolicy on 2006-09-03 15:25:42 +0000
 1.4.32.1  13-Nov-2007  bouyer Sync with HEAD
 1.4.28.2  09-Jan-2008  matt sync with HEAD
 1.4.28.1  06-Nov-2007  matt sync with HEAD
 1.4.26.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.5.8.1  13-Dec-2007  bouyer Sync with HEAD
 1.5.6.1  11-Dec-2007  yamt sync with head.
 1.5.4.1  26-Dec-2007  ad Sync with head.
 1.6.26.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.20.1  28-Apr-2009  skrll Sync with HEAD.
 1.6.12.2  16-Sep-2009  yamt sync with head
 1.6.12.1  04-May-2009  yamt sync with head.
 1.8.36.1  10-Aug-2014  tls Rebase.
 1.8.26.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.8.22.2  03-Dec-2017  jdolecek update from HEAD
 1.8.22.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.2.1  15-May-2015  snj Pull up following revision(s) (requested by joerg in ticket #770):
sys/netinet6/scope6.c: revision 1.10
Drop impossible check.
 1.10.2.5  05-Feb-2017  skrll Sync with HEAD
 1.10.2.4  05-Oct-2016  skrll Sync with HEAD
 1.10.2.3  09-Jul-2016  skrll Sync with HEAD
 1.10.2.2  29-May-2016  skrll Sync with HEAD
 1.10.2.1  06-Apr-2015  skrll Sync with HEAD
 1.14.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.15.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.19.2.1  02-May-2018  pgoyette Synch with HEAD

RSS XML Feed