X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=ubus.c;h=6f7c3e11022a5c5c3390b54a4991398cf1e2cd1d;hp=4d43b5756f337821245b14def18f3f4a305c46f9;hb=e6ebe0bfcdb7df25f1d96d367e8c0ad49b1642e3;hpb=7f6be657e2dabc185417520de4d0d0de2580c27d diff --git a/ubus.c b/ubus.c index 4d43b57..6f7c3e1 100644 --- a/ubus.c +++ b/ubus.c @@ -44,8 +44,10 @@ netifd_handle_reload(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { - netifd_reload(); - return 0; + if (netifd_reload()) + return UBUS_STATUS_UNKNOWN_ERROR; + + return UBUS_STATUS_OK; } enum { @@ -204,7 +206,7 @@ netifd_dev_status(struct ubus_context *ctx, struct ubus_object *obj, blobmsg_parse(dev_policy, __DEV_MAX, tb, blob_data(msg), blob_len(msg)); if (tb[DEV_NAME]) { - dev = device_get(blobmsg_data(tb[DEV_NAME]), false); + dev = device_find(blobmsg_data(tb[DEV_NAME])); if (!dev) return UBUS_STATUS_INVALID_ARGUMENT; } @@ -376,6 +378,19 @@ netifd_handle_down(struct ubus_context *ctx, struct ubus_object *obj, return 0; } +static int +netifd_handle_renew(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); + interface_renew(iface); + + return 0; +} + static void netifd_add_interface_errors(struct blob_buf *b, struct interface *iface) { @@ -402,8 +417,7 @@ netifd_add_interface_errors(struct blob_buf *b, struct interface *iface) } static void -interface_ip_dump_address_list(struct interface_ip_settings *ip, bool v6, - bool enabled) +interface_ip_dump_address_list(struct interface_ip_settings *ip, bool v6, bool enabled) { struct device_addr *addr; char *buf; @@ -486,6 +500,9 @@ interface_ip_dump_route_list(struct interface_ip_settings *ip, bool enabled) if (route->flags & DEVROUTE_TYPE) blobmsg_add_u32(&b, "type", route->type); + if (route->flags & DEVROUTE_PROTO) + blobmsg_add_u32(&b, "proto", route->proto); + if (route->flags & DEVROUTE_MTU) blobmsg_add_u32(&b, "mtu", route->mtu); @@ -600,15 +617,23 @@ interface_ip_dump_prefix_assignment_list(struct interface *iface) if (prefix->valid_until) blobmsg_add_u32(&b, "valid", prefix->valid_until - now); + void *c = blobmsg_open_table(&b, "local-address"); + if (assign->enabled) { + buf = blobmsg_alloc_string_buffer(&b, "address", buflen); + inet_ntop(AF_INET6, &assign->addr, buf, buflen); + blobmsg_add_string_buffer(&b); + + blobmsg_add_u32(&b, "mask", assign->length < 64 ? 64 : assign->length); + } + blobmsg_close_table(&b, c); + blobmsg_close_table(&b, a); } } } - static void -interface_ip_dump_dns_server_list(struct interface_ip_settings *ip, - bool enabled) +interface_ip_dump_dns_server_list(struct interface_ip_settings *ip, bool enabled) { struct dns_server *dns; int buflen = 128; @@ -625,8 +650,7 @@ interface_ip_dump_dns_server_list(struct interface_ip_settings *ip, } static void -interface_ip_dump_dns_search_list(struct interface_ip_settings *ip, - bool enabled) +interface_ip_dump_dns_search_list(struct interface_ip_settings *ip, bool enabled) { struct dns_search_domain *dns; @@ -689,6 +713,8 @@ netifd_dump_status(struct interface *iface) blobmsg_add_u32(&b, "metric", iface->metric); blobmsg_add_u32(&b, "dns_metric", iface->dns_metric); blobmsg_add_u8(&b, "delegation", !iface->proto_ip.no_delegation); + if (iface->assignment_weight) + blobmsg_add_u32(&b, "ip6weight", iface->assignment_weight); a = blobmsg_open_array(&b, "ipv4-address"); interface_ip_dump_address_list(&iface->config_ip, false, true); interface_ip_dump_address_list(&iface->proto_ip, false, true); @@ -901,6 +927,7 @@ netifd_handle_set_data(struct ubus_context *ctx, struct ubus_object *obj, static struct ubus_method iface_object_methods[] = { { .name = "up", .handler = netifd_handle_up }, { .name = "down", .handler = netifd_handle_down }, + { .name = "renew", .handler = netifd_handle_renew }, { .name = "status", .handler = netifd_handle_status }, { .name = "prepare", .handler = netifd_handle_iface_prepare }, { .name = "dump", .handler = netifd_handle_dump },