diff -up iproute2-2.6.29/ip/ipxfrm.c.old iproute2-2.6.29/ip/ipxfrm.c
--- iproute2-2.6.29/ip/ipxfrm.c.old	2009-03-24 23:15:14.000000000 +0100
+++ iproute2-2.6.29/ip/ipxfrm.c	2009-04-24 09:35:58.203735119 +0200
@@ -1156,6 +1156,7 @@ static int xfrm_selector_upspec_parse(st
 		case IPPROTO_UDP:
 		case IPPROTO_SCTP:
 		case IPPROTO_DCCP:
+		case IPPROTO_IP:	/* to allow shared SA for different protocols */
 			break;
 		default:
 			fprintf(stderr, "\"sport\" and \"dport\" are invalid with proto=%s\n", strxf_proto(sel->proto));
