+/*
+ * Copyright (C) 2011 Felix Fietkau <nbd@openwrt.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
#include <unistd.h>
#include "libubus.h"
static struct ubus_context *ctx;
struct blob_buf b;
-static const struct ubus_signature test_object_sig[] = {
- UBUS_METHOD_START("hello"),
- UBUS_ARRAY("test"),
- UBUS_TABLE_START(NULL),
- UBUS_FIELD(INT32, "id"),
- UBUS_FIELD(STRING, "msg"),
- UBUS_TABLE_END(),
- UBUS_METHOD_END(),
-};
-
-static struct ubus_object_type test_object_type =
- UBUS_OBJECT_TYPE("test", test_object_sig);
-
enum {
HELLO_ID,
HELLO_MSG,
}
static const struct ubus_method test_methods[] = {
- { .name = "hello", .handler = test_hello },
+ UBUS_METHOD("hello", test_hello, hello_policy),
};
+static struct ubus_object_type test_object_type =
+ UBUS_OBJECT_TYPE("test", test_methods);
+
static struct ubus_object test_object = {
.name = "test",
.type = &test_object_type,
int main(int argc, char **argv)
{
- const char *progname, *ubus_socket = NULL;
+ const char *ubus_socket = NULL;
int ret = 0;
int ch;
- progname = argv[0];
-
while ((ch = getopt(argc, argv, "s:")) != -1) {
switch (ch) {
case 's':
return -1;
}
- fprintf(stderr, "Connected as ID 0x%08x\n", ctx->local_id);
-
- fprintf(stderr, "Publishing object\n");
- ret = ubus_publish(ctx, &test_object);
+ ret = ubus_add_object(ctx, &test_object);
if (ret)
- fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
- else {
- fprintf(stderr, "Object ID: %08x\n", test_object.id);
- fprintf(stderr, "Object Type ID: %08x\n", test_object.type->id);
- }
+ fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
- fprintf(stderr, "Publishing object\n");
- ret = ubus_publish(ctx, &test_object2);
+ ret = ubus_add_object(ctx, &test_object2);
if (ret)
- fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
- else {
- fprintf(stderr, "Object ID: %08x\n", test_object2.id);
- fprintf(stderr, "Object Type ID: %08x\n", test_object2.type->id);
- }
+ fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
+
uloop_init();
ubus_add_uloop(ctx);
uloop_run();