【问题标题】:Setting socket outgoing port number in Linux kernel在 Linux 内核中设置套接字传出端口号
【发布时间】:2016-11-07 11:52:27
【问题描述】:

我正在尝试将多路径 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);

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

【问题讨论】:

    标签: c sockets tcp linux-kernel mptcp


    【解决方案1】:

    您可以在loc_in 结构中将输出端口设置为您使用的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("...");
    

    【讨论】:

    • 谢谢!正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2015-02-26
    • 2012-09-26
    • 2014-02-06
    • 2015-10-25
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多