diff --git a/dongle.c b/dongle.c index 3cacbf545a7529c27ba74ec261c24d502c1695b0..870fbb6eac59c4704f6ef79b6f9ebc5b83201dc2 100644 --- a/dongle.c +++ b/dongle.c @@ -14,11 +14,43 @@ #include "dongle.h" -struct ubus_context *global_ctx; -int debug; +static void uloop_add_get_devices(struct uloop_timeout *t); +static int get_devices_from_path(char *input_path); +static int get_devices(void); +static int poll_devices(struct uloop_timeout *t); +static int tag_missing_devices(void); +static int add_device(struct device *new_dev); +static int delete_all_devices(void); +static int delete_device_by_name(char *name); +static int delete_device(struct device *dev); +static void free_device(struct device *dev); +static void free_usb(struct USB *usb); +static struct device *search_list(char *name); +static char *get_usb_stat(char *path, char *file); +static char *get_device_name(char *dir_name); +static char *get_device_ip(char *device_name); +static int list_to_blob(struct blob_buf *bb); +static int print_list(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg); +static int clear(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg); +static int test(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg); +static int remove_device(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg); +static void init_ubus(void); +static int publish_object(struct ubus_context *ctx); + +static struct ubus_context *global_ctx; struct device *global_dev; +int debug; + -struct uloop_timeout timeout = { +static struct uloop_timeout timeout = { .cb = poll_devices }; @@ -27,7 +59,7 @@ static struct option long_options[] = { {0, 0, 0, 0} }; -const struct blobmsg_policy dev_policy[__DEV_MAX] = { +static const struct blobmsg_policy dev_policy[__DEV_MAX] = { [DEV] = {.name = "dev", .type = BLOBMSG_TYPE_STRING}, }; @@ -36,7 +68,7 @@ enum { __USB_MAX }; -const struct blobmsg_policy usb_policy[__USB_MAX] = { +static const struct blobmsg_policy usb_policy[__USB_MAX] = { [USB_PATH] = {.name = "path", .type = BLOBMSG_TYPE_STRING}, }; @@ -44,7 +76,7 @@ LIST_HEAD(devices); LIST_HEAD(stack); LIST_HEAD(visited); -int parse_args(int argc, char **argv) +static int parse_args(int argc, char **argv) { char ch; @@ -78,7 +110,7 @@ fail: return -1; } -int poll_devices(struct uloop_timeout *t) +static int poll_devices(struct uloop_timeout *t) { get_devices(); tag_missing_devices(); @@ -88,7 +120,7 @@ int poll_devices(struct uloop_timeout *t) return 0; } -int tag_missing_devices(void) +static int tag_missing_devices(void) { struct device *dev, *tmp; @@ -110,7 +142,7 @@ int tag_missing_devices(void) return 0; } -int update_device(struct device *dev) +static int update_device(struct device *dev) { struct device *prev_dev; int rv; @@ -151,7 +183,7 @@ fail: return -2; } -int add_device(struct device *dev) +static int add_device(struct device *dev) { int rv; @@ -181,12 +213,12 @@ int add_device(struct device *dev) already_present: return -1; fail_publish: - dongle_destroy_dynamic_object(dev->ubus_obj); + dongle_destroy_dynamic_object(&(dev->ubus_obj)); fail: return -2; } -int delete_all_devices(void) +static int delete_all_devices(void) { struct device *dev, *tmp; @@ -199,7 +231,7 @@ int delete_all_devices(void) return 0; } -int delete_device_by_name(char *name) +static int delete_device_by_name(char *name) { struct device *dev, *tmp; @@ -215,7 +247,7 @@ int delete_device_by_name(char *name) return -1; } -int delete_device(struct device *dev) +static int delete_device(struct device *dev) { if (dev->ubus_obj) { unpublish_ubus_object(global_ctx, dev->ubus_obj); @@ -229,7 +261,7 @@ int delete_device(struct device *dev) return 0; } -void free_device(struct device *dev) +static void free_device(struct device *dev) { if (!dev) return; @@ -239,7 +271,7 @@ void free_device(struct device *dev) //free(&(dev->usb)); } -void free_usb(struct USB *usb) +static void free_usb(struct USB *usb) { if (!usb) return; @@ -250,7 +282,7 @@ void free_usb(struct USB *usb) free(usb->if_name); } -struct device *search_list(char *name) +static struct device *search_list(char *name) { struct device *dev; @@ -331,7 +363,7 @@ fail_fopen: return NULL; } -char *get_device_name(char *dir_name) +static char *get_device_name(char *dir_name) { char path[PATH_MAX], *name = NULL; struct directory *dr, *sub_dr; @@ -415,7 +447,7 @@ fail_dr: return NULL; } -int get_devices_from_path(char *input_path) +static int get_devices_from_path(char *input_path) { char *path, *name; struct dirent *de; @@ -483,7 +515,7 @@ fail_dr: return -1; } -int get_devices(void) +static int get_devices(void) { char devices_path[PATH_MAX], mount_path[PATH_MAX]; struct dirent *de; @@ -516,7 +548,7 @@ fail_dr: return -1; } -char *get_device_ip(char *device_name) +static char *get_device_ip(char *device_name) { char *iface, *destination, *gateway, *flags, *route, *ipv4_addr = NULL; int host_flag; @@ -565,7 +597,7 @@ fail_fopen: return ipv4_addr; } -int list_to_blob(struct blob_buf *bb) +static int list_to_blob(struct blob_buf *bb) { struct device *net_dev; void *arr, *table; @@ -618,7 +650,7 @@ fail: return UBUS_STATUS_UNKNOWN_ERROR; } -int print_list(struct ubus_context *ctx, struct ubus_object *obj, +static int print_list(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { @@ -636,25 +668,25 @@ fail: return rv; } -int clear(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) +static int clear(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { printf("%d\n", delete_all_devices()); return 0; } -int test(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) +static int test(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { printf("%s\n", get_device_ip("usb0")); return 0; } -int alert(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) +static int alert(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { struct blob_attr *tb[__USB_MAX]; char *usb_path; @@ -671,9 +703,9 @@ fail: return UBUS_STATUS_INVALID_ARGUMENT; } -int remove_device(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) +static int remove_device(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { struct blob_attr *tb[__DEV_MAX]; char *dev; @@ -691,7 +723,7 @@ fail: return UBUS_STATUS_INVALID_ARGUMENT; } -int update(struct ubus_context *ctx, struct ubus_object *obj, +static int update(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { @@ -701,31 +733,30 @@ int update(struct ubus_context *ctx, struct ubus_object *obj, return 0; } -struct ubus_method dongle_object_methods[] = { +static struct ubus_method dongle_object_methods[] = { UBUS_METHOD_NOARG("test", test), UBUS_METHOD_NOARG("list", print_list), UBUS_METHOD_NOARG("clear", clear), UBUS_METHOD("remove_device", remove_device, dev_policy), UBUS_METHOD("alert", alert, usb_policy), - UBUS_METHOD_NOARG("update", update) - }; + UBUS_METHOD_NOARG("update", update)}; -struct ubus_object_type dongle_object_type = UBUS_OBJECT_TYPE("dongle", dongle_object_methods); +static struct ubus_object_type dongle_object_type = UBUS_OBJECT_TYPE("dongle", dongle_object_methods); -struct ubus_object dongle_object = { +static struct ubus_object dongle_object = { .name = "dongle", .type = &dongle_object_type, .methods = dongle_object_methods, .n_methods = ARRAY_SIZE(dongle_object_methods), }; -void uloop_add_get_devices(struct uloop_timeout *t) +static void uloop_add_get_devices(struct uloop_timeout *t) { uloop_timeout_set(t, 60000); uloop_timeout_add(t); } -void init_ubus(void) +static void init_ubus(void) { global_ctx = ubus_connect(NULL); if (!global_ctx) { @@ -735,7 +766,7 @@ void init_ubus(void) ubus_add_uloop(global_ctx); } -int publish_object(struct ubus_context *ctx) +static int publish_object(struct ubus_context *ctx) { int rv;