Beispiel #1
0
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);
					}
				}
}
Beispiel #2
0
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;
}
Beispiel #4
0
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;
}