From bdb66c8c31195f4e6770a41fee0059b50fc001c1 Mon Sep 17 00:00:00 2001 From: Anis Ellouze Date: Tue, 20 Oct 2015 17:02:47 +0100 Subject: [PATCH] code review and optimization --- dm/dmcommon.c | 37 +++++++++++++++++++++++++++++++++- dm/dmcommon.h | 1 + dm/dmtree/layer_2_bridging.c | 35 -------------------------------- dm/dmtree/wandevice.c | 39 ++---------------------------------- 4 files changed, 39 insertions(+), 73 deletions(-) diff --git a/dm/dmcommon.c b/dm/dmcommon.c index 96e65ee..c1fc307 100644 --- a/dm/dmcommon.c +++ b/dm/dmcommon.c @@ -356,4 +356,39 @@ int network_get_ipaddr(char **value, char *iface) DM_ASSERT(res, *value = ""); json_select(res, "ipv4-address", 0, "address", value, NULL); return 0; -} \ No newline at end of file +} + +void remove_vid_interfaces_from_ifname(char *vid, char *ifname, char *new_ifname) +{ + char *sv, *pch, *p = new_ifname, *spch; + new_ifname[0] = '\0'; + bool append; + + ifname = dmstrdup(ifname); + pch = strtok_r(ifname, " ", &spch); + while (pch != NULL) { + append = false; + char *sv = strchr(pch, '.'); + if (sv) { + sv++; + if (strcmp(sv, vid) != 0) { + append = true; + } + } + else { + append = true; + } + if(append) { + if (p == new_ifname) { + dmstrappendstr(p, pch); + } + else { + dmstrappendchr(p, ' '); + dmstrappendstr(p, pch); + } + } + pch = strtok_r(NULL, " ", &spch); + } + dmstrappendend(p); + dmfree(ifname); +} diff --git a/dm/dmcommon.h b/dm/dmcommon.h index 577cc87..8ad125c 100644 --- a/dm/dmcommon.h +++ b/dm/dmcommon.h @@ -67,5 +67,6 @@ int ipcalc(char *ip_str, char *mask_str, char *start_str, char *end_str, char *i int ipcalc_rev_start(char *ip_str, char *mask_str, char *ipstart_str, char *start_str); int ipcalc_rev_end(char *ip_str, char *mask_str, char *start_str, char *ipend_str, char *end_str); int network_get_ipaddr(char **value, char *iface); +void remove_vid_interfaces_from_ifname(char *vid, char *ifname, char *new_ifname); #endif diff --git a/dm/dmtree/layer_2_bridging.c b/dm/dmtree/layer_2_bridging.c index 318f0d2..97da19d 100644 --- a/dm/dmtree/layer_2_bridging.c +++ b/dm/dmtree/layer_2_bridging.c @@ -78,41 +78,6 @@ inline void init_args_layer2_vlan(struct dmctx *ctx, struct uci_section *ss) args->layer2sectionlev2 = ss; } -void remove_vid_interfaces_from_ifname(char *vid, char *ifname, char *new_ifname) -{ - char *sv, *pch, *p = new_ifname, *spch; - new_ifname[0] = '\0'; - bool append; - - ifname = dmstrdup(ifname); - pch = strtok_r(ifname, " ", &spch); - while (pch != NULL) { - append = false; - char *sv = strchr(pch, '.'); - if (sv) { - sv++; - if (strcmp(sv, vid) != 0) { - append = true; - } - } - else { - append = true; - } - if(append) { - if (p == new_ifname) { - dmstrappendstr(p, pch); - } - else { - dmstrappendchr(p, ' '); - dmstrappendstr(p, pch); - } - } - pch = strtok_r(NULL, " ", &spch); - } - dmstrappendend(p); - dmfree(ifname); -} - void remove_interface_from_ifname(char *iface, char *ifname, char *new_ifname) { char *pch, *spch, *p = new_ifname; diff --git a/dm/dmtree/wandevice.c b/dm/dmtree/wandevice.c index 154730c..9c2d485 100644 --- a/dm/dmtree/wandevice.c +++ b/dm/dmtree/wandevice.c @@ -125,41 +125,6 @@ inline int init_wancdevargs(struct dmctx *ctx, struct uci_section *s, int index, return 0; } -void remove_vid_from_ifname(char *vid, char *ifname, char *new_ifname) -{ - char *sv, *pch, *p = new_ifname, *spch; - new_ifname[0] = '\0'; - bool append; - - ifname = dmstrdup(ifname); - pch = strtok_r(ifname, " ", &spch); - while (pch != NULL) { - append = false; - char *sv = strchr(pch, '.'); - if (sv) { - sv++; - if (strcmp(sv, vid) != 0) { - append = true; - } - } - else { - append = true; - } - if(append) { - if (p == new_ifname) { - dmstrappendstr(p, pch); - } - else { - dmstrappendchr(p, ' '); - dmstrappendstr(p, pch); - } - } - pch = strtok_r(NULL, " ", &spch); - } - dmstrappendend(p); - dmfree(ifname); -} - inline int add_wvlan(char *baseifname, char *ifname, char *vid, char *prioprity) { struct uci_section *ss = NULL, *vlan_interface_s; char *add_value; @@ -1738,7 +1703,7 @@ int set_wan_ip_link_connection_vid(char *refparam, struct dmctx *ctx, int action dmuci_get_option_value_string("network", wan_name, "ifname", &wifname); if (wifname[0] == '\0') return 0; - remove_vid_from_ifname(vid, wifname, r_new_wifname); + remove_vid_interfaces_from_ifname(vid, wifname, r_new_wifname); dmuci_get_value_by_section_string(ss, "baseifname", &baseifname); p = a_new_wifname; q = v_ifname; @@ -1891,7 +1856,7 @@ int set_wan_ip_link_connection_layer2_interface(char *refparam, struct dmctx *ct if (wifname[0] == '\0') return 0; dmuci_get_value_by_section_string(ss, "vlan8021q", &vid); - remove_vid_from_ifname(vid, wifname, r_new_wifname); + remove_vid_interfaces_from_ifname(vid, wifname, r_new_wifname); p = a_new_wifname; q = ifname_buf; dmstrappendstr(q, value);