ip-nexthop: support flush by id

since id is unique for nexthop, it is heavy to dump all nexthops.
use existing delete_nexthop to support flush by id

Signed-off-by: Chunmei Xu <xuchunmei@linux.alibaba.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
Chunmei Xu 2021-04-06 09:33:23 +08:00 committed by David Ahern
parent 2021028306
commit 44b563269e
1 changed files with 19 additions and 1 deletions

View File

@ -740,6 +740,24 @@ static int ipnh_get_id(__u32 id)
return 0;
}
static int ipnh_list_flush_id(__u32 id, int action)
{
int err;
if (action == IPNH_LIST)
return ipnh_get_id(id);
if (rtnl_open(&rth_del, 0) < 0) {
fprintf(stderr, "Cannot open rtnetlink\n");
return EXIT_FAILURE;
}
err = delete_nexthop(id);
rtnl_close(&rth_del);
return err;
}
static int ipnh_list_flush(int argc, char **argv, int action)
{
unsigned int all = (argc == 0);
@ -766,7 +784,7 @@ static int ipnh_list_flush(int argc, char **argv, int action)
invarg("VRF does not exist\n", *argv);
} else if (!strcmp(*argv, "id")) {
NEXT_ARG();
return ipnh_get_id(ipnh_parse_id(*argv));
return ipnh_list_flush_id(ipnh_parse_id(*argv), action);
} else if (!matches(*argv, "protocol")) {
__u32 proto;