@@ -965,10 +965,23 @@ __skb_flow_dissect_udp(const struct sk_buff *skb, const struct net *net,
ret = FLOW_DISSECT_RET_OUT_GOOD;
switch (encap_type) {
+ case UDP_ENCAP_ESPINUDP_NON_IKE:
+ case UDP_ENCAP_ESPINUDP:
+ *p_ip_proto = IPPROTO_ESP;
+ ret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
+ break;
+ case UDP_ENCAP_L2TPINUDP:
+ *p_ip_proto = IPPROTO_L2TP;
+ ret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
+ break;
case UDP_ENCAP_FOU:
*p_ip_proto = fou_protocol;
ret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
break;
+ case UDP_ENCAP_SCTP:
+ *p_ip_proto = IPPROTO_SCTP;
+ ret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
+ break;
case UDP_ENCAP_VXLAN:
case UDP_ENCAP_VXLAN_GPE:
ret = __skb_flow_dissect_vxlan(skb, flow_dissector,
These don't have an encapsulation header so it's fairly easy to support them Signed-off-by: Tom Herbert <tom@herbertland.com> --- net/core/flow_dissector.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)