ubus/ubusmsg.h
Felix Fietkau a69f062cbd ubus: add notification for subscribers present/gone
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-12-14 13:00:57 +01:00

112 lines
2.2 KiB
C

/*
* 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.
*/
#ifndef __UBUSMSG_H
#define __UBUSMSG_H
#include <stdint.h>
#include <libubox/blob.h>
#define __packetdata __attribute__((packed)) __attribute__((__aligned__(4)))
#define UBUS_MAX_MSGLEN 65536
#define UBUS_SYSTEM_OBJECT_EVENT 1
#define UBUS_SYSTEM_OBJECT_MAX 1024
struct ubus_msghdr {
uint8_t version;
uint8_t type;
uint16_t seq;
uint32_t peer;
struct blob_attr data[];
} __packetdata;
enum ubus_msg_type {
/* initial server message */
UBUS_MSG_HELLO,
/* generic command response */
UBUS_MSG_STATUS,
/* data message response */
UBUS_MSG_DATA,
/* ping request */
UBUS_MSG_PING,
/* look up one or more objects */
UBUS_MSG_LOOKUP,
/* invoke a method on a single object */
UBUS_MSG_INVOKE,
UBUS_MSG_ADD_OBJECT,
UBUS_MSG_REMOVE_OBJECT,
/*
* subscribe/unsubscribe to object notifications
* The unsubscribe message is sent from ubusd when
* the object disappears
*/
UBUS_MSG_SUBSCRIBE,
UBUS_MSG_UNSUBSCRIBE,
/*
* send a notification to all subscribers of an object.
* when sent from the server, it indicates a subscription
* status change
*/
UBUS_MSG_NOTIFY,
/* must be last */
__UBUS_MSG_LAST,
};
enum ubus_msg_attr {
UBUS_ATTR_UNSPEC,
UBUS_ATTR_STATUS,
UBUS_ATTR_OBJPATH,
UBUS_ATTR_OBJID,
UBUS_ATTR_METHOD,
UBUS_ATTR_OBJTYPE,
UBUS_ATTR_SIGNATURE,
UBUS_ATTR_DATA,
UBUS_ATTR_TARGET,
UBUS_ATTR_ACTIVE,
/* must be last */
UBUS_ATTR_MAX,
};
enum ubus_msg_status {
UBUS_STATUS_OK,
UBUS_STATUS_INVALID_COMMAND,
UBUS_STATUS_INVALID_ARGUMENT,
UBUS_STATUS_METHOD_NOT_FOUND,
UBUS_STATUS_NOT_FOUND,
UBUS_STATUS_NO_DATA,
UBUS_STATUS_PERMISSION_DENIED,
UBUS_STATUS_TIMEOUT,
UBUS_STATUS_NOT_SUPPORTED,
UBUS_STATUS_UNKNOWN_ERROR,
UBUS_STATUS_CONNECTION_FAILED,
__UBUS_STATUS_LAST
};
#endif