static int handle_pool6791_display(struct nlmsghdr *nl_hdr, union request_pool *request) { struct nl_buffer *buffer; struct ipv4_prefix *offset; int error; buffer = nlbuffer_create(nl_socket, nl_hdr); if (!buffer) return respond_error(nl_hdr, -ENOMEM); offset = request->display.offset_set ? &request->display.offset : NULL; error = rfc6791_for_each(pool_to_usr, buffer, offset); error = (error >= 0) ? nlbuffer_close(buffer, error) : respond_error(nl_hdr, error); kfree(buffer); return error; }
static int handle_pool6791_display(struct nlmsghdr *nl_hdr, union request_pool4 *request) { struct nl_buffer *buffer; struct ipv4_prefix *prefix; int error; log_debug("Sending RFC6791 pool to userspace."); buffer = nlbuffer_create(nl_socket, nl_hdr); if (!buffer) return respond_error(nl_hdr, -ENOMEM); prefix = request->display.prefix_set ? &request->display.prefix : NULL; error = rfc6791_for_each(pool4_to_usr, buffer, prefix); error = (error >= 0) ? nlbuffer_close(buffer, error) : respond_error(nl_hdr, error); kfree(buffer); return error; }