diff -c -w -r -N linux-2.6.22/Makefile linux-2.6.22-ng/Makefile
*** linux-2.6.22/Makefile	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/Makefile	Sat Apr  5 15:30:48 2008
***************
*** 1,7 ****
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 22
! EXTRAVERSION =
  NAME = Holy Dancing Manatees, Batman!
  
  # *DOCUMENTATION*
--- 1,7 ----
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 22
! EXTRAVERSION = -osw-2.5.50s
  NAME = Holy Dancing Manatees, Batman!
  
  # *DOCUMENTATION*
diff -c -w -r -N linux-2.6.22/include/linux/in.h linux-2.6.22-ng/include/linux/in.h
*** linux-2.6.22/include/linux/in.h	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/include/linux/in.h	Sat Apr  5 15:31:28 2008
***************
*** 75,80 ****
--- 75,81 ----
  #define IP_IPSEC_POLICY	16
  #define IP_XFRM_POLICY	17
  #define IP_PASSSEC	18
+ #define IP_IPSEC_REFINFO 30
  
  /* BSD compatibility */
  #define IP_RECVRETOPTS	IP_RETOPTS
diff -c -w -r -N linux-2.6.22/include/net/ip.h linux-2.6.22-ng/include/net/ip.h
*** linux-2.6.22/include/net/ip.h	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/include/net/ip.h	Sat Apr  5 15:31:39 2008
***************
*** 54,59 ****
--- 54,60 ----
  	__be32			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.22/include/net/xfrm.h linux-2.6.22-ng/include/net/xfrm.h
*** linux-2.6.22/include/net/xfrm.h	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/include/net/xfrm.h	Sat Apr  5 15:31:50 2008
***************
*** 616,628 ****
--- 616,634 ----
  
  extern void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev);
  
+ 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 xfrm_state	*xvec[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.22/net/ipv4/icmp.c linux-2.6.22-ng/net/ipv4/icmp.c
*** linux-2.6.22/net/ipv4/icmp.c	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/net/ipv4/icmp.c	Sat Apr  5 15:33:25 2008
***************
*** 440,445 ****
--- 440,447 ----
  	__be32 saddr;
  	u8  tos;
  
+ 	memset(&ipc, 0, sizeof(ipc));
+ 
  	if (!rt)
  		goto out;
  
diff -c -w -r -N linux-2.6.22/net/ipv4/ip_output.c linux-2.6.22-ng/net/ipv4/ip_output.c
*** linux-2.6.22/net/ipv4/ip_output.c	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/net/ipv4/ip_output.c	Sat Apr  5 15:33:32 2008
***************
*** 1341,1346 ****
--- 1341,1348 ----
  	__be32 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.22/net/ipv4/ip_sockglue.c linux-2.6.22-ng/net/ipv4/ip_sockglue.c
*** linux-2.6.22/net/ipv4/ip_sockglue.c	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/net/ipv4/ip_sockglue.c	Sat Apr  5 15:33:40 2008
***************
*** 1225,1230 ****
--- 1225,1231 ----
  #endif
  
  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.22/net/ipv4/raw.c linux-2.6.22-ng/net/ipv4/raw.c
*** linux-2.6.22/net/ipv4/raw.c	Tue Oct  9 16:31:38 2007
--- linux-2.6.22-ng/net/ipv4/raw.c	Sat Apr  5 15:33:51 2008
***************
*** 390,395 ****
--- 390,396 ----
  	u8  tos;
  	int err;
  
+ 	memset(&ipc, 0, sizeof(ipc));
  	err = -EMSGSIZE;
  	if (len > 0xFFFF)
  		goto out;
