获取IPRouter信息,出口默认网关。

Posted Paprika

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取IPRouter信息,出口默认网关。相关的知识,希望对你有一定的参考价值。

#define ROUTE_FILE_NAME "/proc/net/route"

/*

Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT

wan1 00000000 5692550A 0003 0 0 0 00000000 0 0 0

wan1 0000000A 00000000 0001 0 0 0 000000FF 0 0 0

br0 0022A8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0

×/

int getGatewayByDevName(const char *devName, char *outText){
    
    outText[0] = \0;
    
    char buffer[BIG_MAX_FIELD_LEN];
    char destination[NORMAL_FIELD_LEN];
    unsigned long gateway;
    
    FILE* f = fopen(ROUTE_FILE_NAME, "r");
    
    if(!f){
        return 1;
    }
    int devNamelen = strlen(devName);
    while(fgets(buffer, sizeof(buffer)-1, f)){
        if(!strncmp(buffer, devName, devNamelen)){
            sscanf(buffer, "%*s%s%lX", destination, &gateway);
            if(!strncmp(destination, "00000000", 8)){
                if (gateway != 0) {
                    sprintf(outText, "%s", inet_ntoa(*(struct in_addr*)&gateway));
                    break;
                }
            }
        }
    }
    
    fclose(f);
    
    return 0;
}

具体的头文件要包含

inet_ntoa结构体所在的头文件

以上是关于获取IPRouter信息,出口默认网关。的主要内容,如果未能解决你的问题,请参考以下文章

ensp多出口网关配置

linux配置路由不显示网关显示localhost

如何在linux下获取默认网关地址

如何在 Mac OSX 中获取默认网关

vue-cli配置多入口多出口,实现一个项目两个访问地址,区分不同上线环境

企业内部网络的多出口相互冗余备份与负载均衡