簡體   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