2015-09-16 27 views
0

我已經使用TCP_MD5SIG在C,Linux中使用API​​ - setsockopt()爲連接創建密碼/密鑰。這對我來說很好。然而,當我用它來刪除密碼/禁用與相同的API授權除了如何刪除setsockopt-C,Linux中由TCP_MD5SIG設置的授權?

struct_tcp_md5sig.tcm_Key = 0; 
struc tcp_md5sig.tcm_keylen = 0; 

I see that when I invoke the same API - 

rc = setsockopt(sock_fd, IPPROTO_TCP, TCP_MD5SIG, &md5sig, sizeof(md5sig)); 

I see that the rc is -1. The strerror says that "no such file or directory". 

我對我應該做的事情以禁用授權困惑。當我傳遞密碼時,相同的API起作用。另一方面,當我想禁用授權時,相同的API不起作用。我已經在內核中啓用了這個協議。因此,在內核中啓用此功能沒有問題。

回答

0

AFAICT,您需要確保與您註冊時刪除相同。

+0

這就是爲什麼它說「沒有這樣的文件或目錄」? –

+0

是的。你可以在內核代碼(['tcp_md5_do_del'](http://lxr.free-electrons.com/source/net/ipv4/tcp_ipv4.c?v=4.2#L955))中看到它返回'-ENOENT'如果它找不到該地址的條目 – Hasturkun