Exemplo n.º 1
0
int
disconnect_ndis(int devnum)
{
	int valid_node, qmi_mode = 0;
	char control_node[16] = {0};

	// check wdm device
	valid_node = find_modem_node("cdc-wdm", 0, 0, -1, NULL); // todo (need devnode for cdc-wdm)
	if (valid_node >= 0) {
		qmi_mode = 1;
		sprintf(control_node, "cdc-wdm%d", valid_node);
	}
	else {
		// check serial device
		valid_node = get_modem_node("ttyUSB", devnum, NULL);
		if (valid_node >= 0)
			sprintf(control_node, "ttyUSB%d", valid_node);
	}

	if (strlen(control_node) > 0) {
		if (!qmi_mode) {
			int vid = 0, pid = 0;
			get_modem_vid_pid(control_node, &vid, &pid);
			if ( (vid == 0x1199 || vid == 0x0f3d) && (pid == 0x68a3 || pid == 0x68aa) )
				return doSystem("/bin/comgt -d /dev/%s -s %s/ppp/3g/%s", control_node, MODEM_SCRIPTS_DIR, "Sierra_disconn.scr");
			else
				return doSystem("/bin/comgt -d /dev/%s -s %s/ppp/3g/%s", control_node, MODEM_SCRIPTS_DIR, "NDIS_disconn.scr");
		}
		else
			return qmi_stop_network(control_node);
	}

	return 1;
}
Exemplo n.º 2
0
static int
write_pppd_ras_conf(const char* call_path, const char *modem_node, int unit)
{
	FILE *fp;
	int modem_type, vid = 0, pid = 0;
	char tmp[256], *user, *pass, *isp, *connect;

	if (!get_modem_vid_pid(modem_node, &vid, &pid))
		return 0;

	if (!(fp = fopen(call_path, "w+")))
		return 0;

	modem_type = nvram_get_int("modem_type");
	user = nvram_safe_get("modem_user");
	pass = nvram_safe_get("modem_pass");
	isp = nvram_safe_get("modem_isp");

	fprintf(fp, "/dev/%s\n", modem_node);
	fprintf(fp, "crtscts\n");
	fprintf(fp, "modem\n");
	fprintf(fp, "noauth\n");

	if(strlen(user) > 0)
		fprintf(fp, "user '%s'\n", safe_pppd_line(user, tmp, sizeof(tmp)));
	if(strlen(pass) > 0)
		fprintf(fp, "password '%s'\n", safe_pppd_line(pass, tmp, sizeof(tmp)));

	if(!strcmp(isp, "Virgin") || !strcmp(isp, "CDMA-UA")){
		fprintf(fp, "refuse-chap\n");
		fprintf(fp, "refuse-mschap\n");
		fprintf(fp, "refuse-mschap-v2\n");
	}

	fprintf(fp, "mtu %d\n", nvram_safe_get_int("modem_mtu", 1500, 1000, 1500));
	fprintf(fp, "mru %d\n", 1500);

	fprintf(fp, "persist\n");
	fprintf(fp, "maxfail %d\n", 0);
	fprintf(fp, "holdoff %d\n", 10);

	fprintf(fp, "nopcomp noaccomp\n");
	fprintf(fp, "novj nobsdcomp nodeflate\n");

	fprintf(fp, "noipdefault\n");

	if (nvram_invmatch("modem_dnsa", "0"))
		fprintf(fp, "usepeerdns\n");

	fprintf(fp, "minunit %d\n", RAS_PPP_UNIT);
	fprintf(fp, "linkname wan%d\n", unit);

	if (nvram_get_int("modem_dbg") == 1)
		fprintf(fp, "debug\n");

	connect = "Generic_conn.scr";

	if (modem_type == 1) {
		connect = "EVDO_conn.scr";
	} else if( modem_type == 2) {
		connect = "td_conn.scr";
	} else {
		if (vid == 0x0b05 && pid == 0x0302) // T500
			connect = "t500_conn.scr";
		else if (vid == 0x0421 && pid == 0x0612) // CS-15
			connect = "t500_conn.scr";
		else if (vid == 0x106c && pid == 0x3716)
			connect = "verizon_conn.scr";
		else if (vid == 0x1410 && pid == 0x4400)
			connect = "rogers_conn.scr";
	}

	fprintf(fp, "%s \"/bin/comgt -d /dev/%s -s %s/ppp/3g/%s\"\n", "connect", modem_node, MODEM_SCRIPTS_DIR, connect);
	fprintf(fp, "%s \"/bin/comgt -d /dev/%s -s %s/ppp/3g/%s\"\n", "disconnect", modem_node, MODEM_SCRIPTS_DIR, "Generic_disconn.scr");

	fclose(fp);

	return 1;
}
Exemplo n.º 3
0
static int
write_pppd_ras_conf(const char* call_path, const char *modem_node, int ppp_unit)
{
	FILE *fp;
	int modem_type, vid = 0, pid = 0;
	char *user, *pass, *isp;
	
	if (!get_modem_vid_pid(modem_node, &vid, &pid))
		return 0;
	
	if (!(fp = fopen(call_path, "w+")))
		return 0;
	
	modem_type = nvram_get_int("modem_type");
	user = nvram_safe_get("modem_user");
	pass = nvram_safe_get("modem_pass");
	isp = nvram_safe_get("modem_isp");
	
	fprintf(fp, "/dev/%s\n", modem_node);
	fprintf(fp, "modem\n");
	fprintf(fp, "crtscts\n");
	fprintf(fp, "noauth\n");

	if(strlen(user) > 0)
		fprintf(fp, "user '%s'\n", user);
	if(strlen(pass) > 0)
		fprintf(fp, "password '%s'\n", pass);

	if(!strcmp(isp, "Virgin") || !strcmp(isp, "CDMA-UA")){
		fprintf(fp, "refuse-chap\n");
		fprintf(fp, "refuse-mschap\n");
		fprintf(fp, "refuse-mschap-v2\n");
	}

	fprintf(fp, "mtu %d\n", nvram_safe_get_int("modem_mtu", 1500, 1000, 1500));
	fprintf(fp, "mru %d\n", 1500);

	fprintf(fp, "persist\n");
	fprintf(fp, "maxfail %d\n", 0);
	fprintf(fp, "holdoff %d\n", 10);

	fprintf(fp, "nopcomp noaccomp\n");
	fprintf(fp, "novj nobsdcomp nodeflate\n");

	fprintf(fp, "noipdefault\n");

	if (nvram_invmatch("modem_dnsa", "0"))
		fprintf(fp, "usepeerdns\n");

	fprintf(fp, "minunit %d\n", ppp_unit);

	if(modem_type == 2){
		fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/td.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		fprintf(fp, "disconnect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/Generic_disconn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
	}
	else if(modem_type == 1){
		fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/EVDO_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		fprintf(fp, "disconnect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/EVDO_disconn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
	}
	else {
		if (vid == 0x0b05 && pid == 0x0302) // T500
			fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/t500_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		else if(vid == 0x0421 && pid == 0x0612) // CS-15
			fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/t500_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		else if(vid == 0x106c && pid == 0x3716)
			fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/verizon_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		else if(vid == 0x1410 && pid == 0x4400)
			fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/rogers_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		else
			fprintf(fp, "connect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/Generic_conn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
		
		fprintf(fp, "disconnect \"/bin/comgt -d /dev/%s -s %s/ppp/3g/Generic_disconn.scr\"\n", modem_node, MODEM_SCRIPTS_DIR);
	}
	
	fclose(fp);
	
	return 1;
}