获取C ++ for Linux中所有接口的网关

时间:2013-10-29 09:46:06

标签: c++ linux routing gateway

使用netstat或route,以及可能的其他几个命令,检索主路由表中的默认网关非常简单。 (虽然提取它仍然比我预期的更难)但我没有找到任何方法为每个接口找到每个网关。

具体来说,我有wlan0和eth0接口,每个接口都有自己的标准网关。无论如何都要从某个地方提取它们。最好是在C ++中,用于Linux发行版。 (Ubuntu 12.04具体)

修改

也许我的术语不正确,所以我会尝试澄清:

  • 如果我的笔记本电脑上只有我的wlan0接口可操作(即我断开了lan电缆)。
  • 我有一个默认网关,IP *。*。108.1,本地IP为*。*。108.56。
  • 现在,如果我连接以太网电缆,我会得到*。*。105.129的默认网关和*。*。105.170的本地IP。两者的子网掩码是255.255.255.128。

我想通过相应地设置路由表来使用它们。

也许如果我误解了网关的目的,那么让我解释一下我的主要目标

  

我希望能够指定使用无线连接,而不是以太网电缆,反之亦然。

EDIT2:

这些是我用来从端口5555重定向UDP数据包以通过wlan

发送的路由命令
iptables -A OUTPUT -o wlan0 -t mangle -p udp --sport 5555 -j MARK --set-mark 1
ip rule add fwmark 1 table 1
ip route add dev wlan0 default via *.*.108.1 table 1

对于最后一个命令,我需要提供一些网关,这就是我要找的。

0 个答案:

没有答案