Commit d6d647d7 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

tools: ynl: add ynl_dump_empty() helper



Checking if dump is empty requires a couple of casts.
Add a convenient wrapper.

Add an example use in the netdev sample, loopback is always
present so an empty dump is an error.

Reviewed-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
Link: https://lore.kernel.org/r/20240329181651.319326-1-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent d88cabfd
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -91,6 +91,18 @@ void ynl_sock_destroy(struct ynl_sock *ys);
	     !ynl_dump_obj_is_last(iter);				\
	     iter = ynl_dump_obj_next(iter))

/**
 * ynl_dump_empty() - does the dump have no entries
 * @dump: pointer to the dump list, as returned by a dump call
 *
 * Check if the dump is empty, i.e. contains no objects.
 * Dump calls return NULL on error, and terminator element if empty.
 */
static inline bool ynl_dump_empty(void *dump)
{
	return dump == (void *)YNL_LIST_END;
}

int ynl_subscribe(struct ynl_sock *ys, const char *grp_name);
int ynl_socket_get_fd(struct ynl_sock *ys);
int ynl_ntf_check(struct ynl_sock *ys);
+2 −0
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@ int main(int argc, char **argv)
		if (!devs)
			goto err_close;

		if (ynl_dump_empty(devs))
			fprintf(stderr, "Error: no devices reported\n");
		ynl_dump_foreach(devs, d)
			netdev_print_device(d, 0);
		netdev_dev_get_list_free(devs);