Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C IPv6中的源地址选择_C_Linux_Ipv6 - Fatal编程技术网

C IPv6中的源地址选择

C IPv6中的源地址选择,c,linux,ipv6,C,Linux,Ipv6,要从可用的多个ipv6地址确定首选源地址,我可以使用以下命令ip-6 route destaddr。 我的问题是ip是一个实用程序,是否有任何系统调用或库API可用于相同的。因为我的全部任务是用任何系统调用或库API确定源地址。然后在我的应用程序中使用它。没有得到您的确切要求。如果你想知道你自己的系统IP,那么你可以尝试其中任何一个 ifconfig ip地址显示 ip地址显示eth0 hostname-i 或者,您可以将任何ipv6 ip地址设置为interface(eth0),并使用这些

要从可用的多个ipv6地址确定首选源地址,我可以使用以下命令ip-6 route destaddr。
我的问题是ip是一个实用程序,是否有任何系统调用或库API可用于相同的。因为我的全部任务是用任何系统调用或库API确定源地址。然后在我的应用程序中使用它。

没有得到您的确切要求。如果你想知道你自己的系统IP,那么你可以尝试其中任何一个

  • ifconfig
  • ip地址显示
  • ip地址显示eth0
  • hostname-i
或者,您可以将任何ipv6 ip地址设置为interface(eth0),并使用这些命令可以知道地址

  • /sbin/ip-6 addr show dev eth0
  • /sbin/ifconfig

希望对您有所帮助,Linux将把最新的ip地址作为ip地址接口中的源地址,Linux实现了这一点

选择算法。该算法首先为源地址创建ip地址的潜在列表。 有关更多信息,请查看此


.

他问是否有C API可以在不借助外部程序的情况下找到相同的结果。如果你没有得到一个问题的确切要求,最好是发表评论并要求澄清,而不是写一个答案。计算机可以连接到多个网络并具有多个IP地址。OP希望在不调用外部程序的情况下,知道到某个给定目标地址的最短路径接口的IP地址。@zneak是的,我应该先问。但正如您所说,它可以是基于算法的,比如生成树或OSPF@zneak你给了我一个正确的答案。@rohit ip-6 route get DstAddr返回我可以用于此DstAddr的最首选本地ip。但是ip是一个实用工具,我想要的是一个系统调用/库API,它可以为我做到这一点。我之所以要这样做,是因为在我的应用程序中,我使用了第三方堆栈。在应用程序中,要发送数据,我需要命令堆栈使用一个本地IP发送数据。因此,在发送数据之前,我需要知道可以使用的最合适的源地址。@pratik03
getaddrinfo
将返回IP地址。但是,它是否会找到最合适的,这就是问题所在。路由信息是动态变化的,因此您只能真正知道事后经过了哪些接口信息。您可以使用
IPV6\u PKTINFO
socket选项,使用
recvmsg
检索接收到的数据包的目标地址作为控制消息。您给我的实际上是一个源地址选择算法。我同意。我想要的是一个系统调用/库API,它可以执行与您在这里描述的相同的算法。