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:
parent
2021028306
commit
44b563269e
|
|
@ -740,6 +740,24 @@ static int ipnh_get_id(__u32 id)
|
||||||
return 0;
|
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)
|
static int ipnh_list_flush(int argc, char **argv, int action)
|
||||||
{
|
{
|
||||||
unsigned int all = (argc == 0);
|
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);
|
invarg("VRF does not exist\n", *argv);
|
||||||
} else if (!strcmp(*argv, "id")) {
|
} else if (!strcmp(*argv, "id")) {
|
||||||
NEXT_ARG();
|
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")) {
|
} else if (!matches(*argv, "protocol")) {
|
||||||
__u32 proto;
|
__u32 proto;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue