diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-09-11 16:29:43 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-09-11 16:29:43 +0200 |
commit | f782148ef2be32343f13b033c0df04a56fb9c38e (patch) | |
tree | 285da65c13fc389d963664f9bcb58ead5f205611 /ubus.c | |
parent | 0b29011386305b9364ed25609b0dcfe351c610c5 (diff) |
add an interface for notifying protocol handlers of state changes via ubus
Diffstat (limited to 'ubus.c')
-rw-r--r-- | ubus.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -2,6 +2,7 @@ #include "netifd.h" #include "interface.h" +#include "proto.h" #include "ubus.h" static struct ubus_context *ctx = NULL; @@ -241,6 +242,21 @@ netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj, } +static int +netifd_iface_notify_proto(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + struct interface *iface; + + iface = container_of(obj, struct interface, ubus); + + if (!iface->proto || !iface->proto->notify) + return UBUS_STATUS_NOT_SUPPORTED; + + return iface->proto->notify(iface->proto, msg); +} + static struct ubus_method iface_object_methods[] = { { .name = "up", .handler = netifd_handle_up }, { .name = "down", .handler = netifd_handle_down }, @@ -249,6 +265,7 @@ static struct ubus_method iface_object_methods[] = { .policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE }, { .name = "remove_device", .handler = netifd_iface_handle_device, .policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE }, + { .name = "notify_proto", .handler = netifd_iface_notify_proto }, }; static struct ubus_object_type iface_object_type = |