3

I am able to implement how to delete IP address delete per interface but I am not able to understand what option will make it work like "ip addr flush" command. Please find below my code for delete. Thanks for your help.

int DeleteIpAddress(char *IntfName, string &StrIpAddr)
{
    int err;
    int ifIndex;
    struct nl_addr *local_addr;
    struct rtnl_addr *addr = rtnl_addr_alloc();


    if ((err = nl_cache_refill(m_sk, m_link_cache)) < 0)
    {
        nl_perror(err, "nl_cache_refill failed");
        return -1;
    }


    if (!(ifIndex = rtnl_link_name2i(m_link_cache, IntfName))) {
                fprintf(stderr, "Unable to lookup eth");
                return -1;
    }


   if ((err = nl_addr_parse(StrIpAddr.c_str(), AF_INET, &local_addr)) < 0)
   {
            nl_perror(err, "nl_addr_parse failed");
            return -1;
   }

   rtnl_addr_set_ifindex(addr, ifIndex);
   rtnl_addr_set_family(addr, AF_INET);

   if( (err = rtnl_addr_delete(m_sk, addr,0)) < 0)
   {
      nl_perror(err, "rtnl_addr_del failed");
      return -1;
   }
    return 0;
} 

Thanks,
Dan

0 Answers0