diff -c -w -r -N linux-2.6.16/include/linux/in.h linux-2.6.16-ng/include/linux/in.h
*** linux-2.6.16/include/linux/in.h	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/include/linux/in.h	2008-06-01 17:15:51.000000000 -0400
***************
*** 72,77 ****
--- 72,78 ----
  #define IP_FREEBIND	15
  #define IP_IPSEC_POLICY	16
  #define IP_XFRM_POLICY	17
+ #define IP_IPSEC_REFINFO 30
  
  /* BSD compatibility */
  #define IP_RECVRETOPTS	IP_RETOPTS
diff -c -w -r -N linux-2.6.16/include/net/ip.h linux-2.6.16-ng/include/net/ip.h
*** linux-2.6.16/include/net/ip.h	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/include/net/ip.h	2008-06-01 17:16:42.000000000 -0400
***************
*** 49,54 ****
--- 49,55 ----
  	u32			addr;
  	int			oif;
  	struct ip_options	*opt;
+ 	struct sec_path         *sp;
  };
  
  #define IPCB(skb) ((struct inet_skb_parm*)((skb)->cb))
diff -c -w -r -N linux-2.6.16/include/net/xfrm.h linux-2.6.16-ng/include/net/xfrm.h
*** linux-2.6.16/include/net/xfrm.h	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/include/net/xfrm.h	2008-06-01 17:27:42.000000000 -0400
***************
*** 587,599 ****
--- 587,605 ----
  	struct xfrm_decap_state decap;
  };
  
+ typedef unsigned int xfrm_sec_unique_t;
+ 
  struct sec_path
  {
  	atomic_t		refcnt;
+ 	xfrm_sec_unique_t       ref;       /*reference to high-level policy*/
  	int			len;
  	struct sec_decap_state	x[XFRM_MAX_DEPTH];
  };
  
+ struct ipcm_cookie;
+ extern int ip_cmsg_send_ipsec(struct cmsghdr *cmsg, struct ipcm_cookie *ipc);
+ 
  static inline struct sec_path *
  secpath_get(struct sec_path *sp)
  {
diff -c -w -r -N linux-2.6.16/Makefile linux-2.6.16-ng/Makefile
*** linux-2.6.16/Makefile	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/Makefile	2008-06-01 17:28:09.000000000 -0400
***************
*** 1,7 ****
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 16
! EXTRAVERSION =
  NAME=Sliding Snow Leopard
  
  # *DOCUMENTATION*
--- 1,7 ----
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 16
! EXTRAVERSION = -osw-2.5.52s
  NAME=Sliding Snow Leopard
  
  # *DOCUMENTATION*
diff -c -w -r -N linux-2.6.16/net/ipv4/icmp.c linux-2.6.16-ng/net/ipv4/icmp.c
*** linux-2.6.16/net/ipv4/icmp.c	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/net/ipv4/icmp.c	2008-06-01 17:19:19.000000000 -0400
***************
*** 440,445 ****
--- 440,447 ----
  	u32 saddr;
  	u8  tos;
  
+ 	memset(&ipc, 0, sizeof(ipc));
+ 
  	if (!rt)
  		goto out;
  
diff -c -w -r -N linux-2.6.16/net/ipv4/ip_output.c linux-2.6.16-ng/net/ipv4/ip_output.c
*** linux-2.6.16/net/ipv4/ip_output.c	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/net/ipv4/ip_output.c	2008-06-01 17:19:50.000000000 -0400
***************
*** 1343,1348 ****
--- 1343,1350 ----
  	u32 daddr;
  	struct rtable *rt = (struct rtable*)skb->dst;
  
+ 	memset(&ipc, 0, sizeof(ipc));
+ 
  	if (ip_options_echo(&replyopts.opt, skb))
  		return;
  
diff -c -w -r -N linux-2.6.16/net/ipv4/ip_sockglue.c linux-2.6.16-ng/net/ipv4/ip_sockglue.c
*** linux-2.6.16/net/ipv4/ip_sockglue.c	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/net/ipv4/ip_sockglue.c	2008-06-01 17:20:11.000000000 -0400
***************
*** 1083,1088 ****
--- 1083,1089 ----
  }
  
  EXPORT_SYMBOL(ip_cmsg_recv);
+ EXPORT_SYMBOL(ip_cmsg_send);
  
  EXPORT_SYMBOL(ip_getsockopt);
  EXPORT_SYMBOL(ip_setsockopt);
diff -c -w -r -N linux-2.6.16/net/ipv4/raw.c linux-2.6.16-ng/net/ipv4/raw.c
*** linux-2.6.16/net/ipv4/raw.c	2006-03-20 00:53:29.000000000 -0500
--- linux-2.6.16-ng/net/ipv4/raw.c	2008-06-01 17:20:34.000000000 -0400
***************
*** 387,392 ****
--- 387,394 ----
  	u8  tos;
  	int err;
  
+ 	memset(&ipc, 0, sizeof(ipc));
+ 
  	err = -EMSGSIZE;
  	if (len > 0xFFFF)
  		goto out;
