3 static struct blob_buf b
;
4 static struct ubus_context
*ctx
;
6 static void receive_lookup(struct ubus_request
*req
, int type
, struct blob_attr
*msg
)
8 struct blob_attr
**attr
, *cur
;
12 attr
= ubus_parse_msg(msg
);
13 if (!attr
[UBUS_ATTR_OBJID
] || !attr
[UBUS_ATTR_OBJPATH
])
16 fprintf(stderr
, "'%s' @%08x\n",
17 (char *) blob_data(attr
[UBUS_ATTR_OBJPATH
]),
18 blob_get_int32(attr
[UBUS_ATTR_OBJID
]));
20 if (!attr
[UBUS_ATTR_SIGNATURE
])
23 blob_for_each_attr(cur
, attr
[UBUS_ATTR_SIGNATURE
], rem
) {
24 s
= blobmsg_format_json(cur
, false);
25 fprintf(stderr
, "\t%s\n", s
);
30 static int usage(char *prog
)
33 "Usage: %s <command> [arguments...]\n"
35 " - list [<path>] List objects\n"
40 int main(int argc
, char **argv
)
42 struct ubus_request req
;
46 ctx
= ubus_connect(NULL
);
48 fprintf(stderr
, "Failed to connect to ubus\n");
54 return usage(argv
[0]);
58 if (!strcmp(cmd
, "list")) {
60 blob_put_string(&b
, UBUS_ATTR_OBJPATH
, argv
[2]);
62 ubus_start_request(ctx
, &req
, b
.head
, UBUS_MSG_LOOKUP
, 0);
63 req
.data_cb
= receive_lookup
;
64 ret
= ubus_complete_request(ctx
, &req
);
66 fprintf(stderr
, "Failed: %d\n", ret
);
68 return usage(argv
[0]);