操作组播路由表

/*
*操作组播路由表 参数flag true表示添加路由表 false 表示删除路由表
*/

static int _op_multicast_route_list(star_s8 *multi_ip,star_bool flag)
{
    FILE        *fp = NULL;
    star_s8     tmp_buf[64];
    star_s8     eth_interface[32];
    star_u32    route_list_dest_ip = 0;
    star_u32    add_multi_ip = 0;
    star_bool   findFlag = false;

    if (NULL == multi_ip)
    {
        printf("bad param!!!\n");
        return true;
    }

    if ((fp = fopen(SERVICE_MD_ROUTER_LIST_PATH, "r")) == NULL) //获取ap扫描结果
    {
        printf("fopen %s failed!\n",SERVICE_MD_ROUTER_LIST_PATH);
        return true;
    }

    add_multi_ip= inet_addr(multi_ip);
    printf("multicast_route_list,flag:%d,add_multi_ip:%x!!!\n",flag,add_multi_ip);

    findFlag= false;
    memset(tmp_buf,0,sizeof(tmp_buf));
    while (fgets(tmp_buf, sizeof(tmp_buf), fp) != NULL)
    {
        if (strstr(tmp_buf, DTV_CONFIG_GBE_NET_INTERFACE) != NULL)
        {
            if (sscanf(tmp_buf, "%s    %x",eth_interface,&route_list_dest_ip) != 2)
            {
                continue;
            }
            else
            {
                printf("eth_interface:%s route_list_dest_ip:%x\n",eth_interface,route_list_dest_ip);
                if (route_list_dest_ip == add_multi_ip)
                {
                    findFlag = true;
                    break;
                }
            }
        }

        memset(tmp_buf,0,sizeof(tmp_buf));
    }

    fclose(fp);

    memset(tmp_buf,0,sizeof(tmp_buf));
    if (flag)
    {
        if (!findFlag)/*路由表没有存在则添加此路由表*/
        {
            star_snprintf(tmp_buf,sizeof(tmp_buf),"route add -host %s dev %s",multi_ip,DTV_CONFIG_GBE_NET_INTERFACE);
        }

    }
    else
    {
        if (findFlag)/*路由表存在则删除此路由表*/
        {
            star_snprintf(tmp_buf,sizeof(tmp_buf),"route delete -host %s dev %s",multi_ip,DTV_CONFIG_GBE_NET_INTERFACE);
        }
    }

    if (strlen(tmp_buf) != 0)/*存在操作的内容*/
    {
        if (star_os_system(tmp_buf))
        {
            printf("star_os_system failed tmp_buf:%s!!!\n",tmp_buf);
            return true;
        }
    }

    printf("tmp_buf:%s\n",tmp_buf);
    return false;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值