1*ddba1224SGeliang Tang // SPDX-License-Identifier: GPL-2.0 2*ddba1224SGeliang Tang /* Copyright (c) 2023, SUSE. */ 3*ddba1224SGeliang Tang 4*ddba1224SGeliang Tang #include "vmlinux.h" 5*ddba1224SGeliang Tang #include <bpf/bpf_tracing.h> 6*ddba1224SGeliang Tang #include "bpf_tracing_net.h" 7*ddba1224SGeliang Tang 8*ddba1224SGeliang Tang char _license[] SEC("license") = "GPL"; 9*ddba1224SGeliang Tang 10*ddba1224SGeliang Tang SEC("fmod_ret/update_socket_protocol") BPF_PROG(mptcpify,int family,int type,int protocol)11*ddba1224SGeliang Tangint BPF_PROG(mptcpify, int family, int type, int protocol) 12*ddba1224SGeliang Tang { 13*ddba1224SGeliang Tang if ((family == AF_INET || family == AF_INET6) && 14*ddba1224SGeliang Tang type == SOCK_STREAM && 15*ddba1224SGeliang Tang (!protocol || protocol == IPPROTO_TCP)) { 16*ddba1224SGeliang Tang return IPPROTO_MPTCP; 17*ddba1224SGeliang Tang } 18*ddba1224SGeliang Tang 19*ddba1224SGeliang Tang return protocol; 20*ddba1224SGeliang Tang } 21