162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* Copyright (c) 2023, SUSE. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include "vmlinux.h" 562306a36Sopenharmony_ci#include <bpf/bpf_tracing.h> 662306a36Sopenharmony_ci#include "bpf_tracing_net.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_cichar _license[] SEC("license") = "GPL"; 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciSEC("fmod_ret/update_socket_protocol") 1162306a36Sopenharmony_ciint BPF_PROG(mptcpify, int family, int type, int protocol) 1262306a36Sopenharmony_ci{ 1362306a36Sopenharmony_ci if ((family == AF_INET || family == AF_INET6) && 1462306a36Sopenharmony_ci type == SOCK_STREAM && 1562306a36Sopenharmony_ci (!protocol || protocol == IPPROTO_TCP)) { 1662306a36Sopenharmony_ci return IPPROTO_MPTCP; 1762306a36Sopenharmony_ci } 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci return protocol; 2062306a36Sopenharmony_ci} 21