繁体   English   中英

在Linux内核中设置套接字传出端口号

[英]Setting socket outgoing port number in Linux kernel

我正在尝试将multipath tcp( https://www.multipath-tcp.org/ )集成到一个项目中,我想修改源代码,以便为新的mptcp子流手动选择传出套接字端口,以便我可以识别在我的应用程序中进出的数据包。

地址创建时间:

inet_create(sock_net(meta_sk), &sock, IPPROTO_TCP, 1);

并绑定:

sock.ops->bind(&sock, (struct sockaddr *)&loc_in, sizeof(struct sockaddr_in));

然后连接:

sock.ops->connect(&sock, (struct sockaddr *)&rem_in,
            sizeof(struct sockaddr_in), O_NONBLOCK);

我的问题是:如何在内核级别手动设置套接字的传出端口,和/或在此调用序列中设置的端口在哪里,所以我可以修改它?

您可以在loc_in结构中设置用于bind()套接字bind()到本地适配器/接口的传出端口,例如:

struct sockaddr_in loc_in;
loc_in.sin_family = AF_INET;

// desired port...
loc_in.sin_port = htons(...);

// IP of desired adapter to connect() from...
loc_in.sin_addr.s_addr = inet_addr("...");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM