diff options
Diffstat (limited to 'src/nl-fib-lookup.c')
-rw-r--r-- | src/nl-fib-lookup.c | 43 |
1 files changed, 11 insertions, 32 deletions
diff --git a/src/nl-fib-lookup.c b/src/nl-fib-lookup.c index 5bbf91e6..2507be8e 100644 --- a/src/nl-fib-lookup.c +++ b/src/nl-fib-lookup.c @@ -37,9 +37,6 @@ int main(int argc, char *argv[]) int tos = 0, err = 1; uint64_t fwmark = 0; - if (nltool_init(argc, argv) < 0) - return -1; - while (1) { static struct option long_opts[] = { {"table", 1, 0, 't'}, @@ -76,24 +73,19 @@ int main(int argc, char *argv[]) if (optind >= argc) print_usage(); - nlh = nltool_alloc_handle(); - if (!nlh) - return -1; + nlh = nlt_alloc_socket(); - addr = nl_addr_parse(argv[optind], AF_INET); - if (!addr) { - fprintf(stderr, "Unable to parse address \"%s\": %s\n", - argv[optind], nl_geterror()); - goto errout; - } + if ((err = nl_addr_parse(argv[optind], AF_INET, &addr)) < 0) + fatal(err, "Unable to parse address \"%s\": %s\n", + argv[optind], nl_geterror(err)); result = flnl_result_alloc_cache(); if (!result) - goto errout_addr; + fatal(ENOMEM, "Unable to allocate cache"); request = flnl_request_alloc(); if (!request) - goto errout_result; + fatal(ENOMEM, "Unable to allocate request"); flnl_request_set_table(request, table); flnl_request_set_fwmark(request, fwmark); @@ -103,28 +95,15 @@ int main(int argc, char *argv[]) err = flnl_request_set_addr(request, addr); nl_addr_put(addr); if (err < 0) - goto errout_put; + fatal(err, "Unable to send request: %s", nl_geterror(err)); - if (nltool_connect(nlh, NETLINK_FIB_LOOKUP) < 0) - goto errout_put; + nlt_connect(nlh, NETLINK_FIB_LOOKUP); err = flnl_lookup(nlh, request, result); - if (err < 0) { - fprintf(stderr, "Unable to lookup: %s\n", nl_geterror()); - goto errout_put; - } + if (err < 0) + fatal(err, "Unable to lookup: %s\n", nl_geterror(err)); nl_cache_dump(result, ¶ms); - err = 0; -errout_put: - nl_object_put(OBJ_CAST(request)); -errout_result: - nl_cache_free(result); -errout_addr: - nl_addr_put(addr); -errout: - nl_close(nlh); - nl_handle_destroy(nlh); - return err; + return 0; } |