int rename_nics(void) { int i, j, k; int fnics = scan_network_cards(); char nic2find[STRING_SIZE], temp[STRING_SIZE]; for(i=0; i<4; i++) if (strcmp(knics[i].macaddr, "")) for(j=0; j<fnics; j++) if(strcmp(knics[i].macaddr, nics[j].macaddr) == 0) { sprintf(nic2find,"%s0",lcolourcard[i]); if(strcmp(nic2find, nics[j].nic)) { if(is_interface_up(nics[j].nic)) { nic_shutdown(nics[j].nic); } sprintf(temp,SYSDIR "/%s", nic2find); if(fmt_exists(temp)) { for(k=0; k<fnics; k++) if (strcmp(nics[k].nic, nic2find) == 0 ) { if(is_interface_up(nics[k].nic)) { nic_shutdown(nics[k].nic); } sprintf(temp,"dummy%i",k); if (rename_device(nics[k].nic, temp)) strcpy(nics[k].nic, temp); } } if (rename_device(nics[j].nic, nic2find)) strcpy(nics[j].nic, nic2find); } } }
static void check_inic_radio(void) { if (get_mlme_radio_rt()) { int rt_mode_x = nvram_get_int("rt_mode_x"); /* start guest AP */ if (rt_mode_x != 1 && rt_mode_x != 3 && !is_interface_up(IFNAME_INIC_GUEST) && is_guest_allowed_rt()) { doSystem("ifconfig %s %s 2>/dev/null", IFNAME_INIC_GUEST, "up"); if (is_interface_up(IFNAME_INIC_GUEST)) restart_guest_lan_isolation(); } } else { /* disable mlme radio */ doSystem("iwpriv %s set RadioOn=%d", IFNAME_INIC_MAIN, 0); } }
int snmp_get_if_speed(const char *ifname, u_long *if_speed) { int err =0 ; node_name_t node_name = {0}; tstring *dev_source = NULL; u_long speed = 0; *if_speed = 0; snprintf(node_name, sizeof(node_name), "/net/interface/state/%s/devsource", ifname); err = mdc_get_binding_tstr(sn_get_admin_mcc(), NULL, NULL, NULL, &dev_source, node_name, NULL); bail_error(err); lc_log_debug(LOG_DEBUG, "ifname=> %s, source=> %s", ifname, ts_str(dev_source)); /* check if bridge, loopback, virtual */ if (is_internal_interface(ifname, dev_source)) { /* yes it is, show 10Mbps */ *if_speed = 10; goto bail; } if (0 == strcmp(ts_str(dev_source), "bond")) { /* ignore link-up status for bonds */ err = snmp_get_bond_intf_speed(ifname, &speed); bail_error(err); *if_speed = speed; } else if (0 == strcmp(ts_str(dev_source), "physical")) { /* check if is up */ if (is_interface_up(ifname)) { err = snmp_get_physical_intf_speed(ifname, &speed); bail_error(err); *if_speed = speed; } else { /* what to show here? IF-MIB shows 10Mb/s */ *if_speed = 10; } } else { lc_log_basic(LOG_DEBUG, "unknown interface type: %s", ts_str(dev_source)); /* setting to default speed (10Mb/s)*/ *if_speed = 10; goto bail; } bail: ts_free(&dev_source); return err; }
static void ez_action_wan_toggle(void) { if (get_ap_mode()) return; if (is_interface_up(get_man_ifname(0))) { logmessage("watchdog", "Perform ez-button %s...", "WAN disconnect"); stop_wan(); } else { logmessage("watchdog", "Perform ez-button %s...", "WAN reconnect"); full_restart_wan(); } }
int get_all_ifs (int all, char*** ptr) { FILE *ifs = NULL; char ibuf[512], rbuf[512]; char** list = NULL; size_t len = 0; if ((ifs = fopen("/proc/net/dev", "r")) != NULL) { fgets(ibuf, sizeof(ibuf), ifs); /* eat header */ fgets(ibuf, sizeof(ibuf), ifs); /* ditto */ } else return 0; while (fgets(rbuf, sizeof(rbuf), ifs) != NULL) { get_name(ibuf, rbuf); if (!strcmp(ibuf, "lo")) /* ignore the loopback */ continue; if (!strncmp(ibuf, "sit", 3)) /* ignore tunnel devices */ continue; if (all || is_interface_up(ibuf) == 1) { list = realloc(list, sizeof(char*) * (len + 1)); list[len] = strdup(ibuf); len++; } } /* OK, now terminate it if necessary */ if (list != NULL) { list = realloc(list, sizeof(char*) * (len + 1)); list[len] = NULL; } fclose (ifs); *ptr = list; return len; }