X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=ubus.c;h=a8d3e3ccbcee9ea3d6ba33e722215201d0748191;hp=c914cc5915b2a22dfd128256e5e9138eb11fffb8;hb=3bd56db589071948eebd30b00cda7ef1fb38a61b;hpb=8ddaf5d7688b14590f283b2ebb81f78326fb39fd diff --git a/ubus.c b/ubus.c index c914cc5..a8d3e3c 100644 --- a/ubus.c +++ b/ubus.c @@ -2,6 +2,7 @@ #include "netifd.h" #include "interface.h" +#include "proto.h" #include "ubus.h" static struct ubus_context *ctx = NULL; @@ -47,9 +48,19 @@ netifd_handle_device(struct ubus_context *ctx, struct ubus_object *obj, return 0; } +static int +netifd_handle_restart(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + netifd_restart(); + return 0; +} + static struct ubus_method main_object_methods[] = { UBUS_METHOD("add_device", netifd_handle_device, dev_policy), UBUS_METHOD("remove_device", netifd_handle_device, dev_policy), + { .name = "restart", .handler = netifd_handle_restart }, }; static struct ubus_object_type main_object_type = @@ -231,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 }, @@ -239,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 =