From c2005144ed1532cb411e110860fe1da56c83d71d Mon Sep 17 00:00:00 2001 From: Ferreira <ferreira@eurecom.fr> Date: Wed, 15 Oct 2014 12:49:46 +0000 Subject: [PATCH] Added SPECTRA modifications for demo polishing and bug fixing (v1.13) git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5891 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- .../PROJECTS/SPECTRA/DEMO_SPECTRA/README.txt | 23 +++++- .../clientSensing/client/server | Bin 17896 -> 12356 bytes .../clientSensing/client/spectra_deamon.c | 17 ++-- .../mih_user/lte_test_user/enb_lte_user.cpp | 24 +++++- .../enb1/oai_conf/start_enb.bash | 4 +- .../mih_user/lte_test_user/enb2_lte_user.cpp | 78 ++++++++++++------ targets/PROJECTS/SPECTRA/start_enb.bash | 4 +- 7 files changed, 109 insertions(+), 41 deletions(-) diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/README.txt b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/README.txt index 87e991c1fe..69dc0fc9c4 100644 --- a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/README.txt +++ b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/README.txt @@ -7,7 +7,7 @@ # # Rui Costa <ferreira@eurecom.fr> # -# v1.12 (13 Oct 2014) +# v1.13 (15 Oct 2014) # ######################################## @@ -83,6 +83,14 @@ 2.3. CRM This component of the demo MUST be compiled and installed separately. Check <spectra_root_folder>/CRM/ for more details. + There is a google app that must be running in the google cloud, + and it's url configured in the source code. The local client is based + on the C++ REST framework codenamed "Casablanca". + Furthermore you need to compile the local client components + (CRMClient and CRMMain). + In the CRM client you will find a folder <tosend> which includes some + basic scripts that populate the google app database, and show how to + interact with it. 2.4. TVWS Sensing Measurements There is a server and client for simulating the TVWS measurements and @@ -180,7 +188,7 @@ -######################################## +################################################################################ CHANGELOG v0.99 (03/09/2014) @@ -248,4 +256,15 @@ v1.12 (13/10/2014) - Added final version to openair svn - Reworked README file. +v1.13 (15/10/2014) + - Polishing of the demo + - Added bug fixes on launch scripts for enb1 + - Added feature to put measurements on CRM from enb1 + - Changed readable output of received measurement reports on enb2 + - Added more informative output on the sensingClient (TVWS) + - Demonstration now stops at end of MIH_Link_Actions.confirm + message on MIH_User of enb2 + - Added info on sensing client and CRM + - Reworked README file. +################################################################################ EOF diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/server b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/server index 4b6559bfa6a4e92c0dd826805cb19df6c6566bdd..8bea168ace9d6796637245efbac75182bacb3f92 100644 GIT binary patch delta 1880 zcma)7eN0nV6u<BFl~sJDEv?;Dq_5_oNWg(qR>g^R?V`(A`0y){DTO|<8*8yVj2IVO z5Vh;fz+;R<vc$|7T};$8Gft<&F~5>6x|#i>%k0dSJe4h|sEiTs&aH}KBH2y)etqZs z&bhyH?z{JDG4A{7cFC$aNpiS|M8=S8l1V0Z6qcuS*$L^gcYGX5b=e4U?GOyE9l&!t zZRBqLFXQNe-UIi)dT?aJZ8>7P@kjh1x0T~^<1=*<&uxh>(XZl+m)Zrx>S}zHFIk-n z7g8Q_`SJ5FUDk06plfUycMSd-`x@5=S>jZCe}`bucK<_Z>&f%~Qc7AZ=LGpa)QDkT z+zyw;6*=m5WE>r!bWitT!4MT>Z5F=Vn8y)fI@)#|gIW`Po4QSH(_y(WGZn+TS;YGT zaLQ<hZN`_!6TrB)WieVMo1<P?h%S;1QJ1Xkg_Fiit`L4TPR=wBQu?)*5v!1>K0_2` z%?BB2Ud|5wG>3@!yO5?Wdq62{Ok1#UBdUqE{lIjbWKY_}I2Re`r~8x+Yc$Q#sn%HA zH%MVcG@<Xt`XNf&W4>fnDp*Y8xDZS=x$NUHdDNF^{V+kA?U?Nv%jShOrdgIRF)r%U z(D<E&5bf4IIAO|gm!h?;yV;87dyM<zJxY(UwY_CRlYmR8T|raKmxwLyR|?1Bx)N2d zZ3dIs;m$%yN%DoB_K{=p(j}Ez5V;@q#2kdQ_GZND<@{|YBrH=q1S`y)Dc3Sl#kcU# zJgtSKF0U-}y|JjmBULJ)#$c#UDh&sk>XmmTsZ#YvR3+eiF(ofA@5N4OsXwT)gyE3X z5RRx)Rv?u;H(%C>2`iLZCAd}zNM66{m$I`0Qcbg}G){wZi(}IBp(7%p!BW~Xij*gr zXG^|NKnkytYQuFQRJT@<{PlI=NKjq<fz%KQ*D8&y2hQhYj+pD&TuP*_S@J5XQmY0F zvCax*O_S27;vOAEOxf@}5?r)Qn)-jay_Q#J;<}EK8J94CT4$q<hWciy6sz&qDNdM> zUYI+2<U-aBe|>PhUk!#sP@ZnB$-PbKCm5A~m(s(C#}F?e-bCy}ywXqUE4ZU8@FVpi zM(}%XKrF_M(2i)wPqZ6x05O4>iyMdVcuXPALHv9O&ZbY{clE*F>67QLyF=+#%t}0I zhBkh_QO|EWBMJh^KvOmT66l|SIP4E4-9$#yM*Q8m0~OXO{PDZ6-kQUw^us=DPRk%l zynxQ(AigIV#hM|Zq%TnVRoyfGb*=i%!WNybOV{H$>pAB^1!vIBM3f=_9X#}|<Nv4m zej66aN@pih)>FULsP{io=|&^#i9853w%OyCArCu{9A<p7_PmKUA%5D{Y5<!fn-@Fc za~+)=7@X;F&@~k2i!ynx3Y>1o7!l835f73H&{1TCDz{jWjh1Y*jAgYv9>QbXhluG} z=O5h*c#f#a$b)V%Wj`J>`)%=4?)NxL&f^FMEP{jbVyph9M92_$aHb8#X5+3Ygj~`S zg4>bg!Dq!2dAu!-77xx~qR>WkB#i-Kk{IfUi9vE|hC0FuCS?B(xIU*7dSBn`+_m!& zl_M7NDZ1oCPu^{0H@+v}$lS1nT~MrsbYdjaP~Oi_P_h!+1lvn0xU2AI$q6nO_RMo| t)o>c0Z^7^LO1NxrdP?x7^Lu#CJaZNasNu-UU|`+!qJpA=c;oyg-G611dM5w? delta 6821 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 diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/spectra_deamon.c b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/spectra_deamon.c index c4e75d456b..869f581e98 100644 --- a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/spectra_deamon.c +++ b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/clientSensing/client/spectra_deamon.c @@ -109,10 +109,10 @@ void *connection_handler(int fd) { /* now loop, receiving data and printing what we received */ for (;;) { - printf("---\n Waiting on port %d\n", PORT); + printf("\n[SPECTRA Sensing Module] Started!\n[SPECTRA Sensing Module] ---\n[SPECTRA Sensing Module] Waiting on port %d\n", PORT); recvlen = recvfrom(fd, rawPacket, MAX_PACKET_SIZE, 0, (struct sockaddr *) &remaddr, &addrlen); - printf("Received %d bytes > ", recvlen); + printf("\n[SPECTRA Sensing Module] Received Data (%d bytes) > ", recvlen); for (i=0; i<recvlen;i++){ printf("%x ", (rawPacket[i] & 0xff)); @@ -126,7 +126,7 @@ void *connection_handler(int fd) { } else { request = assembleMessage(&rawPacket); - printf(" > Received spectra packet %i of type %i for function %i with %i parameters\n", + printf("\n[SPECTRA Sensing Module] > Received spectra packet %i of type %i for function %i with %i parameters\n", request.messageID, (uint32_t) request.type, (uint32_t) request.function, (uint32_t) request.numberOfparameters); @@ -135,7 +135,7 @@ void *connection_handler(int fd) { if (request.type == EndProcessing) { returnMessage = createReturnPacket(&request, 0, EndProcessing); - printf("End processing!!!\n"); + printf("\n[SPECTRA Sensing Module] Received: End of cognitive algorithm processing!\n"); fflush(stdout); } else { if (request.function == EnergyDetection) { @@ -143,11 +143,11 @@ void *connection_handler(int fd) { // circular loop over the score list scoreIndex = (scoreIndex < (sizeof(scoresList)/ sizeof(scoresList[0]))) ? scoreIndex : 0; - - printf("Score value: %16llx (%lld)\n", + printf("\n[SPECTRA Sensing Module] Received: Energy Detection Request!\n"); + printf("\n[SPECTRA Sensing Module] Processing Score value: %16llx (%lld)\n", (long long int)scoresList[scoreIndex], (long long int)scoresList[scoreIndex]); - printf("Score host to network value: 0x%016llx (%lld)\n", + printf("\n[SPECTRA Sensing Module] Processing Score host to network value: 0x%016llx (%lld)\n", (long long int)htonll(scoresList[scoreIndex]), (long long int)htonll(scoresList[scoreIndex])); @@ -157,6 +157,7 @@ void *connection_handler(int fd) { } // Sends the answer + printf("\n[SPECTRA Sensing Module] Sending: Reply Message!\n"); int retError = returnSpectraPacket(returnMessage, fd, remaddr); if (retError == -1) { perror("Send failed!!!\n"); @@ -203,7 +204,7 @@ int socketBind() { perror("bind failed"); return 0; } - puts("bind done"); + puts("\n[SPECTRA Sensing Module] Initialization done"); return fd; } diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/mih_user/lte_test_user/enb_lte_user.cpp b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/mih_user/lte_test_user/enb_lte_user.cpp index 80fbfe7522..8b6d45652e 100644 --- a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/mih_user/lte_test_user/enb_lte_user.cpp +++ b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/mih_user/lte_test_user/enb_lte_user.cpp @@ -1395,18 +1395,36 @@ void mih_user::receive_MIH_Link_Parameters_Report(odtone::mih::message& msg, con log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n"); log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str()); std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl; - + for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) { log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type); if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) { log_(0, "Meausrement Value: ", (short) *value ); + // ferreira: Upload of measurements to gae-spectra.com + // FIXME This will not work for: more than 3 types of measurements OR out of sequence types of measurements + std::string crmc_cmd_str; + std::stringstream crmc_ss; + std::string result; + if (count % 10 == 0) // All measures at CRM are outdated! do server cleanup! + result = exec ("./CRMClient DEL 2"); + if (count % 3 == 0) // Add 1st measurement (RSRP) + crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " RSRP dB " << (short) *value << " 3" ; + if (count % 3 == 1) // Add 2nd measurement (RSRQ) + crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " RSRQ dB " << (short) *value << " 3" ; + if (count % 3 == 2) // Add 3rd measurement (CQI) + crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " CQI - " << (short) *value << " 3" ; + crmc_cmd_str = crmc_ss.str(); + const char* crmc_cmd_cstr = crmc_cmd_str.c_str(); + char* crmc_cmd_char = new char [strlen(crmc_cmd_cstr)+1]; + strcpy(crmc_cmd_char, crmc_cmd_cstr); + result = exec (crmc_cmd_char); + delete [] crmc_cmd_char; } } log_(0, "MIH_Link_Parameters_Report.indication - End"); - - + //eNB1: Forward the message to UE 2 forward_Parameters_Report_indication(msg); diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/oai_conf/start_enb.bash b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/oai_conf/start_enb.bash index 4204ab9b7c..23d02bd58b 100644 --- a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/oai_conf/start_enb.bash +++ b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb1/oai_conf/start_enb.bash @@ -68,8 +68,8 @@ source $THIS_SCRIPT_PATH/env_802dot21.bash ########################################################### bash_exec "ifconfig $EMULATION_DEV_INTERFACE up $EMULATION_DEV_ADDRESS netmask 255.255.255.0" bash_exec "ifconfig eth2 up 192.168.14.3 netmask 255.255.255.0" -#bash_exec "ip r d default dev eth0" -#bash_exec "ip r a default via 192.168.14.4 dev eth2" +bash_exec "ip r d default via 192.168.14.4 dev eth2" +bash_exec "ip r a default via 192.168.12.100 dev eth0" ########################################################### IPTABLES=/sbin/iptables THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) diff --git a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb2/mih_user/lte_test_user/enb2_lte_user.cpp b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb2/mih_user/lte_test_user/enb2_lte_user.cpp index 87179f2a7f..319d68e2e3 100644 --- a/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb2/mih_user/lte_test_user/enb2_lte_user.cpp +++ b/targets/PROJECTS/SPECTRA/DEMO_SPECTRA/spectra_demo_src/enb2/mih_user/lte_test_user/enb2_lte_user.cpp @@ -1372,13 +1372,15 @@ void mih_user::receive_MIH_Link_Actions_confirm(odtone::mih::message& msg) // #endif // SCENARIO_2 log_(0, "MIH_Link_Actions.confirm - End\n"); + // ferreira: Added sleep time + exit + output to make visible the end of SPECTRA demo if( second_link_activated == 1 ) { unsigned int pause_time = 30; // in seconds to show the result of the demo then proceed log_(0, "\n\n\n\n\t----- Confirmed Configuration of LTE Link for TVWS -----\n"); log_(0, "\n\t----- END OF SPECTRA DEMO ! -----\n"); - log_(0, "\n\n MIH User regular function will resume in (secs) : ", pause_time ); - usleep(pause_time * 1000000); +// log_(0, "\n\n MIH User regular function will resume in (secs) : ", pause_time ); +// usleep(pause_time * 1000000); + exit(1); } } @@ -1422,20 +1424,34 @@ void mih_user::receive_MIH_MN_HO_Candidate_Query_request(odtone::mih::message& m & odtone::mih::tlv_link_identifier(link) & odtone::mih::tlv_link_param_rpt_list(lprl); - log_(0, "MIH_MN_HO_Candidate_Query.request - RECEIVED - Begin"); - log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size()); - log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n"); - log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str()); +// log_(0, "MIH_MN_HO_Candidate_Query.request - RECEIVED - Begin"); +// log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size()); +// log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n"); +// log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str()); +// +// for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) +// { +// log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type); +// if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) +// { +// log_(0, "Meausrement Value: ", (short) *value ); +// } +// } + + + // ferreira: changed output of message for better readability! + log_(0, "\n["+getTimeStamp4Log()+"] [RX] [FROM: "+ msg.source().to_string() +"] [Link ID: "+ link_id2string(link).c_str() +"]"); + log_(0, "\t[MIH_MN_HO_Candidate_Query [MIH_Link_Parameters_Report]]"); - for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) + for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) { - log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type); - if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) - { - log_(0, "Meausrement Value: ", (short) *value ); - } + if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) + { + log_(0, "\t[Measurement Types: RSRP 0|RSRQ 1|CQI 2] [type: ", i->param.type, "| value: ", (short) *value, "]" ); + } } + //eNB2 : Action Power Up the TVWS Link after running the cognitive algorithm //First Phase: Collect the data as input fot the cognitive algorithm @@ -1461,12 +1477,13 @@ void mih_user::receive_MIH_MN_HO_Candidate_Query_request(odtone::mih::message& m // link1.type = type; // send_MIH_Link_Actions_request(link, odtone::mih::link_ac_type_power_up); +// ferreira: commented out the count printouts and changed the comparison value (originally count >= 30 ) //Send ONLY ONCE RRC_Connection_Reconfiguration request to the UE on LTE link 0 // log_(0, "COUNT: ", count ); if (second_link_activated==0) { // log_(0, "COUNT: ", count ); - if (count >= 750) + if (count >= 1500) { // log_(0, "COUNT: ", count ); send_MIH_Link_Action_Power_Up_request(_link_id_list[0]);//Link LTE @@ -1497,21 +1514,34 @@ void mih_user::receive_MIH_Link_Parameters_Report(odtone::mih::message& msg, con & odtone::mih::tlv_link_identifier(link) & odtone::mih::tlv_link_param_rpt_list(lprl); - log_(0, "MIH_Link_Parameters_Report.indication - RECEIVED - Begin"); - log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size()); - log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n"); - log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str()); - std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl; +// log_(0, "MIH_Link_Parameters_Report.indication - RECEIVED - Begin"); +// log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size()); +// log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n"); +// log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str()); +// std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl; +// +// for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) +// { +// log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type); +// if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) +// { +// log_(0, "Meausrement Value: ", (short) *value ); +// } +// } +// log_(0, "MIH_Link_Parameters_Report.indication - End"); + + // ferreira: changed output of message for better readability! + log_(0, "\n["+getTimeStamp4Log()+"] [RX] [FROM: "+ msg.source().to_string() +"] [Link ID: "+ link_id2string(link).c_str() +"]"); + log_(0, "\t[MIH_Link_Parameters_Report]"); for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++) { - log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type); - if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) - { - log_(0, "Meausrement Value: ", (short) *value ); - } + if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value)) + { + log_(0, "\t[Measurement Types: RSRP 0|RSRQ 1|CQI 2] [type: ", i->param.type, "| value: ", (short) *value, "]" ); + } } - log_(0, "MIH_Link_Parameters_Report.indication - End"); +// log_(0, "MIH_Link_Parameters_Report.indication - End"); //eNB1: Forward the message to UE 2 diff --git a/targets/PROJECTS/SPECTRA/start_enb.bash b/targets/PROJECTS/SPECTRA/start_enb.bash index 4204ab9b7c..23d02bd58b 100755 --- a/targets/PROJECTS/SPECTRA/start_enb.bash +++ b/targets/PROJECTS/SPECTRA/start_enb.bash @@ -68,8 +68,8 @@ source $THIS_SCRIPT_PATH/env_802dot21.bash ########################################################### bash_exec "ifconfig $EMULATION_DEV_INTERFACE up $EMULATION_DEV_ADDRESS netmask 255.255.255.0" bash_exec "ifconfig eth2 up 192.168.14.3 netmask 255.255.255.0" -#bash_exec "ip r d default dev eth0" -#bash_exec "ip r a default via 192.168.14.4 dev eth2" +bash_exec "ip r d default via 192.168.14.4 dev eth2" +bash_exec "ip r a default via 192.168.12.100 dev eth0" ########################################################### IPTABLES=/sbin/iptables THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -- GitLab