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