|
| 1 | +#include <inttypes.h> |
| 2 | + |
1 | 3 | #include <linux/nl80211.h> |
2 | 4 | #include <netlink/genl/genl.h> |
3 | 5 | #include <netlink/genl/ctrl.h> |
|
6 | 8 |
|
7 | 9 | bool nl_send_dump(nl_recvmsg_msg_cb_t cb, void *cb_arg, int cmd, uint32_t cmd_arg) { |
8 | 10 | bool ok = false; |
| 11 | + int ret; |
9 | 12 | int ctrl; |
10 | 13 | struct nl_sock *sk = NULL; |
11 | 14 | struct nl_msg *msg = NULL; |
12 | 15 |
|
13 | 16 |
|
14 | | -#define CHECK(x) { if (!(x)) { fprintf(stderr, "%s: error on line %d\n", __FILE__, __LINE__); goto out; } } |
| 17 | +#define ERR(...) { fprintf(stderr, "respondd-module-airtime: " __VA_ARGS__); goto out; } |
| 18 | + |
| 19 | + sk = nl_socket_alloc(); |
| 20 | + if (!sk) |
| 21 | + ERR("nl_socket_alloc() failed\n"); |
| 22 | + |
| 23 | + ret = genl_connect(sk); |
| 24 | + if (ret < 0) |
| 25 | + ERR("genl_connect() returned %d\n", ret); |
15 | 26 |
|
16 | | - CHECK(sk = nl_socket_alloc()); |
17 | | - CHECK(genl_connect(sk) >= 0); |
| 27 | + ctrl = genl_ctrl_resolve(sk, NL80211_GENL_NAME); |
| 28 | + if (ctrl < 0) |
| 29 | + ERR("genl_ctrl_resolve() returned %d\n", ctrl); |
18 | 30 |
|
19 | | - CHECK(ctrl = genl_ctrl_resolve(sk, NL80211_GENL_NAME)); |
20 | | - CHECK(nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb, cb_arg) == 0); |
21 | | - CHECK(msg = nlmsg_alloc()); |
22 | | - CHECK(genlmsg_put(msg, 0, 0, ctrl, 0, NLM_F_DUMP, cmd, 0)); |
| 31 | + ret = nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb, cb_arg); |
| 32 | + if (ret != 0) |
| 33 | + ERR("nl_socket_modify_cb() returned %d\n", ret); |
| 34 | + |
| 35 | + msg = nlmsg_alloc(); |
| 36 | + if (!msg) |
| 37 | + ERR("nlmsg_alloc() failed\n"); |
| 38 | + |
| 39 | + if (!genlmsg_put(msg, 0, 0, ctrl, 0, NLM_F_DUMP, cmd, 0)) |
| 40 | + ERR("genlmsg_put() returned %d while setting cmd %d\n", ret, cmd); |
23 | 41 |
|
24 | 42 | if (cmd_arg != 0) |
25 | 43 | NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, cmd_arg); |
26 | 44 |
|
27 | | - CHECK(nl_send_auto_complete(sk, msg) >= 0); |
28 | | - CHECK(nl_recvmsgs_default(sk) >= 0); |
| 45 | + ret = nl_send_auto(sk, msg); |
| 46 | + if (ret < 0) |
| 47 | + ERR("nl_send_auto() returned %d while sending cmd %d with cmd_arg=%"PRIu32"\n", ret, cmd, cmd_arg); |
| 48 | + |
| 49 | + ret = nl_recvmsgs_default(sk); |
| 50 | + if (ret < 0) |
| 51 | + ERR("nl_recv_msgs_default() returned %d while receiving cmd %d with cmd_arg=%"PRIu32"\n", ret, cmd, cmd_arg); |
29 | 52 |
|
30 | | -#undef CHECK |
| 53 | +#undef ERR |
31 | 54 |
|
32 | 55 | ok = true; |
33 | 56 |
|
|
0 commit comments