rpaulo
78678b130a
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@.
2006-01-21 00:15:35 +00:00
christos
95e1ffb156
merge ktrace-lwp.
2005-12-11 12:16:03 +00:00
christos
a9a78a7c79
change bcopy to memmove since this was supposed to be an ovbcopy (from kre)
2005-09-23 21:21:58 +00:00
yamt
2e85eff671
- introduce M_MOVE_PKTHDR and use it where appropriate.
...
intended to be mostly API compatible with openbsd/freebsd.
- remove a glue #define in netipsec/ipsec_osdep.h.
2005-08-18 00:30:58 +00:00
yamt
0be9633956
re-implement ipv6 tx loopback checksum omission.
2005-08-10 13:08:11 +00:00
yamt
40a140d919
ipv6 tx checksum offloading. reviewed by Jason Thorpe.
2005-08-10 12:58:37 +00:00
itojun
015b260743
make ip6_getpmtu back to static
2005-02-28 09:27:07 +00:00
drochner
f44d9a5791
fix ifindex argument checks for IPV6_JOIN_GROUP,
...
IPV6_LEAVE_GROUP and IPV6_MULTICAST_IF -
0 is always legal
2004-12-21 11:37:47 +00:00
peter
396b87b8c2
Convert lo(4) to a clonable device.
...
This also removes the loif array and changes all code to use the new
lo0ifp pointer which points to the lo0 ifnet structure.
Approved by christos.
2004-12-04 16:10:25 +00:00
itojun
8da378abea
- update ro_pmtu on IPsec tunnel encapsulation. ro != ro_pmtu is used as the
...
sign for the existence of routing header.
- fragment to 1280 on IPv6-over-IPv6 encapsulation, as ICMPv6 too big may not
give you enough information to update pmtu cache.
from iij seil team, via kame.
2004-07-14 03:06:08 +00:00
minoura
c3ed038115
Remove broken code for now: getsockopt(s, IPPROTO_IP, IP_IPSEC_POLICY,...).
...
It returned EINVAL, now returns ENOPROTOOPT.
Ok'd by itojun.
2004-07-06 04:30:27 +00:00
itojun
501233726d
implement IPV6_USE_MIN_MTU sockopt. needed by bind9 + EDNS0 + big receive buffer.
2004-06-11 04:10:10 +00:00
martti
c3f78782b9
Make ip6_getpmtu() globally visible. This is needed by IPFilter 4.x.
2004-03-23 18:21:38 +00:00
thorpej
2803ff0955
Use the new IPSEC_PCB_SKIP_IPSEC() to bypass a socket policy lookup
...
when possible. This shaves several cycles from the output path for
non-IPsec connections, even if the policy is cached in the PCB.
2004-03-02 02:28:28 +00:00
itojun
581091043b
knf
2004-03-01 22:32:35 +00:00
itojun
c5cb8d59c0
remove unneeded #ifdef
2004-02-06 08:07:55 +00:00
itojun
70e51fdcf0
strictly follow RFC2460 section 5 last paragraph
...
(sending rule when PMTU < 1280). pointed out by guninski at guninski.com
2004-02-04 05:17:28 +00:00
darrenr
5915fd3874
make ip6_getpmtu() externally visible
2004-01-24 13:02:41 +00:00
itojun
092e41da38
do not lookup security policy if IPV6_FORWARDING.
...
avoids possible infinite ipsec encapsulation on
ip6_input -> ip6_forward -(tunnel mode)-> ip6_output
case. from kame
2004-01-19 05:14:58 +00:00
itojun
d8ac1c6007
fix cases where pktinfo specifies outgoing interface of "0".
2003-12-10 22:35:35 +00:00
itojun
aa8a6718f0
use if_indexlim (instead of if_index) and ifindex2ifnet[x] != NULL
...
to check if interface exists, as (1) if_index has different meaning
(2) ifindex2ifnet could become NULL when interface gets destroyed,
since when we have introduced dynamically-created interfaces. from kame
2003-12-10 11:46:33 +00:00
itojun
ae3e6f6041
correct behavior when ipv6mr_interface is 0. Matthias Drochner
2003-11-06 06:10:51 +00:00
simonb
a2facef339
Remove some assigned-to but otherwise unused variables.
2003-10-30 01:43:08 +00:00
itojun
98d5598feb
when dropping M_PKTHDR, need to free m_tag associated with it.
2003-10-03 20:56:11 +00:00
itojun
32e3deae21
randomize IPv4/v6 fragment ID and IPv6 flowlabel. avoids predictability
...
of these fields. ip_id.c is from openbsd. ip6_id.c is adapted by kame.
2003-09-06 03:36:30 +00:00
itojun
a245b3dc6d
u_short -> u_int16_t. sync w/ kame.
...
don't set ip6_plen where unneeded (i.e. before calling ip6_output)
2003-09-05 23:20:48 +00:00
itojun
19d8b9bfea
don't use m_cat to mbuf of different types. KAME-PR-495
2003-09-04 03:07:33 +00:00
itojun
ff512e5035
don't commit value into ip6_ptkopts until the validation is done.
...
(note: the code will be updated with 2292bis definition soon, hopefully)
2003-08-25 00:10:27 +00:00
itojun
11ede1ed88
remove ipsec_set/getsocket. now we explicitly pass socket * to ip{,6}_output.
2003-08-22 22:00:36 +00:00
itojun
82eb4ce914
change the additional arg to be passed to ip{,6}_output to struct socket *.
...
this fixes KAME policy lookup which was broken by the previous commit.
2003-08-22 21:53:01 +00:00
jonathan
9339ef0381
Change KAME code for ip_output()/ip6_output() to obtain struct socket*
...
from the explicit inpcb*/in6pcb* argument. set_socket() becomes redundant.
2003-08-22 20:29:00 +00:00
jonathan
902669955f
Replace the set_socket() method of passing an extra struct socket*
...
argument to ip6_output() with a new explicit struct in6pcb* argument.
(The underlying socket can be obtained via in6pcb->inp6_socket.)
In preparation for fast-ipsec. Reviewed by itojun.
2003-08-22 20:20:09 +00:00
agc
aad01611e7
Move UCB-licensed code from 4-clause to 3-clause licence.
...
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
itojun
7a5741651c
- sync up MLD declaration with RFC3542 (s/MLD6/MLD/)
...
- routing header declaration with RFC3542
(note: sizeof(ip6_rthdr0) has changed!)
also, sync up with RFC2460 routing header definition (no "strict" source
routing mode any more)
part of advanced API update (RFC2292 -> 3542).
2003-06-06 08:13:43 +00:00
perry
4f27ab21b8
/*CONTCOND*/ while (0)'ed macros
2002-11-02 07:30:55 +00:00
itojun
ad337ee31a
plug a memory leak. from sam leffler. sync w/kame
2002-10-31 17:36:16 +00:00
itojun
ce1bd42a2c
length field on PADN option, before jumbo payload option was wrong.
...
sync w/kame
2002-09-23 13:28:55 +00:00
itojun
9401012487
KNF - return is not a function. sync w/kame.
2002-09-11 02:46:42 +00:00
itojun
6dedde045a
correct signedness mixup in pointer passing. sync w/kame
2002-09-11 02:41:19 +00:00
itojun
b05ff066a7
whitespace cleanup
2002-06-09 14:43:10 +00:00
itojun
6d8d0d63d8
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.
2002-06-08 21:22:29 +00:00
itojun
a1e0f0f9a7
sync IPV6_CHECKSUM handling with kame.
2002-06-07 22:03:02 +00:00
itojun
4e9401b698
comment
2002-06-07 17:13:56 +00:00
itojun
ac03214470
whitespace
2002-06-07 14:48:56 +00:00
itojun
3e3b75590b
remove #if 0'ed portion
2002-06-07 14:43:11 +00:00
itojun
05f0c3e705
KNF a bit
2002-06-07 14:29:10 +00:00
itojun
06ed16c31d
typo
2002-06-07 04:18:11 +00:00
itojun
922b4012cc
'fall through' is not a valid LINT keyword.
2002-06-07 04:07:55 +00:00
itojun
3449ca6d23
do not try to update rmx_mtu if rmx_mtu == 0 (obey ifmtu)
2002-05-31 03:18:54 +00:00
itojun
5c1df51d53
attach nd_ifinfo structure into if_afdata.
...
split IPv6 link MTU (advertised by RA) from real link MTU.
sync with kame
2002-05-29 07:53:39 +00:00