From 37650d0a67985e6d018b2a8180af6f64e984287a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Schr=C3=B6der?= Date: Wed, 6 May 2015 19:03:32 +0200 Subject: [PATCH] Merged with BB-stefan --- questd/src/igmp.c | 51 +++++++++++++++++++-------------------------- questd/src/questd.c | 21 +++---------------- 2 files changed, 24 insertions(+), 48 deletions(-) diff --git a/questd/src/igmp.c b/questd/src/igmp.c index adefd528e..d68886dea 100644 --- a/questd/src/igmp.c +++ b/questd/src/igmp.c @@ -8,6 +8,7 @@ #include "questd.h" #include "igmp.h" + static void tokenize_line(char *str, const char **tokens, size_t tokens_size) { char *ptr = str; const char **token = tokens; // = line; @@ -26,7 +27,7 @@ static void tokenize_line(char *str, const char **tokens, size_t tokens_size) { continue; } ptr++; - } + } } int igmp_rpc(struct ubus_context *ctx, struct ubus_object *obj, @@ -38,7 +39,7 @@ int igmp_rpc(struct ubus_context *ctx, struct ubus_object *obj, char line[256]; IGMPtable table[128]; const char *tokens[32] = { 0 }; - void *object, *array,*t; + void *object, *array; blob_buf_init(&bb, 0); if (!(in = fopen("/tmp/igmp_snooping", "r"))) @@ -59,91 +60,80 @@ int igmp_rpc(struct ubus_context *ctx, struct ubus_object *obj, tokenize_line(line, tokens, sizeof(tokens) / sizeof(char*)); int tok_pos = 0; const char **token = tokens; - const char *names[] = { "bridge", "dev", "srcdev", "tags", "lantci", - "wantci", "group", "mode", "rxgroup", "source", "reporter", - "timeout", "index", "excludept" }; + //const char *names[] = { "bridge", "dev", "srcdev", "tags", "lantci", + // "wantci", "group", "mode", "rxgroup", "source", "reporter", + // "timeout", "index", "excludept" }; while (*token) { printf("<%d>\n",tok_pos); switch (tok_pos) { case 0: - snprintf(table[row-2].bridge,"%s",token); - printf("%s\n%s\n",table[row-2].bridge,token); + sprintf(table[row-2].bridge,"%s",*token); + printf("%s\n%s\n",table[row-2].bridge,*token); break; case 1: - snprintf(table[row-2].device,"%s",token); + sprintf(table[row-2].device,"%s",*token); break; case 2: - snprintf(table[row - 2].tags ,"%s",token); + sprintf(table[row - 2].tags ,"%s",*token); break; case 3: { uint32_t ip; - char str[17]; - - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].lantci, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 4: { uint32_t ip; - char str[17]; - - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].wantci, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 5: { uint32_t ip; - char str[17]; - - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].group, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 6: - snprintf(table[row - 2].mode,"%s",token); + sprintf(table[row - 2].mode,"%s",*token); break; case 7: { uint32_t ip; - char str[17]; - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].RxGroup, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 8: { uint32_t ip; - char str[17]; - - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].source, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 9: { uint32_t ip; - char str[17]; - - sscanf(token, "%8x", &ip); + sscanf(*token, "%8x", &ip); sprintf(table[row - 2].reporter, "%d.%d.%d.%d", (ip >> 16), (ip >> 8) & 0xff, ip & 0xff, (ip >> 24) & 0xff); } break; case 10: - snprintf(table[row - 2].timeout,"%s",token); + sprintf(table[row - 2].timeout,"%s",*token); break; case 11: - snprintf(table[row - 2].Index,"%s",token); + sprintf(table[row - 2].Index,"%s",*token); break; case 12: - snprintf(table[row - 2].ExcludPt,"%s",token); + sprintf(table[row - 2].ExcludPt,"%s",*token); break; default: @@ -182,3 +172,4 @@ int igmp_rpc(struct ubus_context *ctx, struct ubus_object *obj, return 0; } + diff --git a/questd/src/questd.c b/questd/src/questd.c index c371c3b73..b2f37e7af 100644 --- a/questd/src/questd.c +++ b/questd/src/questd.c @@ -329,11 +329,11 @@ match_client_to_network(Network *lan, char *hostaddr, bool *local, char *net, ch if((snet.s_addr ^ rslt.s_addr) == 0) { *local = true; - snprintf(net, 32, lan->name); + snprintf(*net, 32, lan->name); if (lan->type && !strcmp(lan->type, "bridge")) - snprintf(dev, 32, "br-%s", lan->name); + snprintf(*dev, 32, "br-%s", lan->name); else - snprintf(dev, 32, lan->ifname); + snprintf(*dev, 32, lan->ifname); } } @@ -1313,21 +1313,6 @@ quest_router_igmp_table(struct ubus_context *ctx, struct ubus_object *obj, return 0; }*/ -static int -quest_router_igmp_table(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) -{ - struct blob_attr *tb[__QUEST_MAX]; - - blobmsg_parse(quest_policy, __QUEST_MAX, tb, blob_data(msg), blob_len(msg)); - - blob_buf_init(&bb, 0); - router_dump_connected_clients6(&bb); - ubus_send_reply(ctx, req, bb.head); - - return 0; -} static int quest_router_clients6(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method,