summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/nd6.c
Commit message (Collapse)AuthorAgeFilesLines
* Clean up VCS Ids.obrien2007-12-101-3/+5
|
* Move towards more explicit support for various network protocol stacksrwatson2007-10-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | in the TrustedBSD MAC Framework: - Add mac_atalk.c and add explicit entry point mac_netatalk_aarp_send() for AARP packet labeling, rather than using a generic link layer entry point. - Add mac_inet6.c and add explicit entry point mac_netinet6_nd6_send() for ND6 packet labeling, rather than using a generic link layer entry point. - Add expliict entry point mac_netinet_arp_send() for ARP packet labeling, and mac_netinet_igmp_send() for IGMP packet labeling, rather than using a generic link layer entry point. - Remove previous genering link layer entry point, mac_mbuf_create_linklayer() as it is no longer used. - Add implementations of new entry points to various policies, largely by replicating the existing link layer entry point for them; remove old link layer entry point implementation. - Make MAC_IFNET_LOCK(), MAC_IFNET_UNLOCK(), and mac_ifnet_mtx global to the MAC Framework rather than static to mac_net.c as it is now needed outside of mac_net.c. Obtained from: TrustedBSD Project
* Rename 'mac_mbuf_create_from_firewall' to 'mac_netinet_firewall_send' asrwatson2007-10-261-1/+1
| | | | | | | | | | we move towards netinet as a pseudo-object for the MAC Framework. Rename 'mac_create_mbuf_linklayer' to 'mac_mbuf_create_linklayer' to reflect general object-first ordering preference. Sponsored by: SPARTA (original patches against Mac OS X) Obtained from: TrustedBSD Project, Apple Computer
* Close a race when trying to lookup a gateway route in rt_check().jhb2007-10-221-1/+3
| | | | | | | | | | | | | | | | | | | | | Specifically, if two threads were doing concurrent lookups and the existing gateway was marked down, the the first thread would drop a reference on the gateway route and then unlock the "root" route while it tried to allocate a new route. The second thread could then also drop a reference on the same gateway route resulting in a reference underflow. Fix this by clearing the gateway route pointer after dropping the reference count but before dropping the lock. Secondly, in this same case, the second thread would overwrite the gateway route pointer w/o free'ing a reference to the route installed by the first thread. In practice this would probably just fix a lost reference that would result in a route never being freed. This fixes panics observed in rt_check() and rtexpunge(). MFC after: 1 week PR: kern/112490 Insight from: mehuljv at yahoo.com Reviewed by: ru (found the "not-setting it to NULL" part) Tested by: several
* Space cleanupdelphij2007-07-051-3/+3
| | | | Approved by: re (rwatson)
* ANSIfy[1] plus some style cleanup nearby.delphij2007-07-051-79/+38
| | | | | | Discussed with: gnn, rwatson Submitted by: Karl Sj?dahl - dunceor <dunceor gmail com> [1] Approved by: re (rwatson)
* Fix 'assignment used as truth value' warningpeter2007-07-051-1/+2
| | | | Approved by: re (rwatson)
* Commit the change from FAST_IPSEC to IPSEC. The FAST_IPSECgnn2007-07-031-5/+8
| | | | | | | | option is now deprecated, as well as the KAME IPsec code. What was FAST_IPSEC is now IPSEC. Approved by: re Sponsored by: Secure Computing
* Commit IPv6 support for FAST_IPSEC to the tree.gnn2007-07-011-5/+0
| | | | | | | | | This commit includes only the kernel files, the rest of the files will follow in a second commit. Reviewed by: bz Approved by: re Supported by: Secure Computing
* Force the alignment of the chars arrays, as they are casted later tocognet2007-05-211-2/+2
| | | | | | | | structs. gcc 4.2 doesn't do it by default, and that results in unaligned access on arm. Reviewed by: gnn, imp
* some minor modification to the previous commit to sys/netinet6/nd6.c and ↵suz2007-05-051-1/+6
| | | | | | | | | | nd6_nbr.c. - added some clarification comments - removed an unnecesary code Obtained from: KAME MFC after: 1 week
* fixed a memory leak in unresolved ND queue processingsuz2007-05-041-11/+4
| | | | | Obtained from: KAME MFC after: 1 week
* ng_iface requiers neighbor cache as well.ume2007-02-031-0/+1
| | | | MFC after: 3 days
* Revert nd6.c revs. 1.67, 1.68, 1.69, 1.70 in an attempt to unbreakbmah2007-01-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | IPv6 over point-to-point gif(4) tunnels. These revisions caused a host route to the destination of a point-to-point gif(4) interface to not get installed when the interface and destination addresses were assigned. This caused "no route to host" errors when trying to send traffic over the interface. The first packet arriving inbound over the tunnel, however, would cause the correct route to get installed, allowing subsequent outbound traffic to be routed correctly. gif(4) interfaces with prefix lengths of less than 128 bits (i.e. no explicit destination address assigned) were not affected by this bug. This bug fix is a possible candidate for a 6.2-RELEASE errata note. Approved by: jhay (original committer) Discussed with: jhay, JINMEI Tatuya MFC after: 3 days
* MFp4: 92972, 98913 + one more changebz2006-12-121-6/+12
| | | | | | | In ip6_sprintf no longer use and return one of eight static buffers for printing/logging ipv6 addresses. The caller now has to hand in a sufficiently large buffer as first argument.
* - In nd6_rtrequest(), when caching an rtentry, don't forgetru2006-11-251-9/+29
| | | | | | | | | | | | | | to add a reference to it; otherwise, we could later access a freed memory. This is believed to fix panics some users were observing when running route6d(8), and is similar to the fix in sys/netinet/if_ether.c,v 1.139 by glebius@. PR: kern/93910, kern/105437 Testing by: Wojciech Puchar (still ongoing) - Add rtentry locking to nd6_output() similar to rt_check(). MFC after: 4 days
* Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.hrwatson2006-10-221-1/+2
| | | | | | | | | | | | | begun with a repo-copy of mac.h to mac_framework.h. sys/mac.h now contains the userspace and user<->kernel API and definitions, with all in-kernel interfaces moved to mac_framework.h, which is now included across most of the kernel instead. This change is the first step in a larger cleanup and sweep of MAC Framework interfaces in the kernel, and will not be MFC'd. Obtained from: TrustedBSD Project Sponsored by: SPARTA
* Hopefully the last tweak in trying to make it possible to add ipv6 directjhay2006-10-021-4/+1
| | | | | | | host routes without side effects. Submitted by: JINMEI Tatuya MFC after: 4 days
* A better fix is to check if it is a host route.jhay2006-09-301-1/+1
| | | | | Submitted by: ume MFC after: 5 days
* My previous commit broke "route add -inet6 <network_addr> -interface gif0".jhay2006-09-301-1/+2
| | | | | | Fix that by excluding point-to-point interfaces. MFC after: 5 days
* Make it possible to add an IPv6 host route to a host directly connected.jhay2006-09-161-0/+2
| | | | | | | | | Use something like this: route add -inet6 <dest_addr> <my_addr_on_that_interface> -interface -llinfo This is usefull for wireless adhoc mesh networks. MFC after: 5 days
* With exception of the if_name() macro, all definitions in net_osdep.hbrooks2006-08-041-2/+0
| | | | | | | | were unused or already in if_var.h so add if_name() to if_var.h and remove net_osdep.h along with all references to it. Longer term we may want to kill off if_name() entierly since all modern BSDs have if_xname variables rendering it unnecessicary.
* Fix spurious warnings from neighbor discovery when working with IPv6 overgnn2006-06-081-0/+13
| | | | | | | | point to point tunnels (gif). PR: 93220 Submitted by: Jinmei Tatuya MFC after: 1 week
* fixed a memory leak when net.inet6.icmp6.nd6_maxqueuelen is greater than 1suz2006-03-241-4/+26
| | | | | Obtained from: KAME MFC after: 3 days
* avoided the use of purged address structure when an address becameume2006-02-121-2/+1
| | | | | | | | | | | invalid in nd6_timer(). PR: kern/93170 Reported by: kris Submitted by: JINMEI Tatuya <jinmei__at__isl.rdc.toshiba.co.jp> Confirmed by: kris Obtained from: KAME MFC after: 2 days
* fixed a compilation failure on amd64/sparc64/ia64suz2005-10-221-2/+4
| | | | | Submitted by: max MFC after: 2 month
* sync with KAME regarding NDPsuz2005-10-211-209/+337
| | | | | | | | | | | | - introduced fine-grain-timer to manage ND-caches and IPv6 Multicast-Listeners - supports Router-Preference <draft-ietf-ipv6-router-selection-07.txt> - better prefix lifetime management - more spec-comformant DAD advertisement - updated RFC/internet-draft revisions Obtained from: KAME Reviewed by: ume, gnn MFC after: 2 month
* perform NUD on an IPv6-aware point-to-point interfacesuz2005-10-211-0/+2
| | | | | Obtained from: KAME MFC after: 1 week
* sync with KAME (nuked unused code, use NULL to denote a NULL pointer)suz2005-10-191-15/+0
| | | | | Obtained from: KAME Reviewed by: ume, gnn
* supported an ndp command suboption to disable IPv6 in the given interfacesuz2005-10-191-0/+6
| | | | | | Obtained from: KAME Reviewd by: ume, gnn MFC after: 2 week
* added an ioctl option in kernel so that ndp/rtadvd can change some ↵suz2005-10-191-0/+28
| | | | | | | | NDP-related kernel variables based on their configurations (RFC2461 p.43 6.2.1 mandates this for IPv6 routers) Obtained from: KAME Reviewd by: ume, gnn MFC after: 2 weeks
* sync with KAME in the following points:suz2005-10-191-44/+45
| | | | | | | | | | | | - fixed typos - improved some comment descriptions - use NULL, instead of 0, to denote a NULL pointer - avoid embedding a magic number in the code - use nd6log() instead of log() to record NDP-specific logs - nuked an unnecessay white space Obtained from: KAME MFC after: 1 day
* Add support for multicast to the bridge and allow inet6 addresses to bethompsa2005-09-061-0/+2
| | | | | | | | | | | | | | | | assigned to the interface. IPv6 auto-configuration is disabled. An IPv6 link-local address has a link-local scope within one link, the spec is unclear for the bridge case and it may cause scope violation. An address can be assigned in the usual way; ifconfig bridge0 inet6 xxxx:... Tested by: bmah Reviewed by: ume (netinet6) Approved by: mlaier (mentor) MFC after: 1 week
* - fix typo in comment.ume2005-08-121-2/+2
| | | | | | | - nuke unused code. Submitted by: suz Obtained from: KAME
* o Make rt_check() function more strict:glebius2005-08-111-0/+6
| | | | | | | | | | - rt0 passed to rt_check() must not be NULL, assert this. - rt returned by rt_check() must be valid locked rtentry, if no error occured. o Modify callers, so that they never pass NULL rt0 to rt_check(). Reviewed by: sam, ume (nd6.c)
* In preparation for fixing races in ARP (and probably in otherglebius2005-08-091-0/+1
| | | | L2/L3 mappings) make rt_check() return a locked rtentry.
* - Use 'error' variable to store error value, instead of 'i'.glebius2005-08-091-9/+6
| | | | | | | | - Push 'i' into the only block where it is used. - Remove redundant check for rt being NULL. If rt_check() hasn't returned an error, then rt is valid. Reviewed by: gnn
* scope cleanup. with this changeume2005-07-251-46/+49
| | | | | | | | | | | | | | | | | | | - 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. Submitted by: JINMEI Tatuya <jinmei__at__isl.rdc.toshiba.co.jp> Obtained from: KAME
* do not hardcode if_mtu values in here, except for IFT_{ARC,FDDI} -ume2005-07-201-15/+0
| | | | | | | they need special handling. makes it possible to take advantage of 9k ether frames. Obtained from: NetBSD
* Add CARP (Common Address Redundancy Protocol), which allows multipleglebius2005-02-221-0/+3
| | | | | | | | | | | | | hosts to share an IP address, providing high availability and load balancing. Original work on CARP done by Michael Shalayeff, with many additions by Marco Pfatschbacher and Ryan McBride. FreeBSD port done solely by Max Laier. Patch by: mlaier Obtained from: OpenBSD (mickey, mcbride)
* /* -> /*- for license, minor formatting changes, separate for KAMEimp2005-01-071-1/+1
|
* Prevent reentrancy of the IPv6 routing code (leading to crash withgreen2004-10-031-5/+26
| | | | INVARIANTS on, who knows what with it off).
* Call callout_init() on nd6_slowtimo_ch before setting it going; otherwise,rwatson2004-09-051-0/+1
| | | | | | | the flags field will be improperly initialized resulting in inconsistent operation (sometimes with Giant, sometimes without, et al). RELENG_5 candidate.
* Remove in6_prefix.[ch] and the contained router renumbering capability.rwatson2004-08-231-21/+0
| | | | | | | | | | | | The prefix management code currently resides in nd6, leaving only the unused router renumbering capability in the in6_prefix files. Removing it will make it easier for us to provide locking for the remainder of IPv6 by reducing the number of objects requiring synchronized access. This functionality has also been removed from NetBSD and OpenBSD. Submitted by: George Neville-Neil <gnn at neville-neil.com> Discussed with/approved by: suz, keiichi at kame.net, core at kame.net
* fix the change of interface in nd6_storelladdr for multicastluigi2004-04-261-5/+5
| | | | | | addresses too. Reported by: Jun Kuriyama
* This commit does two things:luigi2004-04-251-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. rt_check() cleanup: rt_check() is only necessary for some address families to gain access to the corresponding arp entry, so call it only in/near the *resolve() routines where it is actually used -- at the moment this is arpresolve(), nd6_storelladdr() (the call is embedded here), and atmresolve() (the call is just before atmresolve to reduce the number of changes). This change will make it a lot easier to decouple the arp table from the routing table. There is an extra call to rt_check() in if_iso88025subr.c to determine the routing info length. I have left it alone for the time being. The interface of arpresolve() and nd6_storelladdr() now changes slightly: + the 'rtentry' parameter (really a hint from the upper level layer) is now passed unchanged from *_output(), so it becomes the route to the final destination and not to the gateway. + the routines will return 0 if resolution is possible, non-zero otherwise. + arpresolve() returns EWOULDBLOCK in case the mbuf is being held waiting for an arp reply -- in this case the error code is masked in the caller so the upper layer protocol will not see a failure. 2. arpcom untangling Where possible, use 'struct ifnet' instead of 'struct arpcom' variables, and use the IFP2AC macro to access arpcom fields. This mostly affects the netatalk code. === Detailed changes: === net/if_arcsubr.c rt_check() cleanup, remove a useless variable net/if_atmsubr.c rt_check() cleanup net/if_ethersubr.c rt_check() cleanup, arpcom untangling net/if_fddisubr.c rt_check() cleanup, arpcom untangling net/if_iso88025subr.c rt_check() cleanup netatalk/aarp.c arpcom untangling, remove a block of duplicated code netatalk/at_extern.h arpcom untangling netinet/if_ether.c rt_check() cleanup (change arpresolve) netinet6/nd6.c rt_check() cleanup (change nd6_storelladdr)
* Remove a tail-recursive call in nd6_output.luigi2004-04-191-5/+8
| | | | | | This change is functionally identical to the original code, though I have no idea if that was correct in the first place (see comment in the commit).
* Replace Bcopy/Bzero with 'the real thing' as in the rest of the file.luigi2004-04-181-2/+2
|
* protect access to ifnet structure with mutex.ume2004-01-281-0/+2
|
* - changed the logic in nd6_is_addr_neighbor(); check on-link prefixesume2003-12-081-17/+23
| | | | | | | | | | | | | | (not interface addresses) to see if a given address is on-link. - skip offlink prefixes in neighbor determination in nd6_is_addr_neighbor. - in nd6_is_addr_neighbor, regarded every address as on-link when the default router list is empty. otherwise, we'd not be able make a neighbor cache for the address. this algorithm is applied to hosts only. - in nd6_is_addr_neighbor, check if the default interface is equal to the interface in question in addition to check if the default router list is empty. Obtained from: KAME
OpenPOWER on IntegriCloud