Don't clean ports modules if NO_KERNELCLEAN is defined.
Add a custom kernel configuration file for my laptop.
Remove ATA_CAM and related options.
Merge branch 'master' into markj-kernel-config
Add ipdivert.
Merge branch 'master' into markj-kernel-config
Add snp(4).
Add em(4) for VirtualBox.
Merge branch 'master' into markj-kernel-config
Merge branch 'master' into markj-kernel-config
Include the tap(4) driver.
Introduce the ip provider based on the Solaris definition.

I don't think there's any good way to distinguish between IPv4 and IPv6
packets in the same send/receive probe script. The Solaris examples have
things like

  protostr = args[2]->ip_ver == 4 ? args[4]->ipv4_protostr :
      args[5]->ipv6_nextstr;

but on FreeBSD I think we must use translators, so this becomes

  ipv4 = *xlate< ipv4info_t *>(args[4]);
  ipv6 = *xlate< ipv6info_t *>(args[5]);

  protostr = args[2]->ip_v == 4 ? ipv4.ipv4_protostr : ipv6.ipv6_nextstr;

However, one of args[4] and args[5] is always NULL in these probes, so
the translation fails and an ugly error message is printed. Thus we need
things like

ip:::receive,
ip:::send
/args[2]->ip_v == 4/
{
	/* IPv4 case */
	...
}

ip:::receive,
ip:::send
/args[2]->ip_v != 4/
{
	/* IPv6 case */
	...
}

Still to do:
- handle IP forwarding fastpath (see net.inet.ip.fast_forward).
- handle IP multicast
- handle IPv6
Don't depend on the ip module - FreeBSD doesn't have one.
Use an mbuf as the third argument to the ip probes. This way we can
provide that argument both stacks - the struct ip * is only available in
the IPv4 stack.
More work on the ip provider:

- Add probes in the IPv4 forwarding fastpath.
- Add IPv6 probes.
- Add protocol strings.
Merge branch '20130324-clean-ports-modules' into 20130421-ip-provider
Fix ipinfo_t translation in the IPv4 case.
Fix argument extraction for probes with more than 5 arguments.
Merge branch 'markj-kernel-config' into 20130421-ip-provider
Simplify the argval code a bit.

Before, we were getting a stack pointer using a calculation that
doesn't make a whole lot of sense to me:

stack = (uintptr_t *)&fp[1]

where fp has type struct amd64_frame * and sizeof(*fp) is 24. Then the
first stack argument is at stack - 1, the second is at stack, and so on.
Why not just set stack to (uintptr_t *)(fp + 2)? Then the first stack
argument to dtrace_probe() is at stack, the second is at stack + 1, and
so on.

Keep the extra frame jump - it's still needed.