2016-07-05 52 views
1

我正在嘗試將multipath tcp(https://www.multipath-tcp.org/)集成到一個項目中,並且我想修改源代碼以便爲新的mptcp子流手動選擇輸出套接字端口,以便我可以識別在我的應用程序中進出的數據包。在Linux內核中設置套接字輸出端口號

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); 

我的問題是:我如何可以手動設置傳出內核級套接字的端口,和/或在這個調用序列中設置的端口在哪裏,所以我可以修改它?

回答

3

您將設置傳出端口在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("..."); 
+0

謝謝!正是我需要的。 – aVeryStableGenius