去掉Socket繫結裝置許可權檢查

2021-09-30 04:21:54 字數 346 閱讀 2549

為了讓linux手機可以支援多個pdp,需要讓不同的應用的資料報走不同的路由/網絡卡,可以通過兩種方式實現:

在路由表中增加特定路由的方式很繁瑣,而且容易出錯,導致路由表混亂。而繫結網絡卡方式,很清晰而且不受路由表限制。

linux kernel的預設**,會檢查呼叫者是否有cap_net_raw能力,如果沒有該能力,繫結網絡卡的時候,系統會返回錯誤-eperm。我們需要做的是:任何應用能繫結網絡卡。因此需要對核心**sock_bindtodevice()函式進行簡單的修改,如下:以linux 2.6.32為例

修改kernel以後,native應用就可以通過呼叫setsockopt來繫結網絡卡了,示例代下:

socket為什麼無法繫結?

q 我繫結socket的時候總是失敗,只有開機第一次執行程式的時候可以繫結,然後以後就不行了,當我使用另外乙個程式連線此埠的時候卻連不上,但是我用埠掃瞄軟體卻可以掃到這個埠,請問大俠是什麼原因?如何解決?謝謝了先。a 1.先確定該socket正常關閉 2.如果乙個socket繫結了某個埠,該sock...

關於socket的繫結IP

這個,socket的繫結ip啊,感覺有點繞,每次無論是看注釋還是看文件,說的都是類似於socket監聽的本地ip位址的話,但是如果在伺服器使用其繫結了127.0.0.1這個位址的話,外網就連不進來,我查閱了很多資料,最後加上自己的理解,覺得大概是這個意思。當你用socket繫結127.0.0.1的時...

socket為什麼無法繫結?

q 我繫結socket的時候總是失敗,只有開機第一次執行程式的時候可以繫結,然後以後就不行了,當我使用另外乙個程式連線此埠的時候卻連不上,但是我用埠掃瞄軟體卻可以掃到這個埠,請問大俠是什麼原因?如何解決?謝謝了先。a 1.先確定該socket正常關閉 2.如果乙個socket繫結了某個埠,該sock...