Explorar o código

working on bandwidth draft

mom040267 %!s(int64=12) %!d(string=hai) anos
pai
achega
ec38153d81

+ 6 - 1
src/apps/relay/mainrelay.c

@@ -92,7 +92,7 @@ LOW_DEFAULT_PORTS_BOUNDARY,HIGH_DEFAULT_PORTS_BOUNDARY,0,0,"",
 /////////////// stop server ////////////////
 0,
 /////////////// MISC PARAMS ////////////////
-0,0,0,0,0,SHATYPE_SHA1,':',0,0,TURN_CREDENTIALS_NONE,0,0,0,0,0,
+0,0,0,0,0,SHATYPE_SHA1,':',0,0,TURN_CREDENTIALS_NONE,0,0,0,0,0,0,
 ///////////// Users DB //////////////
 { TURN_USERDB_TYPE_FILE, {"\0",NULL}, {0,NULL,NULL, {NULL,0}} }
 
@@ -1715,6 +1715,11 @@ int main(int argc, char **argv)
 	  }
 	}
 
+	if(turn_params.bps_capacity && !(turn_params.max_bps)) {
+		TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "\nCONFIG ERROR: If you set the --bps-capacity option, then you must set --max-bps options, too.\n");
+		exit(-1);
+	}
+
 	if(turn_params.no_udp_relay && turn_params.no_tcp_relay) {
 		TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "\nCONFIG ERROR: --no-udp-relay and --no-tcp-relay options cannot be used together.\n");
 		exit(-1);

+ 1 - 0
src/apps/relay/mainrelay.h

@@ -300,6 +300,7 @@ typedef struct _turn_params_ {
   int use_auth_secret_with_timestamp;
   band_limit_t max_bps;
   band_limit_t bps_capacity;
+  band_limit_t bps_capacity_allocated;
   vint total_quota;
   vint user_quota;
 

+ 2 - 1
src/apps/relay/netengine.c

@@ -1381,7 +1381,8 @@ static void setup_relay_server(struct relay_server *rs, ioa_engine_handle e, int
 			 send_socket_to_relay,
 			 &turn_params.secure_stun, turn_params.shatype, &turn_params.mobility,
 			 turn_params.server_relay,
-			 send_turn_session_info);
+			 send_turn_session_info,
+			 turn_params.max_bps);
 	
 	if(to_set_rfc5780) {
 		set_rfc5780(&(rs->server), get_alt_addr, send_message_from_listener_to_client);

+ 0 - 2
src/apps/relay/ns_ioalib_impl.h

@@ -80,8 +80,6 @@ typedef struct _stun_buffer_list {
 	size_t tsz;
 } stun_buffer_list;
 
-typedef vint band_limit_t;
-
 /*
  * New connection callback
  */

+ 6 - 1
src/apps/relay/turncli.c

@@ -361,6 +361,10 @@ static void change_cli_param(struct cli_session* cs, const char* pn)
 			cli_max_output_sessions = atoi(pn+strlen("cli-max-output-sessions"));
 			cli_print_uint(cs,(unsigned long)cli_max_output_sessions,"cli-max-output-sessions",2);
 			return;
+		} else if(strstr(pn,"bps-capacity")==pn) {
+			turn_params.bps_capacity = atoi(pn+strlen("bps-capacity"));
+			cli_print_uint(cs,(unsigned long)turn_params.bps_capacity,"bps-capacity",2);
+			return;
 		}
 
 		myprintf(cs, "\n");
@@ -714,7 +718,8 @@ static void cli_print_configuration(struct cli_session* cs)
 
 		cli_print_uint(cs,(unsigned long)turn_params.min_port,"min-port",0);
 		cli_print_uint(cs,(unsigned long)turn_params.max_port,"max-port",0);
-		cli_print_uint(cs,(unsigned long)turn_params.bps_capacity,"bps_capacity",0);
+		cli_print_uint(cs,(unsigned long)turn_params.bps_capacity,"bps-capacity",2);
+		cli_print_uint(cs,(unsigned long)turn_params.bps_capacity_allocated,"Allocated bps-capacity",0);
 
 		cli_print_ip_range_list(cs,&turn_params.ip_whitelist,"Whitelist IP",0);
 		cli_print_ip_range_list(cs,&turn_params.ip_blacklist,"Blacklist IP",0);

+ 4 - 1
src/server/ns_turn_server.c

@@ -4348,7 +4348,8 @@ void init_turn_server(turn_turnserver* server,
 		ip_range_list_t* ip_whitelist, ip_range_list_t* ip_blacklist,
 		send_socket_to_relay_cb send_socket_to_relay,
 		vintp secure_stun, SHATYPE shatype, vintp mobility, int server_relay,
-		send_turn_session_info_cb send_turn_session_info) {
+		send_turn_session_info_cb send_turn_session_info,
+		band_limit_t max_bps) {
 
 	if (!server)
 		return;
@@ -4405,6 +4406,8 @@ void init_turn_server(turn_turnserver* server,
 
 	server->send_socket_to_relay = send_socket_to_relay;
 
+	server->max_bps = max_bps;
+
 	set_ioa_timer(server->e, 1, 0, timer_timeout_handler, server, 1, "timer_timeout_handler");
 }
 

+ 7 - 1
src/server/ns_turn_server.h

@@ -92,6 +92,8 @@ typedef void (*release_allocation_quota_cb)(u08bits *username, u08bits *realm);
 typedef int (*send_socket_to_relay_cb)(turnserver_id id, u64bits cid, stun_tid *tid, ioa_socket_handle s, int message_integrity, MESSAGE_TO_RELAY_TYPE rmt, ioa_net_data *nd);
 typedef int (*send_turn_session_info_cb)(struct turn_session_info *tsi);
 
+typedef vint band_limit_t;
+
 struct _turn_turnserver {
 
 	turnserver_id id;
@@ -149,6 +151,9 @@ struct _turn_turnserver {
 
 	/* Server relay */
 	int server_relay;
+
+	/* Bandwidth draft: */
+	band_limit_t max_bps;
 };
 
 ///////////////////////////////////////////
@@ -182,7 +187,8 @@ void init_turn_server(turn_turnserver* server,
 				    SHATYPE shatype,
 				    vintp mobility,
 				    int server_relay,
-				    send_turn_session_info_cb send_turn_session_info);
+				    send_turn_session_info_cb send_turn_session_info,
+				    band_limit_t max_bps);
 
 ioa_engine_handle turn_server_get_engine(turn_turnserver *s);