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;