~/paste/1062
~/paste/1062
~/paste/1062

  1. #include <stdio.h>
  2. #include <libubox/blobmsg.h>
  3. #include <libubox/blobmsg_json.h>
  4.  
  5. #define _GNU_SOURCE
  6.  
  7. static struct blob_buf b;
  8.  
  9. enum {
  10.     DEV_ADDRESSES,
  11.     __DEV_MAX,
  12. };
  13.  
  14. static const struct blobmsg_policy dev_policy[__DEV_MAX] = {
  15.     [DEV_ADDRESSES] = { .name = "address", .type = BLOBMSG_TYPE_ARRAY },
  16. };
  17.  
  18. static void ubus_callback(struct ubus_request *req, int type, struct blob_attr *msg) {
  19.     struct blob_attr *tb[__DEV_MAX];
  20.     int rem;
  21.     struct blob_attr *cur;
  22.     blobmsg_parse(dev_policy, __DEV_MAX, tb, blob_data(msg), blob_len(msg));
  23.     blobmsg_for_each_attr(cur, tb[DEV_ADDRESSES], rem) {
  24.         printf("device addr: %s\n", blobmsg_data(cur));
  25.     }
  26. }
  27.  
  28. int main() {
  29.     static struct ubus_context *ubus_ctx;
  30.     uint32_t ubus_id;
  31.     //const char *ubus_socket = NULL;
  32.  
  33.     ubus_ctx = ubus_connect(NULL);
  34.     if(!ubus_ctx)
  35.         return -1;
  36.  
  37.     ubus_lookup_id(ubus_ctx, "network.interface.lan", &ubus_id);
  38.     ubus_invoke(ubus_ctx, ubus_id, "status", b.head, ubus_callback, NULL, 1000); //TODO: timeout chosen in arbitrary way - find sane value
  39. }
Language: c
Posted by Anonymous at 03 Apr 2012, 01:17:06 UTC