121 lines
4.3 KiB
Plaintext
121 lines
4.3 KiB
Plaintext
KAME/NetBSD integration TODOs
|
|
$NetBSD: TODO,v 1.12 2000/02/05 18:11:41 itojun Exp $
|
|
Jun-ichiro itojun Hagino <itojun@itojun.org>
|
|
|
|
|
|
This file talks about issues/TODOs in KAME/NetBSD integration.
|
|
For details about original KAME distribution, please refer to
|
|
sys/netinet6/IMPLEMENTATION, or documents in KAME distribution.
|
|
|
|
|
|
KERNEL
|
|
======
|
|
* net/if_types.h
|
|
|
|
IFT_GIF and IFT_FAITH are not defined in IANA assignment, but we need to
|
|
define these two (they are essential). If it is prohibited to define these,
|
|
where should we check to get interface type? if_xname?
|
|
|
|
* ATM PVC support in Adaptec/ENI ATM driver
|
|
|
|
Is it MI enough? If not, would you like it to be removed from the tree?
|
|
Actually this is quite useful (we use it in Japanese ATM PVC leased line
|
|
service and is quite stable).
|
|
|
|
* mbuf pullup consideration
|
|
|
|
KAME IPv6 onion-peeling routine assumes that headers are contiguous on
|
|
mbufs. For this we impose little restriction on drivers (namely,
|
|
MINCLSIZE has been modified for this). From stats we gathered it has no
|
|
impact on performance (maybe better due to less m_pullup), but some of
|
|
you may not like this (you may hate deep-copy code in net/if_loop.c).
|
|
We may need to implement safer way, something similar to m_pullup().
|
|
I have an idea but I still need some time for this. I'll test this in
|
|
KAME tree and then will bring it to NetBSD.
|
|
(NOTE: m_pullup is not very useful for IPv6 as the chained header length
|
|
can easily exceed MHLEN. Remember, IPv6 header itself already occupies 40
|
|
bytes)
|
|
|
|
KAME team is doing experiments with m_pulldown(). will migrate to m_pulldown()
|
|
after stabilization. working nicely but need more tests and code reviews.
|
|
|
|
* ipsec socket pointer
|
|
|
|
We currently reuse m_pkthdr.rcvif for ipsec socket pointer, and ipf and
|
|
other code does not like this.
|
|
|
|
It is planned to add m->m_pkthdr.aux (pointer to mbuf chain) to carry around
|
|
extra information for IPsec and other cases.
|
|
|
|
* gre/ipip compatibility
|
|
|
|
Hope I did not break any of these... Could someone check?
|
|
|
|
* mbuf flags
|
|
|
|
KAME code introduces 5 mbuf flags, which should be decreased. M_ANYCAST6
|
|
is local to IPv6 code so it should be M_PROTO0 or something like that.
|
|
Others (IPsec items) are used across IPv4 and IPv6 so they cannot be in
|
|
M_PROTO0 kind of thing.
|
|
|
|
When we switch to full m->m_pkthdr.aux support, we don't need IPsec related
|
|
flags in m->m_flags.
|
|
|
|
* use of xx_control() from kernel
|
|
|
|
xx_control() are designed to be called from userland process, not
|
|
from within the kernel. Calling xx_control() from interrupt context would
|
|
cause various problems, like M_WAIT/NOWAIT issue, spl issue and others.
|
|
we need to clean it up. The right thing to happen is to split those
|
|
necessary functions into (1) called-from-userland function, (2) called-from-
|
|
interrupt function, and (3) common backend which shares as much code as
|
|
possible. in6_prefix.c is the offending portion.
|
|
|
|
* more LP64 friendliness checking
|
|
|
|
* scoped address printing
|
|
|
|
KAME implements extended format for link-local address printing, like
|
|
"fe80::1@lo0". After long debate, IETF ipngwg will pick "lo0%fe80::1" as
|
|
standard one (picked "%" for avoiding conflict with "user@host" notation).
|
|
We'll need to update the support before the release.
|
|
|
|
* PRC_IF{UP,CHANGE}
|
|
|
|
We have some hook in sys/net/if.c for IPv6, for detecting (1) when interface
|
|
bringed up, and (2) when interface MTU changes. These hooks should be
|
|
removed by introducing PRC_IF{UP,CHANGE}.
|
|
|
|
|
|
USERLAND
|
|
========
|
|
* pim6dd/pim6sd licensing
|
|
|
|
pim6dd/pim6sd license issue should be clarified, just like we need
|
|
clarification for mroute6d.
|
|
|
|
* IPv6-support in resolvers and libraries
|
|
|
|
Dual stack resolver code is from KAME. The change may not be compatible with
|
|
future bind8 code, so we may have to merge future bind8 carefully.
|
|
(or we should volunteer for bind8 improvements)
|
|
|
|
At this moment IPv6 support in lib/libc/net/* is implemented in very
|
|
conservative way so that it will not break existing codebase.
|
|
|
|
* -DINET6, -DIPSEC
|
|
|
|
Where should we define -DINET6? Should it be global option like
|
|
EXPORTABLE_SYSTEM=1 (in /etc/mk.conf), or local option defined somewhere?
|
|
(some people may need a binary tree with no IPv6 support at all, for
|
|
smaller footprint)
|
|
|
|
At this moment -DINET6 is placed in each of leaf directory Makefiles,
|
|
and there's no global option for enabling/disabling userland IPv6/IPsec
|
|
support. Since we ship single binary tree we want to ship them enabled
|
|
by default.
|
|
|
|
* more IPv6 support
|
|
|
|
X11, NFS, RPC, whatever.
|