Apply by doing:
	cd /usr/src
	patch -p0 < 003_getsockopt.patch

Then build and install a new kernel.

Index: sys/netinet/ip_output.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_output.c,v
retrieving revision 1.194
diff -u -p -r1.194 ip_output.c
--- sys/netinet/ip_output.c	5 Jun 2009 00:05:22 -0000	1.194
+++ sys/netinet/ip_output.c	28 Oct 2009 20:10:44 -0000
@@ -1505,6 +1505,7 @@ ip_ctloutput(op, so, level, optname, mp)
 		case IP_ESP_TRANS_LEVEL:
 		case IP_ESP_NETWORK_LEVEL:
 		case IP_IPCOMP_LEVEL:
+			*mp = m = m_get(M_WAIT, MT_SOOPTS);
 #ifndef IPSEC
 			m->m_len = sizeof(int);
 			*mtod(m, int *) = IPSEC_LEVEL_NONE;
Index: sys/netinet6/ip6_output.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_output.c,v
retrieving revision 1.106
diff -u -p -r1.106 ip6_output.c
--- sys/netinet6/ip6_output.c	22 Oct 2008 14:36:08 -0000	1.106
+++ sys/netinet6/ip6_output.c	28 Oct 2009 21:09:05 -0000
@@ -1892,6 +1892,7 @@ do { \
 			case IPV6_ESP_TRANS_LEVEL:
 			case IPV6_ESP_NETWORK_LEVEL:
 			case IPV6_IPCOMP_LEVEL:
+				*mp = m = m_get(M_WAIT, MT_SOOPTS);
 #ifndef IPSEC
 				m->m_len = sizeof(int);
 				*mtod(m, int *) = IPSEC_LEVEL_NONE;
