--- /dev/null
+diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
+index 0495ff4..b1d4c6e 100644
+--- a/ip/ipxfrm.c
++++ b/ip/ipxfrm.c
+@@ -1275,6 +1275,7 @@ static int xfrm_selector_upspec_parse(struct xfrm_selector *sel,
+ 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 value \"%s\"\n", strxf_proto(sel->proto));