Compare commits
	
		
			3 Commits
		
	
	
		
			86956ff1ce
			...
			e571a27c75
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e571a27c75 | |||
| a59a25baa5 | |||
| 57890907ae | 
							
								
								
									
										11
									
								
								src/ac/act.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/ac/act.c
									
									
									
									
									
								
							| @ -367,9 +367,16 @@ main(int argc , char *argv[]) | |||||||
| 			} | 			} | ||||||
| 		} else if (el_parse(el, ac, av) == -1) { | 		} else if (el_parse(el, ac, av) == -1) { | ||||||
| 			char str[2000]; | 			char str[2000]; | ||||||
|  | 			int i; | ||||||
|  | 			char * sp =""; | ||||||
| 			str[0]=0; | 			str[0]=0; | ||||||
| 			fprintf(act_f,"%s\n",av[0]); |  | ||||||
|  | 			for (i=0; i<ac; i++){ | ||||||
|  | 				fprintf(act_f,"%s%s",sp,av[i]); | ||||||
|  | 				sp=" "; | ||||||
|  | 			} | ||||||
|  | 			fprintf(act_f,"\n"); | ||||||
|  |  | ||||||
| 			fflush(act_f); | 			fflush(act_f); | ||||||
| 			do { | 			do { | ||||||
| 				int n; | 				int n; | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
| # | # | ||||||
| #capwap/ac-name | #capwap/ac-name | ||||||
| # | # | ||||||
| capwap/ac-name: actube | capwap/ac-name: actube_X | ||||||
|  |  | ||||||
| capwap/ssl-cipher: DHE-RSA:RSA:AES-256-CBC:AES-128-CBC:SHA1:PSK | capwap/ssl-cipher: DHE-RSA:RSA:AES-256-CBC:AES-128-CBC:SHA1:PSK | ||||||
| capwap/ssl-psk-enable: false | capwap/ssl-psk-enable: false | ||||||
| @ -36,7 +36,7 @@ actube/ipv6: false | |||||||
| #actube/mod.2: capwap80211 | #actube/mod.2: capwap80211 | ||||||
| # | # | ||||||
|  |  | ||||||
| #actube/mod.0: cisco | actube/mod.0: cisco | ||||||
| actube/mod.1: capwap | actube/mod.1: capwap | ||||||
| actube/mod.2: capwap80211 | actube/mod.2: capwap80211 | ||||||
|  |  | ||||||
| @ -59,7 +59,7 @@ ac-descriptor/station-limit: 1000 | |||||||
| ac-descriptor/stations: 0 | ac-descriptor/stations: 0 | ||||||
|  |  | ||||||
|  |  | ||||||
| capwap-control-ip-address/address.0: 192.168.0.14 | capwap-control-ip-address/address.0: 192.168.0.24 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										275
									
								
								src/ac/rpc.c
									
									
									
									
									
								
							
							
						
						
									
										275
									
								
								src/ac/rpc.c
									
									
									
									
									
								
							| @ -104,7 +104,9 @@ static void finish_cmd(FILE *f) | |||||||
|  |  | ||||||
| int prompt_cmd(struct rpcdata *sd, const char *cmd) | int prompt_cmd(struct rpcdata *sd, const char *cmd) | ||||||
| { | { | ||||||
| 	fprintf(sd->out,"actube[%s]:>\n","*"); | 	const char *acname = cw_cfg_get(sd->global_cfg,"capwap/ac-name","actube"); | ||||||
|  |  | ||||||
|  | 	fprintf(sd->out,"%s[%s]:>\n",acname,sd->prompt); | ||||||
| 	finish_cmd(sd->out); | 	finish_cmd(sd->out); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| @ -123,11 +125,14 @@ int select_cmd(struct rpcdata *sd, const char *cmd) | |||||||
| 	char ap [CAPWAP_MAX_WTP_NAME_LEN]; | 	char ap [CAPWAP_MAX_WTP_NAME_LEN]; | ||||||
| 	sscanf(cmd,"%s",ap); | 	sscanf(cmd,"%s",ap); | ||||||
| 	strcpy(sd->prompt,ap); | 	strcpy(sd->prompt,ap); | ||||||
|  | 	finish_cmd(sd->out); | ||||||
|  | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| int list_cmd(struct rpcdata *sd, const char *cmd) | int list_cmd(struct rpcdata *sd, const char *cmd) | ||||||
| { | { | ||||||
| 	show_aps(sd->out); | 	show_aps(sd->out); | ||||||
|  | 	finish_cmd(sd->out); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -152,9 +157,9 @@ int cfg_cmd(struct rpcdata *sd, const char *cmd) | |||||||
| 		fprintf(sd->out,"WTP '%s' not found\n",sd->prompt); | 		fprintf(sd->out,"WTP '%s' not found\n",sd->prompt); | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
| 		stop(); | 		cw_cfg_fdump(sd->out,conn->remote_cfg); | ||||||
| //		show_cfg(sd->out,conn->remote_cfg); |  | ||||||
| 	} | 	} | ||||||
|  | 	finish_cmd(sd->out); | ||||||
| 	wtplist_unlock(); | 	wtplist_unlock(); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| @ -209,20 +214,24 @@ wlan0_cmd(struct rpcdata * sd, const char *cmd) | |||||||
|  |  | ||||||
| int set_cmd(struct rpcdata *sd, const char *str) | int set_cmd(struct rpcdata *sd, const char *str) | ||||||
| { | { | ||||||
| /*	struct cw_Conn * conn; |  | ||||||
| 	struct cw_Val_Reader r; | 	cw_Cfg_t *cfg; | ||||||
| 	char key[CW_CFG_MAX_KEY_LEN]; | 	cfg = cw_cfg_create(); | ||||||
| 	char type[CW_CFG_MAX_KEY_LEN]; |  | ||||||
| 	char val[2048]; | 	cw_cfg_read_from_string(str,cfg); | ||||||
| */ |  | ||||||
| 	stop(); | 	cw_cfg_fdump(sd->out,cfg); | ||||||
|  |  | ||||||
|  | 	cw_cfg_destroy(cfg); | ||||||
|  |  | ||||||
|  | 	finish_cmd(sd->out); | ||||||
|  |  | ||||||
| //	cw_ktv_init_str_reader(&r,str,strlen(str)); | //	cw_ktv_init_str_reader(&r,str,strlen(str)); | ||||||
| 	 | 	 | ||||||
| //	cw_ktv_parse_string(&r,key,type,val); | //	cw_ktv_parse_string(&r,key,type,val); | ||||||
| 	/*cw_ktv_parse_string(key,type,val, 2048);*/ | 	/*cw_ktv_parse_string(key,type,val, 2048);*/ | ||||||
| 	 | 	 | ||||||
| //	fprintf(sd->out,"%s :%s: %s\n",key,type,val); | //	fprintf(sd->out,"%s %s\n",key,val); | ||||||
| //	cw_ktv_add(sd->update_cfg,key,CW_TYPE_STR,NULL,val,strlen(val)); | //	cw_ktv_add(sd->update_cfg,key,CW_TYPE_STR,NULL,val,strlen(val)); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| @ -262,10 +271,28 @@ void show_cfg (FILE *out, mavl_t ktv) | |||||||
| } | } | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void print_mw(FILE *f, int w, const char * str) | ||||||
|  | { | ||||||
|  | 	int n,i; | ||||||
|  | 	fprintf(f, "%.*s",w,str); | ||||||
|  | 	n=strlen(str); | ||||||
|  |  | ||||||
|  | 	if ( n>w ){ | ||||||
|  | 		fprintf(f,"> "); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	n = w-n; | ||||||
|  |  | ||||||
|  | 	for(i=0;i<(n+2);i++){ | ||||||
|  | 		fprintf(f,"%c",' '); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int  show_aps (FILE *out) | int  show_aps (FILE *out) | ||||||
| { | { | ||||||
| 	stop(); | 	struct connlist * cl; | ||||||
| /*	struct connlist * cl; |  | ||||||
| 	mavliter_t it; | 	mavliter_t it; | ||||||
| 	wtplist_lock(); | 	wtplist_lock(); | ||||||
| 	 | 	 | ||||||
| @ -273,31 +300,29 @@ int  show_aps (FILE *out) | |||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	mavliter_init (&it, cl->by_addr); | 	mavliter_init (&it, cl->by_addr); | ||||||
| 	fprintf (out, "IP\t\t\twtp-name\n"); | 	print_mw (out, 16, "AP Name"); | ||||||
|  | 	print_mw (out, 16, "AP Model"); | ||||||
|  | 	print_mw (out, 14, "Vendor"); | ||||||
|  | 	print_mw (out, 16, "IP "); | ||||||
|  | 	fprintf(out,"\n"); | ||||||
|  |  | ||||||
| 	mavliter_foreach (&it) { | 	mavliter_foreach (&it) { | ||||||
| 		cw_Val_t * result; |  | ||||||
| 		char addr[SOCK_ADDR_BUFSIZE]; | 		char addr[SOCK_ADDR_BUFSIZE]; | ||||||
| 		char wtp_name[CAPWAP_MAX_WTP_NAME_LEN]; | 		const char *vendor; | ||||||
|  |  | ||||||
| 		struct cw_Conn * conn; | 		struct cw_Conn * conn; | ||||||
| 		conn = mavliter_get_ptr (&it); | 		conn = mavliter_get_ptr (&it); | ||||||
| 		 |  | ||||||
| 		sock_addr2str_p (&conn->addr, addr); |  | ||||||
|  |  | ||||||
| 		stop();		 | 		print_mw(out,16,cw_cfg_get(conn->remote_cfg, "wtp-name", "Unknown")); | ||||||
| //		result = cw_ktv_get (conn->remote_cfg, "wtp-name", NULL); | 		print_mw(out,16,cw_cfg_get(conn->remote_cfg, "wtp-board-data/model-no", "Unknown")); | ||||||
| 		 | 		vendor = cw_cfg_get(conn->remote_cfg, "wtp-board-data/vendor", "0"); | ||||||
| 		if (result == NULL) { | 		print_mw(out,14,vendor);	 | ||||||
| 			strcpy (wtp_name, ""); | 		sock_addr2str_p (&conn->addr, addr); | ||||||
| 			 | 		print_mw(out,16,addr); | ||||||
| 		} else { | 		fprintf(out,"\n"); | ||||||
| 			result->type->to_str (result, wtp_name, CAPWAP_MAX_WTP_NAME_LEN); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		 |  | ||||||
| 		fprintf (out, "%s\t\t%s\n", addr, wtp_name); |  | ||||||
| 	} | 	} | ||||||
| 	wtplist_unlock(); | 	wtplist_unlock(); | ||||||
| 	*/ |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -305,40 +330,30 @@ int  show_aps (FILE *out) | |||||||
|  |  | ||||||
| struct cw_Conn * find_ap(const char *name) | struct cw_Conn * find_ap(const char *name) | ||||||
| { | { | ||||||
| stop(); | 	 | ||||||
| /*	 |  | ||||||
| 	struct connlist * cl; | 	struct connlist * cl; | ||||||
| 	mavliter_t it; | 	mavliter_t it; | ||||||
|  |  | ||||||
| 	cl = wtplist_get_connlist(); | 	cl = wtplist_get_connlist(); | ||||||
| 	 | 	 | ||||||
| 	 |  | ||||||
| 	mavliter_init (&it, cl->by_addr); | 	mavliter_init (&it, cl->by_addr); | ||||||
| 	mavliter_foreach (&it) { | 	mavliter_foreach (&it) { | ||||||
| 		cw_Val_t * result; | 		const char *wtpname; | ||||||
| 		char wtp_name[CAPWAP_MAX_WTP_NAME_LEN]; |  | ||||||
| 		struct cw_Conn * conn; | 		struct cw_Conn * conn; | ||||||
| 		conn = mavliter_get_ptr (&it); | 		conn = mavliter_get_ptr (&it); | ||||||
| 		 | 		 | ||||||
| 		result = cw_ktv_get (conn->remote_cfg, "wtp-name", NULL); | 		wtpname = cw_cfg_get (conn->remote_cfg, "wtp-name", NULL); | ||||||
| 		 | 		 | ||||||
| 		if (result == NULL) { | 		if (wtpname == NULL) | ||||||
| 			strcpy (wtp_name, ""); | 			continue; | ||||||
| 			 |  | ||||||
| 		} else { |  | ||||||
| 			result->type->to_str (result, wtp_name, CAPWAP_MAX_WTP_NAME_LEN); |  | ||||||
| 		} |  | ||||||
| 	 |  | ||||||
| 		printf("cmp '%s' : '%s'\n",wtp_name,name); |  | ||||||
| 		 | 		 | ||||||
| 		if(strcmp(wtp_name,name)==0){ | 		if(strcmp(wtpname,name)==0){ | ||||||
| 			return conn; | 			return conn; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
| 	return NULL; | 	return NULL; | ||||||
| 	*/ | 	 | ||||||
| 	/*wtplist_unlock();*/ |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -400,16 +415,20 @@ void con (FILE *out) | |||||||
|  |  | ||||||
| struct command * find_cmd(const char *cmd) | struct command * find_cmd(const char *cmd) | ||||||
| { | { | ||||||
| 	struct command * search; | 	struct command * search,*result; | ||||||
| 	 | 	 | ||||||
|  | 	result=NULL; | ||||||
| 	search = cmdlist; | 	search = cmdlist; | ||||||
| 	while (search->cmd!=NULL){ | 	while (search->cmd!=NULL){ | ||||||
| 		if (strncmp(cmd,search->cmd,strlen(cmd))==0){ | 		if (strncmp(cmd,search->cmd,strlen(cmd))==0){ | ||||||
| 			return search; | 			if (result==NULL) | ||||||
|  | 				result = search; | ||||||
|  | 			else  | ||||||
|  | 				return NULL; | ||||||
| 		} | 		} | ||||||
| 		search ++; | 		search ++; | ||||||
| 	} | 	} | ||||||
| 	return NULL; | 	return result; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -506,147 +525,8 @@ struct esc_strings estr[] = { | |||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| static int cmpansi(char * str,char * ansistr) |  | ||||||
| { |  | ||||||
| 	int sl,al; |  | ||||||
| 	sl = strlen(str); |  | ||||||
| 	al = strlen(ansistr); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	if(sl>al){ |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| 	if (sl<al){ |  | ||||||
| 		if (strncmp(str,ansistr,sl)==0) |  | ||||||
| 			return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (strcmp(str,ansistr)==0) |  | ||||||
| 		return 1; |  | ||||||
|  |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| static void get_line_char_mode(FILE * file, struct rpcdata *sd) |  | ||||||
| { |  | ||||||
| 	int c; |  | ||||||
| 	struct esc_strings * es; |  | ||||||
|  |  | ||||||
| 	es = NULL; |  | ||||||
| 	sd->line[0]=0; |  | ||||||
| 	sd->pos=0; |  | ||||||
| 	sd->esc[0]=0; |  | ||||||
| 	sd->escpos=0; |  | ||||||
|  |  | ||||||
| //	fprintf (file, "\xff\xfc\22"); |  | ||||||
|  |  | ||||||
| 	/* Put telnet into char mode */ |  | ||||||
| 	fprintf (file,"%c%c%c",IAC,WILL,TELOPT_ECHO ); |  | ||||||
| 	fprintf (file,"%c%c%c",IAC,WILL,TELOPT_SGA ); |  | ||||||
| 	fprintf (file,"%c%c%c",IAC,DONT,TELOPT_LINEMODE ); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	fprintf (file, "actube[%s]:>", sd->prompt); |  | ||||||
| 	fflush (file); |  | ||||||
|  |  | ||||||
| 	while ( (c=fgetc(file))!= EOF){ |  | ||||||
| 		printf ("%02x\n",c); |  | ||||||
| 		if (sd->escpos){ |  | ||||||
| 			int i; |  | ||||||
| 			int a=0; |  | ||||||
|  |  | ||||||
| 			sd->esc[sd->escpos++]=c; |  | ||||||
| 			sd->esc[sd->escpos]=0; |  | ||||||
|  |  | ||||||
| 			for (i=0; estr[i].str != NULL; i++){ |  | ||||||
| 				int rc; |  | ||||||
| 				rc = cmpansi(sd->esc,estr[i].str); |  | ||||||
| 				if (rc==1){ |  | ||||||
| 					sd->esc[0]=0; |  | ||||||
| 					sd->escpos=0; |  | ||||||
| 					es = &estr[i]; |  | ||||||
| 					break; |  | ||||||
| 				} |  | ||||||
| 				a |= rc; |  | ||||||
| 					 |  | ||||||
| 			} |  | ||||||
| 			if (a==0){ |  | ||||||
| 				sd->esc[0]=0; |  | ||||||
| 				sd->escpos=0; |  | ||||||
| 			}else{ |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 		} |  | ||||||
| 		if (c==0x1b){ |  | ||||||
| 			sd->esc[sd->escpos++]=c; |  | ||||||
| 			sd->esc[sd->escpos]=0; |  | ||||||
| 			printf("ESC start\n"); |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 		if (!es){ |  | ||||||
| 			if (c=='\r'){ |  | ||||||
| 				printf("CMD: %s\n",sd->line); |  | ||||||
| 				fprintf (file, "\n\r"); |  | ||||||
| 				fflush(file); |  | ||||||
| 				//fprintf (file, "\n\ractube[%s]:>", sd->prompt); |  | ||||||
| 				return; |  | ||||||
| 				sd->pos=0; |  | ||||||
| 				sd->line[0]=0; |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
| 			if (c=='\x7f'){ |  | ||||||
| 				if (sd->pos==0) |  | ||||||
| 					continue; |  | ||||||
|  |  | ||||||
| 				printf("Backspace\n"); |  | ||||||
| 				fprintf(file,"%c %c",8,8); |  | ||||||
| 				sd->line[--sd->pos]=0; |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			} |  | ||||||
| 			if (c>240 || c<30){ |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 			sd->line[sd->pos++]=c; |  | ||||||
| 			sd->line[sd->pos]=0; |  | ||||||
| 			printf("putout: %c %02X\n",c,c); |  | ||||||
| 			fprintf(file,"\x1b[1@%c",c); |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		printf ("ES: %s\n",es->result); |  | ||||||
|  |  | ||||||
| 		if (strcmp(es->result,"left")==0){ |  | ||||||
| 			if (sd->pos>0){ |  | ||||||
| 				sd->pos--; |  | ||||||
| 				fprintf(file,"%s",es->str); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		if (strcmp(es->result,"right")==0){ |  | ||||||
| 			if (sd->line[sd->pos]!=0){ |  | ||||||
| 				sd->pos++; |  | ||||||
| 				fprintf(file,"%s",es->str); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| //		fprintf(file,es->str); |  | ||||||
|  |  | ||||||
| 		es = NULL; |  | ||||||
| //		fflush(file); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void rpc_loop (FILE *file, cw_Cfg_t *global_cfg) | void rpc_loop (FILE *file, cw_Cfg_t *global_cfg) | ||||||
| @ -666,7 +546,6 @@ void rpc_loop (FILE *file, cw_Cfg_t *global_cfg) | |||||||
| 	sd.quit=0; | 	sd.quit=0; | ||||||
|  |  | ||||||
| 	do { | 	do { | ||||||
| 		int c; |  | ||||||
|  |  | ||||||
| 		str[0]=0; | 		str[0]=0; | ||||||
| 		 | 		 | ||||||
| @ -722,13 +601,11 @@ void * run_rpc_server (void * arg) | |||||||
|  |  | ||||||
| int create_tcp_fd(const char *name) | int create_tcp_fd(const char *name) | ||||||
| { | { | ||||||
| 	struct sockaddr_storage server, client; | 	struct sockaddr_storage server; //, client; | ||||||
| 	socklen_t client_size; |  | ||||||
| 	char sockstr[SOCK_ADDR_BUFSIZE]; |  | ||||||
| 	 | 	 | ||||||
| 	int rc; | 	int rc; | ||||||
| 	const char * addr = name; | 	const char * addr = name; | ||||||
| 	int sockfd, clientsock; | 	int sockfd; | ||||||
| 	int yes; | 	int yes; | ||||||
| 	 | 	 | ||||||
| 	rc = sock_strtoaddr (addr, (struct sockaddr*) &server); | 	rc = sock_strtoaddr (addr, (struct sockaddr*) &server); | ||||||
| @ -756,8 +633,8 @@ int create_tcp_fd(const char *name) | |||||||
| } | } | ||||||
| static int create_unix_fd(const char *name) | static int create_unix_fd(const char *name) | ||||||
| { | { | ||||||
|         struct sockaddr_storage client; |         //struct sockaddr_storage client; | ||||||
| 	socklen_t client_size; | 	//socklen_t client_size; | ||||||
| 	struct sockaddr_un addr; | 	struct sockaddr_un addr; | ||||||
| 	int rc,fd; | 	int rc,fd; | ||||||
|  |  | ||||||
| @ -771,7 +648,7 @@ static int create_unix_fd(const char *name) | |||||||
| 		cw_log (LOG_ERR, "Can't bind socket 'unix:%s', %s", name, strerror (errno)); | 		cw_log (LOG_ERR, "Can't bind socket 'unix:%s', %s", name, strerror (errno)); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
| 	int clientsock = accept (fd, (struct sockaddr*) &client, &client_size); | 	//int clientsock = accept (fd, (struct sockaddr*) &client, &client_size); | ||||||
|  |  | ||||||
| 	return fd; | 	return fd; | ||||||
| } | } | ||||||
| @ -780,7 +657,7 @@ int start_rpc(cw_Cfg_t *global_cfg) | |||||||
| { | { | ||||||
| 	struct sockdata * sockdata; | 	struct sockdata * sockdata; | ||||||
| 	const char *sockname; | 	const char *sockname; | ||||||
| 	int rc, type; | 	int rc; //, type; | ||||||
| 	int fd; | 	int fd; | ||||||
|  |  | ||||||
| 	rc = cw_cfg_get_bool(global_cfg,"actube/rpc/enable",1); | 	rc = cw_cfg_get_bool(global_cfg,"actube/rpc/enable",1); | ||||||
|  | |||||||
| @ -612,7 +612,7 @@ static void copy(struct cw_ElemHandlerParams * params) | |||||||
| //	cw_dbg(DBG_X,"-------------  This was the config we ve got from WTP ---------------- "); | //	cw_dbg(DBG_X,"-------------  This was the config we ve got from WTP ---------------- "); | ||||||
| //	cw_dbg(DBG_X,"Now copying:"); | //	cw_dbg(DBG_X,"Now copying:"); | ||||||
| //	cw_cfg_copy(params->cfg,conn->local_cfg,0,""); | //	cw_cfg_copy(params->cfg,conn->local_cfg,0,""); | ||||||
|         cw_cfg_copy(params->cfg, params->conn->local_cfg,DBG_CFG_UPDATES,"GlobalCfg"); |         cw_cfg_copy(params->cfg, params->conn->remote_cfg,DBG_CFG_UPDATES,"GlobalCfg"); | ||||||
|  |  | ||||||
| //	cw_dbg(DBG_X,"Copying done."); | //	cw_dbg(DBG_X,"Copying done."); | ||||||
| } | } | ||||||
| @ -730,7 +730,7 @@ struct wtpman *wtpman_create(int socklistindex, struct sockaddr *srcaddr, | |||||||
|  |  | ||||||
| 	wtpman->global_cfg = global_cfg; | 	wtpman->global_cfg = global_cfg; | ||||||
|  |  | ||||||
| 	wtpman->conn = cw_conn_create(sockfd, srcaddr, 5); | 	wtpman->conn = cw_conn_create(sockfd, srcaddr, 100); | ||||||
| 	if (!wtpman->conn) { | 	if (!wtpman->conn) { | ||||||
| 		wtpman_destroy(wtpman); | 		wtpman_destroy(wtpman); | ||||||
| 		return NULL; | 		return NULL; | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								src/cw/cfg.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/cw/cfg.c
									
									
									
									
									
								
							| @ -495,6 +495,21 @@ int cw_cfg_load(const char *filename, cw_Cfg_t * cfg) | |||||||
| 	return errno; | 	return errno; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | int cw_cfg_read_from_string(const char *str, cw_Cfg_t *cfg) | ||||||
|  | { | ||||||
|  | 	int errs; | ||||||
|  | 	FILE * f = fmemopen((void*)str,strlen(str),"rb"); | ||||||
|  | 	if(!f) | ||||||
|  | 		return errno; | ||||||
|  | 	errs = cw_cfg_read_from_file(f, cfg); | ||||||
|  | 	fclose(f); | ||||||
|  |  | ||||||
|  | 	if (errs) | ||||||
|  | 		errno = EINVAL; | ||||||
|  | 	return errno; | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
| int cw_cfg_write_to_file(FILE *f, cw_Cfg_t * cfg) | int cw_cfg_write_to_file(FILE *f, cw_Cfg_t * cfg) | ||||||
| { | { | ||||||
| 	mavliter_t it; | 	mavliter_t it; | ||||||
|  | |||||||
| @ -57,6 +57,7 @@ int cw_cfg_save(const char *filename, cw_Cfg_t *cfg, const char *format, ...); | |||||||
|  |  | ||||||
| uint16_t cw_cfg_get_word_l(cw_Cfg_t ** cfg, char *key, uint16_t def); | uint16_t cw_cfg_get_word_l(cw_Cfg_t ** cfg, char *key, uint16_t def); | ||||||
| void cw_cfg_fdump(FILE *f, cw_Cfg_t * cfg); | void cw_cfg_fdump(FILE *f, cw_Cfg_t * cfg); | ||||||
|  | int cw_cfg_read_from_string(const char *str, cw_Cfg_t *cfg); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -101,9 +101,10 @@ int cw_compose_message(struct cw_Conn *conn, uint8_t * rawout) | |||||||
| 	params.conn=conn; | 	params.conn=conn; | ||||||
| 	params.rawmsg = rawout; | 	params.rawmsg = rawout; | ||||||
| 	params.cfg_list[0]=conn->update_cfg; | 	params.cfg_list[0]=conn->update_cfg; | ||||||
| 	params.cfg_list[1]=conn->local_cfg; | 	params.cfg_list[1]=conn->remote_cfg; | ||||||
| 	params.cfg_list[2]=conn->global_cfg; | 	params.cfg_list[2]=conn->local_cfg; | ||||||
| 	params.cfg_list[3]=NULL; | 	params.cfg_list[3]=conn->global_cfg; | ||||||
|  | 	params.cfg_list[4]=NULL; | ||||||
| 	params.msgset=conn->msgset; | 	params.msgset=conn->msgset; | ||||||
| 	params.msgdata=msg; | 	params.msgdata=msg; | ||||||
| 	params.debug_details=details; | 	params.debug_details=details; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user