gpt4 book ai didi

c++ - 如何为套接字设置多个路由条目?

转载 作者:IT王子 更新时间:2023-10-29 00:34:26 24 4
gpt4 key购买 nike

我对静态路由很陌生,我们的客户要求为套接字实现静态路由。当我用谷歌搜索时,我遇到了 rtentry 来设置路由信息。当我打开这个结构时,我看到了静态路由的字段

struct sockaddr rt_dst;     /* Target address.  */
struct sockaddr rt_gateway; /* Gateway addr (RTF_GATEWAY). */
struct sockaddr rt_genmask; /* Target network mask (IP). */

但是我如何在这里设置多次输入?创建多个 rtentry 并调用 ioctl(FileDes, SIOCADDRT, &rtentry) 会解决我的问题吗?

int32_t FileDes = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
for(auto RtEntry : RtEntriesList)
{
ioctl(FileDes, SIOCADDRT, RtEntry)`
}

如果我配置了,我该如何测试呢?如果您能提供一个链接以了解有关这些内容的更多信息,将会很有帮助。

最佳答案

我终于得到了答案。

int32_t FileDes = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);

struct rtentry Route1;
struct rtentry Route2;
struct rtentry Route3;

// configure Route1
// configure Route2
// configure Route3

RtEntriesList.push_back(&Route1);
RtEntriesList.push_back(&Route2);
RtEntriesList.push_back(&Route3);

for(auto RtEntry : RtEntriesList)
{
ioctl(FileDes, SIOCADDRT, RtEntry);
}

会起作用,我们可以创建多个路由条目并添加到套接字 FD。这将更新系统范围的路由表。

它类似于route add ..命令

为了测试,我将网关设置为我的 PC ip 地址并在那里启动了 wireshark。设置路由配置后,给定的 IP 范围将路由到我的 PC。感谢@osgx 提供的信息,它实际上设置了系统范围的路由表。

关于c++ - 如何为套接字设置多个路由条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com